summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md4
-rw-r--r--SConstruct40
-rw-r--r--core/SCsub16
-rw-r--r--core/input/SCsub2
-rw-r--r--core/io/json.cpp2
-rw-r--r--core/math/expression.cpp2
-rw-r--r--core/script_language.cpp3
-rw-r--r--core/string_buffer.h2
-rw-r--r--core/ustring.cpp14
-rw-r--r--core/ustring.h7
-rw-r--r--core/variant.cpp4
-rw-r--r--core/variant_call.cpp2
-rw-r--r--doc/classes/Animation.xml4
-rw-r--r--doc/classes/CanvasItem.xml16
-rw-r--r--doc/classes/CollisionObject2D.xml8
-rw-r--r--doc/classes/EditorInspector.xml4
-rw-r--r--doc/classes/EditorTranslationParserPlugin.xml2
-rw-r--r--doc/classes/Font.xml1
-rw-r--r--doc/classes/LineEdit.xml2
-rw-r--r--doc/classes/Node3D.xml4
-rw-r--r--doc/classes/OS.xml2
-rw-r--r--doc/classes/ProjectSettings.xml30
-rw-r--r--doc/classes/String.xml5
-rw-r--r--doc/classes/VisualShaderNodeBooleanUniform.xml8
-rw-r--r--doc/classes/VisualShaderNodeColorUniform.xml8
-rw-r--r--doc/classes/VisualShaderNodeFloatUniform.xml6
-rw-r--r--doc/classes/VisualShaderNodeIntUniform.xml6
-rw-r--r--doc/classes/VisualShaderNodeTransformUniform.xml8
-rw-r--r--doc/classes/VisualShaderNodeUniformRef.xml20
-rw-r--r--doc/classes/VisualShaderNodeVec3Uniform.xml8
-rw-r--r--editor/SCsub21
-rw-r--r--editor/editor_node.cpp8
-rw-r--r--editor/editor_properties.cpp72
-rw-r--r--editor/editor_translation_parser.cpp5
-rw-r--r--editor/editor_translation_parser.h1
-rw-r--r--editor/icons/SCsub10
-rw-r--r--editor/import/collada.cpp34
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp2
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp24
-rw-r--r--editor/plugins/script_editor_plugin.cpp6
-rw-r--r--editor/plugins/script_text_editor.cpp1
-rw-r--r--editor/plugins/shader_editor_plugin.cpp2
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp2
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp139
-rw-r--r--editor/plugins/visual_shader_editor_plugin.h1
-rw-r--r--editor/property_editor.cpp8
-rw-r--r--editor/translations/af.po15
-rw-r--r--editor/translations/ar.po91
-rw-r--r--editor/translations/bg.po21
-rw-r--r--editor/translations/bn.po21
-rw-r--r--editor/translations/ca.po20
-rw-r--r--editor/translations/cs.po68
-rw-r--r--editor/translations/da.po18
-rw-r--r--editor/translations/de.po36
-rw-r--r--editor/translations/editor.pot14
-rw-r--r--editor/translations/el.po33
-rw-r--r--editor/translations/eo.po15
-rw-r--r--editor/translations/es.po46
-rw-r--r--editor/translations/es_AR.po20
-rw-r--r--editor/translations/et.po332
-rw-r--r--editor/translations/eu.po14
-rw-r--r--editor/translations/fa.po687
-rw-r--r--editor/translations/fi.po24
-rw-r--r--editor/translations/fil.po14
-rw-r--r--editor/translations/fr.po57
-rw-r--r--editor/translations/ga.po14
-rw-r--r--editor/translations/he.po18
-rw-r--r--editor/translations/hi.po18
-rw-r--r--editor/translations/hr.po15
-rw-r--r--editor/translations/hu.po20
-rw-r--r--editor/translations/id.po32
-rw-r--r--editor/translations/is.po15
-rw-r--r--editor/translations/it.po144
-rw-r--r--editor/translations/ja.po79
-rw-r--r--editor/translations/ka.po15
-rw-r--r--editor/translations/ko.po28
-rw-r--r--editor/translations/lt.po162
-rw-r--r--editor/translations/lv.po15
-rw-r--r--editor/translations/mi.po14
-rw-r--r--editor/translations/ml.po14
-rw-r--r--editor/translations/mr.po14
-rw-r--r--editor/translations/ms.po15
-rw-r--r--editor/translations/nb.po18
-rw-r--r--editor/translations/nl.po45
-rw-r--r--editor/translations/or.po14
-rw-r--r--editor/translations/pl.po32
-rw-r--r--editor/translations/pr.po15
-rw-r--r--editor/translations/pt_BR.po85
-rw-r--r--editor/translations/pt_PT.po26
-rw-r--r--editor/translations/ro.po719
-rw-r--r--editor/translations/ru.po152
-rw-r--r--editor/translations/si.po15
-rw-r--r--editor/translations/sk.po18
-rw-r--r--editor/translations/sl.po58
-rw-r--r--editor/translations/sq.po21
-rw-r--r--editor/translations/sr_Cyrl.po18
-rw-r--r--editor/translations/sr_Latn.po15
-rw-r--r--editor/translations/sv.po296
-rw-r--r--editor/translations/ta.po15
-rw-r--r--editor/translations/te.po14
-rw-r--r--editor/translations/th.po18
-rw-r--r--editor/translations/tr.po53
-rw-r--r--editor/translations/uk.po21
-rw-r--r--editor/translations/ur_PK.po15
-rw-r--r--editor/translations/vi.po249
-rw-r--r--editor/translations/zh_CN.po52
-rw-r--r--editor/translations/zh_HK.po15
-rw-r--r--editor/translations/zh_TW.po729
-rw-r--r--main/SCsub13
-rw-r--r--main/main.cpp86
-rw-r--r--methods.py13
-rwxr-xr-xmisc/scripts/black_format.sh4
-rwxr-xr-xmisc/scripts/clang_format.sh4
-rwxr-xr-xmisc/scripts/file_format.sh27
-rw-r--r--modules/SCsub18
-rw-r--r--modules/bullet/area_bullet.cpp21
-rw-r--r--modules/bullet/area_bullet.h24
-rw-r--r--modules/bullet/bullet_physics_server.h2
-rw-r--r--modules/bullet/collision_object_bullet.cpp44
-rw-r--r--modules/bullet/collision_object_bullet.h40
-rw-r--r--modules/bullet/godot_result_callbacks.cpp2
-rw-r--r--modules/bullet/rigid_body_bullet.cpp105
-rw-r--r--modules/bullet/rigid_body_bullet.h52
-rw-r--r--modules/bullet/soft_body_bullet.cpp18
-rw-r--r--modules/bullet/soft_body_bullet.h20
-rw-r--r--modules/bullet/space_bullet.cpp43
-rw-r--r--modules/bullet/space_bullet.h18
-rw-r--r--modules/denoise/SCsub1
-rw-r--r--modules/enet/networked_multiplayer_enet.cpp6
-rw-r--r--modules/etc/image_etc.cpp2
-rw-r--r--modules/gdnative/SCsub3
-rw-r--r--modules/gdnative/gdnative/string.cpp16
-rw-r--r--modules/gdnative/gdnative_api.json13
-rw-r--r--modules/gdnative/include/gdnative/string.h7
-rw-r--r--modules/gdscript/doc_classes/@GDScript.xml36
-rw-r--r--modules/gdscript/doc_classes/GDScriptFunctionState.xml5
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp8
-rw-r--r--modules/gdscript/gdscript_tokenizer.cpp2
-rw-r--r--modules/mono/editor/script_class_parser.cpp2
-rw-r--r--modules/mono/mono_gd/gd_mono_assembly.cpp2
-rw-r--r--modules/regex/doc_classes/RegEx.xml13
-rw-r--r--modules/visual_script/visual_script_expression.cpp2
-rw-r--r--platform/android/export/export.cpp172
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/Godot.java45
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java78
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt2
-rw-r--r--platform/javascript/display_server_javascript.cpp17
-rw-r--r--platform/javascript/display_server_javascript.h3
-rw-r--r--platform/javascript/javascript_main.cpp1
-rw-r--r--platform/windows/godot.natvis6
-rw-r--r--platform_methods.py11
-rw-r--r--scene/3d/skeleton_ik_3d.cpp5
-rw-r--r--scene/gui/rich_text_label.cpp2
-rw-r--r--scene/gui/text_edit.cpp1
-rw-r--r--scene/gui/tree.cpp2
-rw-r--r--scene/main/scene_tree.cpp8
-rw-r--r--scene/main/viewport.cpp14
-rw-r--r--scene/register_scene_types.cpp1
-rw-r--r--scene/resources/syntax_highlighter.cpp2
-rw-r--r--scene/resources/visual_shader.cpp227
-rw-r--r--scene/resources/visual_shader.h60
-rw-r--r--scene/resources/visual_shader_nodes.cpp286
-rw-r--r--scene/resources/visual_shader_nodes.h76
-rw-r--r--servers/physics_2d/space_2d_sw.cpp7
-rw-r--r--servers/physics_3d/space_3d_sw.cpp6
-rw-r--r--servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp2
-rw-r--r--servers/rendering/shader_language.cpp2
-rw-r--r--tests/test_main.cpp59
-rw-r--r--tests/test_main.h5
-rw-r--r--tests/test_math.cpp2
-rw-r--r--tests/test_string.h2
-rw-r--r--tests/test_variant.h111
172 files changed, 4321 insertions, 3048 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 7e8c5fd740..bc56cba21b 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -6,8 +6,8 @@ labels: ''
assignees: ''
---
-<!-- Please search existing issues for potential duplicates before filing yours:
-https://github.com/godotengine/godot/issues?q=is%3Aissue
+<!-- Please search existing issues for potential duplicates before filing yours:
+https://github.com/godotengine/godot/issues?q=is%3Aissue
-->
**Godot version:**
diff --git a/SConstruct b/SConstruct
index 7ec926f99b..96d2f1abe7 100644
--- a/SConstruct
+++ b/SConstruct
@@ -84,6 +84,7 @@ env_base.__class__.add_shared_library = methods.add_shared_library
env_base.__class__.add_library = methods.add_library
env_base.__class__.add_program = methods.add_program
env_base.__class__.CommandNoCache = methods.CommandNoCache
+env_base.__class__.Run = methods.Run
env_base.__class__.disable_warnings = methods.disable_warnings
env_base.__class__.module_check_dependencies = methods.module_check_dependencies
@@ -627,27 +628,24 @@ if selected_platform in platform_list:
methods.no_verbose(sys, env)
if not env["platform"] == "server":
- env.Append(
- BUILDERS={
- "GLES2_GLSL": env.Builder(
- action=run_in_subprocess(gles_builders.build_gles2_headers), suffix="glsl.gen.h", src_suffix=".glsl"
- )
- }
- )
- env.Append(
- BUILDERS={
- "RD_GLSL": env.Builder(
- action=run_in_subprocess(gles_builders.build_rd_headers), suffix="glsl.gen.h", src_suffix=".glsl"
- )
- }
- )
- env.Append(
- BUILDERS={
- "GLSL_HEADER": env.Builder(
- action=run_in_subprocess(gles_builders.build_raw_headers), suffix="glsl.gen.h", src_suffix=".glsl"
- )
- }
- )
+ GLSL_BUILDERS = {
+ "GLES2_GLSL": env.Builder(
+ action=env.Run(gles_builders.build_gles2_headers, 'Building GLES2_GLSL header: "$TARGET"'),
+ suffix="glsl.gen.h",
+ src_suffix=".glsl",
+ ),
+ "RD_GLSL": env.Builder(
+ action=env.Run(gles_builders.build_rd_headers, 'Building RD_GLSL header: "$TARGET"'),
+ suffix="glsl.gen.h",
+ src_suffix=".glsl",
+ ),
+ "GLSL_HEADER": env.Builder(
+ action=env.Run(gles_builders.build_raw_headers, 'Building GLSL header: "$TARGET"'),
+ suffix="glsl.gen.h",
+ src_suffix=".glsl",
+ ),
+ }
+ env.Append(BUILDERS=GLSL_BUILDERS)
scons_cache_path = os.environ.get("SCONS_CACHE")
if scons_cache_path != None:
diff --git a/core/SCsub b/core/SCsub
index 80a5f6b623..d08f17c60a 100644
--- a/core/SCsub
+++ b/core/SCsub
@@ -149,28 +149,34 @@ env.Depends(
env.CommandNoCache(
"#core/io/certs_compressed.gen.h",
"#thirdparty/certs/ca-certificates.crt",
- run_in_subprocess(core_builders.make_certs_header),
+ env.Run(core_builders.make_certs_header, "Building ca-certificates header."),
)
# Make binders
env.CommandNoCache(
["method_bind.gen.inc", "method_bind_ext.gen.inc", "method_bind_free_func.gen.inc"],
"make_binders.py",
- run_in_subprocess(make_binders.run),
+ env.Run(make_binders.run, "Generating method binders."),
)
# Authors
env.Depends("#core/authors.gen.h", "../AUTHORS.md")
-env.CommandNoCache("#core/authors.gen.h", "../AUTHORS.md", run_in_subprocess(core_builders.make_authors_header))
+env.CommandNoCache(
+ "#core/authors.gen.h", "../AUTHORS.md", env.Run(core_builders.make_authors_header, "Generating authors header."),
+)
# Donors
env.Depends("#core/donors.gen.h", "../DONORS.md")
-env.CommandNoCache("#core/donors.gen.h", "../DONORS.md", run_in_subprocess(core_builders.make_donors_header))
+env.CommandNoCache(
+ "#core/donors.gen.h", "../DONORS.md", env.Run(core_builders.make_donors_header, "Generating donors header."),
+)
# License
env.Depends("#core/license.gen.h", ["../COPYRIGHT.txt", "../LICENSE.txt"])
env.CommandNoCache(
- "#core/license.gen.h", ["../COPYRIGHT.txt", "../LICENSE.txt"], run_in_subprocess(core_builders.make_license_header)
+ "#core/license.gen.h",
+ ["../COPYRIGHT.txt", "../LICENSE.txt"],
+ env.Run(core_builders.make_license_header, "Generating license header."),
)
# Chain load SCsubs
diff --git a/core/input/SCsub b/core/input/SCsub
index c641819698..f40978911b 100644
--- a/core/input/SCsub
+++ b/core/input/SCsub
@@ -16,7 +16,7 @@ env.Depends("#core/input/default_controller_mappings.gen.cpp", controller_databa
env.CommandNoCache(
"#core/input/default_controller_mappings.gen.cpp",
controller_databases,
- run_in_subprocess(input_builders.make_default_controller_mappings),
+ env.Run(input_builders.make_default_controller_mappings, "Generating default controller mappings."),
)
env.add_source_files(env.core_sources, "*.cpp")
diff --git a/core/io/json.cpp b/core/io/json.cpp
index b90841a5ef..8bdd6385cb 100644
--- a/core/io/json.cpp
+++ b/core/io/json.cpp
@@ -265,7 +265,7 @@ Error JSON::_get_token(const CharType *p_str, int &index, int p_len, Token &r_to
if (p_str[index] == '-' || (p_str[index] >= '0' && p_str[index] <= '9')) {
//a number
const CharType *rptr;
- double number = String::to_double(&p_str[index], &rptr);
+ double number = String::to_float(&p_str[index], &rptr);
index += (rptr - &p_str[index]);
r_token.type = TK_NUMBER;
r_token.value = number;
diff --git a/core/math/expression.cpp b/core/math/expression.cpp
index 13a49feb6b..735a30f6cc 100644
--- a/core/math/expression.cpp
+++ b/core/math/expression.cpp
@@ -1062,7 +1062,7 @@ Error Expression::_get_token(Token &r_token) {
r_token.type = TK_CONSTANT;
if (is_float) {
- r_token.value = num.to_double();
+ r_token.value = num.to_float();
} else {
r_token.value = num.to_int();
}
diff --git a/core/script_language.cpp b/core/script_language.cpp
index b63aeb952c..5176882662 100644
--- a/core/script_language.cpp
+++ b/core/script_language.cpp
@@ -33,6 +33,7 @@
#include "core/core_string_names.h"
#include "core/debugger/engine_debugger.h"
#include "core/debugger/script_debugger.h"
+#include "core/os/file_access.h"
#include "core/project_settings.h"
#include <stdint.h>
@@ -162,7 +163,7 @@ void ScriptServer::init_languages() {
for (int i = 0; i < script_classes.size(); i++) {
Dictionary c = script_classes[i];
- if (!c.has("class") || !c.has("language") || !c.has("path") || !c.has("base")) {
+ if (!c.has("class") || !c.has("language") || !c.has("path") || !FileAccess::exists(c["path"]) || !c.has("base")) {
continue;
}
add_global_class(c["class"], c["base"], c["language"], c["path"]);
diff --git a/core/string_buffer.h b/core/string_buffer.h
index 956a6333d9..f9cf31075a 100644
--- a/core/string_buffer.h
+++ b/core/string_buffer.h
@@ -150,7 +150,7 @@ String StringBuffer<SHORT_BUFFER_SIZE>::as_string() {
template <int SHORT_BUFFER_SIZE>
double StringBuffer<SHORT_BUFFER_SIZE>::as_double() {
current_buffer_ptr()[string_length] = '\0';
- return String::to_double(current_buffer_ptr());
+ return String::to_float(current_buffer_ptr());
}
template <int SHORT_BUFFER_SIZE>
diff --git a/core/ustring.cpp b/core/ustring.cpp
index 572ad1af59..957caf1015 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -851,7 +851,7 @@ Vector<float> String::split_floats(const String &p_splitter, bool p_allow_empty)
end = len;
}
if (p_allow_empty || (end > from)) {
- ret.push_back(String::to_double(&c_str()[from]));
+ ret.push_back(String::to_float(&c_str()[from]));
}
if (end == len) {
@@ -880,7 +880,7 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_
}
if (p_allow_empty || (end > from)) {
- ret.push_back(String::to_double(&c_str()[from]));
+ ret.push_back(String::to_float(&c_str()[from]));
}
if (end == len) {
@@ -2006,7 +2006,7 @@ done:
#define READING_EXP 3
#define READING_DONE 4
-double String::to_double(const char *p_str) {
+double String::to_float(const char *p_str) {
#ifndef NO_USE_STDLIB
return built_in_strtod<char>(p_str);
//return atof(p_str); DOES NOT WORK ON ANDROID(??)
@@ -2015,11 +2015,7 @@ double String::to_double(const char *p_str) {
#endif
}
-float String::to_float() const {
- return to_double();
-}
-
-double String::to_double(const CharType *p_str, const CharType **r_end) {
+double String::to_float(const CharType *p_str, const CharType **r_end) {
return built_in_strtod<CharType>(p_str, (CharType **)r_end);
}
@@ -2087,7 +2083,7 @@ int64_t String::to_int(const CharType *p_str, int p_len, bool p_clamp) {
return sign * integer;
}
-double String::to_double() const {
+double String::to_float() const {
if (empty()) {
return 0;
}
diff --git a/core/ustring.h b/core/ustring.h
index e745475f11..d37346fbd6 100644
--- a/core/ustring.h
+++ b/core/ustring.h
@@ -242,15 +242,14 @@ public:
static String md5(const uint8_t *p_md5);
static String hex_encode_buffer(const uint8_t *p_buffer, int p_len);
bool is_numeric() const;
- double to_double() const;
- float to_float() const;
+ double to_float() const;
int64_t hex_to_int(bool p_with_prefix = true) const;
int64_t bin_to_int(bool p_with_prefix = true) const;
int64_t to_int() const;
static int64_t to_int(const char *p_str, int p_len = -1);
- static double to_double(const char *p_str);
- static double to_double(const CharType *p_str, const CharType **r_end = nullptr);
+ static double to_float(const char *p_str);
+ static double to_float(const CharType *p_str, const CharType **r_end = nullptr);
static int64_t to_int(const CharType *p_str, int p_len = -1, bool p_clamp = false);
String capitalize() const;
String camelcase_to_underscore(bool lowercase = true) const;
diff --git a/core/variant.cpp b/core/variant.cpp
index afd01b3359..c19ce79e64 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -1573,7 +1573,7 @@ Variant::operator float() const {
case FLOAT:
return _data._float;
case STRING:
- return operator String().to_double();
+ return operator String().to_float();
default: {
return 0;
}
@@ -1591,7 +1591,7 @@ Variant::operator double() const {
case FLOAT:
return _data._float;
case STRING:
- return operator String().to_double();
+ return operator String().to_float();
default: {
return 0;
}
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index 8afa24e63d..b96fd0c103 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -1405,7 +1405,7 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i
return (int64_t(*p_args[0]));
}
case FLOAT: {
- return real_t(*p_args[0]);
+ return double(*p_args[0]);
}
case STRING: {
return String(*p_args[0]);
diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml
index 09811d5617..68f0a630ef 100644
--- a/doc/classes/Animation.xml
+++ b/doc/classes/Animation.xml
@@ -7,10 +7,10 @@
An Animation resource contains data used to animate everything in the engine. Animations are divided into tracks, and each track must be linked to a node. The state of that node can be changed through time, by adding timed keys (events) to the track.
[codeblock]
# This creates an animation that makes the node "Enemy" move to the right by
- # 100 pixels in 1 second.
+ # 100 pixels in 0.5 seconds.
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_VALUE)
- animation.track_set_path(track_index, "Enemy:position.x")
+ animation.track_set_path(track_index, "Enemy:position:x")
animation.track_insert_key(track_index, 0.0, 0)
animation.track_insert_key(track_index, 0.5, 100)
[/codeblock]
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index be361f93f3..899988022f 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -316,7 +316,16 @@
<argument index="4" name="clip_w" type="int" default="-1">
</argument>
<description>
- Draws a string using a custom font.
+ Draws [code]text[/code] using the specified [code]font[/code] at the [code]position[/code] (top-left corner). The text will have its color multiplied by [code]modulate[/code]. If [code]clip_w[/code] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
+ [b]Example using the default project font:[/b]
+ [codeblock]
+ # If using this method in a script that redraws constantly, move the
+ # `default_font` declaration to a member variable assigned in `_ready()`
+ # so the Control is only created once.
+ var default_font = Control.new().get_font("font")
+ draw_string(default_font, Vector2(64, 64), "Hello world")
+ [/codeblock]
+ See also [method Font.draw].
</description>
</method>
<method name="draw_style_box">
@@ -525,7 +534,7 @@
<return type="bool">
</return>
<description>
- Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and its inherited visibility is also [code]true[/code].
+ Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
</description>
</method>
<method name="make_canvas_position_local" qualifiers="const">
@@ -617,7 +626,8 @@
If [code]true[/code], the parent [CanvasItem]'s [member material] property is used as this one's material.
</member>
<member name="visible" type="bool" setter="set_visible" getter="is_visible" default="true">
- If [code]true[/code], this [CanvasItem] is drawn. For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead.
+ If [code]true[/code], this [CanvasItem] is drawn. The node is only visible if all of its antecedents are visible as well (in other words, [method is_visible_in_tree] must return [code]true[/code]).
+ [b]Note:[/b] For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead.
</member>
</members>
<signals>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index bf82e921fb..e8f7a59e4c 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -217,7 +217,7 @@
</methods>
<members>
<member name="input_pickable" type="bool" setter="set_pickable" getter="is_pickable" default="true">
- If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events.
+ If [code]true[/code], this object is pickable. A pickable object can detect the mouse pointer entering/leaving, and if the mouse is inside it, report input events. Requires at least one [code]collision_layer[/code] bit to be set.
</member>
</members>
<signals>
@@ -229,17 +229,17 @@
<argument index="2" name="shape_idx" type="int">
</argument>
<description>
- Emitted when an input event occurs and [code]input_pickable[/code] is [code]true[/code]. See [method _input_event] for details.
+ Emitted when an input event occurs. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. See [method _input_event] for details.
</description>
</signal>
<signal name="mouse_entered">
<description>
- Emitted when the mouse pointer enters any of this object's shapes.
+ Emitted when the mouse pointer enters any of this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set.
</description>
</signal>
<signal name="mouse_exited">
<description>
- Emitted when the mouse pointer exits all this object's shapes.
+ Emitted when the mouse pointer exits all this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set.
</description>
</signal>
</signals>
diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml
index 5fbe427f67..6f03165a97 100644
--- a/doc/classes/EditorInspector.xml
+++ b/doc/classes/EditorInspector.xml
@@ -20,9 +20,7 @@
</method>
</methods>
<members>
- <member name="scroll_horizontal_enabled" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled" override="true" default="false">
- If [code]true[/code], horizontal scrolling is enabled. An horizontal scroll bar will display at the bottom of the inspector.
- </member>
+ <member name="scroll_horizontal_enabled" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled" override="true" default="false" />
</members>
<signals>
<signal name="object_id_selected">
diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml
index a40ef45916..d40fc558de 100644
--- a/doc/classes/EditorTranslationParserPlugin.xml
+++ b/doc/classes/EditorTranslationParserPlugin.xml
@@ -35,7 +35,7 @@
func get_recognized_extensions():
- return ["gd"]
+ return ["gd"]
[/codeblock]
</description>
<tutorials>
diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml
index 30b8c1fe76..ce6a25e191 100644
--- a/doc/classes/Font.xml
+++ b/doc/classes/Font.xml
@@ -26,6 +26,7 @@
</argument>
<description>
Draw [code]string[/code] into a canvas item using the font at a given position, with [code]modulate[/code] color, and optionally clipping the width. [code]position[/code] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
+ See also [method CanvasItem.draw_string].
</description>
</method>
<method name="draw_char" qualifiers="const">
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml
index feac483fc4..f08a15d873 100644
--- a/doc/classes/LineEdit.xml
+++ b/doc/classes/LineEdit.xml
@@ -122,6 +122,8 @@
<member name="caret_blink_speed" type="float" setter="cursor_set_blink_speed" getter="cursor_get_blink_speed" default="0.65">
Duration (in seconds) of a caret's blinking cycle.
</member>
+ <member name="caret_force_displayed" type="bool" setter="cursor_set_force_displayed" getter="cursor_get_force_displayed" default="false">
+ </member>
<member name="caret_position" type="int" setter="set_cursor_position" getter="get_cursor_position" default="0">
The cursor's position inside the [LineEdit]. When set, the text may scroll to accommodate it.
</member>
diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml
index 05d00b9f31..02b319fb5a 100644
--- a/doc/classes/Node3D.xml
+++ b/doc/classes/Node3D.xml
@@ -101,7 +101,7 @@
<return type="bool">
</return>
<description>
- Returns whether the node is visible, taking into consideration that its parents visibility.
+ Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
</description>
</method>
<method name="look_at">
@@ -323,7 +323,7 @@
Local translation of this node.
</member>
<member name="visible" type="bool" setter="set_visible" getter="is_visible" default="true">
- If [code]true[/code], this node is drawn.
+ If [code]true[/code], this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words, [method is_visible_in_tree] must return [code]true[/code]).
</member>
</members>
<signals>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 5b4b5d02fb..26110df335 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -120,7 +120,7 @@
[codeblock]
var arguments = {}
for argument in OS.get_cmdline_args():
- if argument.find("=") > -1:
+ if argument.find("=") &gt; -1:
var key_value = argument.split("=")
arguments[key_value[0].lstrip("--")] = key_value[1]
[/codeblock]
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 733bb559cb..f13dbbae76 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -280,6 +280,10 @@
<member name="debug/gdscript/completion/autocomplete_setters_and_getters" type="bool" setter="" getter="" default="false">
If [code]true[/code], displays getters and setters in autocompletion results in the script editor. This setting is meant to be used when porting old projects (Godot 2), as using member variables is the preferred style from Godot 3 onwards.
</member>
+ <member name="debug/gdscript/warnings/assert_always_false" type="bool" setter="" getter="" default="true">
+ </member>
+ <member name="debug/gdscript/warnings/assert_always_true" type="bool" setter="" getter="" default="true">
+ </member>
<member name="debug/gdscript/warnings/constant_used_as_function" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when a constant is used as a function.
</member>
@@ -292,15 +296,6 @@
<member name="debug/gdscript/warnings/exclude_addons" type="bool" setter="" getter="" default="true">
If [code]true[/code], scripts in the [code]res://addons[/code] folder will not generate warnings.
</member>
- <member name="debug/gdscript/warnings/function_conflicts_constant" type="bool" setter="" getter="" default="true">
- If [code]true[/code], enables warnings when a function is declared with the same name as a constant.
- </member>
- <member name="debug/gdscript/warnings/function_conflicts_variable" type="bool" setter="" getter="" default="true">
- If [code]true[/code], enables warnings when a function is declared with the same name as a variable. This will turn into an error in a future version when first-class functions become supported in GDScript.
- </member>
- <member name="debug/gdscript/warnings/function_may_yield" type="bool" setter="" getter="" default="true">
- If [code]true[/code], enables warnings when a function assigned to a variable may yield and return a function state instead of a value.
- </member>
<member name="debug/gdscript/warnings/function_used_as_property" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when using a function as if it was a property.
</member>
@@ -316,12 +311,16 @@
<member name="debug/gdscript/warnings/property_used_as_function" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when using a property as if it was a function.
</member>
+ <member name="debug/gdscript/warnings/redundant_await" type="bool" setter="" getter="" default="true">
+ </member>
<member name="debug/gdscript/warnings/return_value_discarded" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when calling a function without using its return value (by assigning it to a variable or using it as a function argument). Such return values are sometimes used to denote possible errors using the [enum Error] enum.
</member>
<member name="debug/gdscript/warnings/shadowed_variable" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when defining a local or subclass member variable that would shadow a variable at an upper level (such as a member variable).
</member>
+ <member name="debug/gdscript/warnings/shadowed_variable_base_class" type="bool" setter="" getter="" default="true">
+ </member>
<member name="debug/gdscript/warnings/standalone_expression" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when calling an expression that has no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement.
</member>
@@ -340,6 +339,8 @@
<member name="debug/gdscript/warnings/unreachable_code" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when unreachable code is detected (such as after a [code]return[/code] statement that will always be executed).
</member>
+ <member name="debug/gdscript/warnings/unreachable_pattern" type="bool" setter="" getter="" default="true">
+ </member>
<member name="debug/gdscript/warnings/unsafe_call_argument" type="bool" setter="" getter="" default="false">
If [code]true[/code], enables warnings when using an expression whose type may not be compatible with the function parameter expected.
</member>
@@ -352,11 +353,11 @@
<member name="debug/gdscript/warnings/unsafe_property_access" type="bool" setter="" getter="" default="false">
If [code]true[/code], enables warnings when accessing a property whose presence is not guaranteed at compile-time in the class.
</member>
- <member name="debug/gdscript/warnings/unused_argument" type="bool" setter="" getter="" default="true">
- If [code]true[/code], enables warnings when a function parameter is unused.
+ <member name="debug/gdscript/warnings/unused_local_constant" type="bool" setter="" getter="" default="true">
</member>
- <member name="debug/gdscript/warnings/unused_class_variable" type="bool" setter="" getter="" default="false">
- If [code]true[/code], enables warnings when a member variable is unused.
+ <member name="debug/gdscript/warnings/unused_parameter" type="bool" setter="" getter="" default="true">
+ </member>
+ <member name="debug/gdscript/warnings/unused_private_class_variable" type="bool" setter="" getter="" default="true">
</member>
<member name="debug/gdscript/warnings/unused_signal" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when a signal is unused.
@@ -364,9 +365,6 @@
<member name="debug/gdscript/warnings/unused_variable" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when a local variable is unused.
</member>
- <member name="debug/gdscript/warnings/variable_conflicts_function" type="bool" setter="" getter="" default="true">
- If [code]true[/code], enables warnings when a variable is declared with the same name as a function. This will turn into an error in a future version when first-class functions become supported in GDScript.
- </member>
<member name="debug/gdscript/warnings/void_assignment" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables warnings when assigning the result of a function that returns [code]void[/code] to a variable.
</member>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 7e55f8bd9a..ded64761d0 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -895,8 +895,8 @@
<argument index="2" name="maxsplit" type="int" default="0">
</argument>
<description>
- Splits the string by a [code]delimiter[/code] string and returns an array of the substrings.
- If [code]maxsplit[/code] is specified, it defines the number of splits to do from the left up to [code]maxsplit[/code]. The default value of 0 means that all items are split.
+ Splits the string by a [code]delimiter[/code] string and returns an array of the substrings. The [code]delimiter[/code] can be of any length.
+ If [code]maxsplit[/code] is specified, it defines the number of splits to do from the left up to [code]maxsplit[/code]. The default value of [code]0[/code] means that all items are split.
Example:
[codeblock]
var some_string = "One,Two,Three,Four"
@@ -905,6 +905,7 @@
print(some_array[0]) # Prints "One"
print(some_array[1]) # Prints "Two,Three,Four"
[/codeblock]
+ If you need to split strings with more complex rules, use the [RegEx] class instead.
</description>
</method>
<method name="split_floats">
diff --git a/doc/classes/VisualShaderNodeBooleanUniform.xml b/doc/classes/VisualShaderNodeBooleanUniform.xml
index 8313a8256e..7d72f13f9d 100644
--- a/doc/classes/VisualShaderNodeBooleanUniform.xml
+++ b/doc/classes/VisualShaderNodeBooleanUniform.xml
@@ -10,6 +10,14 @@
</tutorials>
<methods>
</methods>
+ <members>
+ <member name="default_value" type="bool" setter="set_default_value" getter="get_default_value" default="false">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/VisualShaderNodeColorUniform.xml b/doc/classes/VisualShaderNodeColorUniform.xml
index 6972ccefd9..90ef381b76 100644
--- a/doc/classes/VisualShaderNodeColorUniform.xml
+++ b/doc/classes/VisualShaderNodeColorUniform.xml
@@ -10,6 +10,14 @@
</tutorials>
<methods>
</methods>
+ <members>
+ <member name="default_value" type="Color" setter="set_default_value" getter="get_default_value" default="Color( 1, 1, 1, 1 )">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/VisualShaderNodeFloatUniform.xml b/doc/classes/VisualShaderNodeFloatUniform.xml
index 33ece8ac1b..705d5e8796 100644
--- a/doc/classes/VisualShaderNodeFloatUniform.xml
+++ b/doc/classes/VisualShaderNodeFloatUniform.xml
@@ -11,6 +11,12 @@
<methods>
</methods>
<members>
+ <member name="default_value" type="float" setter="set_default_value" getter="get_default_value" default="0.0">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
<member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeFloatUniform.Hint" default="0">
A hint applied to the uniform, which controls the values it can take when set through the inspector.
</member>
diff --git a/doc/classes/VisualShaderNodeIntUniform.xml b/doc/classes/VisualShaderNodeIntUniform.xml
index 8c7c288177..e39eba865b 100644
--- a/doc/classes/VisualShaderNodeIntUniform.xml
+++ b/doc/classes/VisualShaderNodeIntUniform.xml
@@ -11,6 +11,12 @@
<methods>
</methods>
<members>
+ <member name="default_value" type="int" setter="set_default_value" getter="get_default_value" default="0">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
<member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeIntUniform.Hint" default="0">
A hint applied to the uniform, which controls the values it can take when set through the inspector.
</member>
diff --git a/doc/classes/VisualShaderNodeTransformUniform.xml b/doc/classes/VisualShaderNodeTransformUniform.xml
index 43696c8226..ff6246618d 100644
--- a/doc/classes/VisualShaderNodeTransformUniform.xml
+++ b/doc/classes/VisualShaderNodeTransformUniform.xml
@@ -10,6 +10,14 @@
</tutorials>
<methods>
</methods>
+ <members>
+ <member name="default_value" type="Transform" setter="set_default_value" getter="get_default_value" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/VisualShaderNodeUniformRef.xml b/doc/classes/VisualShaderNodeUniformRef.xml
new file mode 100644
index 0000000000..db02e398ab
--- /dev/null
+++ b/doc/classes/VisualShaderNodeUniformRef.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="VisualShaderNodeUniformRef" inherits="VisualShaderNode" version="4.0">
+ <brief_description>
+ A reference to an existing [VisualShaderNodeUniform].
+ </brief_description>
+ <description>
+ Creating a reference to a [VisualShaderNodeUniform] allows you to reuse this uniform in different shaders or shader stages easily.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ </methods>
+ <members>
+ <member name="uniform_name" type="String" setter="set_uniform_name" getter="get_uniform_name" default="&quot;[None]&quot;">
+ The name of the uniform which this reference points to.
+ </member>
+ </members>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/VisualShaderNodeVec3Uniform.xml b/doc/classes/VisualShaderNodeVec3Uniform.xml
index c8b44fdc8d..cd1500f5a1 100644
--- a/doc/classes/VisualShaderNodeVec3Uniform.xml
+++ b/doc/classes/VisualShaderNodeVec3Uniform.xml
@@ -10,6 +10,14 @@
</tutorials>
<methods>
</methods>
+ <members>
+ <member name="default_value" type="Vector3" setter="set_default_value" getter="get_default_value" default="Vector3( 0, 0, 0 )">
+ A default value to be assigned within the shader.
+ </member>
+ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
+ Enables usage of the [member default_value].
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/editor/SCsub b/editor/SCsub
index 651dd5fffd..a976c4ed12 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -7,7 +7,6 @@ env.editor_sources = []
import os
import os.path
import glob
-from platform_methods import run_in_subprocess
import editor_builders
@@ -61,7 +60,11 @@ if env["tools"]:
docs = sorted(docs)
env.Depends("#editor/doc_data_compressed.gen.h", docs)
- env.CommandNoCache("#editor/doc_data_compressed.gen.h", docs, run_in_subprocess(editor_builders.make_doc_header))
+ env.CommandNoCache(
+ "#editor/doc_data_compressed.gen.h",
+ docs,
+ env.Run(editor_builders.make_doc_header, "Generating documentation header."),
+ )
path = env.Dir(".").abspath
@@ -69,14 +72,18 @@ if env["tools"]:
tlist = glob.glob(path + "/translations/*.po")
env.Depends("#editor/editor_translations.gen.h", tlist)
env.CommandNoCache(
- "#editor/editor_translations.gen.h", tlist, run_in_subprocess(editor_builders.make_editor_translations_header)
+ "#editor/editor_translations.gen.h",
+ tlist,
+ env.Run(editor_builders.make_editor_translations_header, "Generating editor translations header."),
)
# Documentation translations
tlist = glob.glob(env.Dir("#doc").abspath + "/translations/*.po")
env.Depends("#editor/doc_translations.gen.h", tlist)
env.CommandNoCache(
- "#editor/doc_translations.gen.h", tlist, run_in_subprocess(editor_builders.make_doc_translations_header)
+ "#editor/doc_translations.gen.h",
+ tlist,
+ env.Run(editor_builders.make_doc_translations_header, "Generating translations header."),
)
# Fonts
@@ -84,7 +91,11 @@ if env["tools"]:
flist.extend(glob.glob(path + "/../thirdparty/fonts/*.otf"))
flist.sort()
env.Depends("#editor/builtin_fonts.gen.h", flist)
- env.CommandNoCache("#editor/builtin_fonts.gen.h", flist, run_in_subprocess(editor_builders.make_fonts_header))
+ env.CommandNoCache(
+ "#editor/builtin_fonts.gen.h",
+ flist,
+ env.Run(editor_builders.make_fonts_header, "Generating builtin fonts header."),
+ )
env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 263ed9040a..ce131e6a05 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -1236,7 +1236,10 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
img.instance();
img->create(1, 1, 0, Image::FORMAT_RGB8);
} else if (c3d < c2d) {
- img = scene_root->get_texture()->get_data();
+ Ref<ViewportTexture> viewport_texture = scene_root->get_texture();
+ if (viewport_texture->get_width() > 0 && viewport_texture->get_height() > 0) {
+ img = viewport_texture->get_data();
+ }
} else {
// The 3D editor may be disabled as a feature, but scenes can still be opened.
// This check prevents the preview from regenerating in case those scenes are then saved.
@@ -1246,7 +1249,7 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
}
}
- if (img.is_valid()) {
+ if (img.is_valid() && img->get_width() > 0 && img->get_height() > 0) {
img = img->duplicate();
save.step(TTR("Creating Thumbnail"), 2);
@@ -6796,6 +6799,7 @@ EditorNode::EditorNode() {
EditorNode::~EditorNode() {
EditorInspector::cleanup_plugins();
+ EditorTranslationParser::get_singleton()->clean_parsers();
remove_print_handler(&print_handler);
memdelete(EditorHelp::get_doc_data());
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 2d50d25ff5..daafe095ce 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -3275,10 +3275,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
if ((p_hint == PROPERTY_HINT_RANGE || p_hint == PROPERTY_HINT_EXP_RANGE) && p_hint_text.get_slice_count(",") >= 2) {
greater = false; //if using ranged, assume false by default
lesser = false;
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
exp_range = p_hint == PROPERTY_HINT_EXP_RANGE;
@@ -3378,10 +3378,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3396,8 +3396,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
hide_slider = false;
}
@@ -3411,10 +3411,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3428,8 +3428,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
hide_slider = false;
}
@@ -3442,10 +3442,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3460,8 +3460,8 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
hide_slider = false;
}
@@ -3476,10 +3476,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3494,10 +3494,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3511,10 +3511,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3528,10 +3528,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3545,10 +3545,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
@@ -3562,10 +3562,10 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
bool hide_slider = true;
if (p_hint == PROPERTY_HINT_RANGE && p_hint_text.get_slice_count(",") >= 2) {
- min = p_hint_text.get_slice(",", 0).to_double();
- max = p_hint_text.get_slice(",", 1).to_double();
+ min = p_hint_text.get_slice(",", 0).to_float();
+ max = p_hint_text.get_slice(",", 1).to_float();
if (p_hint_text.get_slice_count(",") >= 3) {
- step = p_hint_text.get_slice(",", 2).to_double();
+ step = p_hint_text.get_slice(",", 2).to_float();
}
hide_slider = false;
}
diff --git a/editor/editor_translation_parser.cpp b/editor/editor_translation_parser.cpp
index 3f4864ad1e..da191fbc92 100644
--- a/editor/editor_translation_parser.cpp
+++ b/editor/editor_translation_parser.cpp
@@ -147,6 +147,11 @@ void EditorTranslationParser::remove_parser(const Ref<EditorTranslationParserPlu
}
}
+void EditorTranslationParser::clean_parsers() {
+ standard_parsers.clear();
+ custom_parsers.clear();
+}
+
EditorTranslationParser *EditorTranslationParser::get_singleton() {
if (!singleton) {
singleton = memnew(EditorTranslationParser);
diff --git a/editor/editor_translation_parser.h b/editor/editor_translation_parser.h
index 6d00bedfa4..fb8aa6ec9b 100644
--- a/editor/editor_translation_parser.h
+++ b/editor/editor_translation_parser.h
@@ -64,6 +64,7 @@ public:
Ref<EditorTranslationParserPlugin> get_parser(const String &p_extension) const;
void add_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
void remove_parser(const Ref<EditorTranslationParserPlugin> &p_parser, ParserType p_type);
+ void clean_parsers();
EditorTranslationParser();
~EditorTranslationParser();
diff --git a/editor/icons/SCsub b/editor/icons/SCsub
index e143276259..dd4243d750 100644
--- a/editor/icons/SCsub
+++ b/editor/icons/SCsub
@@ -4,14 +4,14 @@ Import("env")
import os
-from platform_methods import run_in_subprocess
import editor_icons_builders
-make_editor_icons_builder = Builder(
- action=run_in_subprocess(editor_icons_builders.make_editor_icons_action), suffix=".h", src_suffix=".svg"
-)
-env["BUILDERS"]["MakeEditorIconsBuilder"] = make_editor_icons_builder
+env["BUILDERS"]["MakeEditorIconsBuilder"] = Builder(
+ action=env.Run(editor_icons_builders.make_editor_icons_action, "Generating editor icons header."),
+ suffix=".h",
+ src_suffix=".svg",
+)
# Editor's own icons
icon_sources = Glob("*.svg")
diff --git a/editor/import/collada.cpp b/editor/import/collada.cpp
index 41e71248a9..8eb68ecdcf 100644
--- a/editor/import/collada.cpp
+++ b/editor/import/collada.cpp
@@ -262,7 +262,7 @@ void Collada::_parse_asset(XMLParser &parser) {
COLLADA_PRINT("up axis: " + parser.get_node_data());
} else if (name == "unit") {
- state.unit_scale = parser.get_attribute_value("meter").to_double();
+ state.unit_scale = parser.get_attribute_value("meter").to_float();
COLLADA_PRINT("unit scale: " + rtos(state.unit_scale));
}
@@ -433,7 +433,7 @@ Transform Collada::_read_transform(XMLParser &parser) {
Vector<float> farr;
farr.resize(16);
for (int i = 0; i < 16; i++) {
- farr.write[i] = array[i].to_double();
+ farr.write[i] = array[i].to_float();
}
return _read_transform_from_array(farr);
@@ -469,7 +469,7 @@ Variant Collada::_parse_param(XMLParser &parser) {
if (parser.get_node_name() == "float") {
parser.read();
if (parser.get_node_type() == XMLParser::NODE_TEXT) {
- data = parser.get_node_data().to_double();
+ data = parser.get_node_data().to_float();
}
} else if (parser.get_node_name() == "float2") {
Vector<float> v2 = _read_float_array(parser);
@@ -735,29 +735,29 @@ void Collada::_parse_camera(XMLParser &parser) {
camera.mode = CameraData::MODE_ORTHOGONAL;
} else if (name == "xfov") {
parser.read();
- camera.perspective.x_fov = parser.get_node_data().to_double();
+ camera.perspective.x_fov = parser.get_node_data().to_float();
} else if (name == "yfov") {
parser.read();
- camera.perspective.y_fov = parser.get_node_data().to_double();
+ camera.perspective.y_fov = parser.get_node_data().to_float();
} else if (name == "xmag") {
parser.read();
- camera.orthogonal.x_mag = parser.get_node_data().to_double();
+ camera.orthogonal.x_mag = parser.get_node_data().to_float();
} else if (name == "ymag") {
parser.read();
- camera.orthogonal.y_mag = parser.get_node_data().to_double();
+ camera.orthogonal.y_mag = parser.get_node_data().to_float();
} else if (name == "aspect_ratio") {
parser.read();
- camera.aspect = parser.get_node_data().to_double();
+ camera.aspect = parser.get_node_data().to_float();
} else if (name == "znear") {
parser.read();
- camera.z_near = parser.get_node_data().to_double();
+ camera.z_near = parser.get_node_data().to_float();
} else if (name == "zfar") {
parser.read();
- camera.z_far = parser.get_node_data().to_double();
+ camera.z_far = parser.get_node_data().to_float();
}
} else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END && parser.get_node_name() == "camera") {
@@ -806,20 +806,20 @@ void Collada::_parse_light(XMLParser &parser) {
} else if (name == "constant_attenuation") {
parser.read();
- light.constant_att = parser.get_node_data().to_double();
+ light.constant_att = parser.get_node_data().to_float();
} else if (name == "linear_attenuation") {
parser.read();
- light.linear_att = parser.get_node_data().to_double();
+ light.linear_att = parser.get_node_data().to_float();
} else if (name == "quadratic_attenuation") {
parser.read();
- light.quad_att = parser.get_node_data().to_double();
+ light.quad_att = parser.get_node_data().to_float();
} else if (name == "falloff_angle") {
parser.read();
- light.spot_angle = parser.get_node_data().to_double();
+ light.spot_angle = parser.get_node_data().to_float();
} else if (name == "falloff_exponent") {
parser.read();
- light.spot_exp = parser.get_node_data().to_double();
+ light.spot_exp = parser.get_node_data().to_float();
}
} else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END && parser.get_node_name() == "light") {
@@ -1877,10 +1877,10 @@ void Collada::_parse_animation_clip(XMLParser &parser) {
clip.name = parser.get_attribute_value("id");
}
if (parser.has_attribute("start")) {
- clip.begin = parser.get_attribute_value("start").to_double();
+ clip.begin = parser.get_attribute_value("start").to_float();
}
if (parser.has_attribute("end")) {
- clip.end = parser.get_attribute_value("end").to_double();
+ clip.end = parser.get_attribute_value("end").to_float();
}
while (parser.read() == OK) {
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index af1d266832..6e4a39d3f0 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -744,7 +744,7 @@ void AnimationPlayerEditor::_dialog_action(String p_path) {
}
void AnimationPlayerEditor::_scale_changed(const String &p_scale) {
- player->set_speed_scale(p_scale.to_double());
+ player->set_speed_scale(p_scale.to_float());
}
void AnimationPlayerEditor::_update_animation() {
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 6f209c512e..b4b81cc7f0 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -4689,9 +4689,9 @@ void Node3DEditor::edit(Node3D *p_spatial) {
}
void Node3DEditor::_snap_changed() {
- snap_translate_value = snap_translate->get_text().to_double();
- snap_rotate_value = snap_rotate->get_text().to_double();
- snap_scale_value = snap_scale->get_text().to_double();
+ snap_translate_value = snap_translate->get_text().to_float();
+ snap_rotate_value = snap_rotate->get_text().to_float();
+ snap_scale_value = snap_scale->get_text().to_float();
}
void Node3DEditor::_snap_update() {
@@ -4708,9 +4708,9 @@ void Node3DEditor::_xform_dialog_action() {
Vector3 translate;
for (int i = 0; i < 3; i++) {
- translate[i] = xform_translate[i]->get_text().to_double();
- rotate[i] = Math::deg2rad(xform_rotate[i]->get_text().to_double());
- scale[i] = xform_scale[i]->get_text().to_double();
+ translate[i] = xform_translate[i]->get_text().to_float();
+ rotate[i] = Math::deg2rad(xform_rotate[i]->get_text().to_float());
+ scale[i] = xform_scale[i]->get_text().to_float();
}
t.basis.scale(scale);
@@ -6432,9 +6432,9 @@ Vector3 Node3DEditor::snap_point(Vector3 p_target, Vector3 p_start) const {
float Node3DEditor::get_translate_snap() const {
float snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
- snap_value = snap_translate->get_text().to_double() / 10.0;
+ snap_value = snap_translate->get_text().to_float() / 10.0;
} else {
- snap_value = snap_translate->get_text().to_double();
+ snap_value = snap_translate->get_text().to_float();
}
return snap_value;
@@ -6443,9 +6443,9 @@ float Node3DEditor::get_translate_snap() const {
float Node3DEditor::get_rotate_snap() const {
float snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
- snap_value = snap_rotate->get_text().to_double() / 3.0;
+ snap_value = snap_rotate->get_text().to_float() / 3.0;
} else {
- snap_value = snap_rotate->get_text().to_double();
+ snap_value = snap_rotate->get_text().to_float();
}
return snap_value;
@@ -6454,9 +6454,9 @@ float Node3DEditor::get_rotate_snap() const {
float Node3DEditor::get_scale_snap() const {
float snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
- snap_value = snap_scale->get_text().to_double() / 2.0;
+ snap_value = snap_scale->get_text().to_float() / 2.0;
} else {
- snap_value = snap_scale->get_text().to_double();
+ snap_value = snap_scale->get_text().to_float();
}
return snap_value;
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index edce2023ff..6c7f4eb908 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -2094,12 +2094,12 @@ bool ScriptEditor::edit(const RES &p_resource, int p_line, int p_col, bool p_gra
// Don't open dominant script if using an external editor.
const bool use_external_editor =
EditorSettings::get_singleton()->get("text_editor/external/use_external_editor") ||
- script->get_language()->overrides_external_editor();
+ (script.is_valid() && script->get_language()->overrides_external_editor());
const bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change");
const bool should_open = (open_dominant && !use_external_editor) || !EditorNode::get_singleton()->is_changing_scene();
- if (script != nullptr && script->get_language()->overrides_external_editor()) {
+ if (script.is_valid() && script->get_language()->overrides_external_editor()) {
if (should_open) {
Error err = script->get_language()->open_in_external_editor(script, p_line >= 0 ? p_line : 0, p_col);
if (err != OK) {
@@ -3005,7 +3005,7 @@ void ScriptEditor::set_scene_root_script(Ref<Script> p_script) {
// Don't open dominant script if using an external editor.
const bool use_external_editor =
EditorSettings::get_singleton()->get("text_editor/external/use_external_editor") ||
- p_script->get_language()->overrides_external_editor();
+ (p_script.is_valid() && p_script->get_language()->overrides_external_editor());
const bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change");
if (open_dominant && !use_external_editor && p_script.is_valid()) {
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 1a88562c13..4b89ca1216 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -1639,6 +1639,7 @@ void ScriptTextEditor::_enable_code_editor() {
code_editor->get_text_edit()->connect("breakpoint_toggled", callable_mp(this, &ScriptTextEditor::_breakpoint_toggled));
code_editor->get_text_edit()->connect("symbol_lookup", callable_mp(this, &ScriptTextEditor::_lookup_symbol));
code_editor->get_text_edit()->connect("symbol_validate", callable_mp(this, &ScriptTextEditor::_validate_symbol));
+ code_editor->get_text_edit()->connect("info_clicked", callable_mp(this, &ScriptTextEditor::_lookup_connections));
code_editor->get_text_edit()->connect("gui_input", callable_mp(this, &ScriptTextEditor::_text_edit_gui_input));
code_editor->show_toggle_scripts_button();
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index dc2abe15ee..2a7f3f0656 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -172,7 +172,7 @@ void ShaderTextEditor::_load_theme_settings() {
const Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
syntax_highlighter->clear_color_regions();
syntax_highlighter->add_color_region("/*", "*/", comment_color, false);
- syntax_highlighter->add_color_region("//", "", comment_color, false);
+ syntax_highlighter->add_color_region("//", "", comment_color, true);
}
void ShaderTextEditor::_check_shader_mode() {
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 516c14329c..1073da7d8c 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -458,7 +458,7 @@ void SpriteFramesEditor::_animation_select() {
}
if (frames->has_animation(edited_anim)) {
- double value = anim_speed->get_line_edit()->get_text().to_double();
+ double value = anim_speed->get_line_edit()->get_text().to_float();
if (!Math::is_equal_approx(value, frames->get_animation_speed(edited_anim))) {
_animation_fps_changed(value);
}
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index d987f6f7c0..0af2b120bd 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -489,6 +489,45 @@ void VisualShaderEditor::_update_graph() {
Vector<int> nodes = visual_shader->get_node_list(type);
+ VisualShaderNodeUniformRef::clear_uniforms();
+
+ // scan for all uniforms
+
+ for (int t = 0; t < VisualShader::TYPE_MAX; t++) {
+ Vector<int> tnodes = visual_shader->get_node_list((VisualShader::Type)t);
+ for (int i = 0; i < tnodes.size(); i++) {
+ Ref<VisualShaderNode> vsnode = visual_shader->get_node((VisualShader::Type)t, tnodes[i]);
+ Ref<VisualShaderNodeUniform> uniform = vsnode;
+
+ if (uniform.is_valid()) {
+ Ref<VisualShaderNodeFloatUniform> float_uniform = vsnode;
+ Ref<VisualShaderNodeIntUniform> int_uniform = vsnode;
+ Ref<VisualShaderNodeVec3Uniform> vec3_uniform = vsnode;
+ Ref<VisualShaderNodeColorUniform> color_uniform = vsnode;
+ Ref<VisualShaderNodeBooleanUniform> bool_uniform = vsnode;
+ Ref<VisualShaderNodeTransformUniform> transform_uniform = vsnode;
+
+ VisualShaderNodeUniformRef::UniformType uniform_type;
+ if (float_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_FLOAT;
+ } else if (int_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_INT;
+ } else if (bool_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_BOOLEAN;
+ } else if (vec3_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_VECTOR;
+ } else if (transform_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_TRANSFORM;
+ } else if (color_uniform.is_valid()) {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_COLOR;
+ } else {
+ uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_SAMPLER;
+ }
+ VisualShaderNodeUniformRef::add_uniform(uniform->get_uniform_name(), uniform_type);
+ }
+ }
+ }
+
Control *offset;
for (int n_i = 0; n_i < nodes.size(); n_i++) {
@@ -834,6 +873,7 @@ void VisualShaderEditor::_update_graph() {
Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color");
Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
Color symbol_color = EDITOR_GET("text_editor/highlighting/symbol_color");
+ Color function_color = EDITOR_GET("text_editor/highlighting/function_color");
expression_box->set_syntax_highlighter(expression_syntax_highlighter);
expression_box->add_theme_color_override("background_color", background_color);
@@ -845,8 +885,9 @@ void VisualShaderEditor::_update_graph() {
expression_box->add_theme_font_override("font", get_theme_font("expression", "EditorFonts"));
expression_box->add_theme_color_override("font_color", text_color);
expression_syntax_highlighter->set_symbol_color(symbol_color);
+ expression_syntax_highlighter->set_function_color(function_color);
expression_syntax_highlighter->add_color_region("/*", "*/", comment_color, false);
- expression_syntax_highlighter->add_color_region("//", "", comment_color, false);
+ expression_syntax_highlighter->add_color_region("//", "", comment_color, true);
expression_box->set_text(expression);
expression_box->set_context_menu_enabled(false);
@@ -1701,6 +1742,7 @@ void VisualShaderEditor::_notification(int p_what) {
Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color");
Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
Color symbol_color = EDITOR_GET("text_editor/highlighting/symbol_color");
+ Color function_color = EDITOR_GET("text_editor/highlighting/function_color");
preview_text->add_theme_color_override("background_color", background_color);
@@ -1711,9 +1753,10 @@ void VisualShaderEditor::_notification(int p_what) {
preview_text->add_theme_font_override("font", get_theme_font("expression", "EditorFonts"));
preview_text->add_theme_color_override("font_color", text_color);
syntax_highlighter->set_symbol_color(symbol_color);
+ syntax_highlighter->set_function_color(function_color);
syntax_highlighter->clear_color_regions();
syntax_highlighter->add_color_region("/*", "*/", comment_color, false);
- syntax_highlighter->add_color_region("//", "", comment_color, false);
+ syntax_highlighter->add_color_region("//", "", comment_color, true);
error_text->add_theme_font_override("font", get_theme_font("status_source", "EditorFonts"));
error_text->add_theme_color_override("font_color", get_theme_color("error_color", "Editor"));
@@ -2035,6 +2078,41 @@ void VisualShaderEditor::_input_select_item(Ref<VisualShaderNodeInput> input, St
undo_redo->commit_action();
}
+void VisualShaderEditor::_uniform_select_item(Ref<VisualShaderNodeUniformRef> p_uniform_ref, String p_name) {
+ String prev_name = p_uniform_ref->get_uniform_name();
+
+ if (p_name == prev_name) {
+ return;
+ }
+
+ bool type_changed = p_uniform_ref->get_uniform_type_by_name(p_name) != p_uniform_ref->get_uniform_type_by_name(prev_name);
+
+ UndoRedo *undo_redo = EditorNode::get_singleton()->get_undo_redo();
+ undo_redo->create_action(TTR("UniformRef Name Changed"));
+
+ undo_redo->add_do_method(p_uniform_ref.ptr(), "set_uniform_name", p_name);
+ undo_redo->add_undo_method(p_uniform_ref.ptr(), "set_uniform_name", prev_name);
+
+ if (type_changed) {
+ //restore connections if type changed
+ VisualShader::Type type = VisualShader::Type(edit_type->get_selected());
+ int id = visual_shader->find_node_id(type, p_uniform_ref);
+ List<VisualShader::Connection> conns;
+ visual_shader->get_node_connections(type, &conns);
+ for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
+ if (E->get().from_node == id) {
+ undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ }
+ }
+ }
+
+ undo_redo->add_do_method(VisualShaderEditor::get_singleton(), "_update_graph");
+ undo_redo->add_undo_method(VisualShaderEditor::get_singleton(), "_update_graph");
+
+ undo_redo->commit_action();
+}
+
void VisualShaderEditor::_member_filter_changed(const String &p_text) {
_update_options_menu();
}
@@ -2260,6 +2338,7 @@ void VisualShaderEditor::_bind_methods() {
ClassDB::bind_method("_add_node", &VisualShaderEditor::_add_node);
ClassDB::bind_method("_node_changed", &VisualShaderEditor::_node_changed);
ClassDB::bind_method("_input_select_item", &VisualShaderEditor::_input_select_item);
+ ClassDB::bind_method("_uniform_select_item", &VisualShaderEditor::_uniform_select_item);
ClassDB::bind_method("_set_node_size", &VisualShaderEditor::_set_node_size);
ClassDB::bind_method("_clear_buffer", &VisualShaderEditor::_clear_buffer);
@@ -2862,6 +2941,7 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("Expression", "Special", "", "VisualShaderNodeExpression", TTR("Custom Godot Shader Language expression, with custom amount of input and output ports. This is a direct injection of code into the vertex/fragment/light function, do not use it to write the function declarations inside.")));
add_options.push_back(AddOption("Fresnel", "Special", "", "VisualShaderNodeFresnel", TTR("Returns falloff based on the dot product of surface normal and view direction of camera (pass associated inputs to it)."), -1, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("GlobalExpression", "Special", "", "VisualShaderNodeGlobalExpression", TTR("Custom Godot Shader Language expression, which is placed on top of the resulted shader. You can place various function definitions inside and call it later in the Expressions. You can also declare varyings, uniforms and constants.")));
+ add_options.push_back(AddOption("UniformRef", "Special", "", "VisualShaderNodeUniformRef", TTR("A reference to an existing uniform.")));
add_options.push_back(AddOption("ScalarDerivativeFunc", "Special", "Common", "VisualShaderNodeScalarDerivativeFunc", TTR("(Fragment/Light mode only) Scalar derivative function."), -1, VisualShaderNode::PORT_TYPE_SCALAR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true));
add_options.push_back(AddOption("VectorDerivativeFunc", "Special", "Common", "VisualShaderNodeVectorDerivativeFunc", TTR("(Fragment/Light mode only) Vector derivative function."), -1, VisualShaderNode::PORT_TYPE_VECTOR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true));
@@ -2980,6 +3060,54 @@ public:
}
};
+////////////////
+
+class VisualShaderNodePluginUniformRefEditor : public OptionButton {
+ GDCLASS(VisualShaderNodePluginUniformRefEditor, OptionButton);
+
+ Ref<VisualShaderNodeUniformRef> uniform_ref;
+
+public:
+ void _notification(int p_what) {
+ if (p_what == NOTIFICATION_READY) {
+ connect("item_selected", callable_mp(this, &VisualShaderNodePluginUniformRefEditor::_item_selected));
+ }
+ }
+
+ void _item_selected(int p_item) {
+ VisualShaderEditor::get_singleton()->call_deferred("_uniform_select_item", uniform_ref, get_item_text(p_item));
+ }
+
+ void setup(const Ref<VisualShaderNodeUniformRef> &p_uniform_ref) {
+ uniform_ref = p_uniform_ref;
+
+ Ref<Texture2D> type_icon[7] = {
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("float", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("int", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("bool", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Vector3", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Transform", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("Color", "EditorIcons"),
+ EditorNode::get_singleton()->get_gui_base()->get_theme_icon("ImageTexture", "EditorIcons"),
+ };
+
+ add_item("[None]");
+ int to_select = -1;
+ for (int i = 0; i < p_uniform_ref->get_uniforms_count(); i++) {
+ if (p_uniform_ref->get_uniform_name() == p_uniform_ref->get_uniform_name_by_index(i)) {
+ to_select = i + 1;
+ }
+ add_icon_item(type_icon[p_uniform_ref->get_uniform_type_by_index(i)], p_uniform_ref->get_uniform_name_by_index(i));
+ }
+
+ if (to_select >= 0) {
+ select(to_select);
+ }
+ }
+};
+
+////////////////
+
class VisualShaderNodePluginDefaultEditor : public VBoxContainer {
GDCLASS(VisualShaderNodePluginDefaultEditor, VBoxContainer);
Ref<Resource> parent_resource;
@@ -3095,6 +3223,13 @@ public:
};
Control *VisualShaderNodePluginDefault::create_editor(const Ref<Resource> &p_parent_resource, const Ref<VisualShaderNode> &p_node) {
+ if (p_node->is_class("VisualShaderNodeUniformRef")) {
+ //create input
+ VisualShaderNodePluginUniformRefEditor *uniform_editor = memnew(VisualShaderNodePluginUniformRefEditor);
+ uniform_editor->setup(p_node);
+ return uniform_editor;
+ }
+
if (p_node->is_class("VisualShaderNodeInput")) {
//create input
VisualShaderNodePluginInputEditor *input_editor = memnew(VisualShaderNodePluginInputEditor);
diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h
index 0601b35131..9b80488b22 100644
--- a/editor/plugins/visual_shader_editor_plugin.h
+++ b/editor/plugins/visual_shader_editor_plugin.h
@@ -232,6 +232,7 @@ class VisualShaderEditor : public VBoxContainer {
void _rebuild();
void _input_select_item(Ref<VisualShaderNodeInput> input, String name);
+ void _uniform_select_item(Ref<VisualShaderNodeUniformRef> p_uniform, String p_name);
void _add_input_port(int p_node, int p_port, int p_port_type, const String &p_name);
void _remove_input_port(int p_node, int p_port);
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index c9115fb870..cb56358ae6 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -368,18 +368,18 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
float min = 0, max = 100, step = type == Variant::FLOAT ? .01 : 1;
if (c >= 1) {
if (!hint_text.get_slice(",", 0).empty()) {
- min = hint_text.get_slice(",", 0).to_double();
+ min = hint_text.get_slice(",", 0).to_float();
}
}
if (c >= 2) {
if (!hint_text.get_slice(",", 1).empty()) {
- max = hint_text.get_slice(",", 1).to_double();
+ max = hint_text.get_slice(",", 1).to_float();
}
}
if (c >= 3) {
if (!hint_text.get_slice(",", 2).empty()) {
- step = hint_text.get_slice(",", 2).to_double();
+ step = hint_text.get_slice(",", 2).to_float();
}
}
@@ -1590,7 +1590,7 @@ real_t CustomPropertyEditor::_parse_real_expression(String text) {
Error err = expr->parse(text);
real_t out;
if (err != OK) {
- out = value_editor[0]->get_text().to_double();
+ out = value_editor[0]->get_text().to_float();
} else {
out = expr->execute(Array(), nullptr, false);
}
diff --git a/editor/translations/af.po b/editor/translations/af.po
index daa0737106..90dca850de 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -2403,10 +2403,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10565,6 +10561,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Skrap"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Skrap"
@@ -12232,6 +12233,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 5a0b6d1e17..45ac317d99 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -41,12 +41,14 @@
# Anas <anas.ghamdi61@gmail.com>, 2020.
# R-K <raouf9005@gmail.com>, 2020.
# HeroFight dev <abdkafi2002@gmail.com>, 2020.
+# أحمد مصطÙÙ‰ الطبراني <eltabaraniahmed@gmail.com>, 2020.
+# ChemicalInk <aladdinalkhafaji@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: Airbus5717 <Abdussamadf350@gmail.com>\n"
+"PO-Revision-Date: 2020-07-21 13:41+0000\n"
+"Last-Translator: ChemicalInk <aladdinalkhafaji@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -2342,10 +2344,6 @@ msgid "There is no defined scene to run."
msgstr "ليس هناك مشهد محدد ليتم تشغيله."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "المشهد الحالي لم يتم Ø­Ùظه. الرجاء Ø­Ùظ المشهد قبل تشغيله Ùˆ اختباره."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "لا يمكن بدء عملية جانبية!"
@@ -4722,17 +4720,16 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Transition: "
-msgstr "التحريك "
+msgstr "الانتقال: "
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Play Mode:"
-msgstr "وضع السحب"
+msgstr "وضع اللعب:"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "AnimationTree"
-msgstr "مسارات التحريك"
+msgstr "شجرة التحريك"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "New name:"
@@ -4899,14 +4896,12 @@ msgid "Request failed, return code:"
msgstr "Ùشل إتمام الطلب٫ الرمز الذي تم إرجاعه:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed."
msgstr "Ùشل الطلب."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Cannot save response to:"
-msgstr "لا يمكن المسح:"
+msgstr "لا يمكن الحÙظ بسبب:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Write error."
@@ -4917,19 +4912,16 @@ msgid "Request failed, too many redirects"
msgstr "Ùشل الطلب٫ السبب هو اعادة التحويل مرات اكثر من اللازم"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Redirect loop."
msgstr "اعادة توجيه حلقة التكرار."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, timeout"
-msgstr "Ùشل إتمام الطلب٫ الرمز الذي تم إرجاعه:"
+msgstr "Ùشل الطلب ØŒ انتهت المهلة"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Timeout."
-msgstr "الوقت"
+msgstr "إنتهى الوقت"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
@@ -4952,14 +4944,12 @@ msgid "Asset Download Error:"
msgstr "خطأ ÙÙŠ تنزيل الأصول:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading (%s / %s)..."
-msgstr "جاري التنزيل"
+msgstr "جاري التنزيل (%s / %s)..."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading..."
-msgstr "جاري التنزيل"
+msgstr "‫جاري التنزيل..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Resolving..."
@@ -4974,9 +4964,8 @@ msgid "Idle"
msgstr "عاطل"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Install..."
-msgstr "تثبيت"
+msgstr "تثبيت..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Retry"
@@ -5007,24 +4996,20 @@ msgid "Name (Z-A)"
msgstr "الاسم (ترتيب أل٠بائي معكوس)"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "License (A-Z)"
-msgstr "الرخصة"
+msgstr "الرخصة (أ-ي)"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "License (Z-A)"
-msgstr "الرخصة"
+msgstr "الرخصة (ي-أ)"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "First"
msgstr "الأول"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Previous"
-msgstr "التبويب السابق"
+msgstr "السابق"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Next"
@@ -5043,14 +5028,12 @@ msgid "No results for \"%s\"."
msgstr "لا نتائج من أجل \"%s\"."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Import..."
-msgstr "إستيراد"
+msgstr "استيراد..."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Plugins..."
-msgstr "إضاÙات"
+msgstr "إضاÙات..."
#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
@@ -5066,9 +5049,8 @@ msgid "Site:"
msgstr "الموقع:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Support"
-msgstr "الدعم..."
+msgstr "الدعم"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Official"
@@ -5079,9 +5061,8 @@ msgid "Testing"
msgstr "أختبار"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Loading..."
-msgstr "تحميل"
+msgstr "جاري التحميل..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
@@ -5594,9 +5575,8 @@ msgid "Scale mask for inserting keys."
msgstr "قناع التحجيم لأجل إدخال المÙاتيح."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Insert keys (based on mask)."
-msgstr "أدخل Ù…Ùتاح (مسارات موجودة بالÙعل)"
+msgstr "أدخل المÙاتيح (على أساس القناع)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5666,9 +5646,8 @@ msgid "Error instancing scene from %s"
msgstr "خطأ ÙÙŠ توضيح المشهد من %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Change Default Type"
-msgstr "غير النوع الإÙتراضي"
+msgstr "تغير النوع الإÙتراضي"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5753,9 +5732,8 @@ msgid "Emission Colors"
msgstr "الوان الإنبعاث"
#: editor/plugins/cpu_particles_editor_plugin.cpp
-#, fuzzy
msgid "CPUParticles"
-msgstr "جسيمات"
+msgstr "جزيئات وحدة المعالجة المركزية"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -5816,9 +5794,8 @@ msgid "Right Linear"
msgstr "الخط اليميني"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Preset"
-msgstr "تحميل الإعداد المعد مسبقاً"
+msgstr "تحميل إعداد مسبق"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove Curve Point"
@@ -5974,9 +5951,8 @@ msgstr ""
"هذا هو الخيار الأكثر دقة (لكنه الأبطئ) لأجل للكش٠عن وقوع التصادم."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Create Single Convex Collision Sibling"
-msgstr "إنشاء متصادم محدب قريب"
+msgstr "إنشاء شقيق تصادم محدب Ù…Ùرد"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
@@ -6051,9 +6027,8 @@ msgid ""
msgstr "تحديث من المشهد"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Mesh Library"
-msgstr "مكتبة الميش..."
+msgstr "مكتبة المجسم"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -10617,6 +10592,11 @@ msgstr "Ø­Ùظ المشهد"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "حذ٠العÙقدة \"%s\" مع جميع أبنائها؟"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "إنشاء عقدة"
@@ -12372,6 +12352,12 @@ msgstr ""
"يجب تزويد ال CollisionShape2D بإحدى الأشكال (من نوع Shape2D) لتعمل بالشكل "
"المطلوب. الرجاء تكوين و ضبط الشكل لها اولا!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12851,6 +12837,9 @@ msgstr "يمكن تعيين المتغيرات Ùقط ÙÙŠ الذروة ."
msgid "Constants cannot be modified."
msgstr "لا يمكن تعديل الثوابت."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "المشهد الحالي لم يتم Ø­Ùظه. الرجاء Ø­Ùظ المشهد قبل تشغيله Ùˆ اختباره."
+
#~ msgid "Not in resource path."
#~ msgstr "ليس ÙÙŠ مسار الموارد."
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index c9f38d518a..b0378d612c 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -2262,11 +2262,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Текущата Ñцена никога не е била запазена. МолÑ, запазете Ñ Ð¿Ñ€ÐµÐ´Ð¸ изпълнение."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10293,6 +10288,11 @@ msgid "Make node as Root"
msgstr "Превръщане на възела в корен"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Изтриване на %d възела?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Изтриване на %d възела?"
@@ -11996,6 +11996,12 @@ msgstr ""
"За да работи CollisionShape2D, е нужно да му Ñе даде форма. МолÑ, Ñъздайте "
"му Shape2D реÑурÑ."
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12484,6 +12490,11 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Текущата Ñцена никога не е била запазена. МолÑ, запазете Ñ Ð¿Ñ€ÐµÐ´Ð¸ "
+#~ "изпълнение."
+
#~ msgid "Not in resource path."
#~ msgstr "Ðе е в Ð¿ÑŠÑ‚Ñ Ð½Ð° реÑурÑите."
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index c438934246..5fdcfb385b 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -2490,11 +2490,6 @@ msgid "There is no defined scene to run."
msgstr "চালানোর জনà§à¦¯ কোনো দৃশà§à¦¯ নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করা নেই।"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯à¦Ÿà¦¿ কখনোই সংরকà§à¦·à¦£ করা হয় নি, অনà§à¦—à§à¦°à¦¹ করে চালানোর পূরà§à¦¬à§‡ à¦à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "উপ-পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•à§‡ শà§à¦°à§ করা সমà§à¦­à¦¬ হয়নি!"
@@ -11217,6 +11212,11 @@ msgstr "অরà§à¦¥à¦ªà§‚রà§à¦¨!"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
@@ -13032,6 +13032,12 @@ msgstr ""
"সফলà§à¦­à¦¾à¦¬à§‡ কাজ করতে CollisionShape2D à¦à¦° à¦à¦•à¦Ÿà¦¿ আকৃতি পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤ অনà§à¦—à§à¦°à¦¹ করে তার জনà§à¦¯ "
"à¦à¦•à¦Ÿà¦¿ আকৃতি তৈরি করà§à¦¨!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13552,6 +13558,11 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯à¦Ÿà¦¿ কখনোই সংরকà§à¦·à¦£ করা হয় নি, অনà§à¦—à§à¦°à¦¹ করে চালানোর পূরà§à¦¬à§‡ à¦à¦Ÿà¦¿ সংরকà§à¦·à¦£ "
+#~ "করà§à¦¨à¥¤"
+
#~ msgid "Not in resource path."
#~ msgstr "রিসোরà§à¦¸à§‡à¦° পথে নয়।"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 5fb91db7b4..359aea8184 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -2338,11 +2338,6 @@ msgid "There is no defined scene to run."
msgstr "No s'ha definit cap escena per executar."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "No s'ha pogut començar el subprocés!"
@@ -10818,6 +10813,11 @@ msgid "Make node as Root"
msgstr "Convertir node en arrel"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Voleu suprimir el node \"%s\" i els seus fills?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Suprimir %d nodes?"
@@ -12585,6 +12585,12 @@ msgstr ""
"S'ha de proporcionar una forma perquè *CollisionShape2D pugui funcionar. "
"Creeu-li un recurs de forma (shape)!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13161,6 +13167,10 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Les constants no es poden modificar."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la."
+
#~ msgid "Not in resource path."
#~ msgstr "Fora del camí dels recursos."
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 722fa52d92..e629fbc2ff 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-07-28 09:51+0000\n"
"Last-Translator: Zbyněk <zbynek.fiala@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
@@ -773,9 +773,8 @@ msgid "Method in target node must be specified."
msgstr "Je nutné zadat metodu v cílovém uzlu."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Jméno není platný identifikátor:"
+msgstr "Jméno metody musí být platný identifikátor."
#: editor/connections_dialog.cpp
msgid ""
@@ -828,7 +827,7 @@ msgstr "Další argumenty volání:"
#: editor/connections_dialog.cpp
msgid "Receiver Method:"
-msgstr "Metoda pÅ™ijímaÄe:"
+msgstr "Metoda příjemce:"
#: editor/connections_dialog.cpp
msgid "Advanced"
@@ -1296,7 +1295,7 @@ msgstr "Přetažením uspořádejte."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr "Solo"
+msgstr "Sólo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
@@ -1496,7 +1495,7 @@ msgstr "Název"
#: editor/editor_autoload_settings.cpp
msgid "Singleton"
-msgstr "Singleton"
+msgstr "Singleton (jedináÄek)"
#: editor/editor_data.cpp editor/inspector_dock.cpp
msgid "Paste Params"
@@ -1961,9 +1960,8 @@ msgid "Properties"
msgstr "Vlastnosti"
#: editor/editor_help.cpp
-#, fuzzy
msgid "override:"
-msgstr "Přepsat"
+msgstr "přepsat:"
#: editor/editor_help.cpp
msgid "default:"
@@ -2339,10 +2337,6 @@ msgid "There is no defined scene to run."
msgstr "Neexistuje žádná scéna pro spuštění."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Nelze spustit podproces!"
@@ -2427,9 +2421,8 @@ msgid "Can't reload a scene that was never saved."
msgstr "Nelze naÄíst scénu, která nebyla nikdy uložena."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Saved Scene"
-msgstr "Uložit scénu"
+msgstr "ZnovunaÄíst uloženou scénu"
#: editor/editor_node.cpp
msgid ""
@@ -2929,9 +2922,8 @@ msgid "Q&A"
msgstr "Otázky a odpovědi"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Report a Bug"
-msgstr "Znovu importovat"
+msgstr "Nahlásit chybu"
#: editor/editor_node.cpp
msgid "Send Docs Feedback"
@@ -3662,7 +3654,7 @@ msgstr "Otevřít scény"
#: editor/filesystem_dock.cpp
msgid "Instance"
-msgstr "Instance"
+msgstr "Instance:"
#: editor/filesystem_dock.cpp
msgid "Add to Favorites"
@@ -5731,7 +5723,7 @@ msgstr ""
#: editor/plugins/cpu_particles_editor_plugin.cpp
msgid "CPUParticles"
-msgstr "CPUParticles"
+msgstr "CPUParticles (Äástice)"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -6589,7 +6581,7 @@ msgstr "Vložit zdroj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_editor.cpp
msgid "Instance:"
-msgstr "Instance:"
+msgstr "Instance"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
@@ -7091,13 +7083,12 @@ msgid "Go to Previous Breakpoint"
msgstr "Přejít na předchozí breakpoint"
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid ""
"This shader has been modified on on disk.\n"
"What action should be taken?"
msgstr ""
-"Následující soubory mají novější verzi na disku.\n"
-"Jaká akce se má vykonat?:"
+"Tento shader byl na disku upraven.\n"
+"Jaká akce se má vykonat?"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
@@ -7118,7 +7109,7 @@ msgstr ""
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Skeleton2D"
-msgstr "Skeleton2D"
+msgstr "Skeleton2D (Kostra 2D)"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Make Rest Pose (From Bones)"
@@ -7857,7 +7848,7 @@ msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Offset:"
-msgstr "Offset:"
+msgstr "Offset(Posun):"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Step:"
@@ -8464,7 +8455,7 @@ msgstr "Tato vlastnost nemůže být změněna."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "TileSet"
-msgstr "TileSet"
+msgstr "TileSet (Sada dlaždic)"
#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
@@ -9855,11 +9846,12 @@ msgid ""
msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotÄen)"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Remove this project from the list?\n"
"The project folder's contents won't be modified."
-msgstr "Odstranit projekt ze seznamu? (Obsah složky zůstane nedotÄen)"
+msgstr ""
+"Odstranit projekt ze seznamu?\n"
+"Obsah složky zůstane nedotÄen."
#: editor/project_manager.cpp
#, fuzzy
@@ -9960,9 +9952,8 @@ msgstr ""
"nebo '\"'"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "An action with the name '%s' already exists."
-msgstr "Akce '%s' již existuje!"
+msgstr "Akce s názvem \"%s\" již existuje."
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
@@ -10549,8 +10540,12 @@ msgstr "Dává smysl!"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Smazat %d uzlů?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
-msgstr "Smazat uzel"
+msgstr "Smazat %d uzlů?"
#: editor/scene_tree_dock.cpp
msgid "Delete the root node \"%s\"?"
@@ -10561,9 +10556,8 @@ msgid "Delete node \"%s\" and its children?"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Delete node \"%s\"?"
-msgstr "Smazat uzel"
+msgstr "Smazat uzel \"%s\"?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
@@ -12234,6 +12228,12 @@ msgid ""
"shape resource for it!"
msgstr "CollisionShape2D musí obsahovat tvar. Prosím vytvořte zdrojový tvar."
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12761,6 +12761,10 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Konstanty není možné upravovat."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním."
+
#~ msgid "Not in resource path."
#~ msgstr "Není v cestě ke zdroji."
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 70b05c08ff..da54615917 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -2426,10 +2426,6 @@ msgid "There is no defined scene to run."
msgstr "Der er ingen defineret scene at køre."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Den nuværende scene er aldrig gemt, venligst gem før du kører den."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Kunne ikke starte underproces!"
@@ -10784,6 +10780,11 @@ msgstr "Gem Scene"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Vælg Node"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Vælg Node"
@@ -12512,6 +12513,12 @@ msgstr ""
"En figur skal gives CollisionShape2D for at det fungerer. Opret venligst en "
"figur ressource for den!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13030,6 +13037,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Konstanter kan ikke ændres."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Den nuværende scene er aldrig gemt, venligst gem før du kører den."
+
#~ msgid "Not in resource path."
#~ msgstr "Ikke i stien for ressource."
diff --git a/editor/translations/de.po b/editor/translations/de.po
index eb533ff15e..4b8252173e 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -52,12 +52,14 @@
# artism90 <artism90@googlemail.com>, 2020.
# Jaigskim <filzstift112@gmail.com>, 2020.
# Jacqueline Ulken <Jacqueline.Ulken@protonmail.com>, 2020.
+# Günther Bohn <ciscouser@gmx.de>, 2020.
+# Tom Wor <mail@tomwor.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: So Wieso <sowieso@dukun.de>\n"
+"PO-Revision-Date: 2020-07-28 09:51+0000\n"
+"Last-Translator: Tom Wor <mail@tomwor.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -775,7 +777,7 @@ msgstr "Standard"
#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
-msgstr "Seitenleiste umschalten"
+msgstr "Skript-Panel umschalten"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -2382,12 +2384,6 @@ msgid "There is no defined scene to run."
msgstr "Es ist keine abzuspielende Szene definiert."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Die aktuelle Szene wurde noch nicht gespeichert, bitte vor dem Abspielen "
-"sichern."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Unterprozess konnte nicht gestartet werden!"
@@ -5438,7 +5434,7 @@ msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
-msgstr "Zoom Zurücksetzen"
+msgstr "Zoom zurücksetzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10153,7 +10149,7 @@ msgstr "Ereignis hinzufügen"
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr "\"Button\""
+msgstr "Schaltfläche (Button)"
#: editor/project_settings_editor.cpp
msgid "Left Button."
@@ -10641,6 +10637,11 @@ msgid "Make node as Root"
msgstr "Node zur Szenenwurzel machen"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Node „%s“ und Unterobjekte löschen?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "%d Nodes löschen?"
@@ -10759,7 +10760,7 @@ msgstr "Leere Vererbung"
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
-msgstr "bearbeitbare Unterobjekte"
+msgstr "Bearbeitbare Unterobjekte"
#: editor/scene_tree_dock.cpp
msgid "Load As Placeholder"
@@ -12340,6 +12341,12 @@ msgstr ""
"Damit CollisionShape2D funktionieren kann, muss eine Form angegeben werden. "
"Bitte erzeuge eine Shape-Ressource dafür!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12939,6 +12946,11 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden."
msgid "Constants cannot be modified."
msgstr "Konstanten können nicht verändert werden."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Die aktuelle Szene wurde noch nicht gespeichert, bitte vor dem Abspielen "
+#~ "sichern."
+
#~ msgid "Not in resource path."
#~ msgstr "Nicht im Ressourcen-Pfad."
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 01121a8156..87dca17afd 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -2245,10 +2245,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10109,6 +10105,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11710,6 +11710,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 8ff5881a9e..dff4eaafb0 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -8,12 +8,13 @@
# Eternal Death <eternaldeath0001@gmail.com>, 2019.
# Overloaded @ Orama Interactive http://orama-interactive.com/ <manoschool@yahoo.gr>, 2020.
# pandektis <pandektis@gmail.com>, 2020.
+# KostasMSC <kargyris@athtech.gr>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: pandektis <pandektis@gmail.com>\n"
+"PO-Revision-Date: 2020-07-11 01:21+0000\n"
+"Last-Translator: KostasMSC <kargyris@athtech.gr>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/"
"el/>\n"
"Language: el\n"
@@ -1785,7 +1786,7 @@ msgstr "Îέος φάκελος..."
#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Refresh"
-msgstr "Αναναίωση"
+msgstr "Ανανέωση"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
@@ -2336,12 +2337,6 @@ msgid "There is no defined scene to run."
msgstr "Δεν υπάÏχει καθοÏισμένη σκηνή για εκτελέση."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, αποθηκεÏστε Ï€Ïιν να Ï„Ïέξετε το "
-"Ï€ÏόγÏαμμα."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "ΑδÏνατη η εκκίνηση της υπό-εÏγασίας!"
@@ -2703,7 +2698,7 @@ msgstr "Άνοιγμα Ï€Ïόσφατων"
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr "ΑποθηκεÏσετε σκηνής"
+msgstr "ΑποθηκεÏση σκηνής"
#: editor/editor_node.cpp
msgid "Save All Scenes"
@@ -5581,7 +5576,7 @@ msgstr "Εμφάνιση ΧαÏάκων"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Guides"
-msgstr "Εμφάνιση Οδηγών"
+msgstr "Εμφάνιση Οδηγιών"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Origin"
@@ -10582,6 +10577,11 @@ msgid "Make node as Root"
msgstr "Κάνε κόμβο Ïίζα"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "ΔιαγÏαφή κόμβου \"%s\" και των παιδιών του;"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "ΔιαγÏαφή %d κόμβων;"
@@ -12286,6 +12286,12 @@ msgstr ""
"Ένα σχήμα Ï€Ïέπει να δοθεί στο CollisionShape2D για να λειτουÏγήσει. "
"ΔημιουÏγήστε ένα πόÏο σχήματος για αυτό!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12870,6 +12876,11 @@ msgstr "Τα «varying» μποÏοÏν να ανατεθοÏν μόνο στηÎ
msgid "Constants cannot be modified."
msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏν."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, αποθηκεÏστε Ï€Ïιν να Ï„Ïέξετε το "
+#~ "Ï€ÏόγÏαμμα."
+
#~ msgid "Not in resource path."
#~ msgstr "Δεν υπάÏχει στην διαδÏομή πόÏων."
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index f98f043118..e740ea7d7a 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -2309,10 +2309,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10261,6 +10257,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Forigi Åœlosilo(j)n"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Forigi Åœlosilo(j)n"
@@ -11882,6 +11883,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/es.po b/editor/translations/es.po
index a200653685..e32797440e 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -49,11 +49,12 @@
# Serk Lintur <serk.lintur@gmail.com>, 2020.
# Pedro J. Estébanez <pedrojrulez@gmail.com>, 2020.
# paco <pacosoftfree@protonmail.com>, 2020.
+# Jonatan <arandajonatan94@tuta.io>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-07-28 09:51+0000\n"
"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
@@ -84,7 +85,7 @@ msgstr ""
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr "Entrada inválida %i (no se pasó) en la expresión"
+msgstr "Entrada inválida %i (no aprobada) en la expresión"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -853,7 +854,7 @@ msgstr "Eliminar"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr "Añadir Argumento de Llamada Extra:"
+msgstr "Añadir Argumento Extra de Llamada:"
#: editor/connections_dialog.cpp
msgid "Extra Call Arguments:"
@@ -2383,11 +2384,6 @@ msgid "There is no defined scene to run."
msgstr "No hay escena definida para ejecutar."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"La escena actual nunca se guardó. Por favor, guárdela antes de ejecutar."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "¡No se pudo comenzar el subproceso!"
@@ -4369,7 +4365,7 @@ msgstr "No hay ningún triángulo, así que no se puede hacer blending."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Toggle Auto Triangles"
-msgstr "Act./Desact. Auto Triángulos"
+msgstr "Act./Desact. Triángulos Automáticos"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Create triangles by connecting points."
@@ -4381,7 +4377,8 @@ msgstr "Borrar puntos y triángulos."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Generate blend triangles automatically (instead of manually)"
-msgstr "Generar triángulos de blending automáticamente (en vez de manualmente)"
+msgstr ""
+"Generar triángulos combinados automáticamente (en lugar de manualmente)"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -8947,7 +8944,7 @@ msgstr "Devuelve el valor absoluto del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-cosine of the parameter."
-msgstr "Devuelve el arcocoseno del parámetro."
+msgstr "Devuelve el arco-coseno del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic cosine of the parameter."
@@ -8955,7 +8952,7 @@ msgstr "Devuelve el coseno hiperbólico inverso del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-sine of the parameter."
-msgstr "Devuelve el arcoseno del parámetro."
+msgstr "Devuelve el arco-seno del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic sine of the parameter."
@@ -8963,11 +8960,11 @@ msgstr "Devuelve el seno hiperbólico inverso del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameter."
-msgstr "Devuelve el arcotangente del parámetro."
+msgstr "Devuelve el arco-tangente del parámetro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameters."
-msgstr "Devuelve el arcotangente de los parámetros."
+msgstr "Devuelve el arco-tangente de los parámetros."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic tangent of the parameter."
@@ -8996,11 +8993,11 @@ msgstr "Convierte una cantidad en radianes a grados."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-e Exponential."
-msgstr "Exponencial en base e."
+msgstr "Exponencial con Base-e."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-2 Exponential."
-msgstr "Exponencial en base 2."
+msgstr "Exponencial con base 2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest integer less than or equal to the parameter."
@@ -9020,7 +9017,7 @@ msgstr "Logaritmo natural."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-2 logarithm."
-msgstr "Logaritmo de la base 2."
+msgstr "Logaritmo Base-2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the greater of two values."
@@ -10630,6 +10627,11 @@ msgid "Make node as Root"
msgstr "Convertir nodo como Raíz"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "¿Eliminar el nodo \"%s\" y sus hijos?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "¿Eliminar %d nodos?"
@@ -12345,6 +12347,12 @@ msgstr ""
"Para que funcione CollisionShape2D se debe proporcionar una forma. Por "
"favor, ¡crea un recurso de forma para ello!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12927,6 +12935,10 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "La escena actual nunca se guardó. Por favor, guárdela antes de ejecutar."
+
#~ msgid "Not in resource path."
#~ msgstr "No está en la ruta de recursos."
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index ca9f5a7a49..92e6e7d511 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -2345,11 +2345,6 @@ msgid "There is no defined scene to run."
msgstr "No hay escena definida para ejecutar."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"La escena actual nunca se guardó. Favor de guardarla antes de ejecutar."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "No se pudo comenzar el subproceso!"
@@ -10583,6 +10578,11 @@ msgid "Make node as Root"
msgstr "Convertir nodo en Raíz"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "¿Eliminar el nodo \"%s\" y sus hijos?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "¿Eliminar %d nodos?"
@@ -12293,6 +12293,12 @@ msgstr ""
"Se debe proveer un shape para que CollisionShape2D funcione. Creale un "
"recurso shape!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12870,6 +12876,10 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice."
msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "La escena actual nunca se guardó. Favor de guardarla antes de ejecutar."
+
#~ msgid "Not in resource path."
#~ msgstr "No está en la ruta de recursos."
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 5fd61347e1..ae27129ab6 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -9,15 +9,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2020-05-31 12:39+0000\n"
-"Last-Translator: René <renepiik@gmail.com>\n"
+"PO-Revision-Date: 2020-07-26 15:42+0000\n"
+"Last-Translator: StReef <streef.gtx@gmail.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/"
"godot/et/>\n"
"Language: et\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.1-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -409,8 +409,7 @@ msgstr "Animatsiooni rajad võivad osutada ainult AnimationPlayer sõlmedele."
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
-msgstr ""
-"Animatsiooni mängija ei saa animeerida iseennast, ainult teisi mängijaid."
+msgstr "AnimationPlayer ei saa animeerida iseennast, ainult teisi mängijaid."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
@@ -492,7 +491,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
+msgstr "Vali AnimationPlayer sõlm, et luua ja redigeerida animatsioone."
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
@@ -503,12 +502,13 @@ msgid "Group tracks by node or display them as plain list."
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Snap:"
-msgstr ""
+msgstr "Intervall:"
#: editor/animation_track_editor.cpp
msgid "Animation step value."
-msgstr ""
+msgstr "Animatsiooni sammu väärtus."
#: editor/animation_track_editor.cpp
msgid "Seconds"
@@ -516,7 +516,7 @@ msgstr "Sekundid"
#: editor/animation_track_editor.cpp
msgid "FPS"
-msgstr "Kaadrit/Sekundis"
+msgstr "K/S"
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -530,7 +530,7 @@ msgstr "Muuda"
#: editor/animation_track_editor.cpp
msgid "Animation properties."
-msgstr ""
+msgstr "Animatsiooni atribuudid."
#: editor/animation_track_editor.cpp
msgid "Copy Tracks"
@@ -773,7 +773,7 @@ msgstr ""
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
-msgstr ""
+msgstr "Lisa"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
@@ -784,7 +784,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
-msgstr ""
+msgstr "Eemalda"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
@@ -835,7 +835,7 @@ msgstr ""
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
-msgstr ""
+msgstr "Sulge"
#: editor/connections_dialog.cpp
msgid "Connect"
@@ -880,7 +880,7 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
-msgstr ""
+msgstr "Signaalid"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
@@ -997,7 +997,7 @@ msgstr ""
#: modules/visual_script/visual_script_property_selector.cpp
#: scene/gui/file_dialog.cpp
msgid "Open"
-msgstr ""
+msgstr "Ava"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
@@ -1080,67 +1080,67 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr ""
+msgstr "Tänu Godot kogukonnale!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
+msgstr "Godot mängumootori panustajad"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr ""
+msgstr "Projekti asutajad"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "Juhtiv arendaja"
#: editor/editor_about.cpp
msgid "Project Manager "
-msgstr ""
+msgstr "Projekti juht "
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "Arendajad"
#: editor/editor_about.cpp
msgid "Authors"
-msgstr ""
+msgstr "Autorid"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
-msgstr ""
+msgstr "Plaatinumsponsorid"
#: editor/editor_about.cpp
msgid "Gold Sponsors"
-msgstr ""
+msgstr "Kuldsponsorid"
#: editor/editor_about.cpp
msgid "Mini Sponsors"
-msgstr ""
+msgstr "Väikesponsorid"
#: editor/editor_about.cpp
msgid "Gold Donors"
-msgstr ""
+msgstr "Kuldannetajad"
#: editor/editor_about.cpp
msgid "Silver Donors"
-msgstr ""
+msgstr "Hõbennetajad"
#: editor/editor_about.cpp
msgid "Bronze Donors"
-msgstr ""
+msgstr "Pronksannetajad"
#: editor/editor_about.cpp
msgid "Donors"
-msgstr ""
+msgstr "Annetajad"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Litsents"
#: editor/editor_about.cpp
msgid "Third-party Licenses"
-msgstr ""
+msgstr "Kolmanda osapoole litsents"
#: editor/editor_about.cpp
msgid ""
@@ -1160,7 +1160,7 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Litsensid"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in ZIP format."
@@ -1209,7 +1209,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "Lisa efekt"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
@@ -1237,7 +1237,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Lisa helisiini efekt"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
@@ -1571,7 +1571,7 @@ msgstr ""
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
-msgstr "3D-redigeerija"
+msgstr "3D-redaktor"
#: editor/editor_feature_profile.cpp
msgid "Script Editor"
@@ -1715,7 +1715,7 @@ msgstr "Ekspordi profiil"
#: editor/editor_feature_profile.cpp
msgid "Manage Editor Feature Profiles"
-msgstr "Halda redigeerija funktsioonide profiile"
+msgstr "Halda redaktori funktsioonide profiile"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -2073,9 +2073,8 @@ msgstr "Puhasta väljund"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Stop"
-msgstr "Peatu/Stopp"
+msgstr "Lõpeta"
#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
@@ -2281,16 +2280,12 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
#: editor/editor_node.cpp editor/filesystem_dock.cpp
msgid "Open Scene"
-msgstr ""
+msgstr "Ava stseen"
#: editor/editor_node.cpp
msgid "Open Base Scene"
@@ -2326,7 +2321,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
-msgstr ""
+msgstr "Salvesta stseen kui..."
#: editor/editor_node.cpp
msgid "No"
@@ -2385,19 +2380,19 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Quit"
-msgstr ""
+msgstr "Välju"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr ""
+msgstr "Välju redaktorist?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr ""
+msgstr "Ava projekti juht?"
#: editor/editor_node.cpp
msgid "Save & Quit"
-msgstr ""
+msgstr "Salvesta ja välju"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
@@ -2419,11 +2414,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr ""
+msgstr "Sule stseen"
#: editor/editor_node.cpp
msgid "Reopen Closed Scene"
-msgstr ""
+msgstr "Taasava suletud stseen"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
@@ -2504,7 +2499,7 @@ msgstr ""
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
msgid "Default"
-msgstr ""
+msgstr "Vaikimisi"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
@@ -2513,7 +2508,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Play This Scene"
-msgstr ""
+msgstr "Mängi seda stseeni"
#: editor/editor_node.cpp
msgid "Close Tab"
@@ -2553,7 +2548,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Dock Position"
-msgstr ""
+msgstr "Doki asukoht"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
@@ -2565,11 +2560,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr ""
+msgstr "Lisa uus stseen."
#: editor/editor_node.cpp
msgid "Scene"
-msgstr ""
+msgstr "Stseen"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
@@ -2598,27 +2593,27 @@ msgstr ""
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr ""
+msgstr "Uus stseen"
#: editor/editor_node.cpp
msgid "New Inherited Scene..."
-msgstr ""
+msgstr "Uus päritud stseen..."
#: editor/editor_node.cpp
msgid "Open Scene..."
-msgstr ""
+msgstr "Ava stseen..."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
-msgstr ""
+msgstr "Hiljuti avatud"
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr ""
+msgstr "Salvesta stseen"
#: editor/editor_node.cpp
msgid "Save All Scenes"
-msgstr ""
+msgstr "Salvesta kõik stseenid"
#: editor/editor_node.cpp
msgid "Convert To..."
@@ -2635,12 +2630,12 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr ""
+msgstr "Võta tagasi"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
-msgstr ""
+msgstr "Tee uuesti"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
@@ -2649,11 +2644,11 @@ msgstr ""
#: editor/editor_node.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#: editor/editor_node.cpp
msgid "Project Settings..."
-msgstr ""
+msgstr "Projekti sätted..."
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Version Control"
@@ -2669,7 +2664,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Export..."
-msgstr ""
+msgstr "Ekspordi..."
#: editor/editor_node.cpp
msgid "Install Android Build Template..."
@@ -2681,7 +2676,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
-msgstr ""
+msgstr "Tööriistad"
#: editor/editor_node.cpp
msgid "Orphan Resource Explorer..."
@@ -2694,7 +2689,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/project_export.cpp
msgid "Debug"
-msgstr ""
+msgstr "Silumine"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
@@ -2766,19 +2761,19 @@ msgstr ""
#: editor/editor_node.cpp editor/script_create_dialog.cpp
msgid "Editor"
-msgstr ""
+msgstr "Redaktor"
#: editor/editor_node.cpp
msgid "Editor Settings..."
-msgstr ""
+msgstr "Redaktori sätted..."
#: editor/editor_node.cpp
msgid "Editor Layout"
-msgstr ""
+msgstr "Redaktori paigutus"
#: editor/editor_node.cpp
msgid "Take Screenshot"
-msgstr ""
+msgstr "Tee ekraanipilt"
#: editor/editor_node.cpp
msgid "Screenshots are stored in the Editor Data/Settings Folder."
@@ -2814,7 +2809,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp
msgid "Help"
-msgstr ""
+msgstr "Abi"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -2823,68 +2818,68 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp editor/rename_dialog.cpp
msgid "Search"
-msgstr ""
+msgstr "Otsi"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Online Docs"
-msgstr ""
+msgstr "Veebidokumentatsioonid"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Küsimused & vastused"
#: editor/editor_node.cpp
msgid "Report a Bug"
-msgstr ""
+msgstr "Teavita veast"
#: editor/editor_node.cpp
msgid "Send Docs Feedback"
-msgstr ""
+msgstr "Saada dokumentatsioonide tagasisede"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
-msgstr ""
+msgstr "Kogukond"
#: editor/editor_node.cpp
msgid "About"
-msgstr ""
+msgstr "Teave"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr ""
+msgstr "Mängi projekti."
#: editor/editor_node.cpp
msgid "Play"
-msgstr ""
+msgstr "Mängi"
#: editor/editor_node.cpp
msgid "Pause the scene execution for debugging."
-msgstr ""
+msgstr "Peata stseeni töö selle silumiseks."
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr ""
+msgstr "Peata stseen"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr ""
+msgstr "Lõpeta stseen."
#: editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr ""
+msgstr "Mängi redigeeritud stseeni."
#: editor/editor_node.cpp
msgid "Play Scene"
-msgstr ""
+msgstr "Mängi stseeni"
#: editor/editor_node.cpp
msgid "Play custom scene"
-msgstr ""
+msgstr "Mängi kohandatud stseeni"
#: editor/editor_node.cpp
msgid "Play Custom Scene"
-msgstr ""
+msgstr "Mängi kohandatud stseeni"
#: editor/editor_node.cpp
msgid "Changing the video driver requires restarting the editor."
@@ -2913,19 +2908,19 @@ msgstr ""
#: editor/editor_node.cpp
msgid "FileSystem"
-msgstr ""
+msgstr "Failikuvaja"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr ""
+msgstr "Ãœlevaataja"
#: editor/editor_node.cpp
msgid "Expand Bottom Panel"
-msgstr ""
+msgstr "Laienda alumist paneeli"
#: editor/editor_node.cpp
msgid "Output"
-msgstr ""
+msgstr "Väljund"
#: editor/editor_node.cpp
msgid "Don't Save"
@@ -3016,7 +3011,7 @@ msgstr ""
#: editor/editor_node.h
msgid "Warning!"
-msgstr ""
+msgstr "Hoiatus!"
#: editor/editor_path.cpp
msgid "No sub-resources found."
@@ -3606,7 +3601,7 @@ msgstr ""
#: editor/project_manager.cpp editor/rename_dialog.cpp
#: editor/scene_tree_dock.cpp
msgid "Rename"
-msgstr ""
+msgstr "Nimeta ümber"
#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
@@ -3626,7 +3621,7 @@ msgstr ""
#: editor/filesystem_dock.cpp
msgid "Search files"
-msgstr ""
+msgstr "Otsi faile"
#: editor/filesystem_dock.cpp
msgid ""
@@ -3688,7 +3683,7 @@ msgstr ""
#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
-msgstr ""
+msgstr "Tühista"
#: editor/find_in_files.cpp
msgid "Find: "
@@ -3704,7 +3699,7 @@ msgstr ""
#: editor/find_in_files.cpp
msgid "Searching..."
-msgstr ""
+msgstr "Otsin..."
#: editor/find_in_files.cpp
msgid "Search complete"
@@ -3736,7 +3731,7 @@ msgstr ""
#: editor/groups_editor.cpp editor/node_dock.cpp
msgid "Groups"
-msgstr ""
+msgstr "Rühmad"
#: editor/groups_editor.cpp
msgid "Nodes Not in Group"
@@ -3745,7 +3740,7 @@ msgstr ""
#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
#: editor/scene_tree_editor.cpp
msgid "Filter nodes"
-msgstr ""
+msgstr "Filtreeri sõlmed"
#: editor/groups_editor.cpp
msgid "Nodes in Group"
@@ -3761,7 +3756,7 @@ msgstr ""
#: editor/groups_editor.cpp
msgid "Manage Groups"
-msgstr ""
+msgstr "Halda gruppe"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
@@ -3858,15 +3853,15 @@ msgstr ""
#: editor/import_dock.cpp
msgid "Import As:"
-msgstr ""
+msgstr "Impordi kui:"
#: editor/import_dock.cpp
msgid "Preset"
-msgstr ""
+msgstr "Eelseadistus"
#: editor/import_dock.cpp
msgid "Reimport"
-msgstr ""
+msgstr "Taasimpordi"
#: editor/import_dock.cpp
msgid "Save Scenes, Re-Import, and Restart"
@@ -3932,7 +3927,7 @@ msgstr ""
#: editor/inspector_dock.cpp
msgid "Save the currently edited resource."
-msgstr ""
+msgstr "Salvesta käesolevalt muudetud ressurss."
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -3944,15 +3939,15 @@ msgstr ""
#: editor/inspector_dock.cpp
msgid "History of recently edited objects."
-msgstr ""
+msgstr "Hiljuti muudetud objektide ajalugu."
#: editor/inspector_dock.cpp
msgid "Object properties."
-msgstr ""
+msgstr "Objekti atribuudid."
#: editor/inspector_dock.cpp
msgid "Filter properties"
-msgstr ""
+msgstr "Filtreeri atribuudid"
#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
@@ -4306,16 +4301,16 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Delete Animation?"
-msgstr ""
+msgstr "Kustuta animatsioon?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Remove Animation"
-msgstr ""
+msgstr "Eemalda animatioon"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Invalid animation name!"
-msgstr ""
+msgstr "Vigane animatsiooni nimi!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation name already exists!"
@@ -4392,7 +4387,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Tools"
-msgstr ""
+msgstr "Animatsiooni tööriistad"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation"
@@ -4404,7 +4399,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Open in Inspector"
-msgstr ""
+msgstr "Ava ülevaatajas"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -4841,11 +4836,11 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Recently Updated"
-msgstr ""
+msgstr "Hiljuti uuendatud"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Least Recently Updated"
-msgstr ""
+msgstr "Vanim uuendus"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Name (A-Z)"
@@ -4857,11 +4852,11 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "License (A-Z)"
-msgstr ""
+msgstr "Litsents (A-Z)"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "License (Z-A)"
-msgstr ""
+msgstr "Litsents (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "First"
@@ -4897,28 +4892,28 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
-msgstr ""
+msgstr "Sordi:"
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_settings_editor.cpp
msgid "Category:"
-msgstr ""
+msgstr "Kategooria:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Site:"
-msgstr ""
+msgstr "Veebisait:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Support"
-msgstr ""
+msgstr "Toetus"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Official"
-msgstr ""
+msgstr "Ametlik"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Testing"
-msgstr ""
+msgstr "Testimine"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Loading..."
@@ -6625,7 +6620,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
msgid "Run"
-msgstr ""
+msgstr "Käivita"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Into"
@@ -6690,7 +6685,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr ""
+msgstr "Siluja"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Results"
@@ -6853,7 +6848,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
-msgstr ""
+msgstr "Kontekstuaalne abi"
#: editor/plugins/script_text_editor.cpp
msgid "Toggle Bookmark"
@@ -6952,7 +6947,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective"
-msgstr ""
+msgstr "Perspektiiv"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -6996,35 +6991,35 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pitch"
-msgstr ""
+msgstr "Frontaal"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Yaw"
-msgstr ""
+msgstr "Sagitaal"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Objekte kuvatud"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Material Changes"
-msgstr ""
+msgstr "Materjali muutused"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Shader Changes"
-msgstr ""
+msgstr "Varjutaja muutused"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Surface Changes"
-msgstr ""
+msgstr "Pinna muutused"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Kuvamise kutsungid"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Vertices"
-msgstr ""
+msgstr "Tipud"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -7112,7 +7107,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Environment"
-msgstr ""
+msgstr "Kuva keskkond"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Gizmos"
@@ -7120,7 +7115,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Kuva informatsioon"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View FPS"
@@ -7128,7 +7123,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Half Resolution"
-msgstr ""
+msgstr "Poolresolutioon"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
@@ -7140,7 +7135,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Cinematic Preview"
-msgstr ""
+msgstr "Kinemaatiline eelvaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Not available when using the GLES2 renderer."
@@ -7226,27 +7221,27 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
-msgstr ""
+msgstr "Altvaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View"
-msgstr ""
+msgstr "Ãœlavaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View"
-msgstr ""
+msgstr "Tagavaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View"
-msgstr ""
+msgstr "Eesvaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View"
-msgstr ""
+msgstr "Vasakvaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right View"
-msgstr ""
+msgstr "Paremvaade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -7258,11 +7253,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
-msgstr ""
+msgstr "Fookuse alge"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
-msgstr ""
+msgstr "Fookuse valik"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Freelook"
@@ -7540,7 +7535,7 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Loop"
-msgstr ""
+msgstr "Kordus"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames:"
@@ -9516,11 +9511,11 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Project Manager"
-msgstr ""
+msgstr "projektihaldur"
#: editor/project_manager.cpp
msgid "Projects"
-msgstr ""
+msgstr "Projektid"
#: editor/project_manager.cpp
msgid "Last Modified"
@@ -9528,7 +9523,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "Otsi"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
@@ -9536,7 +9531,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "Uus projekt"
#: editor/project_manager.cpp
msgid "Remove Missing"
@@ -9544,7 +9539,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Templates"
-msgstr ""
+msgstr "Mallid"
#: editor/project_manager.cpp
msgid "Restart Now"
@@ -9789,11 +9784,11 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr ""
+msgstr "Projekti sätted (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "Ãœldine"
#: editor/project_settings_editor.cpp
msgid "Override For..."
@@ -10159,6 +10154,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Kustuta Võti (Võtmed)"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Kustuta Võti (Võtmed)"
@@ -10221,7 +10221,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "User Interface"
-msgstr ""
+msgstr "Kasutajaliides"
#: editor/scene_tree_dock.cpp
msgid "Other Node"
@@ -10290,7 +10290,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
-msgstr ""
+msgstr "Lisa alamsõlm"
#: editor/scene_tree_dock.cpp
msgid "Expand/Collapse All"
@@ -10326,7 +10326,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Add/Create a New Node."
-msgstr ""
+msgstr "Lisa/loo uus sõlm."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -10336,7 +10336,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script to the selected node."
-msgstr ""
+msgstr "Kinnita uus või olemasolev skript valitud sõlmele."
#: editor/scene_tree_dock.cpp
msgid "Detach the script from the selected node."
@@ -10723,15 +10723,15 @@ msgstr ""
#: editor/settings_config_dialog.cpp
msgid "Editor Settings"
-msgstr ""
+msgstr "Redaktori sätted"
#: editor/settings_config_dialog.cpp
msgid "Shortcuts"
-msgstr ""
+msgstr "Kiirklahvid"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Kombinatsioon"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -11767,6 +11767,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12160,7 +12166,7 @@ msgstr ""
#: scene/gui/dialogs.cpp
msgid "Please Confirm..."
-msgstr ""
+msgstr "Palun kinnita..."
#: scene/gui/popup.cpp
msgid ""
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index e461c0f1ec..906a258f32 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -2255,10 +2255,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10132,6 +10128,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11735,6 +11735,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 428b69062a..dc7ae9ec69 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -13,12 +13,13 @@
# hpn33 <hamed.hpn332@gmail.com>, 2019, 2020.
# Focus <saeeddashticlash@gmail.com>, 2019, 2020.
# mohamad por <mohamad24xx@gmail.com>, 2020.
+# Tetra Homer <tetrahomer@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-04-23 20:21+0000\n"
-"Last-Translator: Focus <saeeddashticlash@gmail.com>\n"
+"PO-Revision-Date: 2020-07-21 13:41+0000\n"
+"Last-Translator: Tetra Homer <tetrahomer@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/"
"godot/fa/>\n"
"Language: fa\n"
@@ -26,14 +27,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.0.2-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
-"نوع ورودی برای متد ()convert ‌ نامعتبر است ،‌ از ثابت های *_TYPE‌ استÙاده "
-"کنید ."
+msgstr "نوع ورودی برای ()convert نامعتبر است, ثوابت *_TYPE‌ بکار گیرید ."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
@@ -53,61 +52,59 @@ msgstr "ورودی نامعتبر i% (تایید نشده) در عبارت"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "نمی توان از self استÙاده کرد چون instance = null هست (تایید نشده)"
+msgstr "نمی توان self را بکار گرÙت چون instance = null هست (تایید نشده)"
#: core/math/expression.cpp
-#, fuzzy
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%."
+msgstr "عملگر های نامعتبر به عملگر %s, %s و %s."
#: core/math/expression.cpp
-#, fuzzy
msgid "Invalid index of type %s for base type %s"
-msgstr "نام دارایی ایندکس نامعتبر 's%' در گره s%."
+msgstr "نوع ایندکس %s برای نوع اصلی %s نامعتبر است"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr "شاخص نامگذاری شده \"٪ s\" برای نوع پایه٪ s نامعتبر است"
+msgstr "ایندکس اسمی '%s' برای نوع اصلی %s نامعتبر است"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
-msgstr ": آرگومان نوع نامعتبر آرگومان های نامعتبر برای ساخت '٪ s'"
+msgstr "آرگومان های نامعتبر برای ساخت '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr "در تماس با '٪ s':"
+msgstr "به هنگام Ùراخوان تابع'%s':"
#: core/ustring.cpp
msgid "B"
-msgstr ""
+msgstr "بایت"
#: core/ustring.cpp
msgid "KiB"
-msgstr ""
+msgstr "کیلوبایت"
#: core/ustring.cpp
msgid "MiB"
-msgstr ""
+msgstr "مگابایت"
#: core/ustring.cpp
msgid "GiB"
-msgstr ""
+msgstr "گیگابایت"
#: core/ustring.cpp
msgid "TiB"
-msgstr ""
+msgstr "ترابایت"
#: core/ustring.cpp
msgid "PiB"
-msgstr ""
+msgstr "پتابایت"
#: core/ustring.cpp
msgid "EiB"
-msgstr ""
+msgstr "اگزابایت"
#: editor/animation_bezier_editor.cpp
msgid "Free"
-msgstr "ازاد کردن"
+msgstr "آزاد کردن"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
@@ -123,90 +120,84 @@ msgstr "زمان:"
#: editor/animation_bezier_editor.cpp
msgid "Value:"
-msgstr "ارزش:"
+msgstr "مقدار:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
-msgstr "کلید را اینجا وارد کن"
+msgstr "کلید را اینجا وارد کنید"
#: editor/animation_bezier_editor.cpp
msgid "Duplicate Selected Key(s)"
-msgstr "کلیدهای انتخاب شده تکراری درست کن"
+msgstr "تکرار کلید(های) منتخب"
#: editor/animation_bezier_editor.cpp
msgid "Delete Selected Key(s)"
-msgstr "کلید‌های انخاب شده را پاک کن"
+msgstr "حذ٠کلید(های) منتخب"
#: editor/animation_bezier_editor.cpp
msgid "Add Bezier Point"
-msgstr "Bezier Point را اضاÙÙ‡ Ú©Ù†"
+msgstr "اÙزودن نقطه بÙزیÙر"
#: editor/animation_bezier_editor.cpp
msgid "Move Bezier Points"
-msgstr "Bezier Points را جابجا کن"
+msgstr "انتقال نقاط بÙزیÙر"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "تکرار کلید‌های انیمیشن"
+msgstr "تکرار کلید ‌های متحرک"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Delete Keys"
-msgstr "کلیدها را در انیمیشن حذ٠کن"
+msgstr "حذ٠کلید های متحرک"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Time"
-msgstr "تغییر زمان Ùریم کلید در انیمیشن"
+msgstr "تغییر زمان لحظه‌کلید٠متحرک"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transition"
-msgstr "انتقال را در انیمیشن تغییر بده"
+msgstr "تغییر انتقالی متحرک"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transform"
-msgstr "انتقال را در انیمیشن تغییر بده"
+msgstr "تغییر دگرشکل متحرک"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Value"
-msgstr "تغییر مقدار Ùریم کلید در انیمیشن"
+msgstr "تغییر مقدار لحظه‌کلید متحرک"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
-msgstr "Ùراخوانی را در انیمیشن تغییر بده"
+msgstr "تغییر Ùراخوان متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Keyframe Time"
-msgstr "تغییر زمان Ùریم کلید در انیمیشن"
+msgstr "تغییرات زمان لحظه‌کلید متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Transition"
-msgstr "انتقال را در انیمیشن تغییر بده"
+msgstr "تغییرات انتقالی متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Transform"
-msgstr "انتقال را در انیمیشن تغییر بده"
+msgstr "تغییرات دگرشکل متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Keyframe Value"
-msgstr "تغییر مقدار Ùریم کلید در انیمیشن"
+msgstr "تغییرات مقدار لحظه‌کلید متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Multi Change Call"
-msgstr "Ùراخوانی را در انیمیشن تغییر بده"
+msgstr "تغییرات Ùراخوان متحرک"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Length"
-msgstr "طول انیمیشن را تغییر بده"
+msgstr "تغییر طول انیمیشن"
#: editor/animation_track_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr "حلقه(loop) انیمیشن را تغییر دهید"
+msgstr "تغییر حلقه(loop) انیمیشن"
#: editor/animation_track_editor.cpp
msgid "Property Track"
@@ -214,15 +205,15 @@ msgstr "ویژگی مسیر"
#: editor/animation_track_editor.cpp
msgid "3D Transform Track"
-msgstr "مسیر 3D Transform"
+msgstr "مسیر دگرشکل 3D"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr "صدا زدن Method Track"
+msgstr "Ùراخوان تابع مسیر"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "مسیر منحنی بÙزیÙر"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
@@ -267,7 +258,7 @@ msgstr "تغییرمیسر path"
#: editor/animation_track_editor.cpp
msgid "Toggle this track on/off."
-msgstr "روشن / خاموش کردن این Track."
+msgstr "دÙگرحالت٠روشن/خاموش این قطعه."
#: editor/animation_track_editor.cpp
msgid "Update Mode (How this property is set)"
@@ -336,9 +327,8 @@ msgid "Insert Key"
msgstr "درج کلید"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Duplicate Key(s)"
-msgstr "نسخه همانند (Duplicate ) کلید(key)"
+msgstr "تکرار کلید(ها)"
#: editor/animation_track_editor.cpp
msgid "Delete Key(s)"
@@ -366,7 +356,7 @@ msgstr "یک ترک جدید برای s% بساز و کلید را درج کن؟
#: editor/animation_track_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "ساختن تعداد d% ترک جدید، ودرج کلیدها؟"
+msgstr "ساختن %d قطعه جدید و درج کلیدها؟"
#: editor/animation_track_editor.cpp editor/create_dialog.cpp
#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
@@ -430,7 +420,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
-msgstr ""
+msgstr "یک مجری انیمیشن نمی تواند خود را محرک کند، Ùقط سایر مجریان."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
@@ -438,66 +428,60 @@ msgstr "بدون ریشه اضاÙÙ‡ کردن مسیر امکان پذیر Ù†ÛŒØ
#: editor/animation_track_editor.cpp
msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
+msgstr "مسیر نامعتبر برای بÙزیÙر( زیر-خواص نامناسب)"
#: editor/animation_track_editor.cpp
msgid "Add Bezier Track"
-msgstr "ترک Bezier را اضاÙÙ‡ Ú©Ù†"
+msgstr "اÙزودن مسیر بÙزیÙر"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a key."
-msgstr ""
+msgstr "مسیر قطعه نامعتبر، پس نمی‌توان یک کلید به آن اÙزود."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Transform Track Key"
-msgstr "درج ترک و کلید در انیمیشن"
+msgstr "اÙزودن کلید مسیر دگرشکل"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Track Key"
-msgstr "ترک را اضاÙÙ‡ Ú©Ù†"
+msgstr "اÙزودن کلید مسیر"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Method Track Key"
-msgstr "درج ترک و کلید در انیمیشن"
+msgstr "اÙزودن تابع کلید میسر"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Method not found in object: "
-msgstr "VariableGet در اسکریپت پیدا نشد: "
+msgstr "تابع در شئ یاÙت نشد: "
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
msgstr "کلیدها را در انیمیشن جابجا کن"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Clipboard is empty"
-msgstr "حاÙظه پنهان خالی است!"
+msgstr "حاÙظه پنهان خالی است"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Paste Tracks"
-msgstr "مسیر به سمت گره:"
+msgstr "جاگذاری مسیر ها"
#: editor/animation_track_editor.cpp
msgid "Anim Scale Keys"
-msgstr "کلیدها را در انیمیشن تغییر مقیاس بده"
+msgstr "اندازه کلید های متحرک"
#: editor/animation_track_editor.cpp
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
+msgstr "این گزینه برای اصلاح بÙزیÙر کار نمی کند, چون تنها یک مسیر واحد است."
#: editor/animation_track_editor.cpp
msgid ""
@@ -511,42 +495,47 @@ msgid ""
"Alternatively, use an import preset that imports animations to separate "
"files."
msgstr ""
+"این انیمیشن متعلق به یک صحنه ورودی است, بنابراین تغییرات در مسیرهای ورودی "
+"ذخیره نشده‌اند.\n"
+"\n"
+"برای امکان اضاÙÙ‡ کردن مسیر های سÙارشی, به تنظیمات ورودی صحنه بروید Ùˆ\n"
+"\"انیمیشن > ذخیره‌سازی\" به \"پرونده ها\", \"انیمیشن > نگه داشتن مسیر های "
+"سÙارشی\" را تنظیم Ùˆ Ùعال کنید، سپس ازنو-وارد کنید.\n"
+"با وارد کردن از «پیش تعیین شده»ای که انیمیشن ها را به صورت پرونده‌های جداگانه "
+"وارد می کند، می‌توانید این روش جایگزین را بکار گیرید."
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
-msgstr ""
+msgstr "هشدار: در حال ویرایش انیمیشن وارد شده"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-"یک AnimationPlayer از درخت صحنه انتخاب کنید تا انیمیشن‌ها را ویرایش کنید."
+msgstr "یک گره AnimationPlayer را برای ایجاد و ویرایش انیمیشن ها برگزینید."
#: editor/animation_track_editor.cpp
msgid "Only show tracks from nodes selected in tree."
-msgstr ""
+msgstr "Ùقط مسیرهای از گره های انتخاب شده در درخت نشان داده شود."
#: editor/animation_track_editor.cpp
msgid "Group tracks by node or display them as plain list."
msgstr ""
+"مسیرها را بر اساس گره گروه‌بندی کنید یا آن‌ها را به عنوان لیست ساده نمایش دهید."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Snap:"
-msgstr "گام(ها):"
+msgstr "Ú†Ùت:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation step value."
-msgstr "گره انیمیشن"
+msgstr "مقدار مرحله انیمیشن."
#: editor/animation_track_editor.cpp
msgid "Seconds"
-msgstr ""
+msgstr "ثانیه ها"
#: editor/animation_track_editor.cpp
msgid "FPS"
-msgstr ""
+msgstr "لحظه بر ثانیه"
#: editor/animation_track_editor.cpp editor/editor_properties.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -559,9 +548,8 @@ msgid "Edit"
msgstr "ویرایش"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "گره انیمیشن"
+msgstr "خصوصیات انیمیشن."
#: editor/animation_track_editor.cpp
msgid "Copy Tracks"
@@ -577,26 +565,23 @@ msgstr "از مکان‌نما تغییر مقیاس بده"
#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr "انتخاب شده را به دو تا تکثیر کن"
+msgstr "تکثیر برگزیده"
#: editor/animation_track_editor.cpp
msgid "Duplicate Transposed"
-msgstr "ترانهاده را به دو تا تکثیر کن"
+msgstr "تکثیر جابجایی"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
-msgstr "انتخاب شده را حذ٠کن"
+msgstr "حذ٠برگزیده"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "به گام بعدی برو"
+msgstr "برو به گام بعد"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "به گام قبلی برو"
+msgstr "برو به گام پیشین"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -612,7 +597,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Use Bezier Curves"
-msgstr ""
+msgstr "بکارگیری منحنی بÙزیÙر"
#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
@@ -659,9 +644,8 @@ msgid "Scale Ratio:"
msgstr "نسبت تغییر مقیاس:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select Tracks to Copy"
-msgstr "دارایی Setter را اضاÙÙ‡ Ú©Ù†"
+msgstr "انتخاب میسرها جهت تکثیر"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
#: editor/editor_properties.cpp
@@ -670,17 +654,15 @@ msgstr "دارایی Setter را اضاÙÙ‡ Ú©Ù†"
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
-msgstr "کپی کردن"
+msgstr "کپی"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select All/None"
-msgstr "گره انتخاب"
+msgstr "انتخاب همه/هیچ"
#: editor/animation_track_editor_plugins.cpp
-#, fuzzy
msgid "Add Audio Track Clip"
-msgstr "ترک را اضاÙÙ‡ Ú©Ù†"
+msgstr "اÙزودن کلیپ آهنگ صوتی"
#: editor/animation_track_editor_plugins.cpp
msgid "Change Audio Track Clip Start Offset"
@@ -711,18 +693,16 @@ msgid "Line Number:"
msgstr "شماره خط:"
#: editor/code_editor.cpp
-#, fuzzy
msgid "%d replaced."
-msgstr "جایگزینی"
+msgstr "%d جایگزین شده."
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
-msgstr ""
+msgstr "%d منطبق."
#: editor/code_editor.cpp editor/editor_help.cpp
-#, fuzzy
msgid "%d matches."
-msgstr "تطبیقی ندارد"
+msgstr "%d هم‌خوانی."
#: editor/code_editor.cpp editor/find_in_files.cpp
msgid "Match Case"
@@ -747,7 +727,7 @@ msgstr "تنها در قسمت انتخاب شده"
#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Standard"
-msgstr ""
+msgstr "استاندارد"
#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
@@ -757,17 +737,17 @@ msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
-msgstr "بزرگنمایی بیشتر"
+msgstr "بزرگنمایی"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
-msgstr "بزرگنمایی کمتر"
+msgstr "کوچکنمایی"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr "بازنشانی بزرگنمایی"
+msgstr "باز‌نشانی مقیاس"
#: editor/code_editor.cpp
msgid "Warnings"
@@ -778,38 +758,31 @@ msgid "Line and column numbers."
msgstr ""
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method in target node must be specified."
-msgstr "متد در گره مقصد باید مشخص شده باشد!"
+msgstr "تابع در گره مقصد باید مشخص شده باشد."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "نام یک شناسه‌ی معتبر نیست:"
+msgstr "اسم تابع باید یک شناسه‌ی معتبر باشد."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid ""
"Target method not found. Specify a valid method or attach a script to the "
"target node."
msgstr ""
-"متد هد٠پیدا نشد! لطÙا یک متد صحیح مشخص کنید یا یک اسکریپت به گره هد٠الحاق "
-"کنید."
+"متد هد٠پیدا نشد. یک تابع معتبر تعیین کنید یا یک اسکریپت به گره هد٠وصل کنید."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Node:"
msgstr "اتصال به گره:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Script:"
-msgstr "اتصال به گره:"
+msgstr "اتصال به اسکریپت:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "From Signal:"
-msgstr "سیگنال ها:"
+msgstr "از سیگنال:"
#: editor/connections_dialog.cpp
msgid "Scene does not contain any script."
@@ -841,14 +814,12 @@ msgid "Extra Call Arguments:"
msgstr "آرگومان‌های اضاÙÛŒ Ùراخوانی:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Receiver Method:"
-msgstr "انتخاب حالت"
+msgstr "روش گیرنده:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Advanced"
-msgstr "متعادل شده"
+msgstr "پیشرÙته"
#: editor/connections_dialog.cpp
msgid "Deferred"
@@ -868,9 +839,8 @@ msgid "Disconnects the signal after its first emission."
msgstr ""
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Cannot connect signal"
-msgstr "اتصال سیگنال:"
+msgstr "نمی توان سیگنال را متصل کرد"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/export_template_manager.cpp editor/groups_editor.cpp
@@ -891,9 +861,8 @@ msgid "Connect"
msgstr "اتصال"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Signal:"
-msgstr "سیگنال ها:"
+msgstr "سیگنال:"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
@@ -904,9 +873,8 @@ msgid "Disconnect '%s' from '%s'"
msgstr "'s%' را از 's%' جدا کن"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect all from signal: '%s'"
-msgstr "'s%' را از 's%' جدا کن"
+msgstr "جدا کردن همه از سیگنال: '%s'"
#: editor/connections_dialog.cpp
msgid "Connect..."
@@ -918,14 +886,12 @@ msgid "Disconnect"
msgstr "عدم اتصال"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect a Signal to a Method"
-msgstr "اتصال سیگنال:"
+msgstr "وصل یک سیگنال به یک تابع"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection:"
-msgstr "خطای اتصال"
+msgstr "ویرایش اتصال:"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
@@ -940,19 +906,16 @@ msgid "Are you sure you want to remove all connections from this signal?"
msgstr ""
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect All"
-msgstr "عدم اتصال"
+msgstr "جدا کردن همه"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit..."
-msgstr "ویرایش"
+msgstr "ویرایش..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "روش ها"
+msgstr "برو به تابع"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -1004,22 +967,20 @@ msgid "Dependencies For:"
msgstr "بستگی‌ها برای:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"صحنه‌ی 's%' در حال حاضر ویرایش شده است.\n"
-"تغییرات مؤثر نخواهد بود مگر با بارگذاری مجدد."
+"ویرایش صحنه 's%' شروع شده است.\n"
+"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
-"منابع 's%' در حال استÙاده است.\n"
-"تغییرات با بارگذاری مجدد مؤثر خواهد بود."
+"منابع 's%' بکار رÙته‌اند.\n"
+"تغییرات تنها وقتی جلوه گرند که از نو بارگیری شوند."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -1066,9 +1027,8 @@ msgid "Owners Of:"
msgstr "مالکانÙ:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Remove selected files from the project? (Can't be restored)"
-msgstr "آیا پرونده‌های انتخاب شده از پروژه حذ٠شوند؟ (بدون undo)"
+msgstr "آیا پرونده‌های انتخاب شده از طرح حذ٠شوند؟ (نمی‌توان بازیابی کرد)"
#: editor/dependency_editor.cpp
msgid ""
@@ -1089,9 +1049,8 @@ msgid "Error loading:"
msgstr "خطا در بارگذاری:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Load failed due to missing dependencies:"
-msgstr "خطا در بارگذاری صحنه به دلیل بستگی‌های Ù…Ùقود:"
+msgstr "به دلیل Ù…Ùقود شدن وابستگی‌ها بارگیری انجام نشد:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -1114,9 +1073,8 @@ msgid "Permanently delete %d item(s)? (No undo!)"
msgstr "به طور دائمی تعداد 'd%' آیتم را حذ٠کند؟ (بدون undo !)"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Show Dependencies"
-msgstr "بستگی‌ها"
+msgstr "نمایش وابستگی‌ها"
#: editor/dependency_editor.cpp
msgid "Orphan Resource Explorer"
@@ -1176,11 +1134,11 @@ msgstr "مؤلÙان"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
-msgstr "اسپانسر‌های پلاتینیوم (درجه ۱)"
+msgstr "حامیان پلاتینیÙÙ… (درجه Û±)"
#: editor/editor_about.cpp
msgid "Gold Sponsors"
-msgstr "اسپانسر‌های طلایی (درجه ۲)"
+msgstr "حامیان طلایی (درجه ۲)"
#: editor/editor_about.cpp
msgid "Mini Sponsors"
@@ -1207,9 +1165,8 @@ msgid "License"
msgstr "مجوز"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Third-party Licenses"
-msgstr "مجوز‌های شخص ثالث"
+msgstr "مجوز های شخص-ثالث"
#: editor/editor_about.cpp
msgid ""
@@ -1218,6 +1175,9 @@ msgid ""
"is an exhaustive list of all such third-party components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine به تعدادی از کتابخانه های منبع باز و شخص-ثالث رایگان متکی است "
+"Ú©Ù‡ همگی با شرایط مجوز MIT سازگار هستند. در زیر لیستی جامع از کلیه مؤلÙÙ‡ های "
+"شخص ثالث با بیانیه های حق کپی برداری مربوطه و شرایط مجوز آنها قرار دارد."
#: editor/editor_about.cpp
msgid "All Components"
@@ -1233,29 +1193,27 @@ msgstr "گواهینامه"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in ZIP format."
-msgstr ""
+msgstr "خطای گشودن بسته بندی پرونده، به شکل ZIP نیست."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (Already Exists)"
-msgstr "پیش از این وجود داشته است"
+msgstr "%s (موجود است)"
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr "عست های غیر Ùشرده"
+msgstr "Ùشرده نشدن اَسÙت ها"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "The following files failed extraction from package:"
-msgstr ""
+msgstr "استخراج پرونده های زیر از بسته بندی انجام نشد:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "And %s more files."
-msgstr "نمی‌تواند یک پوشه ایجاد شود."
+msgstr "و %s بیش تر پرونده ها."
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package installed successfully!"
-msgstr ""
+msgstr "بسته با موÙقیت نصب شد!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -1263,9 +1221,8 @@ msgid "Success!"
msgstr "موÙقیت!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Package Contents:"
-msgstr "محتواها:"
+msgstr "درون مایه های بسته بندی:"
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
@@ -1277,52 +1234,51 @@ msgstr "نصب کننده پکیج ها"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "بلندگوها"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "اÙزودن جلوه"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
-msgstr ""
+msgstr "تغییر نام صوت گذرا"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "مقدار آرایه را تغییر بده"
+msgstr "تغییر مقدار صدای خطی"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr ""
+msgstr "دÙگرحالت٠صدای تکی خطی"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "دÙگرحالت٠صدای سکوت خطی"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "دÙگرحالت٠صدای جلوه های میان بر خطی"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "انتخاب صدای ارسال گذرا"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "اÙزودن صدای جلوه خطی"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "انتقال جلوه خطی"
#: editor/editor_audio_buses.cpp
msgid "Delete Bus Effect"
-msgstr "حذ٠اثر گذرا"
+msgstr "حذ٠جلوه خطی"
#: editor/editor_audio_buses.cpp
msgid "Drag & drop to rearrange."
-msgstr ""
+msgstr "برای چینش مجدد، بکشید و رها کنید."
#: editor/editor_audio_buses.cpp
msgid "Solo"
@@ -1351,7 +1307,7 @@ msgstr "بازنشانی حجم"
#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "حذ٠اثر"
+msgstr "حذ٠جلوه"
#: editor/editor_audio_buses.cpp
msgid "Audio"
@@ -1366,24 +1322,20 @@ msgid "Master bus can't be deleted!"
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "انیمیشن را بهینه‌سازی کن"
+msgstr "حذ٠صدای خطی"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "انتخاب شده را به دو تا تکثیر کن"
+msgstr "تکثیر صدای خطی"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Reset Bus Volume"
-msgstr "بازنشانی بزرگنمایی"
+msgstr "باز‌نشانی مقدار خطی"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "کلید Add را جابجا کن"
+msgstr "انتقال صدای خطی"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As..."
@@ -1410,9 +1362,8 @@ msgid "Invalid file, not an audio bus layout."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Error saving file: %s"
-msgstr "خطا در بارگذاری:"
+msgstr "خطای ذخیره کردن پرونده: %s"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
@@ -1461,23 +1412,20 @@ msgid "Valid characters:"
msgstr "کاراکترهای معتبر:"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Must not collide with an existing engine class name."
-msgstr "نام نامعتبر. نباید با یک نام کلاس موجود در موتور برخوردی داشته باشد."
+msgstr "نباید با یک نام کلاس موتور موجود برخورد کند."
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Must not collide with an existing built-in type name."
-msgstr "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد."
+msgstr "نباید با یک نام نوع درون-ساز موجود برخورد کند."
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Must not collide with an existing global constant name."
-msgstr "نام نامعتبر. نباید با نام یک ثابت سراسری موجود برخوردی داشته باشد."
+msgstr "نباید با نام یک ثابت سراسری موجود برخوردی کند."
#: editor/editor_autoload_settings.cpp
msgid "Keyword cannot be used as an autoload name."
-msgstr ""
+msgstr "کلمه کلیدی نمی تواند به عنوان یک نام خودبارگیر بکار برده شود."
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
@@ -1553,9 +1501,8 @@ msgid "Updating scene..."
msgstr ""
#: editor/editor_data.cpp editor/editor_properties.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(خالی)"
+msgstr "[پوچ]"
#: editor/editor_data.cpp
msgid "[unsaved]"
@@ -1644,91 +1591,76 @@ msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "3D Editor"
-msgstr "ویرایشگر"
+msgstr "ویرایشگر 3بعدی"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Script Editor"
-msgstr "گشودن ویرایشگر اسکریپت"
+msgstr "ویرایشگر اسکریپت"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Asset Library"
-msgstr "گشودن کتابخانه عست"
+msgstr "کتابخانه دارایی"
#: editor/editor_feature_profile.cpp
msgid "Scene Tree Editing"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Import Dock"
-msgstr "وارد کردن"
+msgstr "وارد کردن لنگرگاه"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Node Dock"
-msgstr "نام گره:"
+msgstr "لنگرگاه گره:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "FileSystem and Import Docks"
-msgstr "سامانه پرونده"
+msgstr "Ùایل‌سیستم Ùˆ وارد‌کردن لنگرگاه"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Erase profile '%s'? (no undo)"
-msgstr "جایگزینی همه"
+msgstr "پاک‌کردن نمایه '%s'? (عدم بازگردانی)"
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Profile with this name already exists."
-msgstr "بارگذاری خودکار 's%' هم اکنون موجود است!"
+msgstr "نمایه با این نام در حال حاضر وجود دارد."
#: editor/editor_feature_profile.cpp
msgid "(Editor Disabled, Properties Disabled)"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "(Properties Disabled)"
-msgstr "ویژگی:"
+msgstr "(خصوصیات غیرÙعال شده)"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "(Editor Disabled)"
-msgstr "غیرÙعال شده"
+msgstr "(ویرایشگر غیرÙعال شده)"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Class Options:"
-msgstr "توضیح:"
+msgstr "گزینه‌های کلاس:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Enable Contextual Editor"
-msgstr "گشودن ویرایشگر متن"
+msgstr "Ùعال کردن ویرایشگر متنی"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Enabled Properties:"
-msgstr "صاÙÛŒ کردن گره‌ها"
+msgstr "خصوصیات Ùعال شده:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Enabled Features:"
-msgstr "Ùهرست متدها:"
+msgstr "ویژگی های Ùعال شده:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Enabled Classes:"
-msgstr "جستجوی کلاسها"
+msgstr "کلاس های Ùعال شده:"
#: editor/editor_feature_profile.cpp
msgid "File '%s' format is invalid, import aborted."
@@ -1741,23 +1673,20 @@ msgid ""
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Error saving profile to path: '%s'."
-msgstr "خطای بارگذاری قلم."
+msgstr "خطای ذخیره نمایه در مسیر: '%s'."
#: editor/editor_feature_profile.cpp
msgid "Unset"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Current Profile:"
-msgstr "نسخه اخیر:"
+msgstr "نمایه موجود:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Make Current"
-msgstr "تابع را بساز"
+msgstr "ساختن جریان"
#: editor/editor_feature_profile.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1775,73 +1704,61 @@ msgid "Export"
msgstr "صدور"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Available Profiles:"
-msgstr "گره های موجود:"
+msgstr "نمایه‌های موجود:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Class Options"
-msgstr "توضیحات"
+msgstr "گزینه های کلاس"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "New profile name:"
-msgstr "نام گره:"
+msgstr "نام نمایه جدید:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Erase Profile"
-msgstr "Ú©Ùندی در آغاز"
+msgstr "پاک کردن نمایه"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Godot Feature Profile"
-msgstr "مدیریت صدور قالب ها"
+msgstr "ویژگی نمایه Godot"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Import Profile(s)"
-msgstr "پروژه واردشده"
+msgstr "وارد کردن نمایه(ها)"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Export Profile"
-msgstr "صدور پروژه"
+msgstr "صادر کردن نمایه"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Manage Editor Feature Profiles"
-msgstr "مدیریت صدور قالب ها"
+msgstr "مدیریت ویژگی نمایه‌های ویرایشگر"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select Current Folder"
-msgstr "ساختن پوشه"
+msgstr "برگزیدن پوشه موجود"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Ùایل وجود دارد، آیا بازنویسی شود؟"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select This Folder"
-msgstr "انتخاب حالت"
+msgstr "برگزیدن این پوشه"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
msgstr ""
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open in File Manager"
-msgstr "باز شدن مدیر پروژه؟"
+msgstr "گشودن در مدیر پرونده"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Show in File Manager"
-msgstr "باز شدن مدیر پروژه؟"
+msgstr "نمایش در مدیر پرونده"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder..."
@@ -1924,29 +1841,24 @@ msgid "Move Favorite Down"
msgstr ""
#: editor/editor_file_dialog.cpp
-#, fuzzy
msgid "Go to previous folder."
-msgstr "رÙتن به پوشه والد"
+msgstr "برو به پوشه پیشین."
#: editor/editor_file_dialog.cpp
-#, fuzzy
msgid "Go to next folder."
-msgstr "رÙتن به پوشه والد"
+msgstr "برو به پوشه بعد."
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Go to parent folder."
-msgstr "رÙتن به پوشه والد"
+msgstr "برو به پوشه والد."
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Refresh files."
-msgstr "جستجوی کلاسها"
+msgstr "نوسازی پرونده‌ها."
#: editor/editor_file_dialog.cpp
-#, fuzzy
msgid "(Un)favorite current folder."
-msgstr "ناتوان در ساختن پوشه."
+msgstr "پوشه موجود (غیر)محبوب."
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Toggle the visibility of hidden files."
@@ -1976,7 +1888,7 @@ msgstr "پرونده:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
-msgstr "باید از یک پسوند معتبر استÙاده شود."
+msgstr "باید یک پسوند معتبر بکار گیرید."
#: editor/editor_file_system.cpp
msgid "ScanSources"
@@ -2010,9 +1922,8 @@ msgid "Inherited by:"
msgstr "به ارث رسیده به وسیله:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "توضیح:"
+msgstr "توضیح"
#: editor/editor_help.cpp
msgid "Online Tutorials"
@@ -2020,25 +1931,23 @@ msgstr ""
#: editor/editor_help.cpp
msgid "Properties"
-msgstr ""
+msgstr "خصوصیات"
#: editor/editor_help.cpp
msgid "override:"
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "default:"
-msgstr "پیشÙرض"
+msgstr "پیش Ùرض:"
#: editor/editor_help.cpp
msgid "Methods"
-msgstr "روش ها"
+msgstr "توابع"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Theme Properties"
-msgstr "صاÙÛŒ کردن گره‌ها"
+msgstr "خصوصیات زمینه"
#: editor/editor_help.cpp
msgid "Enumerations"
@@ -2046,17 +1955,15 @@ msgstr "شمارش ها"
#: editor/editor_help.cpp
msgid "Constants"
-msgstr "ثابت ها"
+msgstr "ثوابت"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Descriptions"
-msgstr "توضیحات مشخصه:"
+msgstr "توضیحات خصیصه"
#: editor/editor_help.cpp
-#, fuzzy
msgid "(value)"
-msgstr "ارزش:"
+msgstr "(مقدار)"
#: editor/editor_help.cpp
msgid ""
@@ -2065,9 +1972,8 @@ msgid ""
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Method Descriptions"
-msgstr "توضیحات"
+msgstr "توضیحات تابع"
#: editor/editor_help.cpp
msgid ""
@@ -2082,80 +1988,67 @@ msgstr "جستجوی راهنما"
#: editor/editor_help_search.cpp
msgid "Case Sensitive"
-msgstr "حساس به حالت (حرو٠لاتین)"
+msgstr "حساس به حرو٠کوچک و بزرگ"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Show Hierarchy"
-msgstr "جستجو"
+msgstr "نمایش سلسله‌مراتب"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Display All"
-msgstr "جایگزینی همه"
+msgstr "نشان دادن همه"
#: editor/editor_help_search.cpp
msgid "Classes Only"
-msgstr ""
+msgstr "تنها کلاس‌ها"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Methods Only"
-msgstr "روش ها"
+msgstr "تنها روش‌ها"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Signals Only"
-msgstr "سیگنال‌ها"
+msgstr "تنها سیگنال‌ها"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Constants Only"
-msgstr "ثابت ها"
+msgstr "تنها ثوابت"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Properties Only"
-msgstr "ویژگی:"
+msgstr "تنها خصوصیات"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Properties Only"
-msgstr "دارایی Setter را اضاÙÙ‡ Ú©Ù†"
+msgstr "تنها خصوصیات زمینه"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Member Type"
-msgstr "عضوها"
+msgstr "نوع عضو"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Class"
-msgstr "کلاس:"
+msgstr "کلاس"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Method"
-msgstr "روش ها"
+msgstr "روش"
#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Signal"
-msgstr "سیگنال‌ها"
+msgstr "سیگنال‌"
#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
msgstr "ثابت"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Property"
-msgstr "ویژگی:"
+msgstr "خصیصه"
#: editor/editor_help_search.cpp
-#, fuzzy
msgid "Theme Property"
-msgstr "صاÙÛŒ کردن گره‌ها"
+msgstr "ویژگی زمینه"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
@@ -2163,20 +2056,19 @@ msgstr "ویژگی:"
#: editor/editor_inspector.cpp
msgid "Set"
-msgstr ""
+msgstr "تعیین"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
-msgstr ""
+msgstr "تعیین چندگانه:"
#: editor/editor_log.cpp
msgid "Output:"
msgstr "خروجی:"
#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Copy Selection"
-msgstr "برداشتن انتخاب شده"
+msgstr "کپی برگزیده"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
#: editor/editor_profiler.cpp editor/editor_properties.cpp
@@ -2189,31 +2081,30 @@ msgid "Clear"
msgstr "پاک کردن"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Clear Output"
-msgstr "خروجی"
+msgstr "پاک کردن خروجی"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
#: editor/editor_profiler.cpp
msgid "Stop"
-msgstr ""
+msgstr "توقÙ"
#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
msgid "Start"
-msgstr ""
+msgstr "شروع"
#: editor/editor_network_profiler.cpp
msgid "%s/s"
-msgstr ""
+msgstr "%s/ثانیه"
#: editor/editor_network_profiler.cpp
msgid "Down"
-msgstr ""
+msgstr "پایین"
#: editor/editor_network_profiler.cpp
msgid "Up"
-msgstr ""
+msgstr "بالا"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
msgid "Node"
@@ -2237,7 +2128,7 @@ msgstr ""
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "New Window"
-msgstr ""
+msgstr "چارچوب جدید"
#: editor/editor_node.cpp
msgid "Imported resources can't be saved."
@@ -2246,11 +2137,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: scene/gui/dialogs.cpp
msgid "OK"
-msgstr "مواÙقت"
+msgstr "قبول"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
-msgstr ""
+msgstr "خطای ذخیره سازی منبع!"
#: editor/editor_node.cpp
msgid ""
@@ -2279,9 +2170,8 @@ msgid "Can't open '%s'. The file could have been moved or deleted."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while parsing '%s'."
-msgstr "خطای بارگذاری قلم."
+msgstr "خطا هنگام تجزیه '%s'."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
@@ -2292,9 +2182,8 @@ msgid "Missing '%s' or its dependencies."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while loading '%s'."
-msgstr "خطای بارگذاری قلم."
+msgstr "خطا هنگام تجزیه '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
@@ -2399,33 +2288,28 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
#: editor/editor_node.cpp editor/filesystem_dock.cpp
msgid "Open Scene"
-msgstr "باز کردن صحنه"
+msgstr "گشودن صحنه"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "گشودن صحنه اصلی"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Quick Open..."
-msgstr "باز کن"
+msgstr "گشودن Ùوری..."
#: editor/editor_node.cpp
msgid "Quick Open Scene..."
-msgstr ""
+msgstr "گشودن Ùوری صحنه..."
#: editor/editor_node.cpp
msgid "Quick Open Script..."
-msgstr ""
+msgstr "گشودن سریع اسکریپت..."
#: editor/editor_node.cpp
msgid "Save & Close"
@@ -2449,27 +2333,27 @@ msgstr "ذخیره صحنه در ..."
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "نه"
#: editor/editor_node.cpp
msgid "Yes"
-msgstr "تایید"
+msgstr "بله"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "این صحنه هرگز ذخیره نشده است. ذخیره قبل از اجرا؟"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "این عملیات بدون یک صحنه انجام نمی شود."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "صادر کردن کتابخانه شبکه مش"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
-msgstr ""
+msgstr "این عملیات بدون یک گره ریشه ای انجام نمی شود."
#: editor/editor_node.cpp
msgid "Export Tile Set"
@@ -2488,9 +2372,8 @@ msgid "Can't reload a scene that was never saved."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Saved Scene"
-msgstr "باز کردن صحنه"
+msgstr "بازیابی صحنه ذخیره شده"
#: editor/editor_node.cpp
msgid ""
@@ -2500,7 +2383,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
-msgstr ""
+msgstr "اجرا Ùوری صحنه…"
#: editor/editor_node.cpp
msgid "Quit"
@@ -2508,7 +2391,7 @@ msgstr "خروج"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr "از ویرایشگر خارج می شوید؟"
+msgstr "خروج از ویرایشگر؟"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
@@ -2538,12 +2421,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr ""
+msgstr "بستن صحنه"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reopen Closed Scene"
-msgstr "باز کردن صحنه"
+msgstr "بازگشودن صحنه بسته شده"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
@@ -2554,9 +2436,8 @@ msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Unable to load addon script from path: '%s'."
-msgstr "خطای بارگذاری قلم."
+msgstr "امکان بارگیری اسکریپت اÙزونه از مسیر وجود ندارد: '%s'."
#: editor/editor_node.cpp
msgid ""
@@ -2616,7 +2497,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "ذخیره لایه"
#: editor/editor_node.cpp
msgid "Delete Layout"
@@ -2629,50 +2510,44 @@ msgstr "پیشÙرض"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "سامانه پرونده"
+msgstr "نمایش در Ùایل‌سیستم"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play This Scene"
-msgstr "پخش صحنه"
+msgstr "اجرای این صحنه"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close Tab"
-msgstr "بستن"
+msgstr "بستن زبانه"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo Close Tab"
-msgstr "بستن"
+msgstr "برگرداندن زبانه"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Close Other Tabs"
-msgstr ""
+msgstr "بستن زبانه های دیگر"
#: editor/editor_node.cpp
msgid "Close Tabs to the Right"
-msgstr ""
+msgstr "بستن زبانه ها به طر٠راست"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close All Tabs"
-msgstr "بستن"
+msgstr "بستن تمام زبانه ها"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr ""
+msgstr "جاگرداندن زبانه صحنه"
#: editor/editor_node.cpp
msgid "%d more files or folders"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "%d more folders"
-msgstr "نمی‌تواند یک پوشه ایجاد شود."
+msgstr "%d پوشه‌های بیش تر"
#: editor/editor_node.cpp
msgid "%d more files"
@@ -2703,9 +2578,8 @@ msgid "Go to previously opened scene."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Copy Text"
-msgstr "کپی کردن"
+msgstr "کپی متن"
#: editor/editor_node.cpp
msgid "Next tab"
@@ -2744,9 +2618,8 @@ msgid "Save Scene"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
-msgstr "ذخیره صحنه در ..."
+msgstr "ذخیره صحنه"
#: editor/editor_node.cpp
msgid "Convert To..."
@@ -2763,12 +2636,12 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr "خنثی کردن (Undo)"
+msgstr "عقب‌گرد"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Redo"
-msgstr ""
+msgstr "جلوگرد"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
@@ -2780,14 +2653,12 @@ msgid "Project"
msgstr "پروژه"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project Settings..."
-msgstr "ترجیحات پروژه"
+msgstr "تنظیمات طرح…"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Version Control"
-msgstr "نسخه:"
+msgstr "مهار نسخه"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Set Up Version Control"
@@ -2798,27 +2669,24 @@ msgid "Shut Down Version Control"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Export..."
-msgstr "صدور"
+msgstr "صدور…"
#: editor/editor_node.cpp
msgid "Install Android Build Template..."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
-msgstr "باز شدن مدیر پروژه؟"
+msgstr "گشودن پوشه اطلاعات طرح"
#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "ابزارها"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Orphan Resource Explorer..."
-msgstr "پوینده‌ی منبع جدا اÙتاده"
+msgstr "پوینده‌ی منبع جااÙتاده"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -2898,14 +2766,12 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/script_create_dialog.cpp
-#, fuzzy
msgid "Editor"
msgstr "ویرایشگر"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor Settings..."
-msgstr "ویرایشگر ترجیحات"
+msgstr "تنظیمات ویرایشگر…"
#: editor/editor_node.cpp
msgid "Editor Layout"
@@ -10070,9 +9936,8 @@ msgid "Project Manager"
msgstr "مدیر پروژه"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Projects"
-msgstr "پروژه"
+msgstr "طرح ها"
#: editor/project_manager.cpp
msgid "Last Modified"
@@ -10112,6 +9977,8 @@ msgid ""
"You currently don't have any projects.\n"
"Would you like to explore official example projects in the Asset Library?"
msgstr ""
+"شما Ùعلا هیچ طرحی ندارید.\n"
+"آیا می خواهید طرح های نمونه رسمی را در کتابخانه دارایی کاوش کنید؟"
#: editor/project_manager.cpp
msgid ""
@@ -10119,6 +9986,9 @@ msgid ""
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
+"کادر جستجو طرح ها را با نام Ùˆ مسیر اجزا گذشته تصÙیه Ù…ÛŒ کند.\n"
+"برای تصÙیه کردن طرح ها با نام Ùˆ مسیر کامل، پرس Ùˆ جو باید حداقل دارای یک `/"
+"`کاراکتر باشد."
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -10363,7 +10233,7 @@ msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "The editor must be restarted for changes to take effect."
-msgstr ""
+msgstr "باید ویرایشگر از نو شروع شود تا تغییرات جلوه کنند."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -10739,6 +10609,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "حذ٠گره(ها)"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "حذ٠گره(ها)"
@@ -12469,7 +12344,7 @@ msgstr ""
#: scene/2d/collision_polygon_2d.cpp
msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr "یک CollisionPolygon2D خالی اثری بر برخورد ندارد."
+msgstr "یک CollisionPolygon2D خالی جلوه بر برخورد ندارد."
#: scene/2d/collision_shape_2d.cpp
msgid ""
@@ -12490,6 +12365,12 @@ msgstr ""
"یک Ø´Ú©Ù„ باید برای CollisionShape2D Ùراهم شده باشد تا عمل کند. لطÙا یک Ø´Ú©Ù„ "
"منبع برای آن ایجاد کنید!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12506,9 +12387,7 @@ msgstr "یک باÙت با Ø´Ú©Ù„ نور باید برای دارایی texture
#: scene/2d/light_occluder_2d.cpp
msgid ""
"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-"یک چندضلعی مسدود باید برای این مسدودکننده (occluder) تنظیم (یا ترسیم) شود تا "
-"تأثیرگذار باشد."
+msgstr "یک چندضلعی انسدادی باید تنظیم (یا ترسیم) شود تا جلوه کننده باشد."
#: scene/2d/light_occluder_2d.cpp
#, fuzzy
@@ -12680,7 +12559,7 @@ msgstr ""
#: scene/3d/collision_polygon.cpp
msgid "An empty CollisionPolygon has no effect on collision."
-msgstr "یک CollisionPolygon خالی تأثیری بر برخورد ندارد."
+msgstr "یک CollisionPolygon خالی جلوه بر برخورد ندارد."
#: scene/3d/collision_shape.cpp
msgid ""
@@ -12825,6 +12704,8 @@ msgid ""
"WorldEnvironment requires its \"Environment\" property to contain an "
"Environment to have a visible effect."
msgstr ""
+"محیط جهان نیاز به ویژگی \"محیط\" خود دارد تا دارای یک محیط باشد تا جلوه ای "
+"قابل دیدن داشته باشد."
#: scene/3d/world_environment.cpp
msgid ""
@@ -13009,7 +12890,7 @@ msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
-msgstr ""
+msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "Not in resource path."
#~ msgstr "در مسیر٠منبع نیست."
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 8ea9a940f0..67deaf06b3 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-06-26 06:11+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -2327,11 +2327,6 @@ msgid "There is no defined scene to run."
msgstr "Suoritettavaa skeneä ei ole määritetty."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Nykyistä skeneä ei ole vielä tallennettu. Tallenna se ennen suorittamista."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Aliprosessia ei voitu käynnistää!"
@@ -8642,7 +8637,7 @@ msgstr "Muuntaa HSV-vektorin RGB-vastaavaksi."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts RGB vector to HSV equivalent."
-msgstr "Muuntaa RGB-vektori HSV-vastaavaksi."
+msgstr "Muuntaa RGB-vektorin HSV-vastaavaksi."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Sepia function."
@@ -10530,6 +10525,11 @@ msgid "Make node as Root"
msgstr "Tee solmusta juurisolmu"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Poista solmu \"%s\" ja sen alisolmut?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Poista %d solmua?"
@@ -12223,6 +12223,12 @@ msgstr ""
"CollisionShape2D solmulla täytyy olla muoto, jotta se toimisi. Ole hyvä ja "
"luo sille muotoresurssi!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12797,6 +12803,10 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa."
msgid "Constants cannot be modified."
msgstr "Vakioita ei voi muokata."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Nykyistä skeneä ei ole vielä tallennettu. Tallenna se ennen suorittamista."
+
#~ msgid "Not in resource path."
#~ msgstr "Ei löytynyt resurssipolusta."
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index ceda61c802..490d9d92ec 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -2259,10 +2259,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10133,6 +10129,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11739,6 +11739,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 9dd9b3e166..95e9d7a55c 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -35,7 +35,7 @@
# Rémi Verschelde <rverschelde@gmail.com>, 2016-2017.
# Robin Arys <robinarys@hotmail.com>, 2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
-# salty64 <cedric.arrabie@univ-pau.fr>, 2018.
+# salty64 <cedric.arrabie@univ-pau.fr>, 2018, 2020.
# Thomas Baijot <thomasbaijot@gmail.com>, 2016, 2019.
# Tommy Melançon-Roy <tommel1234@hotmail.com>, 2017-2018.
# Willow <theotimefd@aol.com>, 2018.
@@ -79,7 +79,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-07-26 15:41+0000\n"
"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
@@ -384,7 +384,7 @@ msgstr "Envelopper l’interp. de la boucle"
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr "Insérer clés"
+msgstr "Insérer clé"
#: editor/animation_track_editor.cpp
msgid "Duplicate Key(s)"
@@ -2409,12 +2409,6 @@ msgid "There is no defined scene to run."
msgstr "Il n'y a pas de scène définie pour être lancée."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder avant "
-"de la lancer."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Impossible de démarrer le sous-processus !"
@@ -5543,7 +5537,7 @@ msgstr "Activer/Désactiver le magnétisme intelligent."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Smart Snap"
-msgstr "Utiliser le magnétisme intelligent"
+msgstr "Utiliser l'aimantation intelligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle grid snapping."
@@ -7311,7 +7305,7 @@ msgstr "Échelle : "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translating: "
-msgstr "Traduction : "
+msgstr "Translation : "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -7567,7 +7561,7 @@ msgstr "Utiliser les coordonées locales"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Snap"
-msgstr "Aligner avec la grille"
+msgstr "Utiliser l’aimantation"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -7599,11 +7593,11 @@ msgstr "Basculer entre la vue perspective et orthogonale"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
-msgstr "Insérer une clef d'animation"
+msgstr "Insérer une clé d'animation"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
-msgstr "Focaliser sur l'origine"
+msgstr "Focaliser l'origine"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
@@ -9026,8 +9020,7 @@ msgstr "Renvoie la tangente hyperbolique inverse du paramètre."
msgid ""
"Finds the nearest integer that is greater than or equal to the parameter."
msgstr ""
-"Recherche l'entier le plus proche qui est plus supérieur ou égal au "
-"paramètre."
+"Recherche l'entier le plus proche qui est supérieur ou égal au paramètre."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Constrains a value to lie between two further values."
@@ -9043,7 +9036,7 @@ msgstr "Renvoie le cosinus hyperbolique du paramètre."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in radians to degrees."
-msgstr "Convertit une quantité de radians en degrés."
+msgstr "Convertit une quantité en radians en degrés."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-e Exponential."
@@ -9109,11 +9102,11 @@ msgstr "1.0 / scalaire"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest integer to the parameter."
-msgstr "Renvoie l'entier le plus proche de celui du paramètre."
+msgstr "Renvoie l'entier le plus proche du paramètre."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest even integer to the parameter."
-msgstr "Renvoie l'entier pair le plus proche de celui du paramètre."
+msgstr "Renvoie l'entier pair le plus proche du paramètre."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Clamps the value between 0.0 and 1.0."
@@ -10686,6 +10679,10 @@ msgid "Make node as Root"
msgstr "Choisir le nœud comme racine de scène"
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr "Supprimer %d nœuds et leurs enfants potentiels ?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Supprimer %d nœuds ?"
@@ -11130,11 +11127,11 @@ msgstr "Erreur :"
#: editor/script_editor_debugger.cpp
msgid "C++ Error"
-msgstr "Erreur C ++"
+msgstr "Erreur C++"
#: editor/script_editor_debugger.cpp
msgid "C++ Error:"
-msgstr "Erreur C ++ :"
+msgstr "Erreur C++ :"
#: editor/script_editor_debugger.cpp
msgid "C++ Source"
@@ -11223,7 +11220,7 @@ msgstr "Exporter la liste vers un fichier CSV"
#: editor/script_editor_debugger.cpp
msgid "Resource Path"
-msgstr "Chemin de la ressource"
+msgstr "Chemin de ressource"
#: editor/script_editor_debugger.cpp
msgid "Type"
@@ -12404,6 +12401,15 @@ msgstr ""
"Une forme doit être créée afin qu'une CollisionShape2D fonctionne. Veuillez "
"créer une ressource de forme !"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+"Les formes à base de polygones ne sont pas prévues pour être utilisées ou "
+"éditées via le nœud CollisionShape2D. Veuillez utiliser le nœud "
+"CollisionPolygon2D à la place."
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12984,7 +12990,7 @@ msgstr "Affectation à la fonction."
#: servers/visual/shader_language.cpp
msgid "Assignment to uniform."
-msgstr "Affectation à l'uniforme."
+msgstr "Affectation à la variable uniform."
#: servers/visual/shader_language.cpp
msgid "Varyings can only be assigned in vertex function."
@@ -12994,6 +13000,11 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex."
msgid "Constants cannot be modified."
msgstr "Les constantes ne peuvent être modifiées."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder "
+#~ "avant de la lancer."
+
#~ msgid "Not in resource path."
#~ msgstr "Pas dans le chemin de la ressource."
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index 70dd5eada7..a496566c2e 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -2253,10 +2253,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10129,6 +10125,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11737,6 +11737,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 7895ae48fe..c3789f9804 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -2381,10 +2381,6 @@ msgid "There is no defined scene to run."
msgstr "×ין סצנה מוגדרת להרצה."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "הסצנה הנוכחית ×ž×¢×•×œ× ×œ× × ×©×ž×¨×”, × × ×œ×©×ž×•×¨ ×ותה ×‘×˜×¨× ×”×”×¨×¦×”."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
@@ -10684,6 +10680,11 @@ msgstr "שמירת סצנה"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "מחיקת שורה"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "מחיקת שורה"
@@ -12367,6 +12368,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12842,6 +12849,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "הסצנה הנוכחית ×ž×¢×•×œ× ×œ× × ×©×ž×¨×”, × × ×œ×©×ž×•×¨ ×ותה ×‘×˜×¨× ×”×”×¨×¦×”."
+
#~ msgid "Not in resource path."
#~ msgstr "×œ× ×‘× ×ª×™×‘ המש×ב."
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index e3ae2aabe5..70d7a4d6b3 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -2311,10 +2311,6 @@ msgid "There is no defined scene to run."
msgstr "चलाने के लिठकोई परिभाषित दृशà¥à¤¯ नहीं है ।"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ दृशà¥à¤¯ कभी नहीं बचाया गया था, कृपया इसे चलाने से पहले बचाने के लिठ।"
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
@@ -10329,6 +10325,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "को हटा दें"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "को हटा दें"
@@ -11975,6 +11976,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12443,6 +12450,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ दृशà¥à¤¯ कभी नहीं बचाया गया था, कृपया इसे चलाने से पहले बचाने के लिठ।"
+
#~ msgid "Not in resource path."
#~ msgstr "रेसोरà¥à¤¸ पाथ में नहीं."
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index 5355ee1dc9..a515a912b0 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -2271,10 +2271,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10179,6 +10175,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "ObriÅ¡i kljuÄ(eve)"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "ObriÅ¡i kljuÄ(eve)"
@@ -11798,6 +11799,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index b57028a426..5661ed02cd 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -2441,11 +2441,6 @@ msgid "There is no defined scene to run."
msgstr "Nincs meghatározva Scene a futtatáshoz."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"A jelenlegi Scene soha nem volt még mentve, mentse el a futtatás előtt."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Az alprocesszt nem lehetett elindítani!"
@@ -10894,6 +10889,11 @@ msgstr "Scene mentés"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Node létrehozás"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Node létrehozás"
@@ -12589,6 +12589,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13066,6 +13072,10 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "A jelenlegi Scene soha nem volt még mentve, mentse el a futtatás előtt."
+
#~ msgid "Not in resource path."
#~ msgstr "Nincs az erőforrás elérési útban."
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 92c0c25da9..cf4bd738fa 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -26,12 +26,13 @@
# Ade Fikri Malihuddin <ade.fm97@gmail.com>, 2020.
# zephyroths <ridho.hikaru@gmail.com>, 2020.
# Richard Urban <redasuio1@gmail.com>, 2020.
+# yusuf afandi <afandi.yusuf.04@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-03 20:09+0000\n"
-"Last-Translator: Sofyan Sugianto <sofyanartem@gmail.com>\n"
+"PO-Revision-Date: 2020-07-06 04:41+0000\n"
+"Last-Translator: yusuf afandi <afandi.yusuf.04@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot/id/>\n"
"Language: id\n"
@@ -39,7 +40,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.1-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -778,9 +779,8 @@ msgid "Method in target node must be specified."
msgstr "Method dalam node target harus ditentukan."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Nama bukan sebuah pengidentifikasi yang sah:"
+msgstr "Nama bukan sebuah pengidentifikasi yang sah."
#: editor/connections_dialog.cpp
msgid ""
@@ -2346,12 +2346,6 @@ msgid "There is no defined scene to run."
msgstr "Tidak ada skena yang didefinisikan untuk dijalankan."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Skena saat ini belum pernah disimpan, harap simpan terlebih dahulu sebelum "
-"menjalankannya."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Tidak dapat memulai subproses!"
@@ -10553,6 +10547,11 @@ msgid "Make node as Root"
msgstr "Jadikan node sebagai Dasar"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Hapus node \"%s\" dan anak-anaknya?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Hapus %d node?"
@@ -12240,6 +12239,12 @@ msgstr ""
"Sebuah shape harus disediakan untuk CollisionShape2D supaya berfungsi. Mohon "
"ciptakan resource shape untuknya!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12800,6 +12805,11 @@ msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex."
msgid "Constants cannot be modified."
msgstr "Konstanta tidak dapat dimodifikasi."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Skena saat ini belum pernah disimpan, harap simpan terlebih dahulu "
+#~ "sebelum menjalankannya."
+
#~ msgid "Not in resource path."
#~ msgstr "Tidak dalam lokasi resource."
diff --git a/editor/translations/is.po b/editor/translations/is.po
index f0d93d1242..d53a9d609d 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -2291,10 +2291,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10240,6 +10236,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Anim DELETE-lyklar"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Anim DELETE-lyklar"
@@ -11858,6 +11859,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 7c929b7779..93ca2a8f29 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -29,7 +29,7 @@
# Giuseppe Guerra <me@nyodev.xyz>, 2019.
# RHC <rhc.throwaway@gmail.com>, 2019.
# Antonio Giungato <antonio.giungato@gmail.com>, 2019.
-# Marco Galli <mrcgll98@gmail.com>, 2019.
+# Marco Galli <mrcgll98@gmail.com>, 2019, 2020.
# MassiminoilTrace <omino.gis@gmail.com>, 2019, 2020.
# MARCO BANFI <mbanfi@gmail.com>, 2019.
# Marco <rodomar705@gmail.com>, 2019.
@@ -37,7 +37,7 @@
# Stefano Merazzi <asso99@hotmail.com>, 2019.
# Sinapse X <sinapsex13@gmail.com>, 2019.
# Micila Micillotto <micillotto@gmail.com>, 2019, 2020.
-# Mirko Soppelsa <miknsop@gmail.com>, 2019.
+# Mirko Soppelsa <miknsop@gmail.com>, 2019, 2020.
# No <kingofwizards.kw7@gmail.com>, 2019.
# StarFang208 <polaritymanx@yahoo.it>, 2019.
# Katia Piazza <gydey@ridiculousglitch.com>, 2019.
@@ -52,12 +52,14 @@
# Anonymous <noreply@weblate.org>, 2020.
# riccardo boffelli <riccardo.boffelli.96@gmail.com>, 2020.
# Lorenzo Asolan <brixiumx@gmail.com>, 2020.
+# Lorenzo Cerqua <lorenzocerqua@tutanota.com>, 2020.
+# Federico Manzella <ferdiu.manzella@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: Lorenzo Asolan <brixiumx@gmail.com>\n"
+"PO-Revision-Date: 2020-07-26 15:41+0000\n"
+"Last-Translator: Mirko <miknsop@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -804,7 +806,6 @@ msgid "Method in target node must be specified."
msgstr "Il metodo del nodo designato deve essere specificato."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
msgstr "Il nome del metodo dev'essere un identificatore valido."
@@ -2380,12 +2381,6 @@ msgid "There is no defined scene to run."
msgstr "Non c'è nessuna scena definita da eseguire."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"La scena attuale non è mai stata salvata, si prega di salvarla prima di "
-"eseguirla."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Impossibile avviare il sottoprocesso!"
@@ -4029,10 +4024,9 @@ msgid "Error running post-import script:"
msgstr "Errore di esecuzione dello script di post-import:"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Did you return a Node-derived object in the `post_import()` method?"
msgstr ""
-"Avete restituito un oggetto derivato da un Nodo nel metodo `post_import()`?"
+"Hai restituito un oggetto derivato da un Nodo nel metodo `post_import()`?"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -8720,7 +8714,7 @@ msgstr "Crea Nodo Shader"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Color function."
-msgstr "Colora funzione."
+msgstr "Funzione colore."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Color operator."
@@ -8728,15 +8722,15 @@ msgstr "Operatore colore."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Grayscale function."
-msgstr "Funzione Grayscale."
+msgstr "Funzione scala di grigi."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts HSV vector to RGB equivalent."
-msgstr "Converti vettore HSV nell'equivalente RGB."
+msgstr "Converte un vettore HSV nel suo equivalente RGB."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts RGB vector to HSV equivalent."
-msgstr "Converti vettore RGB nell'equivalente HSV."
+msgstr "Converte un vettore RGB nel suo equivalente HSV."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Sepia function."
@@ -8744,31 +8738,31 @@ msgstr "Funzione seppia."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Burn operator."
-msgstr "Operatore Burn."
+msgstr "Operatore brucia."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Darken operator."
-msgstr "Operatore Darken."
+msgstr "Operatore scurisci."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Difference operator."
-msgstr "Operatore \"differenza\"."
+msgstr "Operatore differenza."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Dodge operator."
-msgstr "Operatore schivata."
+msgstr "Operatore scherma."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "HardLight operator."
-msgstr "Operatore HardLight."
+msgstr "Operatore luce dura."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Lighten operator."
-msgstr "Operatore \"schiarischi\"."
+msgstr "Operatore schiarisci."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Overlay operator."
-msgstr "Operatore overlay."
+msgstr "Operatore sovrapponi."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Screen operator."
@@ -8776,7 +8770,7 @@ msgstr "Operatore schermo."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "SoftLight operator."
-msgstr "Operatore SoftLight."
+msgstr "Operatore luce morbida."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Color constant."
@@ -8788,7 +8782,8 @@ msgstr "Uniforme di colore."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr "Ritorna il risultato booleano del confronto di %s tra due parametri."
+msgstr ""
+"Restituisce il risultato booleano del confronto di %s tra due parametri."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Equal (==)"
@@ -8800,29 +8795,31 @@ msgstr "Maggiore Di (>)"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Greater Than or Equal (>=)"
-msgstr "Maggiore o Uguale (>=)"
+msgstr "Maggiore o uguale (>=)"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns an associated vector if the provided scalars are equal, greater or "
"less."
msgstr ""
-"Ritorna un vettore associato se gli scalari di quello fornito sono uguali, "
-"maggiori o minori."
+"Restituisce un vettore associato se gli scalari di quello fornito sono "
+"uguali, maggiori o minori."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the boolean result of the comparison between INF and a scalar "
"parameter."
msgstr ""
-"Ritorna il risultato booleano del confronto tra INF e un parametro scalare."
+"Restituisce il risultato booleano del confronto tra INF e un parametro "
+"scalare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the boolean result of the comparison between NaN and a scalar "
"parameter."
msgstr ""
-"Ritorna il risultato booleano del confronto tra NaN e un parametro scalare."
+"Restituisce il risultato booleano del confronto tra NaN e un parametro "
+"scalare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Less Than (<)"
@@ -8840,24 +8837,26 @@ msgstr "Non Uguale (!=)"
msgid ""
"Returns an associated vector if the provided boolean value is true or false."
msgstr ""
-"Ritorna un vettore associato se il valore booleano fornito è vero o falso."
+"Restituisce un vettore associato se il valore booleano fornito è vero o "
+"falso."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns an associated scalar if the provided boolean value is true or false."
-msgstr "Ritorna uno scalare associato se il booleano provvisto è vero o falso."
+msgstr ""
+"Restituisce uno scalare associato se il booleano fornito è vero o falso."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the boolean result of the comparison between two parameters."
-msgstr "Ritorna il risultato booleano del confronto tra due parametri."
+msgstr "Restituisce il risultato booleano del confronto tra due parametri."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
"Returns the boolean result of the comparison between INF (or NaN) and a "
"scalar parameter."
msgstr ""
-"Ritorna il risultato booleano del confronto tra INF (o NaN) e un parametro "
-"scalare."
+"Restituisce il risultato booleano del confronto tra INF (o NaN) e un "
+"parametro scalare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Boolean constant."
@@ -8877,27 +8876,27 @@ msgstr "Parametro di input."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr "Parametro di input '%s' per le modalità shader vertex e fragment."
+msgstr "Parametro di input '%s' per le modalità shader vertice e frammento."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment and light shader modes."
-msgstr "Parametro di input '%s' per le modalità shader fragment e light."
+msgstr "Parametro di input '%s' per le modalità shader frammento e luce."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for fragment shader mode."
-msgstr "Parametro di input '%s' per la modalità shader fragment."
+msgstr "Parametro di input '%s' per la modalità shader frammento."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for light shader mode."
-msgstr "Parametro di input '%s' per la modalità shader light."
+msgstr "Parametro di input '%s' per la modalità shader luce."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex shader mode."
-msgstr "Parametro di input '%s' per la modalità shader vertex."
+msgstr "Parametro di input '%s' per la modalità shader vertice."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr "Parametro di input '%s' per la modalità shader vertex e fragment."
+msgstr "Parametro di input '%s' per la modalità shader vertice e frammento."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Scalar function."
@@ -8941,35 +8940,35 @@ msgstr "La costante Sqrt2 (1.414214). La radice quadrata di 2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the absolute value of the parameter."
-msgstr "Ritorna il valore assoluto del parametro."
+msgstr "Restituisce il valore assoluto del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-cosine of the parameter."
-msgstr "Ritorna l'arco-coseno del parametro."
+msgstr "Restituisce l'arco-coseno del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr "Ritorna l'inversa del coseno iperbolico del parametro."
+msgstr "Restituisce l'inversa del coseno iperbolico del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-sine of the parameter."
-msgstr "Ritorna l'arco-seno del parametro."
+msgstr "Restituisce l'arco-seno del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr "Ritorna l'inversa del seno iperbolico del parametro."
+msgstr "Restituisce l'inversa del seno iperbolico del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameter."
-msgstr "Ritorna l'arco-tangente del parametro."
+msgstr "Restituisce l'arco-tangente del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the arc-tangent of the parameters."
-msgstr "Ritorna l'arco-tangente dei parametri."
+msgstr "Restituisce l'arco-tangente dei parametri."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr "Ritorna l'inversa della tangente iperbolica del parametro."
+msgstr "Restituisce l'inversa della tangente iperbolica del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -8983,11 +8982,11 @@ msgstr "Vincola un valore tra due altri valori."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the cosine of the parameter."
-msgstr "Ritorna il coseno del parametro."
+msgstr "Restituisce il coseno del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the hyperbolic cosine of the parameter."
-msgstr "Ritorna il coseno iperbolico del parametro."
+msgstr "Restituisce il coseno iperbolico del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in radians to degrees."
@@ -9024,11 +9023,11 @@ msgstr "Logaritmo in base 2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the greater of two values."
-msgstr "Ritorna il maggiore di due valori."
+msgstr "Restituisce il maggiore di due valori."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the lesser of two values."
-msgstr "Ritorna il minore di due valori."
+msgstr "Restituisce il minore di due valori."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Linear interpolation between two scalars."
@@ -9036,7 +9035,7 @@ msgstr "Interpolazione lineare tra due scalari."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the opposite value of the parameter."
-msgstr "Ritorna il valore opposto del parametro."
+msgstr "Restituisce il valore opposto del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "1.0 - scalar"
@@ -9046,7 +9045,7 @@ msgstr "1.0 - scalare"
msgid ""
"Returns the value of the first parameter raised to the power of the second."
msgstr ""
-"Ritorna il valore del primo parametro elevato alla potenza del secondo."
+"Restituisce il valore del primo parametro elevato alla potenza del secondo."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in degrees to radians."
@@ -10631,6 +10630,11 @@ msgid "Make node as Root"
msgstr "Rendi il nodo come Radice"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Elimina il nodo \"%s\" e tutti i suoi figli?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Elimina %d nodi?"
@@ -10760,15 +10764,14 @@ msgid "Open Documentation"
msgstr "Apri la documentazione"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
"disabled."
msgstr ""
"Non è possibile allegare uno script: non ci sono linguaggi registrati.\n"
-"Questo probabilmente perché questo editor è stato costruito con tutti i "
-"moduli di lingua disabilitati."
+"Probabilmente perché questo editor è stato costruito con tutti i moduli di "
+"linguaggio disabilitati."
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
@@ -12053,11 +12056,9 @@ msgstr ""
"Debug keystore non configurato nelle Impostazioni dell'Editor né nel preset."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Release keystore incorrectly configured in the export preset."
msgstr ""
-"Debug keystore non configurato correttamente nelle Impostazioni dell'Editor "
-"né nel preset."
+"Debug keystore non configurato correttamente nel preset di esportazione."
#: platform/android/export/export.cpp
msgid "Custom build requires a valid Android SDK path in Editor Settings."
@@ -12088,12 +12089,11 @@ msgid "Invalid package name:"
msgstr "Nome del pacchetto non valido:"
#: platform/android/export/export.cpp
-#, fuzzy
msgid ""
"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
"project setting (changed in Godot 3.2.2).\n"
msgstr ""
-"Modulo \"GodotPaymentV3\" non valido incluso nell'impostazione del progetto "
+"Modulo \"GodotPaymentV3\" non valido incluso nelle impostazione del progetto "
"\"android/moduli\" (modificato in Godot 3.2.2).\n"
#: platform/android/export/export.cpp
@@ -12101,13 +12101,12 @@ msgid "\"Use Custom Build\" must be enabled to use the plugins."
msgstr "Per utilizzare i plugin \"Use Custom Build\" deve essere abilitato."
#: platform/android/export/export.cpp
-#, fuzzy
msgid ""
"\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR"
"\"."
msgstr ""
-"\"Degrees Of Freedom\" è valido solo quando \"Xr Mode\" è \"Oculus Mobile VR"
-"\"."
+"\"Degrees Of Freedom\" è valido solamente quando \"Xr Mode\" è \"Oculus "
+"Mobile VR\"."
#: platform/android/export/export.cpp
#, fuzzy
@@ -12346,6 +12345,12 @@ msgstr ""
"Perché CollisionShape2D funzioni deve essere fornita una forma. Si prega di "
"creare una risorsa forma (shape)!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12924,6 +12929,11 @@ msgstr "Varyings può essere assegnato soltanto nella funzione del vertice."
msgid "Constants cannot be modified."
msgstr "Le constanti non possono essere modificate."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "La scena attuale non è mai stata salvata, si prega di salvarla prima di "
+#~ "eseguirla."
+
#~ msgid "Not in resource path."
#~ msgstr "Non è nel percorso risorse."
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 35e590d629..d3b2771793 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -36,7 +36,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-07-28 09:51+0000\n"
"Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
@@ -331,11 +331,11 @@ msgstr "キュービック"
#: editor/animation_track_editor.cpp
msgid "Clamp Loop Interp"
-msgstr "ループインタプリタを抑ãˆè¾¼ã¿(clamp)"
+msgstr "ループ補間をクランプ"
#: editor/animation_track_editor.cpp
msgid "Wrap Loop Interp"
-msgstr "ループインタプリタをラップ(wrap)"
+msgstr "ループ補間をラップ"
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -840,7 +840,7 @@ msgstr "追加ã®å‘¼å‡ºã—引数:"
#: editor/connections_dialog.cpp
msgid "Receiver Method:"
-msgstr "メソッドã®é¸æŠž:"
+msgstr "å—ä¿¡å´ãƒ¡ã‚½ãƒƒãƒ‰:"
#: editor/connections_dialog.cpp
msgid "Advanced"
@@ -1482,7 +1482,7 @@ msgstr "自動読込ã¿ã®ä¸¦ã¹æ›¿ãˆ"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’追加出æ¥ã¾ã›ã‚“:"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -2353,10 +2353,6 @@ msgid "There is no defined scene to run."
msgstr "実行ã™ã‚‹ã‚·ãƒ¼ãƒ³ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚実行ã™ã‚‹å‰ã«ä¿å­˜ã—ã¦ãã ã•ã„。"
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“ã§ã—ãŸ!"
@@ -2442,13 +2438,15 @@ msgstr "ä¿å­˜ã•ã‚Œã¦ã„ãªã„シーンを読ã¿è¾¼ã‚€ã“ã¨ã¯ã§ãã¾ã›ã‚“
#: editor/editor_node.cpp
msgid "Reload Saved Scene"
-msgstr "ä¿å­˜æ¸ˆã¿ã®ã‚·ãƒ¼ãƒ³ã‚’リロード"
+msgstr "ä¿å­˜æ¸ˆã¿ã‚·ãƒ¼ãƒ³ã‚’リロード"
#: editor/editor_node.cpp
msgid ""
"The current scene has unsaved changes.\n"
"Reload the saved scene anyway? This action cannot be undone."
msgstr ""
+"ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã«ã¯æœªä¿å­˜ã®å¤‰æ›´ãŒã‚ã‚Šã¾ã™ã€‚\n"
+"ãã‚Œã§ã‚‚ä¿å­˜æ¸ˆã¿ã‚·ãƒ¼ãƒ³ã‚’リロードã—ã¾ã™ã‹ï¼Ÿ ã“ã®å‹•ä½œã¯å–り消ã›ã¾ã›ã‚“。"
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
@@ -2905,7 +2903,7 @@ msgstr "システムコンソールã®æœ‰åŠ¹åŒ– / 無効化"
#: editor/editor_node.cpp
msgid "Open Editor Data/Settings Folder"
-msgstr "エディタã®ãƒ‡ãƒ¼ã‚¿ãƒ»è¨­å®šãƒ•ã‚©ãƒ«ãƒ€ã‚’é–‹ã"
+msgstr "エディタã®ãƒ‡ãƒ¼ã‚¿ / 設定フォルダを開ã"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
@@ -3062,13 +3060,13 @@ msgid ""
"the \"Use Custom Build\" option should be enabled in the Android export "
"preset."
msgstr ""
-"ã“ã®æ“作㯠\"res://android/build\" ã«ã‚½ãƒ¼ã‚¹ãƒ†ãƒ³ãƒ—レートをインストールã—アンド"
-"ロイドã®ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドを設定ã—ã¾ã™ã€‚\n"
-"後ã‹ã‚‰è¨­å®šã«å¤‰æ›´ã‚’加ãˆãŸã‚Šã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ™‚ã«ã‚«ã‚¹ã‚¿ãƒ APKをビルドã§ãã¾ã™ã€‚(モ"
-"ジュールを追加ã™ã‚‹ã€AndroidManifest.xmlを変更ã™ã‚‹ç­‰)\n"
+"ã“ã®æ“作㯠\"res://android/build\" ã«ã‚½ãƒ¼ã‚¹ãƒ†ãƒ³ãƒ—レートをインストールã—ã€ã‚¢ãƒ³"
+"ドロイドã®ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドを設定ã—ã¾ã™ã€‚\n"
+"後ã‹ã‚‰è¨­å®šã«å¤‰æ›´ã‚’加ãˆãŸã‚Šã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ™‚ã«ã‚«ã‚¹ã‚¿ãƒ APKをビルドã§ãã¾ã™ (モ"
+"ジュールを追加ã™ã‚‹ã€AndroidManifest.xmlを変更ã™ã‚‹ç­‰)。\n"
"APKビルドã®åˆæœŸè¨­å®šã®ä»£ã‚ã‚Šã«ã‚«ã‚¹ã‚¿ãƒ ãƒ“ルド設定を使ã†ãŸã‚ã«ã¯ã€ã‚¢ãƒ³ãƒ‰ãƒ­ã‚¤ãƒ‰ã®"
-"エクスãƒãƒ¼ãƒˆè¨­å®šã®ã€Œã‚«ã‚¹ã‚¿ãƒ ãƒ“ルドを使用ã™ã‚‹ã€ã®ã‚ªãƒ—ションãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã‚‹"
-"å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
+"エクスãƒãƒ¼ãƒˆè¨­å®šã®ã€ŒUse Custom Build (カスタムビルドを使用ã™ã‚‹)ã€ã®ã‚ªãƒ—ション"
+"ãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"
#: editor/editor_node.cpp
msgid ""
@@ -3980,6 +3978,7 @@ msgstr "インãƒãƒ¼ãƒˆæ¸ˆã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œä¸­ã«ã‚¨ãƒ©ãƒ¼:"
#: editor/import/resource_importer_scene.cpp
msgid "Did you return a Node-derived object in the `post_import()` method?"
msgstr ""
+"`post_import()` メソッド内ã§ã€Nodeを継承ã—ãŸã‚ªãƒ–ジェクトを返ã—ã¾ã—ãŸã‹ï¼Ÿ"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -4742,7 +4741,7 @@ msgstr "プレイモード:"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "AnimationTree"
-msgstr "AnimationTree(アニメーションツリー)"
+msgstr "アニメーションツリー"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "New name:"
@@ -7412,6 +7411,11 @@ msgid ""
"Closed eye: Gizmo is hidden.\n"
"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
msgstr ""
+"クリックã§å¯è¦–状態ã®ã‚ªãƒ³ / オフ。\n"
+"\n"
+"é–‹ã„ãŸç›®: ギズモã¯å¯è¦–。\n"
+"é–‰ã˜ãŸç›®: ギズモã¯éžå¯è¦–。\n"
+"åŠé–‹ãã®ç›®: ギズモã¯éžé€æ˜Žãªé¢ã‚’通ã—ã¦ã‚‚å¯è¦– (「Xç·šã€)。"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Nodes To Floor"
@@ -7571,7 +7575,7 @@ msgstr "Z-Farを表示:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
-msgstr "変æ›ã®å¤‰æ›´"
+msgstr "トランスフォームã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
@@ -8646,11 +8650,11 @@ msgstr "グレースケール関数。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts HSV vector to RGB equivalent."
-msgstr "HSVベクトルをRGBベクトルã«å¤‰æ›ã—ã¾ã™ã€‚"
+msgstr "HSVベクトルをRGBベクトルã«å¤‰æ›ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts RGB vector to HSV equivalent."
-msgstr "RGBベクトルをHSVベクトルã«å¤‰æ›ã—ã¾ã™ã€‚"
+msgstr "RGBベクトルをHSVベクトルã«å¤‰æ›ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Sepia function."
@@ -8984,7 +8988,7 @@ msgstr "パラメータã®ç¬¦å·ã‚’抽出ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the sine of the parameter."
-msgstr "パラメータã®ç¬¦å·ã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "パラメータã®ã‚µã‚¤ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the hyperbolic sine of the parameter."
@@ -9044,7 +9048,7 @@ msgstr "スカラーをスカラーã§ä¹—ç®—ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the remainder of the two scalars."
-msgstr "2ã¤ã®ã‚¹ã‚«ãƒ©ãƒ¼ã®æ®‹ã‚Šã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "2ã¤ã®ã‚¹ã‚«ãƒ©ãƒ¼ã®å‰°ä½™ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Subtracts scalar from scalar."
@@ -9272,7 +9276,7 @@ msgstr "ベクトルã§ãƒ™ã‚¯ãƒˆãƒ«ã‚’ä¹—ç®—ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the remainder of the two vectors."
-msgstr "2ã¤ã®ãƒ™ã‚¯ãƒˆãƒ«ã®æ®‹ã‚Šã‚’è¿”ã—ã¾ã™ã€‚"
+msgstr "2ã¤ã®ãƒ™ã‚¯ãƒˆãƒ«ã®å‰°ä½™ã‚’è¿”ã—ã¾ã™ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Subtracts vector from vector."
@@ -10531,6 +10535,11 @@ msgid "Make node as Root"
msgstr "ノードをルートã«ã™ã‚‹"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "\"%s\" ノードã¨ãã®å­ãƒŽãƒ¼ãƒ‰ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "%d ノードを削除ã—ã¾ã™ã‹ï¼Ÿ"
@@ -10664,6 +10673,9 @@ msgid ""
"This is probably because this editor was built with all language modules "
"disabled."
msgstr ""
+"スクリプトをアタッãƒã§ãã¾ã›ã‚“: 言語ãŒã²ã¨ã¤ã‚‚登録ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+"ãŠãらãã“ã®ã‚¨ãƒ‡ã‚£ã‚¿ã¯ã€ã™ã¹ã¦ã®è¨€èªžãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’無効化ã—ã¦ãƒ“ルドã•ã‚Œã¦ã„ã¾"
+"ã™ã€‚"
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
@@ -11977,26 +11989,36 @@ msgid ""
"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
"project setting (changed in Godot 3.2.2).\n"
msgstr ""
+"「android/modulesã€ã«å«ã¾ã‚Œã‚‹ã€ŒGodotPaymentV3ã€ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãƒ—ロジェクト設定ãŒ"
+"無効ã§ã™ (Godot 3.2.2 ã«ã¦å¤‰æ›´)。\n"
#: platform/android/export/export.cpp
msgid "\"Use Custom Build\" must be enabled to use the plugins."
msgstr ""
+"プラグインを利用ã™ã‚‹ã«ã¯ã€ŒUse Custom Build (カスタムビルドを使用ã™ã‚‹)ã€ãŒæœ‰åŠ¹"
+"ã«ãªã£ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
#: platform/android/export/export.cpp
msgid ""
"\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR"
"\"."
msgstr ""
+"\"Degrees Of Freedom\" 㯠\"Xr Mode\" ㌠\"Oculus Mobile VR\" ã®å ´åˆã«ã®ã¿æœ‰"
+"効ã«ãªã‚Šã¾ã™ã€‚"
#: platform/android/export/export.cpp
msgid ""
"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"."
msgstr ""
+"\"Hand Tracking\" 㯠\"Xr Mode\" ㌠\"Oculus Mobile VR\" ã®å ´åˆã«ã®ã¿æœ‰åŠ¹ã«ãª"
+"ã‚Šã¾ã™ã€‚"
#: platform/android/export/export.cpp
msgid ""
"\"Focus Awareness\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"."
msgstr ""
+"\"Focus Awareness\" 㯠\"Xr Mode\" ㌠\"Oculus Mobile VR\" ã®å ´åˆã«ã®ã¿æœ‰åŠ¹ã«"
+"ãªã‚Šã¾ã™ã€‚"
#: platform/android/export/export.cpp
msgid ""
@@ -12208,6 +12230,12 @@ msgstr ""
"関数ã«å¯¾ã—㦠CollisionShape2D ã®å½¢çŠ¶(シェイプ)を指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãã®"
"ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リソースを作æˆã—ã¦ãã ã•ã„!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12780,6 +12808,9 @@ msgstr "Varying変数ã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã
msgid "Constants cannot be modified."
msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚実行ã™ã‚‹å‰ã«ä¿å­˜ã—ã¦ãã ã•ã„。"
+
#~ msgid "Not in resource path."
#~ msgstr "リソースパスã«ã‚ã‚Šã¾ã›ã‚“。"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index af03b1af9e..1bfd23080b 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -2365,10 +2365,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10441,6 +10437,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "წáƒáƒ¨áƒšáƒ"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "წáƒáƒ¨áƒšáƒ"
@@ -12092,6 +12093,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 462c59d319..23a9e4dded 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
+"PO-Revision-Date: 2020-06-29 15:26+0000\n"
"Last-Translator: Ch. <ccwpc@hanmail.net>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -2329,10 +2329,6 @@ msgid "There is no defined scene to run."
msgstr "실행할 ì”¬ì´ ì„¤ì •ë˜ì§€ 않았습니다."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "현재 ì”¬ì´ ì•„ì§ ì €ìž¥ë˜ì§€ 않았습니다. 실행하기 ì „ì— ì €ìž¥í•´ì£¼ì„¸ìš”."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "하위 프로세스를 시작할 수 없습니다!"
@@ -4518,7 +4514,7 @@ msgstr "애니메ì´ì…˜ ë„구"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation"
-msgstr "애니메ì´ì…˜(Animation)"
+msgstr "애니메ì´ì…˜"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
@@ -7896,7 +7892,7 @@ msgstr "ì²´í¬ëœ ë¼ë””오 항목"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Named Sep."
-msgstr "ì´ë¦„있는 분기."
+msgstr "ì´ë¦„있는 구분ìž."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Submenu"
@@ -10420,7 +10416,7 @@ msgstr "씬 ì¸ìŠ¤í„´ìŠ¤í™”"
#: editor/scene_tree_dock.cpp
msgid "Replace with Branch Scene"
-msgstr "분기 씬으로 êµì²´"
+msgstr "가지 씬으로 êµì²´"
#: editor/scene_tree_dock.cpp
msgid "Instance Child Scene"
@@ -10465,6 +10461,11 @@ msgid "Make node as Root"
msgstr "노드를 루트로 만들기"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "노드 \"%s\"와(ê³¼) ìžì‹ì„ 삭제할까요?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "%dê°œì˜ ë…¸ë“œë¥¼ 삭제할까요?"
@@ -10625,7 +10626,7 @@ msgstr "다른 씬ì—ì„œ 병합하기"
#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
msgid "Save Branch as Scene"
-msgstr "분기를 씬으로 저장"
+msgstr "가지를 씬으로 저장"
#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
msgid "Copy Node Path"
@@ -12135,6 +12136,12 @@ msgstr ""
"CollisionShape2Dê°€ ìž‘ë™í•˜ë ¤ë©´ 반드시 Shapeê°€ 있어야 합니다. Shape 리소스를 만"
"들어주세요!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12692,6 +12699,9 @@ msgstr "Varyingì€ ê¼­ì§“ì  í•¨ìˆ˜ì—만 지정할 수 있습니다."
msgid "Constants cannot be modified."
msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "현재 ì”¬ì´ ì•„ì§ ì €ìž¥ë˜ì§€ 않았습니다. 실행하기 ì „ì— ì €ìž¥í•´ì£¼ì„¸ìš”."
+
#~ msgid "Not in resource path."
#~ msgstr "리소스 ê²½ë¡œì— ì—†ìŠµë‹ˆë‹¤."
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index fdf9ef15ae..4d3884d5f8 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -4,12 +4,13 @@
# This file is distributed under the same license as the Godot source code.
# Ignas Kiela <ignaskiela@super.lt>, 2017.
# Kornelijus <kornelijus.github@gmail.com>, 2017, 2018.
+# Ignotas Gražys <ignotas.gr@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-12-13 14:41+0100\n"
-"Last-Translator: Kornelijus <kornelijus.github@gmail.com>\n"
+"PO-Revision-Date: 2020-07-06 04:41+0000\n"
+"Last-Translator: Ignotas Gražys <ignotas.gr@gmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/lt/>\n"
"Language: lt\n"
@@ -18,34 +19,34 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
+msgstr "Netinkamo tipo argumentas į convert(), naudoti TYPE_* konstantas."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr ""
+msgstr "TikÄ—tasi 1 (simbolio) ilgio eilutÄ—s."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
+msgstr "Nepakanka baitų iššifruoti baitams, arba netinkamas formatas."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr ""
+msgstr "Netinkama įvestis išraiškoje %i (nepraleista)"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr ""
+msgstr "self nenaudojamas, nes atvejis yra null (nepraleistas)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
+msgstr "Netinkami operatoriaus operandai %s, %s ir %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
@@ -57,7 +58,7 @@ msgstr ""
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
-msgstr ""
+msgstr "Netinkami argumentai sukurti '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
@@ -65,31 +66,31 @@ msgstr ""
#: core/ustring.cpp
msgid "B"
-msgstr ""
+msgstr "B"
#: core/ustring.cpp
msgid "KiB"
-msgstr ""
+msgstr "KiB"
#: core/ustring.cpp
msgid "MiB"
-msgstr ""
+msgstr "MiB"
#: core/ustring.cpp
msgid "GiB"
-msgstr ""
+msgstr "GiB"
#: core/ustring.cpp
msgid "TiB"
-msgstr ""
+msgstr "TiB"
#: core/ustring.cpp
msgid "PiB"
-msgstr ""
+msgstr "PiB"
#: core/ustring.cpp
msgid "EiB"
-msgstr ""
+msgstr "EiB"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -97,40 +98,40 @@ msgstr "Nemokama"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
-msgstr ""
+msgstr "Subalansuotas"
#: editor/animation_bezier_editor.cpp
msgid "Mirror"
-msgstr ""
+msgstr "AtspindÄ—ti"
#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
+#, fuzzy
msgid "Time:"
msgstr "TrukmÄ—:"
#: editor/animation_bezier_editor.cpp
-#, fuzzy
msgid "Value:"
-msgstr "Naujas pavadinimas:"
+msgstr "Reikšmė:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
-msgstr ""
+msgstr "Ä®raÅ¡yti raktažodį Äia"
#: editor/animation_bezier_editor.cpp
msgid "Duplicate Selected Key(s)"
-msgstr ""
+msgstr "Kopijuoti pasirinktą (-us) raktažodį (-žius)"
#: editor/animation_bezier_editor.cpp
msgid "Delete Selected Key(s)"
-msgstr ""
+msgstr "Ištrinti pasirinktus raktažodžius"
#: editor/animation_bezier_editor.cpp
msgid "Add Bezier Point"
-msgstr ""
+msgstr "Pridėti Bezjė tašką"
#: editor/animation_bezier_editor.cpp
msgid "Move Bezier Points"
-msgstr ""
+msgstr "Judinti Bezjė taškus"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
@@ -188,22 +189,21 @@ msgid "Anim Multi Change Call"
msgstr "Animacija: Pakeisti IÅ¡kvietimÄ…"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Length"
-msgstr "Animacijos Nodas"
+msgstr "Pakeisti animacijos ilgį"
#: editor/animation_track_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr ""
+msgstr "Pakeisti animacijos ciklÄ…"
#: editor/animation_track_editor.cpp
msgid "Property Track"
-msgstr ""
+msgstr "YpatybÄ—s seklys"
#: editor/animation_track_editor.cpp
msgid "3D Transform Track"
-msgstr ""
+msgstr "3D transformacijų seklys"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
@@ -211,7 +211,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "BezjÄ— kreivÄ—s seklys"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
@@ -227,32 +227,29 @@ msgid "Animation length (frames)"
msgstr "Animacija"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation length (seconds)"
-msgstr "Animacijos Nodas"
+msgstr "Animacijos ilgis (sekundÄ—mis)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Track"
-msgstr "Animacija: Pridėti Takelį"
+msgstr "Pridėti įrašą"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation Looping"
-msgstr "Animacijos Nodas"
+msgstr "Animacijos ciklas"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
-msgstr ""
+msgstr "Funkcijos:"
#: editor/animation_track_editor.cpp
msgid "Audio Clips:"
-msgstr ""
+msgstr "Garso įrašai:"
#: editor/animation_track_editor.cpp
msgid "Anim Clips:"
-msgstr ""
+msgstr "Animacijų įrašai:"
#: editor/animation_track_editor.cpp
msgid "Change Track Path"
@@ -260,38 +257,35 @@ msgstr ""
#: editor/animation_track_editor.cpp
msgid "Toggle this track on/off."
-msgstr ""
+msgstr "Įrašo koregavimas: įjungtas/ išjungtas."
#: editor/animation_track_editor.cpp
msgid "Update Mode (How this property is set)"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Interpolation Mode"
-msgstr "Animacijos Nodas"
+msgstr "Interpoliacijos režimas"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Remove this track."
-msgstr "Animacija: Panaikinti Takelį"
+msgstr "Panaikinti šį įrašą."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s): "
-msgstr "TrukmÄ—:"
+msgstr "Laikas (-ai): "
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
-msgstr ""
+msgstr "Koreguoti įrašą į įjungtas"
#: editor/animation_track_editor.cpp
msgid "Continuous"
-msgstr ""
+msgstr "Tęstinis"
#: editor/animation_track_editor.cpp
msgid "Discrete"
@@ -299,24 +293,24 @@ msgstr "Diskretus"
#: editor/animation_track_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Gaidukas"
#: editor/animation_track_editor.cpp
msgid "Capture"
-msgstr ""
+msgstr "Fiksuoti"
#: editor/animation_track_editor.cpp
msgid "Nearest"
-msgstr ""
+msgstr "Artimiausias"
#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
msgid "Linear"
-msgstr ""
+msgstr "Linijinis"
#: editor/animation_track_editor.cpp
msgid "Cubic"
-msgstr ""
+msgstr "Kubinis"
#: editor/animation_track_editor.cpp
msgid "Clamp Loop Interp"
@@ -329,36 +323,31 @@ msgstr ""
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr ""
+msgstr "Įterpti raktažodį"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Duplicate Key(s)"
-msgstr "Duplikuoti"
+msgstr "Kopijuoti raktažodį (-ius)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Key(s)"
-msgstr "IÅ¡trinti EfektÄ…"
+msgstr "Ištrinti raktažodį (-ius)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Update Mode"
-msgstr "Animacijos Nodas"
+msgstr "Keisti animacijos atnaujinimo režimą"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Interpolation Mode"
-msgstr "Animacijos Nodas"
+msgstr "Keisti animacijos interpoliacijos režimą"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Loop Mode"
-msgstr "Animacijos Nodas"
+msgstr "Keiskite animacijos ciklo režimą"
#: editor/animation_track_editor.cpp
msgid "Remove Anim Track"
-msgstr "Animacija: Panaikinti Takelį"
+msgstr "Animacija: panaikinti įrašą"
#: editor/animation_track_editor.cpp
msgid "Create NEW track for %s and insert key?"
@@ -382,7 +371,7 @@ msgstr "Sukurti"
#: editor/animation_track_editor.cpp
msgid "Anim Insert"
-msgstr ""
+msgstr "Animacija: įterpti"
#: editor/animation_track_editor.cpp
msgid "AnimationPlayer can't animate itself, only other players."
@@ -401,13 +390,12 @@ msgid "Anim Insert Key"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Step"
-msgstr "Animacijos Nodas"
+msgstr "Keisti animacijos žingsnį"
#: editor/animation_track_editor.cpp
msgid "Rearrange Tracks"
-msgstr ""
+msgstr "Naujai sudėlioti įrašus"
#: editor/animation_track_editor.cpp
msgid "Transform tracks only apply to Spatial-based nodes."
@@ -420,31 +408,34 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
+"Garso įrašai gali nurodyti tik į šiuos tipinius mazgus:\n"
+"-GarsoSrautogrotuvas\n"
+"-GarsoSrautogrotuvas2D\n"
+"-GarsoSrautogrotuvas3D"
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
+msgstr "Animacijos įrašai gali nurodyti į AnimacijosGrotuvo mazgus."
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
-msgstr ""
+msgstr "Animacijos grotuvas negali animuoti savęs, tik kitus grotuvus."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
-msgstr ""
+msgstr "Nėra galimybės pridėti naują įrašą be root"
#: editor/animation_track_editor.cpp
msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
+msgstr "Netinkamas Bezjė traktas (nėra tinkamų antrinių savybių)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add Bezier Track"
-msgstr "Animacija: Pridėti Takelį"
+msgstr "PridÄ—ti BezjÄ— traktÄ…"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a key."
-msgstr ""
+msgstr "Trakto kelias yra negalimas, negalima pridėti raktažodžio."
#: editor/animation_track_editor.cpp
msgid "Track is not of type Spatial, can't insert key"
@@ -2330,10 +2321,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10427,6 +10414,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "IÅ¡trinti EfektÄ…"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "IÅ¡trinti EfektÄ…"
@@ -12077,6 +12069,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index 8417a6b650..2612b441c6 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -2290,10 +2290,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10229,6 +10225,11 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Izdzēst %d mezglus?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Izdzēst %d mezglus?"
@@ -11858,6 +11859,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
index ab68a71ee2..07a3bdae3c 100644
--- a/editor/translations/mi.po
+++ b/editor/translations/mi.po
@@ -2243,10 +2243,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10107,6 +10103,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11708,6 +11708,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index db5f5638f3..aa7844d7ab 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -2255,10 +2255,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10123,6 +10119,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11725,6 +11725,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index 1700bcb138..043d7e643e 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -2250,10 +2250,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10114,6 +10110,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11715,6 +11715,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index 160fa6e69f..ad70f291ca 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -2275,10 +2275,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10182,6 +10178,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Semua Pilihan"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Semua Pilihan"
@@ -11795,6 +11796,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 4e7ca2dce1..dbad564d9a 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -2461,10 +2461,6 @@ msgid "There is no defined scene to run."
msgstr "Det er ingen definert scene å kjøre."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Gjeldende scene ble aldri lagret, vennligst lagre før kjøring."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Kunne ikke starta subprosess!"
@@ -10978,6 +10974,11 @@ msgstr "Lagre Scene"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Kutt Noder"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Kutt Noder"
@@ -12703,6 +12704,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13173,6 +13180,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Konstanter kan ikke endres."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Gjeldende scene ble aldri lagret, vennligst lagre før kjøring."
+
#~ msgid "Not in resource path."
#~ msgstr "Ikke i resource path."
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 3d560d3d6d..7f111ad901 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -40,12 +40,15 @@
# Tirrin <lensenjoe@gmail.com>, 2019.
# Filip Van Raemdonck <arrawn@gmail.com>, 2019.
# Julian <jdhoogvorst@gmail.com>, 2019, 2020.
+# kitfka <philipthuijs@gmail.com>, 2020.
+# Mike van Leeuwen <mkvanleeuwen@gmail.com>, 2020.
+# marnicq van loon <marnicqvanloon@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-22 06:40+0000\n"
-"Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n"
+"PO-Revision-Date: 2020-07-04 08:58+0000\n"
+"Last-Translator: marnicq van loon <marnicqvanloon@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
@@ -58,17 +61,17 @@ msgstr ""
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Ongeldig argumenttype voor convert(), gebruik TYPE_* constanten."
+msgstr "Ongeldig type argument voor convert(), gebruik TYPE_* constanten."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr "Tekenreeks met lengte 1 verwacht (één karakter)."
+msgstr "Verwachtte een tekenreeks van lengte 1 (één karakter)."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr "Niet genoeg bytes om te decoderen, of ongeldig formaat."
+msgstr "Niet genoeg bytes voor het decoderen van bytes, of ongeldig formaat."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -525,10 +528,12 @@ msgid ""
msgstr ""
"Deze animatie behoort tot een geïmporteerde scène, dus veranderingen aan "
"geïmporteerde tracks zullen niet worden opgeslagen.\n"
+"\n"
"Om aangepaste tracks toe te kunnen voegen, moet in de importinstellingen van "
"de scène en de \"Animation→Storage\" naar \"Files\" zetten en "
"\"Animation→Keep Custom Tracks\" inschakelen. Importeer de scène dan "
"opnieuw.\n"
+"\n"
"Anders kan je een importvoorinstelling gebruiken die animaties importeert en "
"in verschillende bestanden opslaat."
@@ -775,7 +780,7 @@ msgstr "Uitzoomen"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr "Initialiseer Zoom"
+msgstr "Herstel Zoom"
#: editor/code_editor.cpp
msgid "Warnings"
@@ -790,9 +795,8 @@ msgid "Method in target node must be specified."
msgstr "Methode in doelknoop moet gespecificeerd worden."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Naam is geen geldige identifier:"
+msgstr "Methodenaam is geen geldige naam."
#: editor/connections_dialog.cpp
msgid ""
@@ -1494,7 +1498,7 @@ msgstr "Autoloads opnieuw ordenen"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr "Autoload kon niet toevoegd worden:"
+msgstr "Autoload kan niet toevoegd worden:"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -1865,11 +1869,11 @@ msgstr "Ga Omhoog"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr "Toggle Verborgen Bestanden"
+msgstr "Verborgen Bestanden Omschakelen"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr "Toggle Favoriet"
+msgstr "Favoriet Omschakelen"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
@@ -2365,10 +2369,6 @@ msgid "There is no defined scene to run."
msgstr "Er is geen startscène ingesteld."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Kon het subproces niet opstarten!"
@@ -10596,6 +10596,11 @@ msgid "Make node as Root"
msgstr "Knoop tot wortelknoop maken"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Verwijder knoop \"%s\" en zijn kinderen?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Verwijder %d knopen?"
@@ -12288,6 +12293,12 @@ msgid ""
"shape resource for it!"
msgstr "Een CollisionShape2D heeft een vorm nodig in de Shape-eigenschap!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12862,6 +12873,10 @@ msgstr "Varyings kunnen alleen worden toegewezenin vertex functies."
msgid "Constants cannot be modified."
msgstr "Constanten kunnen niet worden aangepast."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren."
+
#~ msgid "Not in resource path."
#~ msgstr "Niet in bronpad."
diff --git a/editor/translations/or.po b/editor/translations/or.po
index d6678c2819..5859fe6b0a 100644
--- a/editor/translations/or.po
+++ b/editor/translations/or.po
@@ -2249,10 +2249,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10113,6 +10109,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11714,6 +11714,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index ed53a98bed..2a09acd7c5 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -40,12 +40,13 @@
# Cezary Stasiak <cezary.p.stasiak@gmail.com>, 2019.
# Jan Ligudziński <jan.ligudzinski@gmail.com>, 2020.
# Adam Jagoda <kontakt@lukasz.xyz>, 2020.
+# Filip Glura <mcmr.slendy@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: Adam Jagoda <kontakt@lukasz.xyz>\n"
+"PO-Revision-Date: 2020-07-21 13:41+0000\n"
+"Last-Translator: Filip Glura <mcmr.slendy@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
@@ -69,8 +70,7 @@ msgstr "Oczekiwano ciągu znaków o długości 1 (znaku)."
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-"Niewystarczająca ilość bajtów dla bajtów dekodujących, albo zły format."
+msgstr "Niewystarczająca ilość bajtów dla bajtów dekodujących lub zły format."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -79,7 +79,7 @@ msgstr "Niewłaściwe dane %i (nie przekazane) w wyrażeniu"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
msgstr ""
-"self nie może być użyte ponieważ instancja jest równa zeru (nie przekazano)"
+"self nie może być użyte, ponieważ instancja jest nullem (nie przekazano)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -2355,12 +2355,6 @@ msgid "There is no defined scene to run."
msgstr "Nie ma zdefiniowanej sceny do uruchomienia."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Aktualna scena nie została zapisana, proszę zapisać scenę przed "
-"uruchomieniem."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Nie można było uruchomić podprocesu!"
@@ -10566,6 +10560,11 @@ msgid "Make node as Root"
msgstr "Zmień węzeł na Korzeń"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Usunąć węzeł \"%s\" oraz jego węzły potomne?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Usunąć %d węzłów?"
@@ -12262,6 +12261,12 @@ msgstr ""
"Kształt jest niezbędny do działania CollisionShape2D. Proszę utworzyć zasób "
"Shape!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12834,6 +12839,11 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchołków."
msgid "Constants cannot be modified."
msgstr "Stałe nie mogą być modyfikowane."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Aktualna scena nie została zapisana, proszę zapisać scenę przed "
+#~ "uruchomieniem."
+
#~ msgid "Not in resource path."
#~ msgstr "Nie znaleziono w ścieżce zasobów."
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index bfa3d0b52c..bf2d3ef0ad 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -2327,10 +2327,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10451,6 +10447,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Slit th' Node"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Slit th' Node"
@@ -12146,6 +12147,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 70878acad2..e2e19c99ce 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -94,12 +94,16 @@
# Kleyton Luiz de Sousa Vieira <kleytonluizdesouzavieira@gmail.com>, 2020.
# Felipe Jesus Macedo <fmacedo746@gmail.com>, 2020.
# José Paulo <jose.paulo1919@gmail.com>, 2020.
+# Necco <necco@outlook.com>, 2020.
+# Marcelo Silveira Hayden <mshayden.1998@gmail.com>, 2020.
+# GUILHERME SOUZA REIS DE MELO LOPES <guilhermesrml@unipam.edu.br>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: José Paulo <jose.paulo1919@gmail.com>\n"
+"PO-Revision-Date: 2020-07-26 15:41+0000\n"
+"Last-Translator: GUILHERME SOUZA REIS DE MELO LOPES <guilhermesrml@unipam."
+"edu.br>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -182,7 +186,7 @@ msgstr "EiB"
#: editor/animation_bezier_editor.cpp
msgid "Free"
-msgstr "Livre"
+msgstr "Gratuito"
#: editor/animation_bezier_editor.cpp
msgid "Balanced"
@@ -1557,7 +1561,7 @@ msgstr "Caminho:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
-msgstr "Nome do nó:"
+msgstr "Nome do Nó:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_profiler.cpp editor/project_manager.cpp
@@ -1705,7 +1709,7 @@ msgstr "Importar Dock"
#: editor/editor_feature_profile.cpp
msgid "Node Dock"
-msgstr "Dock de Nós"
+msgstr "Painel de Nós"
#: editor/editor_feature_profile.cpp
msgid "FileSystem and Import Docks"
@@ -2410,10 +2414,6 @@ msgid "There is no defined scene to run."
msgstr "Não há cena definida para rodar."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "A cena atual nunca foi salva. Por favor salve antes de rodá-la."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Não se pôde iniciar sub-processo!"
@@ -3954,7 +3954,7 @@ msgstr "Grupos"
#: editor/groups_editor.cpp
msgid "Nodes Not in Group"
-msgstr "Nodes fora do Grupo"
+msgstr "Nós fora do Grupo"
#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
#: editor/scene_tree_editor.cpp
@@ -4052,7 +4052,7 @@ msgstr "Erro ao rodar script pós-importação:"
#: editor/import/resource_importer_scene.cpp
msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr "Você retornou um objeto derivado de nó no método `post import ()`?"
+msgstr "Você retornou um objeto derivado de Nó no método `post_import()`?"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -4481,7 +4481,7 @@ msgid ""
"Animation player has no valid root node path, so unable to retrieve track "
"names."
msgstr ""
-"O reprodutor de animações não tem caminho de nó raiz válido, então não é "
+"O reprodutor de animações não tem um caminho de nó raiz válido, então não é "
"possível obter os nomes das trilhas."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4504,7 +4504,7 @@ msgstr "Nó Renomeado"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Add Node..."
-msgstr "Adicionar nó..."
+msgstr "Adicionar Nó..."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
@@ -4763,7 +4763,7 @@ msgstr "Viagem"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Start and end nodes are needed for a sub-transition."
-msgstr "Nós inicial e final são necessários para uma sub-transição."
+msgstr "Nó inicial e final são necessários para uma sub-transição."
#: editor/plugins/animation_state_machine_editor.cpp
msgid "No playback resource set at path: %s."
@@ -5290,15 +5290,14 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-"Predefinições para os valores de âncoras e margens de um nó de controle."
+msgstr "Predefinições para os valores de âncoras e margens de um nó Control."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"When active, moving Control nodes changes their anchors instead of their "
"margins."
msgstr ""
-"Quando ativo, os nós de Controle móveis mudam suas âncoras em vez de suas "
+"Quando ativo, os nós Control móveis mudam suas âncoras em vez de suas "
"margens."
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -7527,7 +7526,7 @@ msgstr "Usar Espaço Local"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Snap"
-msgstr "Use Snap"
+msgstr "Use Encaixar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -8997,11 +8996,11 @@ msgstr "Converte um valor em radianos para graus."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-e Exponential."
-msgstr "Exponencial de Base e."
+msgstr "Exponencial de base e."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-2 Exponential."
-msgstr "Exponencial na base 2."
+msgstr "Exponencial de base 2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest integer less than or equal to the parameter."
@@ -9021,7 +9020,7 @@ msgstr "Logaritmo natural."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-2 logarithm."
-msgstr "Logaritmo de base-2."
+msgstr "Logaritmo de base 2."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the greater of two values."
@@ -9395,8 +9394,8 @@ msgid ""
"Returns falloff based on the dot product of surface normal and view "
"direction of camera (pass associated inputs to it)."
msgstr ""
-"Retorna decaimento com base no produto escalar da normal da superfície com o "
-"a direção de visão da câmera (passe as entradas associadas a ele)."
+"Retorna decaimento com base no produto escalar da normal da superfície com a "
+"direção de visão da câmera (passe as entradas associadas a ele)."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -10628,6 +10627,11 @@ msgid "Make node as Root"
msgstr "Tornar Raiz o Nó"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Deletar nó \"%s\" e seus filhos?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Excluir %d nós?"
@@ -11915,11 +11919,11 @@ msgstr "Localizar Tipo de Nó"
#: modules/visual_script/visual_script_editor.cpp
msgid "Copy Nodes"
-msgstr "Copiar Nodes"
+msgstr "Copiar Nós"
#: modules/visual_script/visual_script_editor.cpp
msgid "Cut Nodes"
-msgstr "Recortar Nodes"
+msgstr "Recortar Nós"
#: modules/visual_script/visual_script_editor.cpp
msgid "Make Function"
@@ -11951,7 +11955,7 @@ msgstr "Nome da propriedade de índice inválido."
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
-msgstr "Objeto base não é um nó!"
+msgstr "Objeto base não é um Nó!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
@@ -12049,10 +12053,9 @@ msgstr ""
"na predefinição."
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Release keystore incorrectly configured in the export preset."
msgstr ""
-"Keystore de liberação icorretamente configurada na predefinição de "
+"Keystore de liberação incorretamente configurada na predefinição de "
"exportação."
#: platform/android/export/export.cpp
@@ -12097,21 +12100,18 @@ msgstr ""
"\"Use Custom Build\" precisa estar ativo para ser possível utilizar plugins."
#: platform/android/export/export.cpp
-#, fuzzy
msgid ""
"\"Degrees Of Freedom\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR"
"\"."
msgstr ""
-"\"Degrees Of Freedom\" só é válido quando o \"Oculus Mobile VR\" está no "
-"\"Mode Xr\"."
+"\"Degrees Of Freedom\" só é válido quando o \"Xr Mode\" é \"Oculus Mobile VR"
+"\"."
#: platform/android/export/export.cpp
-#, fuzzy
msgid ""
"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VR\"."
msgstr ""
-"\"Hand Tracking\" só é válido quando o\"Oculus Mobile VR\" está no \"Xr Mode"
-"\"."
+"\"Hand Tracking\" só é válido quando o \"Xr Mode\" é \"Oculus Mobile VR\"."
#: platform/android/export/export.cpp
msgid ""
@@ -12327,6 +12327,12 @@ msgstr ""
"Uma forma deve ser fornecida para que o nó CollisionShape2D funcione. Por "
"favor, crie um recurso de forma para ele!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12807,7 +12813,7 @@ msgid ""
"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
msgstr ""
-"A sugestão de dica não será exibida quando o Filtro do Mouse do controle "
+"A Sugestão de Dica não será exibida quando o Filtro do Mouse do controle "
"estiver definido como \"Ignorar\". Para resolver isto, defina o Filtro do "
"Mouse como \"Parar\" ou \"Passar\"."
@@ -12840,8 +12846,8 @@ msgid ""
"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
"minimum size manually."
msgstr ""
-"Um ScrollContainer foi feito para trabalhar com um componente filho único.\n"
-"Use um container como filho (VBox, HBox, etc.) ou um Control e defina o "
+"Um ScrollContainer foi feito para trabalhar com um único componente filho.\n"
+"Use um contêiner como filho (VBox, HBox, etc.) ou um Control e defina o "
"tamanho mínimo manualmente."
#: scene/gui/tree.cpp
@@ -12871,7 +12877,7 @@ msgstr ""
#: scene/main/viewport.cpp
msgid "Viewport size must be greater than 0 to render anything."
msgstr ""
-"O tamanho da viewport deve ser maior do que 0 para renderizar qualquer coisa."
+"O tamanho da Viewport deve ser maior do que 0 para renderizar qualquer coisa."
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for preview."
@@ -12901,6 +12907,9 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice."
msgid "Constants cannot be modified."
msgstr "Constantes não podem serem modificadas."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "A cena atual nunca foi salva. Por favor salve antes de rodá-la."
+
#~ msgid "Not in resource path."
#~ msgstr "Não está no caminho de recursos."
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 54accb0d6f..ba1f5b31d5 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-15 12:01+0000\n"
+"PO-Revision-Date: 2020-06-26 06:11+0000\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
@@ -29,7 +29,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.1\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -768,9 +768,8 @@ msgid "Method in target node must be specified."
msgstr "Método no nó alvo deve ser especificado."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "O nome não é um identificador válido:"
+msgstr "O nome do método tem de ser um identificador válido."
#: editor/connections_dialog.cpp
msgid ""
@@ -2339,10 +2338,6 @@ msgid "There is no defined scene to run."
msgstr "Não existe cena definida para execução."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "A cena atual nunca foi guardada, por favor guarde-a antes de executar."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Não consegui iniciar o subprocesso!"
@@ -10530,6 +10525,11 @@ msgid "Make node as Root"
msgstr "Tornar Nó Raiz"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Apagar nó \"%s\" e filhos?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Apagar %d nós?"
@@ -12227,6 +12227,12 @@ msgstr ""
"Uma forma tem de ser fornecida para CollisionShape2D funcionar. Crie um "
"recurso forma!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12794,6 +12800,10 @@ msgstr "Variações só podem ser atribuídas na função vértice."
msgid "Constants cannot be modified."
msgstr "Constantes não podem ser modificadas."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "A cena atual nunca foi guardada, por favor guarde-a antes de executar."
+
#~ msgid "Not in resource path."
#~ msgstr "Não está no caminho do recurso."
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index cbf6a8f0a0..ba5fbcf11a 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -8,15 +8,17 @@
# TigerxWood <TigerxWood@gmail.com>, 2018.
# Grigore Antoniuc <grisa181@gmail.com>, 2018.
# Boby Ilea <boby.ilea@gmail.com>, 2019.
-# EVOKZH <avip.ady@gmail.com>, 2019.
+# EVOKZH <avip.ady@gmail.com>, 2019, 2020.
# Marincia Catalin <catalinmarincia@gmail.com>, 2020.
# Marincia Cătălin <catalinmarincia@gmail.com>, 2020.
+# Teodor <teo.virghi@yahoo.ro>, 2020.
+# f0roots <f0rootss@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-01-23 15:05+0000\n"
-"Last-Translator: Marincia Cătălin <catalinmarincia@gmail.com>\n"
+"PO-Revision-Date: 2020-07-19 01:27+0000\n"
+"Last-Translator: f0roots <f0rootss@gmail.com>\n"
"Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ro/>\n"
"Language: ro\n"
@@ -25,7 +27,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
-"X-Generator: Weblate 3.11-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -56,7 +58,7 @@ msgstr "Operanzi invalizi la operatorii %s, %s și %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr "Indice invalid de tip %s pentru tipul de bază %s"
+msgstr "Index invalid de tip %s pentru tipul de bază %s"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
@@ -108,7 +110,7 @@ msgstr "Echilibrat"
#: editor/animation_bezier_editor.cpp
msgid "Mirror"
-msgstr "Reflectează"
+msgstr "Oglinda"
#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
msgid "Time:"
@@ -120,7 +122,7 @@ msgstr "Valoare:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
-msgstr "Inserează Cheie Aici"
+msgstr "Inserează Cheia Aici"
#: editor/animation_bezier_editor.cpp
msgid "Duplicate Selected Key(s)"
@@ -140,7 +142,7 @@ msgstr "Mută Punct Bezier"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Anim Clonare Chei"
+msgstr "Anim Chei duplicate"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Delete Keys"
@@ -160,7 +162,7 @@ msgstr "Anim Schimbare transformare"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Value"
-msgstr "Anim Schimbare valoare cadre cheie"
+msgstr "Anim Schimbare valoare Keyframe"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
@@ -267,6 +269,7 @@ msgstr "Mod Intercalare"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
msgstr ""
+"Mod de înfășurare a buclei (Intercalează sfârșitul cu începutul în buclă)"
#: editor/animation_track_editor.cpp
msgid "Remove this track."
@@ -311,20 +314,20 @@ msgstr "Cubic"
#: editor/animation_track_editor.cpp
msgid "Clamp Loop Interp"
-msgstr ""
+msgstr "Limitați intercalarea buclei"
#: editor/animation_track_editor.cpp
msgid "Wrap Loop Interp"
-msgstr ""
+msgstr "Înfășurați intercalarea buclei"
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr "Inserează Notă"
+msgstr "Inserare cheie"
#: editor/animation_track_editor.cpp
msgid "Duplicate Key(s)"
-msgstr "Clonare Chei(s)"
+msgstr "Clonare Chei"
#: editor/animation_track_editor.cpp
msgid "Delete Key(s)"
@@ -405,6 +408,10 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
+"Track-urile audio pot sa fie folosite numai în noduri de tipul:\n"
+"- AudioStreamPlayer\n"
+"-AudioStreamPlayer2D\n"
+"-AudioStreamPlayer3D"
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
@@ -413,6 +420,8 @@ msgstr "Pistele de animație pot direcționa numai nodurilor AnimațieJucător."
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
msgstr ""
+"Un player de animatie nu se poate anima insusi, doar alti playeri de "
+"animatie."
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
@@ -489,6 +498,15 @@ msgid ""
"Alternatively, use an import preset that imports animations to separate "
"files."
msgstr ""
+"Aceasta animație aparține unei scene importante, schimbările de importare "
+"ale Track-urilor nu vor fi salvate.\n"
+"\n"
+"Pentru a activa opțiunea de a adaugă Track-uri, navigați la setările de "
+"import ale scenei și setați\n"
+"\"Animație > Depozitare\" către \"Fișiere\", activați \"Animație > Păstrează "
+"Track-uri personalizate\", după re-importați.\n"
+"Alternativ, folosiți un import presetat care importa animațiile către "
+"fișiere separate."
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
@@ -652,11 +670,11 @@ msgstr "Anim Adăugați Pistă Audio"
#: editor/animation_track_editor_plugins.cpp
msgid "Change Audio Track Clip Start Offset"
-msgstr ""
+msgstr "Schimbați decalajul de pornire a clipului audio"
#: editor/animation_track_editor_plugins.cpp
msgid "Change Audio Track Clip End Offset"
-msgstr ""
+msgstr "Schimbați decalajul de oprire a clipului audio"
#: editor/array_property_edit.cpp
msgid "Resize Array"
@@ -679,9 +697,8 @@ msgid "Line Number:"
msgstr "Linia Numărul:"
#: editor/code_editor.cpp
-#, fuzzy
msgid "%d replaced."
-msgstr "Înlocuiți"
+msgstr "%d ÃŽnlocuit"
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
@@ -718,23 +735,23 @@ msgstr "Standard"
#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
-msgstr ""
+msgstr "Porniti sau opriti panoul de scripturi"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
-msgstr "Zoom-ați În"
+msgstr "Apropiere"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
-msgstr "Zoom-ați Afară"
+msgstr "Departare"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr "Resetați Zoom-area"
+msgstr "Resetați zoom-ul"
#: editor/code_editor.cpp
msgid "Warnings"
@@ -749,9 +766,8 @@ msgid "Method in target node must be specified."
msgstr "Metoda din nodul țintă trebuie specificată."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Metoda din nodul țintă trebuie specificată."
+msgstr "Numele metodei trebuie să fie un identificator valid."
#: editor/connections_dialog.cpp
msgid ""
@@ -818,6 +834,7 @@ msgstr "Amânat(ă)"
msgid ""
"Defers the signal, storing it in a queue and only firing it at idle time."
msgstr ""
+"Amână semnalul stocând-ul într-o coadă, dându-i drumul numai la timp inactiv."
#: editor/connections_dialog.cpp
msgid "Oneshot"
@@ -1289,7 +1306,7 @@ msgstr "Opțiuni Pistă Audio"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr "Duplicați"
+msgstr "Duplicat"
#: editor/editor_audio_buses.cpp
msgid "Reset Volume"
@@ -1419,7 +1436,7 @@ msgstr ""
#: editor/editor_autoload_settings.cpp
msgid "Keyword cannot be used as an autoload name."
-msgstr ""
+msgstr "Cuvântul cheie nu poate fi utilizat ca nume de încărcare automată."
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
@@ -1451,7 +1468,7 @@ msgstr "Rearanjați Autoload-urile"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr ""
+msgstr "Nu pot adaugă încărcare automata:"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -1514,7 +1531,7 @@ msgstr "Alegeţi un Director"
#: editor/filesystem_dock.cpp editor/project_manager.cpp
#: scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr "Creați Director"
+msgstr "Creare folder"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
@@ -1538,7 +1555,7 @@ msgstr "Fişierul se Stochează:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Nu a fost găsit niciun șablon de export pe calea așteptată:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1549,12 +1566,16 @@ msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
msgstr ""
+"Platforma țintă necesită textură compresată „ETC†pentru GLES2. Activați "
+"„Import Etc†în Setările proiectului."
#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC2' texture compression for GLES3. Enable "
"'Import Etc 2' in Project Settings."
msgstr ""
+"Platforma țintă necesită textură compresata „ETC2†pentru GLES3. Activați "
+"„Import Etc 2†în Setările proiectului."
#: editor/editor_export.cpp
msgid ""
@@ -1563,6 +1584,10 @@ msgid ""
"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
"Enabled'."
msgstr ""
+"Platforma țintă necesită o textură compresată „ETC†pentru revenirea "
+"driverului la GLES2.\n"
+"Activați „Import Etc†în Setările de proiect sau dezactivați „Driver "
+"Fallback Enabledâ€."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
@@ -1574,7 +1599,7 @@ msgstr "Fișierul șablon de depanare personalizat nu a fost găsit."
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr ""
+msgstr "Șablonul personalizat de lansare nu a fost găsit."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -1583,6 +1608,7 @@ msgstr "Fișierul șablon nu a fost găsit:"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
+"La exporturile pe 32 de biți PCK-ul încorporat nu poate fi mai mare de 4 GiB."
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -1590,7 +1616,7 @@ msgstr "Editor 3D"
#: editor/editor_feature_profile.cpp
msgid "Script Editor"
-msgstr "Editorul de Scripturi"
+msgstr "Editor de scripturi"
#: editor/editor_feature_profile.cpp
msgid "Asset Library"
@@ -1619,6 +1645,7 @@ msgstr "Ștergeți profilul '%s'?(ireversibil)"
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
msgstr ""
+"Profilul trebuie sa fie un nume valid de fisier si nu trebuie sa contina '.'"
#: editor/editor_feature_profile.cpp
msgid "Profile with this name already exists."
@@ -1626,7 +1653,7 @@ msgstr "Un profil cu acest nume există deja."
#: editor/editor_feature_profile.cpp
msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
+msgstr "(Editorul Dezactivat, Proprietatile Dezactivate)"
#: editor/editor_feature_profile.cpp
msgid "(Properties Disabled)"
@@ -1650,7 +1677,7 @@ msgstr "Proprietăți Activate:"
#: editor/editor_feature_profile.cpp
msgid "Enabled Features:"
-msgstr ""
+msgstr "Caracteristici active:"
#: editor/editor_feature_profile.cpp
msgid "Enabled Classes:"
@@ -1658,13 +1685,15 @@ msgstr "Clase Activate:"
#: editor/editor_feature_profile.cpp
msgid "File '%s' format is invalid, import aborted."
-msgstr ""
+msgstr "Formatul fișierului '%s' este invalid, importarea este anulată."
#: editor/editor_feature_profile.cpp
msgid ""
"Profile '%s' already exists. Remove it first before importing, import "
"aborted."
msgstr ""
+"Profilul '%s' este deja existent. Elimină-l inainte de a-l importa, "
+"importara este anulata."
#: editor/editor_feature_profile.cpp
msgid "Error saving profile to path: '%s'."
@@ -1672,7 +1701,7 @@ msgstr "Eroare la salvarea profilului la calea: '%s'."
#: editor/editor_feature_profile.cpp
msgid "Unset"
-msgstr ""
+msgstr "Nesetat(ă)"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
@@ -1686,7 +1715,7 @@ msgstr "Faceți Curent"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp
msgid "New"
-msgstr ""
+msgstr "Nou"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
#: editor/project_manager.cpp
@@ -1743,7 +1772,7 @@ msgstr "Selectaţi directorul curent"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
-msgstr "Copiaţi Calea"
+msgstr "Copiere cale"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Open in File Manager"
@@ -1761,7 +1790,7 @@ msgstr "Director Nou..."
#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Refresh"
-msgstr "Reîmprospătați"
+msgstr "Reîmprospătare"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
@@ -1820,19 +1849,19 @@ msgstr "Comutați Favorite"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr "Modul de Comutare"
+msgstr "Comutare mod"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
-msgstr "Calea Focală"
+msgstr "Cale focalizare"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr "Deplasați Favorit Sus"
+msgstr "Mutare favorită în sus"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr "Deplasați Favorit Jos"
+msgstr "Mutare favorită în jos"
#: editor/editor_file_dialog.cpp
msgid "Go to previous folder."
@@ -1893,6 +1922,8 @@ msgid ""
"There are multiple importers for different types pointing to file %s, import "
"aborted"
msgstr ""
+"Există importatori multiplii pentru tipuri diferite care trimit spre "
+"fișierul %s, importarea este anulată"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
@@ -1929,7 +1960,7 @@ msgstr "Proprietăți"
#: editor/editor_help.cpp
msgid "override:"
-msgstr ""
+msgstr "extindere:"
#: editor/editor_help.cpp
msgid "default:"
@@ -1953,7 +1984,7 @@ msgstr "Constante"
#: editor/editor_help.cpp
msgid "Property Descriptions"
-msgstr "Descriere Proprietate"
+msgstr "Descrieri Proprietate"
#: editor/editor_help.cpp
msgid "(value)"
@@ -2051,15 +2082,15 @@ msgstr "Proprietate Temă"
#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
msgid "Property:"
-msgstr ""
+msgstr "Proprietate:"
#: editor/editor_inspector.cpp
msgid "Set"
-msgstr ""
+msgstr "Stabilește"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
-msgstr ""
+msgstr "Seteaza Multiple:"
#: editor/editor_log.cpp
msgid "Output:"
@@ -2095,7 +2126,7 @@ msgstr "Start"
#: editor/editor_network_profiler.cpp
msgid "%s/s"
-msgstr ""
+msgstr "%s/s"
#: editor/editor_network_profiler.cpp
msgid "Down"
@@ -2103,7 +2134,7 @@ msgstr "Descarcă"
#: editor/editor_network_profiler.cpp
msgid "Up"
-msgstr ""
+msgstr "Sus"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
msgid "Node"
@@ -2127,16 +2158,16 @@ msgstr ""
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "New Window"
-msgstr ""
+msgstr "Fereastra Noua"
#: editor/editor_node.cpp
msgid "Imported resources can't be saved."
-msgstr ""
+msgstr "Resursele importate nu pot fi salvate."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: scene/gui/dialogs.cpp
msgid "OK"
-msgstr ""
+msgstr "OK"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
@@ -2147,6 +2178,8 @@ msgid ""
"This resource can't be saved because it does not belong to the edited scene. "
"Make it unique first."
msgstr ""
+"Resursa aceasta nu poate fi salvată deoarece nu aparține scenei editate. "
+"Resursa trebuie să fie unică."
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Save Resource As..."
@@ -2166,7 +2199,7 @@ msgstr "Eroare la salvare."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
+msgstr "'%s' nu poate fi deschis. Fișierul ar putea fi modificat sau șters."
#: editor/editor_node.cpp
msgid "Error while parsing '%s'."
@@ -2205,6 +2238,8 @@ msgid ""
"This scene can't be saved because there is a cyclic instancing inclusion.\n"
"Please resolve it and then attempt to save again."
msgstr ""
+"Această scenă nu poate fi salvată, deoarece există o includere ciclică.\n"
+"Rezolvați-l și apoi încercați să salvați din nou."
#: editor/editor_node.cpp
msgid ""
@@ -2262,7 +2297,6 @@ msgstr ""
"înţelege mai bine cum sa lucrați cu acestea."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"This resource belongs to a scene that was instanced or inherited.\n"
"Changes to it won't be kept when saving the current scene."
@@ -2279,41 +2313,34 @@ msgstr ""
"setările din panoul de import şi apoi reimportați."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"This scene was imported, so changes to it won't be kept.\n"
"Instancing it or inheriting will allow making changes to it.\n"
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"Această scenă a fost importată, astfel încât modificările la acesta nu vor "
-"fi păstrate.\n"
-"Instanțarea sau moştenirea vă permite efectuarea de modificări la acesta.\n"
-"Vă rugăm să citiţi documentaţia relevantă pentru importul scene pentru a "
-"înţelege mai bine acest mod de lucru."
+"Această scenă a fost importată, astfel încât modificările acesteia nu vor fi "
+"păstrate.\n"
+"Instanțarea sau moştenirea vă permite efectuarea de modificări pentru ea.\n"
+"Vă rugăm să citiți documentația relevantă pentru importarea scenei pentru a "
+"înțelege mai bine acest mod de lucru."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"This is a remote object, so changes to it won't be kept.\n"
"Please read the documentation relevant to debugging to better understand "
"this workflow."
msgstr ""
-"Acesta este un obiect îndepărtat, astfel încât modificările la acesta nu vor "
+"Acesta este un obiect îndepărtat, astfel încât modificările acesteia nu vor "
"fi păstrate.\n"
-"Vă rugăm să citiţi documentaţia relevantă pentru depanare pentru a înţelege "
-"mai bine acest mod de lucru."
+"Vă rugăm să citiți documentația relevantă depanării pentru a înțelege mai "
+"bine acest mod de lucru."
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
msgstr "Nu există nici o scenă definită pentru a execuție."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Scena curentă nu a fost salvată niciodată, salvați-o înainte de rulare."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Nu s-a putut porni subprocesul!"
@@ -2326,9 +2353,8 @@ msgid "Open Base Scene"
msgstr "Deschide o scenă de bază"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Quick Open..."
-msgstr "Deschide o scenă rapid..."
+msgstr "Deschidere rapidă..."
#: editor/editor_node.cpp
msgid "Quick Open Scene..."
@@ -2347,9 +2373,8 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvează schimbările la ’%s’ înainte de ieșire?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Saved %s modified resource(s)."
-msgstr "Încărcarea resursei a eșuat."
+msgstr "Resurse modificate %s salvate."
#: editor/editor_node.cpp
msgid "A root node is required to save the scene."
@@ -2400,9 +2425,8 @@ msgid "Can't reload a scene that was never saved."
msgstr "Nu se poate reîncărca o scenă care nu a fost salvată niciodată."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Saved Scene"
-msgstr "Salvează Scena"
+msgstr "Reîncărcare scenă salvată"
#: editor/editor_node.cpp
msgid ""
@@ -2458,9 +2482,8 @@ msgid "Close Scene"
msgstr "ÃŽnchide Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reopen Closed Scene"
-msgstr "ÃŽnchide Scena"
+msgstr "Redeschidere scenă închisă"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
@@ -2477,13 +2500,12 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Nu a putut fi încărcat scriptul add-on din calea: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
msgstr ""
-"Nu a putut fi încărcat scriptul add-on din calea: '%s' Scriptul nu este în "
-"modul unealtă."
+"Imposibil de încărcat scriptul addon din cale: '%s' Se pare că există o "
+"eroare în cod, verificați sintaxa."
#: editor/editor_node.cpp
msgid ""
@@ -2565,24 +2587,20 @@ msgstr "Implicit"
#: editor/editor_node.cpp editor/editor_properties.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Show in FileSystem"
-msgstr "Sistemul De Fișiere"
+msgstr "Afișare în FileSystem"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play This Scene"
-msgstr "Rulează Scena"
+msgstr "Redare scenă"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close Tab"
-msgstr "Aproape"
+msgstr "Închidere filă"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Undo Close Tab"
-msgstr "Aproape"
+msgstr "Anulare fila ÃŽnchidere"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Close Other Tabs"
@@ -2593,9 +2611,8 @@ msgid "Close Tabs to the Right"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Close All Tabs"
-msgstr "Aproape"
+msgstr "Inchide toate filele"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -2638,9 +2655,8 @@ msgid "Go to previously opened scene."
msgstr "Mergi la o scenă deschisă anterior."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Copy Text"
-msgstr "Copiaţi Calea"
+msgstr "Copiază textul"
#: editor/editor_node.cpp
msgid "Next tab"
@@ -2679,9 +2695,8 @@ msgid "Save Scene"
msgstr "Salvează Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
-msgstr "Salvează toate Scenele"
+msgstr "Salvați toate scenele"
#: editor/editor_node.cpp
msgid "Convert To..."
@@ -2715,14 +2730,12 @@ msgid "Project"
msgstr "Proiect"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project Settings..."
-msgstr "Setări ale Proiectului"
+msgstr "Setări proiect..."
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Version Control"
-msgstr "Versiune:"
+msgstr "Control versiune"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Set Up Version Control"
@@ -2733,27 +2746,24 @@ msgid "Shut Down Version Control"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Export..."
-msgstr "Exportare"
+msgstr "Export..."
#: editor/editor_node.cpp
msgid "Install Android Build Template..."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
-msgstr "Deschizi Managerul de Proiect?"
+msgstr "Deschideți folderul datelor proiectului"
#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
msgstr "Unelte"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Orphan Resource Explorer..."
-msgstr "Explorator de Resurse Orfane"
+msgstr "Explorator de resurse orfane ..."
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -2856,27 +2866,24 @@ msgid "Editor"
msgstr "Editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor Settings..."
-msgstr "Setări ale Editorului"
+msgstr "Setările editorului..."
#: editor/editor_node.cpp
msgid "Editor Layout"
msgstr "Schema Editorului"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Take Screenshot"
-msgstr "Salvează Scena"
+msgstr "Salvează captură de ecran"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr "Setări ale Editorului"
+msgstr "Capturile de ecran sunt stocate în folderul Date/Setări editor."
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr "Comută în Ecran Complet"
+msgstr "Comutare ecran complet"
#: editor/editor_node.cpp
#, fuzzy
@@ -2898,14 +2905,12 @@ msgid "Open Editor Settings Folder"
msgstr "Setări ale Editorului"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Manage Editor Features..."
-msgstr "Administrează Șabloanele de Export"
+msgstr "Gestionare caracteristici editor..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Manage Export Templates..."
-msgstr "Administrează Șabloanele de Export"
+msgstr "Gestionare șabloane export..."
#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp
msgid "Help"
@@ -2960,7 +2965,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr "Întrerupere Scenă"
+msgstr "Pauză scenă"
#: editor/editor_node.cpp
msgid "Stop the scene."
@@ -2992,9 +2997,8 @@ msgid "Save & Restart"
msgstr "Salvează și Restartează"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Spins when the editor window redraws."
-msgstr "Se rotește când ferestra editorului se recolorează!"
+msgstr "Se rotește când fereastra editorului se redeschide."
#: editor/editor_node.cpp
#, fuzzy
@@ -3135,9 +3139,8 @@ msgid "Thumbnail..."
msgstr "Miniatură..."
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Main Script:"
-msgstr "Execută Scriptul"
+msgstr "Script principal:"
#: editor/editor_plugin_settings.cpp
#, fuzzy
@@ -3166,9 +3169,8 @@ msgid "Status:"
msgstr "Stare:"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Edit:"
-msgstr "Modificare"
+msgstr "Editare:"
#: editor/editor_profiler.cpp
msgid "Measure:"
@@ -3211,9 +3213,8 @@ msgid "Calls"
msgstr "Apeluri"
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Edit Text:"
-msgstr "Membri"
+msgstr "Editare text:"
#: editor/editor_properties.cpp editor/script_create_dialog.cpp
msgid "On"
@@ -3236,9 +3237,8 @@ msgid "Assign..."
msgstr ""
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
-msgstr "Nume nevalid."
+msgstr "RID nevalid"
#: editor/editor_properties.cpp
msgid ""
@@ -3506,9 +3506,8 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error requesting URL:"
-msgstr "Eroare la solicitarea URL: "
+msgstr "Eroare la solicitarea URL:"
#: editor/export_template_manager.cpp
msgid "Connecting to Mirror..."
@@ -3596,14 +3595,12 @@ msgid "Download Templates"
msgstr "Descarcă Șabloane"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selectează oglinda din listă: "
+msgstr "Selectează oglinda din listă: (Shift+Click: Deschide in Browser)"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Favorites"
-msgstr "Favorite:"
+msgstr "Favorite"
#: editor/filesystem_dock.cpp
msgid "Status: Import of file failed. Please fix file and reimport manually."
@@ -3636,9 +3633,8 @@ msgid "No name provided."
msgstr "Niciun nume furnizat."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Provided name contains invalid characters."
-msgstr "Numele furnizat conține caractere nevalide"
+msgstr "Numele furnizat conține caractere nevalide."
#: editor/filesystem_dock.cpp
msgid "A file or folder with this name already exists."
@@ -3665,9 +3661,8 @@ msgid "Duplicating folder:"
msgstr "Duplicând directorul:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "New Inherited Scene"
-msgstr "Scenă Derivată Nouă..."
+msgstr "Nouă scenă moștenită"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3684,9 +3679,8 @@ msgid "Instance"
msgstr "Instanță"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Add to Favorites"
-msgstr "Favorite:"
+msgstr "Adauga la Favorite"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3714,9 +3708,8 @@ msgid "Move To..."
msgstr "Mută În..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "New Scene..."
-msgstr "Scenă Nouă"
+msgstr "Scenă nouă..."
#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -3807,19 +3800,16 @@ msgid "Find in Files"
msgstr "%d mai multe fișiere"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find:"
-msgstr "Găsiți"
+msgstr "Găsiți:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Folder:"
-msgstr "Creați Director"
+msgstr "Folderul:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Filters:"
-msgstr "Filtre..."
+msgstr "Filtre:"
#: editor/find_in_files.cpp
msgid ""
@@ -3841,14 +3831,12 @@ msgid "Cancel"
msgstr ""
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find: "
-msgstr "Găsiți"
+msgstr "Găsiți: "
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace: "
-msgstr "Înlocuiți"
+msgstr "Înlocuiți: "
#: editor/find_in_files.cpp
#, fuzzy
@@ -3874,9 +3862,8 @@ msgid "Remove from Group"
msgstr "Elimină din Grup"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Group name already exists."
-msgstr "EROARE: Numele animației există deja!"
+msgstr "Numele grupului există deja."
#: editor/groups_editor.cpp
#, fuzzy
@@ -4008,9 +3995,8 @@ msgid "Saving..."
msgstr "Se Salvează..."
#: editor/import_dock.cpp
-#, fuzzy
msgid "%d Files"
-msgstr " Fișiere"
+msgstr "%d Fișiere"
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
@@ -4025,9 +4011,8 @@ msgid "Import As:"
msgstr "Importă Ca:"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Preset"
-msgstr "Presetare..."
+msgstr "Presetare"
#: editor/import_dock.cpp
msgid "Reimport"
@@ -4071,9 +4056,8 @@ msgid "Copy Params"
msgstr "Copie Parametrii"
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Edit Resource Clipboard"
-msgstr "Clip-board de resurse gol !"
+msgstr "Editare clipboard resursă"
#: editor/inspector_dock.cpp
msgid "Copy Resource"
@@ -4120,9 +4104,8 @@ msgid "Object properties."
msgstr "Proprietățile obiectului."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Filter properties"
-msgstr "Proprietățile obiectului."
+msgstr "Proprietăți filtrare"
#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
@@ -4148,9 +4131,8 @@ msgid "Create a Plugin"
msgstr "Crează Poligon"
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Plugin Name:"
-msgstr "Plugin-uri"
+msgstr "Nume plugin:"
#: editor/plugin_config_dialog.cpp
msgid "Subfolder:"
@@ -4177,21 +4159,18 @@ msgstr "Crează Poligon"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Create points."
-msgstr "Șterge puncte"
+msgstr "Creați puncte."
#: editor/plugins/abstract_polygon_2d_editor.cpp
-#, fuzzy
msgid ""
"Edit points.\n"
"LMB: Move Point\n"
"RMB: Erase Point"
msgstr ""
-"Editează poligon existent:\n"
-"LMB: Mută Punct.\n"
-"Ctrl+LMB: Despică Segment.\n"
-"RMB: Șterge Punct."
+"Editează puncte\n"
+"LMB: Mută Punct\n"
+"RMB: Șterge Punct"
#: editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
@@ -4230,9 +4209,8 @@ msgstr "Adaugă Animația"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Load..."
-msgstr "Încărcați"
+msgstr "Încărca..."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -4323,9 +4301,8 @@ msgid "Open Animation Node"
msgstr "Nod de Animație"
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Triangle already exists."
-msgstr "EROARE: Numele animației există deja!"
+msgstr "Triunghiul există deja."
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
@@ -4438,9 +4415,8 @@ msgid "Delete Node(s)"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Filter On/Off"
-msgstr "Comutează modul fără distrageri."
+msgstr "Comutare filtru activat/dezactivat"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
@@ -4477,9 +4453,8 @@ msgstr "Funcții"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Node Renamed"
-msgstr "Nume Nod:"
+msgstr "Nod redenumit"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -4488,9 +4463,8 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filtered Tracks:"
-msgstr "Editează Filtrele"
+msgstr "Editare piste filtrate:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
@@ -4614,9 +4588,8 @@ msgid "Animation"
msgstr "Animație"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Edit Transitions..."
-msgstr "Tranziții"
+msgstr "Editare tranziții..."
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -4718,9 +4691,8 @@ msgid "Move Node"
msgstr "Mod Mutare"
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition exists!"
-msgstr "Tranziție"
+msgstr "Tranziţia există!"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -4783,14 +4755,12 @@ msgid ""
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Create new nodes."
-msgstr "Creați %s Nou"
+msgstr "Creați noduri noi."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Connect nodes."
-msgstr "Conectați la Nod:"
+msgstr "Conectați nodurile."
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -4806,14 +4776,12 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition: "
-msgstr "Tranziție"
+msgstr "Tranziție: "
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Play Mode:"
-msgstr "Mod ÃŽn Jur"
+msgstr "Mod redare:"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -5008,14 +4976,12 @@ msgid "Redirect loop."
msgstr "Buclă de Redirecționare."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, timeout"
-msgstr "Cerere eșuată, cod returnat:"
+msgstr "Solicitare nereușită, expirare"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Timeout."
-msgstr "Timp"
+msgstr "Pauză."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
@@ -5038,14 +5004,12 @@ msgid "Asset Download Error:"
msgstr "Eroare la Descărcarea Asset-ului:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading (%s / %s)..."
-msgstr "Se Descarcă"
+msgstr "Se descarcă (%s / %s)..."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Downloading..."
-msgstr "Se Descarcă"
+msgstr "Descărcare..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Resolving..."
@@ -5060,9 +5024,8 @@ msgid "Idle"
msgstr "Inactiv"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Install..."
-msgstr "Instalați"
+msgstr "Instalare..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Retry"
@@ -5130,14 +5093,12 @@ msgid "No results for \"%s\"."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Import..."
-msgstr "Importă"
+msgstr "Import..."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Plugins..."
-msgstr "Plugin-uri"
+msgstr "Plugin-uri..."
#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
msgid "Sort:"
@@ -5153,9 +5114,8 @@ msgid "Site:"
msgstr "Site:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Support"
-msgstr "Suport..."
+msgstr "Suport"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Official"
@@ -5166,9 +5126,8 @@ msgid "Testing"
msgstr "Se Testează"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Loading..."
-msgstr "Încărcați"
+msgstr "Încărcare..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
@@ -5397,9 +5356,8 @@ msgid "Full Rect"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Keep Ratio"
-msgstr "Proporție Scalare:"
+msgstr "Păstrare raport"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Anchors only"
@@ -5486,14 +5444,13 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Reset"
-msgstr "Zoom-ați Afară"
+msgstr "Resetare zoom"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Select Mode"
-msgstr "Mod Selectare"
+msgstr "Selectare mod"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
@@ -5547,14 +5504,12 @@ msgid "Pan Mode"
msgstr "Mod ÃŽn Jur"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Ruler Mode"
-msgstr "Modul de Execuție:"
+msgstr "Mod riglă"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle smart snapping."
-msgstr "Comutare snapping"
+msgstr "Comutați fixarea inteligentă."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -5562,9 +5517,8 @@ msgid "Use Smart Snap"
msgstr "Utilizează Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle grid snapping."
-msgstr "Comutare snapping"
+msgstr "Comutare grilă fixare."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -5683,7 +5637,7 @@ msgstr "Arată Grila"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Helpers"
-msgstr "Arată Asistenții"
+msgstr "Afișare ajutoare"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Rulers"
@@ -5691,7 +5645,7 @@ msgstr "Arată Riglele"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Guides"
-msgstr "Arată Ghizii"
+msgstr "Afișare ghiduri"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Origin"
@@ -5730,9 +5684,8 @@ msgid "Scale mask for inserting keys."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Insert keys (based on mask)."
-msgstr "Inserează Notă (Melodii existente)"
+msgstr "Introduce cheile (bazat pe masca)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5754,7 +5707,7 @@ msgstr "Lungime Animație (în secunde)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr "Inserează Notă (Melodii existente)"
+msgstr "Inserează Cheie (Track-uri existente)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
@@ -5838,9 +5791,8 @@ msgstr "Încărcare Mască de Emisie"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Restart"
-msgstr "Restartare (s):"
+msgstr "Restart"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -5875,9 +5827,8 @@ msgstr ""
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Directed Border Pixels"
-msgstr "Directoare și Fişiere:"
+msgstr "Pixeli borduri direcționați"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -6009,9 +5960,8 @@ msgid "Mesh is empty!"
msgstr "Mesh-ul este gol!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create a Trimesh collision shape."
-msgstr "Creează un Frate de Coliziune Trimesh"
+msgstr "Nu a putut crea o formă de coliziune Trimesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
@@ -6044,9 +5994,8 @@ msgid "Can't create multiple convex collision shapes for the scene root."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create any collision shapes."
-msgstr "Nu s-a putut creea un contur!"
+msgstr "Nu a putut crea nici o formă de coliziune."
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
@@ -6181,16 +6130,16 @@ msgid "Remove item %d?"
msgstr "Elimini obiectul %d?"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid ""
"Update from existing scene?:\n"
"%s"
-msgstr "Actualizează din Scenă"
+msgstr ""
+"Actualizează din Scenă existenta?:\n"
+"%s"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Mesh Library"
-msgstr "Librărie_de_Structuri..."
+msgstr "Bibliotecă meshuri"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -6598,9 +6547,8 @@ msgid "Paint Bone Weights"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Open Polygon 2D UV editor."
-msgstr "Editor UV de poligoane 2D"
+msgstr "Deschideți editorul UV Poligon 2D."
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
@@ -6710,9 +6658,8 @@ msgid "Show Grid"
msgstr "Arată Grila"
#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Configure Grid:"
-msgstr "Configurare Snap"
+msgstr "Configurare grilă:"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
@@ -6794,9 +6741,8 @@ msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
#: editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Path to AnimationPlayer is invalid"
-msgstr "Arborele Animației este nevalid."
+msgstr "Calea către AnimationPlayer nu este validă"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
@@ -6807,14 +6753,12 @@ msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error writing TextFile:"
-msgstr "Eroare la salvarea TileSet!"
+msgstr "Eroare la scrierea TextFile:"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Could not load file at:"
-msgstr "Directorul nu a putut fi creat."
+msgstr "Nu s-a putut încărca fișierul la:"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -6827,19 +6771,16 @@ msgid "Error while saving theme."
msgstr "Eroare la salvare."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error Saving"
-msgstr "Eroare mutând:"
+msgstr "Eroare La Salvarea"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error importing theme."
-msgstr "Eroare mutând:"
+msgstr "Eroare la importarea temei."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Error Importing"
-msgstr "Eroare mutând:"
+msgstr "Eroare la importare"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -6904,18 +6845,16 @@ msgid "Find Previous"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Filter scripts"
-msgstr "Proprietățile obiectului."
+msgstr "Filtrare scripturi"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle alphabetical sorting of the method list."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Filter methods"
-msgstr "Proprietățile obiectului."
+msgstr "Metode de filtrare"
#: editor/plugins/script_editor_plugin.cpp
msgid "Sort"
@@ -6946,9 +6885,8 @@ msgid "File"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open..."
-msgstr "Deschide"
+msgstr "Deschide..."
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -7033,9 +6971,8 @@ msgid "Debug with External Editor"
msgstr "Deschide Editorul următor"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation."
-msgstr "Deschide Recente"
+msgstr "Deschideți documentația online Godot."
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
@@ -7098,19 +7035,19 @@ msgid "Target"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid ""
"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr "Deconectați '%s' de la '%s'"
+msgstr ""
+"Lipsește metoda conectată '%s' pentru semnalul '%s' de la nodul '%s' la "
+"nodul '%s'."
#: editor/plugins/script_text_editor.cpp
msgid "[Ignore]"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Line"
-msgstr "Linie:"
+msgstr "Linie"
#: editor/plugins/script_text_editor.cpp
#, fuzzy
@@ -7266,14 +7203,12 @@ msgid "Remove All Bookmarks"
msgstr "Eliminați Autoload"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Function..."
-msgstr "Faceți Funcția"
+msgstr "Salt la funcție..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Go to Line..."
-msgstr "Duceți-vă la Linie"
+msgstr "Salt la linie..."
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -7727,9 +7662,8 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Settings..."
-msgstr "Setări Snap"
+msgstr "Setări ..."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -7848,9 +7782,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Convert to Mesh2D"
-msgstr "Convertește În..."
+msgstr "Conversie în Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -7901,9 +7834,8 @@ msgid "Update Preview"
msgstr "Previzualizare"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Settings:"
-msgstr "Setări Snap"
+msgstr "Setări:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#, fuzzy
@@ -7919,9 +7851,8 @@ msgid "Add Frame"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Unable to load images"
-msgstr "Încărcarea resursei a eșuat."
+msgstr "Imposibil de încărcat imaginile"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
@@ -7953,9 +7884,8 @@ msgid "Move Frame"
msgstr "Mod Mutare"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Animations:"
-msgstr "Animație"
+msgstr "Animaţii:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#, fuzzy
@@ -8238,9 +8168,8 @@ msgid "Erase Selection"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Fix Invalid Tiles"
-msgstr "Nume nevalid."
+msgstr "Remediere Tiles nevalide"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -8287,9 +8216,8 @@ msgid "Enable Priority"
msgstr "Editează Filtrele"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Filter tiles"
-msgstr "Filtrează fișierele..."
+msgstr "Filtrare Tiles"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Give a TileSet resource to this TileMap to use its tiles."
@@ -8337,9 +8265,8 @@ msgid "Add Texture(s) to TileSet."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected Texture from TileSet."
-msgstr "Elimină Obiectul Selectat"
+msgstr "Eliminați textura selectată din TileSet."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -8380,9 +8307,8 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Region"
-msgstr "Modul de Execuție:"
+msgstr "Regiunea"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -8415,9 +8341,8 @@ msgid "Z Index"
msgstr "Mod ÃŽn Jur"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Region Mode"
-msgstr "Modul de Execuție:"
+msgstr "Mod regiune"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -8459,9 +8384,8 @@ msgid "Copy bitmask."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Paste bitmask."
-msgstr "Lipește Animație"
+msgstr "Lipiți bitmask."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -8469,9 +8393,8 @@ msgid "Erase bitmask."
msgstr "RMB: Șterge Punctul."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Create a new rectangle."
-msgstr "Creați %s Nou"
+msgstr "Creați un dreptunghi nou."
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -8496,9 +8419,10 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr "Elimină Obiectul Selectat"
+msgstr ""
+"Eliminați textura selectată? Acest lucru va elimina toate tiles care îl "
+"utilizează."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "You haven't selected a texture to remove."
@@ -8528,9 +8452,8 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Delete selected Rect."
-msgstr "Ştergeți fişierele selectate?"
+msgstr "Ștergeți Rectul selectat."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -8539,9 +8462,8 @@ msgid ""
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Delete polygon."
-msgstr "Șterge puncte"
+msgstr "Ștergeți poligonul."
#: editor/plugins/tile_set_editor_plugin.cpp
msgid ""
@@ -8589,9 +8511,8 @@ msgid "Edit Tile Bitmask"
msgstr "Editează Filtrele"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Edit Collision Polygon"
-msgstr "Editează poligonul existent:"
+msgstr "Editează coliziunea poligonului"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -8677,9 +8598,8 @@ msgid "This property can't be changed."
msgstr "Această operație nu se poate face fără o scenă."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "TileSet"
-msgstr "Set_de_Plăci..."
+msgstr "Set de dale"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "No VCS addons are available."
@@ -8794,9 +8714,8 @@ msgid "Add Output"
msgstr "Adaugă Intrare(Input)"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Scalar"
-msgstr "Dimensiune:"
+msgstr "Scalar"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vector"
@@ -8830,9 +8749,8 @@ msgid "Change output port type"
msgstr "Schimbă tipul implicit"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Change input port name"
-msgstr "Schimbă Numele Animației:"
+msgstr "Modificarea numelui portului de intrare"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Change output port name"
@@ -8849,9 +8767,8 @@ msgid "Remove output port"
msgstr "Elimină punct"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Set expression"
-msgstr "Versiune Curentă:"
+msgstr "Setare expresie"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Resize VisualShader node"
@@ -8902,9 +8819,8 @@ msgid "Light"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Show resulted shader code."
-msgstr "Creează Nod"
+msgstr "Afișează codul shader rezultat."
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
@@ -8912,18 +8828,16 @@ msgid "Create Shader Node"
msgstr "Creează Nod"
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Color function."
-msgstr "Faceți Funcția"
+msgstr "Funcția de culoare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Color operator."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Grayscale function."
-msgstr "Faceți Funcția"
+msgstr "Funcția tonuri de gri."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts HSV vector to RGB equivalent."
@@ -8934,9 +8848,8 @@ msgid "Converts RGB vector to HSV equivalent."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Sepia function."
-msgstr "Faceți Funcția"
+msgstr "Funcția sepia."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Burn operator."
@@ -8947,18 +8860,16 @@ msgid "Darken operator."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Difference operator."
-msgstr "Doar Diferențe"
+msgstr "Operator de diferență."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Dodge operator."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "HardLight operator."
-msgstr "Dimensiune (raport):"
+msgstr "Operator HardLight."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Lighten operator."
@@ -8977,14 +8888,12 @@ msgid "SoftLight operator."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Color constant."
-msgstr "Permanent"
+msgstr "Constantă de culoare."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Color uniform."
-msgstr "Anim Schimbare transformare"
+msgstr "Culoare uniformă."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the boolean result of the %s comparison between two parameters."
@@ -9065,9 +8974,8 @@ msgid "'%s' input parameter for all shader modes."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Input parameter."
-msgstr "Snap către părinte"
+msgstr "Parametru de intrare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "'%s' input parameter for vertex and fragment shader modes."
@@ -9094,14 +9002,12 @@ msgid "'%s' input parameter for vertex and fragment shader mode."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Scalar function."
-msgstr "Scalați Selecția"
+msgstr "Funcție scalară."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Scalar operator."
-msgstr "Dimensiune (raport):"
+msgstr "Operator scalar."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "E constant (2.718282). Represents the base of the natural logarithm."
@@ -9330,9 +9236,8 @@ msgid "Scalar constant."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Scalar uniform."
-msgstr "Anim Schimbare transformare"
+msgstr "Scalare uniformă."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Perform the cubic texture lookup."
@@ -9355,9 +9260,8 @@ msgid "2D texture uniform lookup with triplanar."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Transform function."
-msgstr "Crează Poligon"
+msgstr "Funcție de transformare."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -9399,19 +9303,16 @@ msgid "Multiplies vector by transform."
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Transform constant."
-msgstr "Crează Poligon"
+msgstr "Transformare constantă."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Transform uniform."
-msgstr "Crează Poligon"
+msgstr "Transformare uniformă."
#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
msgid "Vector function."
-msgstr "Faceți Funcția"
+msgstr "Funcție vectorială."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Vector operator."
@@ -9622,9 +9523,8 @@ msgid "Runnable"
msgstr ""
#: editor/project_export.cpp
-#, fuzzy
msgid "Add initial export..."
-msgstr "Adaugă Intrare(Input)"
+msgstr "Adăugare export inițial..."
#: editor/project_export.cpp
msgid "Add previous patches..."
@@ -9734,7 +9634,7 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
msgid "Pack File"
-msgstr " Fișiere"
+msgstr "Pachet Fișier"
#: editor/project_export.cpp
msgid "Features"
@@ -9754,9 +9654,8 @@ msgid "Script"
msgstr "Execută Scriptul"
#: editor/project_export.cpp
-#, fuzzy
msgid "Script Export Mode:"
-msgstr "Exportă Proiectul"
+msgstr "Mod export script:"
#: editor/project_export.cpp
msgid "Text"
@@ -9787,9 +9686,8 @@ msgid "Export Project"
msgstr "Exportă Proiectul"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export mode?"
-msgstr "Exportă Proiectul"
+msgstr "Exportă Proiectul?"
#: editor/project_export.cpp
#, fuzzy
@@ -9797,9 +9695,8 @@ msgid "Export All"
msgstr "Exportare"
#: editor/project_export.cpp editor/project_manager.cpp
-#, fuzzy
msgid "ZIP File"
-msgstr " Fișiere"
+msgstr "Fișiere ZIP"
#: editor/project_export.cpp
msgid "Godot Game Pack"
@@ -10147,18 +10044,16 @@ msgid ""
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "An action with the name '%s' already exists."
-msgstr "EROARE: Numele animației există deja!"
+msgstr "Există deja o acțiune cu numele '%s'."
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Change Action deadzone"
-msgstr "Schimbă Numele Animației:"
+msgstr "Modificare acțiune deadzone"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
@@ -10515,9 +10410,8 @@ msgid "Suffix"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Use Regular Expressions"
-msgstr "Versiune Curentă:"
+msgstr "Folosiți expresii regulate"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -10529,23 +10423,20 @@ msgid "Substitute"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node name"
-msgstr "Nume Nod:"
+msgstr "Nume nod"
#: editor/rename_dialog.cpp
msgid "Node's parent name, if available"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Node type"
-msgstr "Nume Nod:"
+msgstr "Tip nod"
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Current scene name"
-msgstr "Scena curentă nu este salvată. Deschizi oricum?"
+msgstr "Numele scenei curente"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -10571,9 +10462,8 @@ msgid "Initial value for the counter"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "Step"
-msgstr "Pas (s):"
+msgstr "Pas"
#: editor/rename_dialog.cpp
msgid "Amount by which counter is incremented for each node"
@@ -10627,9 +10517,8 @@ msgid "Regular Expression Error"
msgstr ""
#: editor/rename_dialog.cpp
-#, fuzzy
msgid "At character %s"
-msgstr "Caractere valide:"
+msgstr "La caracterul %s"
#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
msgid "Reparent Node"
@@ -10733,8 +10622,12 @@ msgstr "Salvează Scena"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Ștergeți %d noduri?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
-msgstr "Creează Nod"
+msgstr "Ștergeți %d noduri?"
#: editor/scene_tree_dock.cpp
msgid "Delete the root node \"%s\"?"
@@ -10745,9 +10638,8 @@ msgid "Delete node \"%s\" and its children?"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Delete node \"%s\"?"
-msgstr "Creează Nod"
+msgstr "Ștergeți nodul \"%s\"?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
@@ -10784,9 +10676,8 @@ msgid "New Scene Root"
msgstr "Salvează Scena"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Create Root Node:"
-msgstr "Creează Nod"
+msgstr "Creare nod rădăcină:"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -10910,9 +10801,8 @@ msgid "Delete (No Confirm)"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Add/Create a New Node."
-msgstr "Creați %s Nou"
+msgstr "Adaugă/Creează un Nod nou."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -10985,9 +10875,8 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open Script:"
-msgstr "Execută Scriptul"
+msgstr "Deschide scriptul:"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -11032,14 +10921,12 @@ msgid "Select a Node"
msgstr ""
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Path is empty."
-msgstr "Mesh-ul este gol!"
+msgstr "Calea este goală."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Filename is empty."
-msgstr "Mesh-ul este gol!"
+msgstr "Numele fișierului este gol."
#: editor/script_create_dialog.cpp
msgid "Path is not local."
@@ -11130,9 +11017,8 @@ msgid "Built-in script (into scene file)."
msgstr "Operațiuni cu fișiere tip scenă."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Will create a new script file."
-msgstr "Creați %s Nou"
+msgstr "Va crea un nou fișier script."
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -11140,9 +11026,8 @@ msgid "Will load an existing script file."
msgstr "Încărcaţi o Schemă de Pistă Audio existentă."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script file already exists."
-msgstr "AutoLoad '%s' există deja!"
+msgstr "Fișierul script există deja."
#: editor/script_create_dialog.cpp
msgid ""
@@ -11156,14 +11041,12 @@ msgid "Class Name:"
msgstr "Clasă:"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template:"
-msgstr "Elimină Șablon"
+msgstr "Åžablon:"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script:"
-msgstr "Execută Scriptul"
+msgstr "Script încorporat:"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
@@ -11182,19 +11065,16 @@ msgid "Warning:"
msgstr ""
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Error:"
-msgstr "Eroare!"
+msgstr "Eroare:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "C++ Error"
-msgstr "Eroare!"
+msgstr "Eroare C++"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "C++ Error:"
-msgstr "Eroare!"
+msgstr "Eroare C++:"
#: editor/script_editor_debugger.cpp
#, fuzzy
@@ -11202,14 +11082,12 @@ msgid "C++ Source"
msgstr "Resursă"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Source:"
-msgstr "Resursă"
+msgstr "Sursă:"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "C++ Source:"
-msgstr "Resursă"
+msgstr "Sursă C++:"
#: editor/script_editor_debugger.cpp
msgid "Stack Trace"
@@ -11220,9 +11098,8 @@ msgid "Errors"
msgstr ""
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Child process connected."
-msgstr "Deconectat"
+msgstr "Procesul copilului conectat."
#: editor/script_editor_debugger.cpp
msgid "Copy Error"
@@ -11645,9 +11522,8 @@ msgid "Pick Distance:"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Filter meshes"
-msgstr "Proprietățile obiectului."
+msgstr "Filtru meshuri"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
@@ -11789,18 +11665,16 @@ msgstr ""
"motor tip."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Create a new function."
-msgstr "Creați %s Nou"
+msgstr "Creați o nouă funcție."
#: modules/visual_script/visual_script_editor.cpp
msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Create a new variable."
-msgstr "Creați %s Nou"
+msgstr "Creați o nouă variabilă."
#: modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
@@ -11938,14 +11812,12 @@ msgid "Disconnect Nodes"
msgstr "Deconectat"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Node Data"
-msgstr "Conectați la Nod:"
+msgstr "Conectare date nod"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Node Sequence"
-msgstr "Conectați la Nod:"
+msgstr "Conectare secvență nod"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
@@ -12014,18 +11886,16 @@ msgid "Editing Signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Make Tool:"
-msgstr "Creează Oase"
+msgstr "Creare Unealta:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membri:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type:"
-msgstr "Schimbați Tipul %s"
+msgstr "Modificare tip bază:"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -12033,9 +11903,8 @@ msgid "Add Nodes..."
msgstr "Se adaugă %s..."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Add Function..."
-msgstr "Faceți Funcția"
+msgstr "Adăugare funcție..."
#: modules/visual_script/visual_script_editor.cpp
msgid "function_name"
@@ -12206,9 +12075,8 @@ msgid "Invalid public key for APK expansion."
msgstr ""
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Invalid package name:"
-msgstr "Nume nevalid."
+msgstr "Nume pachet nevalid:"
#: platform/android/export/export.cpp
msgid ""
@@ -12277,9 +12145,8 @@ msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Invalid Identifier:"
-msgstr "Nume nevalid."
+msgstr "Identificator nevalid:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
@@ -12422,6 +12289,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12743,14 +12616,12 @@ msgid "In node '%s', invalid animation: '%s'."
msgstr ""
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "EROARE: Nume animație nevalid!"
+msgstr "Animație nevalidă: '%s'."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Nothing connected to input '%s' of node '%s'."
-msgstr "Deconectați '%s' de la '%s'"
+msgstr "Nimic conectat la intrarea '%s' a nodului '%s'."
#: scene/animation/animation_tree.cpp
msgid "No root AnimationNode for the graph is set."
@@ -12890,6 +12761,10 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Scena curentă nu a fost salvată niciodată, salvați-o înainte de rulare."
+
#~ msgid "Not in resource path."
#~ msgstr "Nu în calea de resurse."
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index a2e562446d..16be6345f0 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -9,7 +9,7 @@
# DimOkGamer <dimokgamer@gmail.com>, 2016-2017.
# Forest Swamp <sample1989@mail.ru>, 2018.
# Igor S <scorched@bk.ru>, 2017.
-# ijet <my-ijet@mail.ru>, 2017-2018.
+# ijet <my-ijet@mail.ru>, 2017-2018, 2020.
# Maxim Kim <habamax@gmail.com>, 2016.
# Maxim toby3d Lebedev <mail@toby3d.ru>, 2016.
# outbools <drag4e@yandex.ru>, 2017.
@@ -78,12 +78,16 @@
# Alex Tern <ternvein@gmail.com>, 2020.
# Varion Drakon Neonovich <variondrakon@gmail.com>, 2020.
# d2cyb <dmitrydpb@gmail.com>, 2020.
+# ÐлекÑей Смирнов <tir74@mail.ru>, 2020.
+# Calamander <Calamander@yandex.ru>, 2020.
+# Terminator <fresh-ter@yandex.com>, 2020.
+# Anatoly Kuznetsov <muffinnorth@yandex.ru>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-22 06:40+0000\n"
-"Last-Translator: ÐлекÑандр <ol-vin@mail.ru>\n"
+"PO-Revision-Date: 2020-07-23 02:44+0000\n"
+"Last-Translator: Anatoly Kuznetsov <muffinnorth@yandex.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
"Language: ru\n"
@@ -97,7 +101,7 @@ msgstr ""
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Ðеверный тип аргумента Ð´Ð»Ñ convert(), иÑпользуйте конÑтанты TYPE_*."
+msgstr "Ðеверный параметр типа Ð´Ð»Ñ convert(), иÑпользуйте конÑтанты TYPE_*."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
@@ -830,9 +834,8 @@ msgid "Method in target node must be specified."
msgstr "Метод в целевом узле должен быть указан."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Ð˜Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым идентификатором:"
+msgstr "Ð˜Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым идентификатором."
#: editor/connections_dialog.cpp
msgid ""
@@ -1893,23 +1896,23 @@ msgstr "Ðазад"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr "Вперёд"
+msgstr "Перейти вперёд"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
-msgstr "Вверх"
+msgstr "ПоднÑÑ‚ÑŒÑÑ"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr "Скрыть файлы"
+msgstr "Переключение Ñкрытых файлов"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr "Переключить избранное"
+msgstr "Избранное"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr "Переключить режим отображениÑ"
+msgstr "Режим отображениÑ"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
@@ -1917,11 +1920,11 @@ msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° пути"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr "ПеремеÑтить избранное вверх"
+msgstr "ПоднÑÑ‚ÑŒ избранное"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr "ПеремеÑтить избранное вниз"
+msgstr "ОпуÑтить избранное"
#: editor/editor_file_dialog.cpp
msgid "Go to previous folder."
@@ -2400,10 +2403,6 @@ msgid "There is no defined scene to run."
msgstr "Ðет открытой Ñцены Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена никогда не была Ñохранена, Ñохраните её перед запуÑком."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить подпроцеÑÑ!"
@@ -2829,7 +2828,7 @@ msgstr "Обзор реÑурÑов-Ñирот..."
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr "Выйти в ÑпиÑок проектов"
+msgstr "Выйти к ÑпиÑку проектов"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/project_export.cpp
@@ -2945,7 +2944,7 @@ msgstr "Снимки Ñкрана хранÑÑ‚ÑÑ Ð² папке данных/н
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr "Переключить полноÑкранный режим"
+msgstr "Включить полноÑкранный режим"
#: editor/editor_node.cpp
msgid "Toggle System Console"
@@ -3015,7 +3014,7 @@ msgstr "ЗапуÑтить проект."
#: editor/editor_node.cpp
msgid "Play"
-msgstr "ВоÑпроизвеÑти"
+msgstr "ЗапуÑтить"
#: editor/editor_node.cpp
msgid "Pause the scene execution for debugging."
@@ -3080,7 +3079,7 @@ msgstr "ИнÑпектор"
#: editor/editor_node.cpp
msgid "Expand Bottom Panel"
-msgstr "Развернуть нижнюю панель"
+msgstr "РаÑширить боковую панель"
#: editor/editor_node.cpp
msgid "Output"
@@ -5459,7 +5458,7 @@ msgstr "Режим перемещениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Mode"
-msgstr "Режим поворота"
+msgstr "Режим вращениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5485,7 +5484,7 @@ msgstr "Режим оÑмотра"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Ruler Mode"
-msgstr "Режим линейки"
+msgstr "Режим измерениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle smart snapping."
@@ -5599,11 +5598,11 @@ msgstr "Обзор"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Always Show Grid"
-msgstr "Ð’Ñегда показывать Ñетку"
+msgstr "Ð’Ñегда отображать Ñетку"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Helpers"
-msgstr "Показывать помощники"
+msgstr "Показывать помощников"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Rulers"
@@ -5611,7 +5610,7 @@ msgstr "Показывать линейки"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Guides"
-msgstr "Показывать направлÑющие"
+msgstr "Отображение направлÑющих"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Origin"
@@ -5635,7 +5634,7 @@ msgstr "Кадрировать выбранное"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Preview Canvas Scale"
-msgstr "МаÑштаб при проÑмотре холÑта"
+msgstr "ПроÑмотреть Canvas Scale"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
@@ -5676,7 +5675,7 @@ msgstr "Опции анимационных ключей и поз"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr "Ð’Ñтавить ключ (ÑущеÑтвующие треки)"
+msgstr "Ð’Ñтавить ключ (ÑущеÑтвующие дорожки)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
@@ -5696,7 +5695,7 @@ msgstr "Разделить шаг Ñетки на 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan View"
-msgstr "Панорама"
+msgstr "Панорамировать вид"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -6786,7 +6785,7 @@ msgstr "Ðайти Ñледующее"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
-msgstr "Ðайти предыдущее"
+msgstr "Ðайти предыдущий"
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter scripts"
@@ -6808,13 +6807,13 @@ msgstr "Сортировать"
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Move Up"
-msgstr "ПеремеÑтить вверх"
+msgstr "ДвигатьÑÑ Ð²Ð²ÐµÑ€Ñ…"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Move Down"
-msgstr "ПеремеÑтить вниз"
+msgstr "ДвигатьÑÑ Ð²Ð½Ð¸Ð·"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -6834,7 +6833,7 @@ msgstr "Открыть..."
#: editor/plugins/script_editor_plugin.cpp
msgid "Reopen Closed Script"
-msgstr "Открыть ранее закрытый Ñкрипт"
+msgstr "Переоткрыть закрытый Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
@@ -6842,7 +6841,7 @@ msgstr "Сохранить вÑÑ‘"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
-msgstr "ÐœÑгко перезагрузить Ñкрипт"
+msgstr "ÐœÑÐ³ÐºÐ°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ñкрипта"
#: editor/plugins/script_editor_plugin.cpp
msgid "Copy Script Path"
@@ -7023,7 +7022,7 @@ msgstr "нижний региÑÑ‚Ñ€"
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
msgid "Capitalize"
-msgstr "ПропиÑные"
+msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ð±ÑƒÐºÐ²Ð°"
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
msgid "Syntax Highlighter"
@@ -7051,7 +7050,7 @@ msgstr "Вырезать"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Select All"
-msgstr "Выбрать вÑе"
+msgstr "Выделить вÑÑ‘"
#: editor/plugins/script_text_editor.cpp
msgid "Delete Line"
@@ -7083,11 +7082,11 @@ msgstr "Развернуть вÑе Ñтроки"
#: editor/plugins/script_text_editor.cpp
msgid "Clone Down"
-msgstr "Копировать вниз"
+msgstr "Продублировать вниз"
#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
-msgstr "СпиÑок автозавершениÑ"
+msgstr "Завершить Ñимвол"
#: editor/plugins/script_text_editor.cpp
msgid "Evaluate Selection"
@@ -7095,7 +7094,7 @@ msgstr "ВычиÑлить выделенное"
#: editor/plugins/script_text_editor.cpp
msgid "Trim Trailing Whitespace"
-msgstr "Удаление пробелов в конце Ñтрок"
+msgstr "Обрезать замыкающие пробелы"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent to Spaces"
@@ -7103,11 +7102,11 @@ msgstr "Преобразовать отÑтуп в пробелы"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent to Tabs"
-msgstr "Преобразовать отÑтуп в табулÑцию"
+msgstr "Преобразовать отÑтупы в табулÑторы"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
-msgstr "ÐвтоотÑтуп"
+msgstr "Ðвто-отÑтуп"
#: editor/plugins/script_text_editor.cpp
msgid "Find in Files..."
@@ -7123,11 +7122,11 @@ msgstr "Переключить закладку"
#: editor/plugins/script_text_editor.cpp
msgid "Go to Next Bookmark"
-msgstr "Перейти к Ñледующей закладке"
+msgstr "Переход к Ñледующей закладке"
#: editor/plugins/script_text_editor.cpp
msgid "Go to Previous Bookmark"
-msgstr "Перейти к предыдущей закладке"
+msgstr "Переход к предыдущей закладке"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Bookmarks"
@@ -7148,11 +7147,11 @@ msgstr "Точка оÑтановки"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr "Удалить вÑе точки оÑтановок"
+msgstr "Удалить вÑе точки оÑтанова"
#: editor/plugins/script_text_editor.cpp
msgid "Go to Next Breakpoint"
-msgstr "Перейти к Ñледующей точке оÑтановки"
+msgstr "Переход к Ñледующей точке оÑтанова"
#: editor/plugins/script_text_editor.cpp
msgid "Go to Previous Breakpoint"
@@ -7336,7 +7335,7 @@ msgstr "Зад"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align Transform with View"
-msgstr "ВыравнÑÑ‚ÑŒ преобразование Ñ Ð¾Ð±Ð»Ð°Ñтью проÑмотра"
+msgstr "ВыровнÑÑ‚ÑŒ транÑформации Ñ Ð²Ð¸Ð´Ð¾Ð¼"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align Rotation with View"
@@ -7360,7 +7359,7 @@ msgstr "Блокировать вращение камеры"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
-msgstr "Режим нормалей"
+msgstr "Ðормальный режим"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Wireframe"
@@ -7412,35 +7411,35 @@ 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 "Freelook Forward"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Backwards"
-msgstr "Обзор назад"
+msgstr "Свободный вид, назад"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr "Обзор вверх"
+msgstr "Свободный вид, вверх"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Down"
-msgstr "Обзор вниз"
+msgstr "Свободный вид, вниз"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr "Обзор модификатор ÑкороÑти"
+msgstr "Модификатор ÑкороÑти Ñвободного вида"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Slow Modifier"
-msgstr "Медленный модификатор Ñвободного проÑмотра"
+msgstr "Модификатор Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ñвободного вида"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
@@ -7498,7 +7497,7 @@ msgstr "ИÑпользовать локальное проÑтранÑтво"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Snap"
-msgstr "ИÑпользовать привÑзку"
+msgstr "ИÑпользовать привÑзки"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -7526,7 +7525,7 @@ msgstr "Вид Ñправа"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
-msgstr "Переключить перÑпективный/ортогональный вид"
+msgstr "Переключение перÑпективного/ортогонального вида"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
@@ -7534,7 +7533,7 @@ msgstr "Ð’Ñтавить ключ анимации"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
-msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° центре"
+msgstr "СфокуÑироватьÑÑ Ð½Ð° начале координат"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
@@ -7542,7 +7541,7 @@ msgstr "Показать выбранное"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Freelook"
-msgstr "Переключить Ñвободный обзор"
+msgstr "Включить Ñвободный вид"
#: editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -7551,7 +7550,7 @@ msgstr "Преобразование"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Object to Floor"
-msgstr "ПривÑзать объект к полу"
+msgstr "ПривÑзка объекта к полу"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog..."
@@ -8105,7 +8104,7 @@ msgstr "ОчиÑтить карту тайлов"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Find Tile"
-msgstr "Ðайти плитку"
+msgstr "Ðайти тайл"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
@@ -8129,7 +8128,7 @@ msgstr "Задайте TileSet реÑÑƒÑ€Ñ Ñтому Tilemap чтобы иÑп
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint Tile"
-msgstr "РиÑовать тайл"
+msgstr "ПокраÑить тайл"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid ""
@@ -8153,11 +8152,11 @@ msgstr "Повернуть вправо"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Horizontally"
-msgstr "Отразить по горизонтали"
+msgstr "Перевернуть по горизонтали"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Vertically"
-msgstr "Отразить по вертикали"
+msgstr "Перевернуть по вертикали"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Clear Transform"
@@ -10373,7 +10372,7 @@ msgstr "Выбрать метод"
#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
msgid "Batch Rename"
-msgstr "Пакетное переименование"
+msgstr "Групповое переименование"
#: editor/rename_dialog.cpp
msgid "Prefix"
@@ -10563,7 +10562,7 @@ msgstr "Добавить дочернюю Ñцену"
#: editor/scene_tree_dock.cpp
msgid "Detach Script"
-msgstr "Прикрепить Ñкрипт"
+msgstr "Открепить Ñкрипт"
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on the tree root."
@@ -10600,6 +10599,11 @@ msgid "Make node as Root"
msgstr "Сделать узел корневым"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Удалить узел «%s» и его дочерние Ñлементы?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Удалить %d узлов?"
@@ -10768,7 +10772,7 @@ msgstr "Сохранить ветку, как Ñцену"
#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
msgid "Copy Node Path"
-msgstr "Копировать путь"
+msgstr "Копировать путь ноды"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -11885,7 +11889,7 @@ msgstr "Удалить выделенное"
#: modules/visual_script/visual_script_editor.cpp
msgid "Find Node Type"
-msgstr "Ðайти тип узла"
+msgstr "Ðайти тип нода"
#: modules/visual_script/visual_script_editor.cpp
msgid "Copy Nodes"
@@ -11901,7 +11905,7 @@ msgstr "Сделать функцию"
#: modules/visual_script/visual_script_editor.cpp
msgid "Refresh Graph"
-msgstr "Обновить граф"
+msgstr "Обновить график"
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit Member"
@@ -12291,6 +12295,12 @@ msgstr ""
"Shape должен быть предуÑмотрен Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ CollisionShape2D. ПожалуйÑта, "
"Ñоздайте shape-реÑÑƒÑ€Ñ Ð´Ð»Ñ Ñтого!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12863,6 +12873,10 @@ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только Ð
msgid "Constants cannot be modified."
msgstr "КонÑтанты не могут быть изменены."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена никогда не была Ñохранена, Ñохраните её перед запуÑком."
+
#~ msgid "Not in resource path."
#~ msgstr "Ðе в пути реÑурÑов."
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 141696c00a..c8b0a57cbe 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -2273,10 +2273,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10191,6 +10187,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "යතුරු මක෠දමන්න"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "යතුරු මක෠දමන්න"
@@ -11807,6 +11808,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 0920487af3..59cd8da671 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -2321,10 +2321,6 @@ msgid "There is no defined scene to run."
msgstr "Nieje definovaná žiadna scéna na spustenie."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Aktuálna scéna sa nikdy neuložila, prosím uložte ju pred spustením."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Subprocess sa nedá spustiť!"
@@ -10493,6 +10489,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Všetky vybrané"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Všetky vybrané"
@@ -12171,6 +12172,12 @@ msgstr ""
"Musíte nastaviť tvar objektu CollisionShape2D aby fungoval. Prosím, vytvorte "
"preň tvarový objekt!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12648,6 +12655,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Aktuálna scéna sa nikdy neuložila, prosím uložte ju pred spustením."
+
#~ msgid "Not in resource path."
#~ msgstr "Nieje v resource path."
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 114dce1e63..c40bc3b40f 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -11,12 +11,13 @@
# Andrej Poženel <andrej.pozenel@outlook.com>, 2019.
# Arnold Marko <arnold.marko@gmail.com>, 2019.
# Alex <alexrixhardson@gmail.com>, 2019.
+# Andrew Poženel <andrej.pozenel@outlook.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2019-10-26 03:53+0000\n"
-"Last-Translator: Alex <alexrixhardson@gmail.com>\n"
+"PO-Revision-Date: 2020-07-15 02:42+0000\n"
+"Last-Translator: Andrew Poženel <andrej.pozenel@outlook.com>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/"
"godot/sl/>\n"
"Language: sl\n"
@@ -25,22 +26,22 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3;\n"
-"X-Generator: Weblate 3.9.1-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Neveljavna vrsta argumenta za convert(), uporabite TYPE_* konstanto."
+msgstr "Neveljavna vrsta argumenta za convert(), uporabite TYPE_* konstante."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr ""
+msgstr "PriÄakovan niz dolžine 1 (znak)."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr "Ni dovolj bajtov za dekodiranje, ali pa format ni ustrezen."
+msgstr "Ni dovolj bajtov za dekodiranje, ali pa je neveljaven format."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -48,7 +49,7 @@ msgstr "NapaÄen vnos %i(ni podan) v izrazu"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self ne more biti uporabljen, ker instanca ni null (ni podano)"
+msgstr "self ne more biti uporabljen, ker je instanca null (ni podano)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -115,9 +116,8 @@ msgid "Time:"
msgstr "ÄŒas:"
#: editor/animation_bezier_editor.cpp
-#, fuzzy
msgid "Value:"
-msgstr "Novo ime:"
+msgstr "Vrednost:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
@@ -132,14 +132,12 @@ msgid "Delete Selected Key(s)"
msgstr "IzbriÅ¡i Izbran/e KljuÄ/e"
#: editor/animation_bezier_editor.cpp
-#, fuzzy
msgid "Add Bezier Point"
-msgstr "Dodaj toÄko"
+msgstr "Dodaj Bezierjevo toÄko"
#: editor/animation_bezier_editor.cpp
-#, fuzzy
msgid "Move Bezier Points"
-msgstr "Odstrani toÄko"
+msgstr "Premakni Bezierjevo toÄko"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
@@ -195,35 +193,33 @@ msgid "Anim Multi Change Call"
msgstr "Animacija Spremeni klic"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Animation Length"
-msgstr "Spremeni Ime Animacije:"
+msgstr "Spremeni dolžino animacije"
#: editor/animation_track_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr ""
+msgstr "Spremeni ponavljanje animacije"
#: editor/animation_track_editor.cpp
msgid "Property Track"
-msgstr ""
+msgstr "Sled atributa"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "3D Transform Track"
-msgstr "Preoblikovanje"
+msgstr "Sled 3D preoblikovanja"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr ""
+msgstr "Sled klica funkcije"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
-msgstr ""
+msgstr "Sled Bezierjeve Krivulje"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
-msgstr ""
+msgstr "ZvoÄna Sled"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -2443,10 +2439,6 @@ msgid "There is no defined scene to run."
msgstr "Ni doloÄene scene za zagon."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Trenutna scena ni bila shranjena, shranite jo pred zagonom."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Nemorem zaÄeti podprocesa!"
@@ -10840,6 +10832,11 @@ msgstr "Shrani Prizor"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Izberi Gradnik"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Izberi Gradnik"
@@ -12555,6 +12552,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -13039,6 +13042,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Konstante ni možno spreminjati."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Trenutna scena ni bila shranjena, shranite jo pred zagonom."
+
#~ msgid "Not in resource path."
#~ msgstr "Ni na poti virov."
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 32d08c7bc9..2df44bdd5b 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -2372,11 +2372,6 @@ msgid "There is no defined scene to run."
msgstr "Nuk ka një skenë të përcaktuar për të filluar."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Skena aktuale nuk është ruajtur më parë, ju lutem ruajeni para se të filloni."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Nuk mund të fillojë subprocess-in!"
@@ -10473,6 +10468,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Fshi Nyjen"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Fshi Nyjen"
@@ -12127,6 +12127,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12590,6 +12596,11 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Skena aktuale nuk është ruajtur më parë, ju lutem ruajeni para se të "
+#~ "filloni."
+
#~ msgid "Not in resource path."
#~ msgstr "Jo në rrugën e resurseve."
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index 01d8c4ca91..0bb67647f8 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -2549,10 +2549,6 @@ msgid "There is no defined scene to run."
msgstr "Ðе поÑтоји дефиниÑана Ñцена за покретање."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Тренутна Ñцена није Ñачувана, молим Ñачувајте је пре покретања."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Ðе могу покренути подпроцеÑ!"
@@ -11811,6 +11807,11 @@ msgstr "Ðаправи Корен од чвора"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Обриши чвор \"%s\" и његову децу?"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Обриши %d чворове?"
@@ -13785,6 +13786,12 @@ msgstr ""
"Облик мора бити Ñнабдевен за СударниОблик2Д да би радио. Молимо креирај "
"облик реÑÑƒÑ€Ñ Ð·Ð° њега!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
msgid ""
@@ -14435,6 +14442,9 @@ msgstr "Варијације могу Ñамо бити одређене у фу
msgid "Constants cannot be modified."
msgstr "КонÑтанте није могуће мењати."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Тренутна Ñцена није Ñачувана, молим Ñачувајте је пре покретања."
+
#~ msgid "Not in resource path."
#~ msgstr "Ðије на пут реÑурÑа."
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index fe13877f42..4dece6c33c 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -2287,10 +2287,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10270,6 +10266,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Animacija ObriÅ¡i KljuÄeve"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "Animacija ObriÅ¡i KljuÄeve"
@@ -11895,6 +11896,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index ddd0188d5d..d3cda1a61a 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -5,7 +5,7 @@
# bergmarklund <davemcgroin@gmail.com>, 2017, 2018.
# Christoffer Sundbom <christoffer_karlsson@live.se>, 2017.
# Jakob Sinclair <sinclair.jakob@mailbox.org>, 2018.
-# . <grenoscar@gmail.com>, 2018.
+# . <grenoscar@gmail.com>, 2018, 2020.
# Kristoffer Grundström <kristoffer.grundstrom1983@gmail.com>, 2018.
# Magnus Helander <helander@fastmail.net>, 2018.
# Daniel K <danielkimblad@hotmail.com>, 2018.
@@ -15,12 +15,14 @@
# Anonymous <noreply@weblate.org>, 2020.
# Joakim Lundberg <joakim@joakimlundberg.com>, 2020.
# Kristoffer Grundström <swedishsailfishosuser@tutanota.com>, 2020.
+# Jonas Robertsson <jonas.robertsson@posteo.net>, 2020.
+# André Andersson <andre.eric.andersson@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-03 20:09+0000\n"
-"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
+"PO-Revision-Date: 2020-07-15 02:42+0000\n"
+"Last-Translator: Jonas Robertsson <jonas.robertsson@posteo.net>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/"
"godot/sv/>\n"
"Language: sv\n"
@@ -28,7 +30,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.1-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -37,14 +39,13 @@ msgstr "Ogiltligt typargument till convert(), använd TYPE_* konstanter."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr "Förväntade en sträng med längden 1 (en karaktär)."
+msgstr "Förväntas en string av längden 1 (en karaktär)."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-"Inte tillräckligt antal bytes eller ogiltigt format för avkodning av bytes."
+msgstr "Inte tillräckligt med bytes för avkodning byte, eller ogiltigt format."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -152,7 +153,7 @@ msgstr "Anim Ta Bort Nycklar"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Time"
-msgstr "Anim Ändra Tid för Nyckebild"
+msgstr "Anim Ändra Nyckelbildstid"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transition"
@@ -164,7 +165,7 @@ msgstr "Anim Ändra Transformation"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Value"
-msgstr "Anim Ändra Värde På Nyckelbild"
+msgstr "Anim Ändra Värdet På Tidsnyckeln"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
@@ -172,7 +173,7 @@ msgstr "Anim Ändra Anrop"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
-msgstr "Anim multi-ändring nyckelbildstid"
+msgstr "Anim Fler-Ändra Nyckelbildstid"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Transition"
@@ -188,7 +189,7 @@ msgstr "Anim Fler-Ändra Nyckelbildsvärde"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Call"
-msgstr "Anim Fler-Ändra Anrop"
+msgstr "Anim Ändra Anrop"
#: editor/animation_track_editor.cpp
msgid "Change Animation Length"
@@ -229,7 +230,7 @@ msgstr "Animation längd (bildrutor)"
#: editor/animation_track_editor.cpp
msgid "Animation length (seconds)"
-msgstr "Animationslängd (i sekunder)"
+msgstr "Animationens längd (sekunder)"
#: editor/animation_track_editor.cpp
msgid "Add Track"
@@ -294,7 +295,7 @@ msgstr "Diskret"
#: editor/animation_track_editor.cpp
msgid "Trigger"
-msgstr "Utlös"
+msgstr "Avtryckare"
#: editor/animation_track_editor.cpp
msgid "Capture"
@@ -499,6 +500,15 @@ msgid ""
"Alternatively, use an import preset that imports animations to separate "
"files."
msgstr ""
+"Denna animationen tillhör en importerad scen, så ändringar i de importerade "
+"spåren kommer inte sparas.\n"
+"\n"
+"För att aktivera förmågan att lägga till anpassade spår, navigera till "
+"scenens importinställningar och ställ in\n"
+"\"Animation > Lagring\" till \"Filer\", aktivera \"Animation > Behåll "
+"Anpassade Spår\", sedan importera om.\n"
+"Alternativt, använd en importförinställning som importerar animationer till "
+"separata filer."
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
@@ -514,17 +524,15 @@ msgstr "Visa enbart spår från valda noder i trädet."
#: editor/animation_track_editor.cpp
msgid "Group tracks by node or display them as plain list."
-msgstr ""
+msgstr "Gruppera spår efter noder eller visa dem som enkel lista."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Snap:"
-msgstr "Steg (s):"
+msgstr "Fäst:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation step value."
-msgstr "Animation"
+msgstr "Animationens stegvärde."
#: editor/animation_track_editor.cpp
msgid "Seconds"
@@ -545,14 +553,12 @@ msgid "Edit"
msgstr "Redigera"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Animation properties."
-msgstr "Animation"
+msgstr "Animationens egenskaper."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Copy Tracks"
-msgstr "Kopiera Params"
+msgstr "Kopiera Spår"
#: editor/animation_track_editor.cpp
msgid "Scale Selection"
@@ -571,19 +577,16 @@ msgid "Duplicate Transposed"
msgstr "Fördubbla Transponerade"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Delete Selection"
-msgstr "Duplicera urval"
+msgstr "Radera Markering"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Next Step"
-msgstr "Gå Till Nästa Steg"
+msgstr "Gå till Nästa Steg"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Go to Previous Step"
-msgstr "Ge Till Föregående Steg"
+msgstr "Gå till Föregående Steg"
#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
@@ -591,7 +594,7 @@ msgstr "Optimera Animation"
#: editor/animation_track_editor.cpp
msgid "Clean-Up Animation"
-msgstr "Städa upp Animation"
+msgstr "Rensa Animation"
#: editor/animation_track_editor.cpp
msgid "Pick the node that will be animated:"
@@ -646,9 +649,8 @@ msgid "Scale Ratio:"
msgstr "Skalnings förhållande:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select Tracks to Copy"
-msgstr "Ange övergångar:"
+msgstr "Välj Spår att Kopiera"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
#: editor/editor_properties.cpp
@@ -660,22 +662,20 @@ msgid "Copy"
msgstr "Kopiera"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Select All/None"
-msgstr "Välj Node"
+msgstr "Välj Alla/Inga"
#: editor/animation_track_editor_plugins.cpp
-#, fuzzy
msgid "Add Audio Track Clip"
-msgstr "Ljud-Lyssnare"
+msgstr "Lägg till Ljudspårsklipp"
#: editor/animation_track_editor_plugins.cpp
msgid "Change Audio Track Clip Start Offset"
-msgstr ""
+msgstr "Byt Ljudspårsklippets Startförskjutning"
#: editor/animation_track_editor_plugins.cpp
msgid "Change Audio Track Clip End Offset"
-msgstr ""
+msgstr "Byt Ljudspårsklippets Slutförskjutning"
#: editor/array_property_edit.cpp
msgid "Resize Array"
@@ -698,18 +698,16 @@ msgid "Line Number:"
msgstr "Radnummer:"
#: editor/code_editor.cpp
-#, fuzzy
msgid "%d replaced."
-msgstr "Ersätt..."
+msgstr "%d ersatt."
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
-msgstr ""
+msgstr "%d matcha."
#: editor/code_editor.cpp editor/editor_help.cpp
-#, fuzzy
msgid "%d matches."
-msgstr "Inga matchningar"
+msgstr "%d matchningar."
#: editor/code_editor.cpp editor/find_in_files.cpp
msgid "Match Case"
@@ -734,11 +732,11 @@ msgstr "Endast Urval"
#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Standard"
-msgstr ""
+msgstr "Standard"
#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
-msgstr ""
+msgstr "Växla Skriptpanel"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -757,51 +755,44 @@ msgid "Reset Zoom"
msgstr "Återställ Zoom"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Warnings"
-msgstr "Varning"
+msgstr "Varningar"
#: editor/code_editor.cpp
msgid "Line and column numbers."
-msgstr ""
+msgstr "Rad- och Kolumnnummer."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method in target node must be specified."
-msgstr "Metod i Mål-Node måste specificeras!"
+msgstr "Metod i målnod måste specificeras."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Metod i Mål-Node måste specificeras!"
+msgstr "Metodnamn måste vara en giltig identifierare."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid ""
"Target method not found. Specify a valid method or attach a script to the "
"target node."
msgstr ""
-"MÃ¥lmetod hittades inte! Specificera en giltig metod eller koppla ett skript "
-"till MÃ¥l-Node."
+"MÃ¥lmetod hittades inte. Specificera en giltig metod eller koppla ett skript "
+"till målnoden."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Node:"
-msgstr "Anslut Till Node:"
+msgstr "Anslut till Nod:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect to Script:"
-msgstr "Anslut Till Node:"
+msgstr "Anslut till Skript:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "From Signal:"
-msgstr "Signaler:"
+msgstr "Från Signal:"
#: editor/connections_dialog.cpp
msgid "Scene does not contain any script."
-msgstr ""
+msgstr "Scenen innehåller inte något skript."
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
@@ -829,14 +820,12 @@ msgid "Extra Call Arguments:"
msgstr "Extra Call Argument:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Receiver Method:"
-msgstr "Filtrera noder"
+msgstr "Mottagarmetod:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Advanced"
-msgstr "Balanserad"
+msgstr "Avancerad"
#: editor/connections_dialog.cpp
msgid "Deferred"
@@ -846,6 +835,8 @@ msgstr "Uppskjuten"
msgid ""
"Defers the signal, storing it in a queue and only firing it at idle time."
msgstr ""
+"Skjuter upp signalen och sparar den i en kö och avfyrar den endast under "
+"vilotid."
#: editor/connections_dialog.cpp
msgid "Oneshot"
@@ -853,12 +844,11 @@ msgstr "Oneshot"
#: editor/connections_dialog.cpp
msgid "Disconnects the signal after its first emission."
-msgstr ""
+msgstr "Kopplar av signalen efter sitt första utsläpp."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Cannot connect signal"
-msgstr "Ansluter Signal:"
+msgstr "Kan ej ansluta signal"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/export_template_manager.cpp editor/groups_editor.cpp
@@ -879,23 +869,20 @@ msgid "Connect"
msgstr "Anslut"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Signal:"
-msgstr "Signaler:"
+msgstr "Signal:"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
msgstr "Anslut '%s' till '%s'"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Anslut '%s' till '%s'"
+msgstr "Koppla av '%s' från '%s'"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect all from signal: '%s'"
-msgstr "Anslut '%s' till '%s'"
+msgstr "Koppla av alla från signal: '%s'"
#: editor/connections_dialog.cpp
msgid "Connect..."
@@ -907,18 +894,16 @@ msgid "Disconnect"
msgstr "Koppla från"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect a Signal to a Method"
-msgstr "Ansluter Signal:"
+msgstr "Anslut en Signal till en Metod"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit Connection:"
-msgstr "Anslutningsfel"
+msgstr "Redigera Koppling:"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
+msgstr "Är du säker att du vill ta bort alla kopplingar från \"%s\" signalen?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
@@ -926,36 +911,31 @@ msgstr "Signaler"
#: editor/connections_dialog.cpp
msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
+msgstr "Är du säker att du vill ta bort alla kopplingar från denna signal?"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect All"
-msgstr "Koppla från"
+msgstr "Koppla av alla"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Edit..."
-msgstr "Redigera"
+msgstr "Ändra..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go To Method"
-msgstr "Metoder"
+msgstr "GÃ¥ Till Metod"
#: editor/create_dialog.cpp
-#, fuzzy
msgid "Change %s Type"
-msgstr "Ändra Typ"
+msgstr "Ändra %s Typ"
#: editor/create_dialog.cpp editor/project_settings_editor.cpp
msgid "Change"
msgstr "Ändra"
#: editor/create_dialog.cpp
-#, fuzzy
msgid "Create New %s"
-msgstr "Skapa Ny"
+msgstr "Skapa Ny %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -995,22 +975,20 @@ msgid "Dependencies For:"
msgstr "Beroenden För:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will only take effect when reloaded."
msgstr ""
"Scen '%s' håller på att redigeras.\n"
-"Ändringarna börjar inte gälla förrän omladdning."
+"Ändringar börjar inte gälla förrän omladdning."
#: editor/dependency_editor.cpp
-#, fuzzy
msgid ""
"Resource '%s' is in use.\n"
"Changes will only take effect when reloaded."
msgstr ""
"Resurs '%s' är i användning.\n"
-"Ändringarna börjar gälla när den laddas om."
+"Ändringar börjar endast gälla efter omladdning."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -1057,9 +1035,8 @@ msgid "Owners Of:"
msgstr "Ägare av:"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Remove selected files from the project? (Can't be restored)"
-msgstr "Ta bort valda filer från projektet? (går inte ångra)"
+msgstr "Ta bort valda filer från projektet? (Kan ej återställas)"
#: editor/dependency_editor.cpp
msgid ""
@@ -1071,9 +1048,8 @@ msgstr ""
"Ta bort dem ändå? (går inte ångra)"
#: editor/dependency_editor.cpp
-#, fuzzy
msgid "Cannot remove:"
-msgstr "Kan inte ta bort:\n"
+msgstr "Kan inte ta bort:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -1154,9 +1130,8 @@ msgid "Lead Developer"
msgstr "Ledande utvecklare"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Manager "
-msgstr "Projektledare"
+msgstr "Projekthanterare "
#: editor/editor_about.cpp
msgid "Developers"
@@ -1199,12 +1174,10 @@ msgid "License"
msgstr "Licens"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Third-party Licenses"
msgstr "Tredje parts Licens"
#: editor/editor_about.cpp
-#, fuzzy
msgid ""
"Godot Engine relies on a number of third-party free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
@@ -1229,14 +1202,12 @@ msgid "Licenses"
msgstr "Licenser"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Error opening package file, not in ZIP format."
-msgstr "Fel vid öppning av paketetfil, inte i zip-format."
+msgstr "Fel vid öppning av paketfil, är inte ZIP-format."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "%s (Already Exists)"
-msgstr "Autoload '%s' finns redan!"
+msgstr "%s (Existerar Redan)"
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
@@ -1244,15 +1215,13 @@ msgstr "Dekomprimerar Tillgångar"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "The following files failed extraction from package:"
-msgstr ""
+msgstr "Följande filer gick inte att packa upp från tillägget:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "And %s more files."
-msgstr "%d fler filer"
+msgstr "%d fler filer."
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Package installed successfully!"
msgstr "Paketet installerades!"
@@ -1397,7 +1366,7 @@ msgstr "Öppna Ljud-Buss Layout"
#: editor/editor_audio_buses.cpp
msgid "There is no '%s' file."
-msgstr ""
+msgstr "Det finns ingen '%s' fil."
#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
@@ -1408,9 +1377,8 @@ msgid "Invalid file, not an audio bus layout."
msgstr "Ogiltig fil, inte en Ljud-Buss Layout."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Error saving file: %s"
-msgstr "Fel vid sparande av TileSet!"
+msgstr "Fel vid sparande av fil: %s"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
@@ -1478,7 +1446,7 @@ msgstr ""
#: editor/editor_autoload_settings.cpp
msgid "Keyword cannot be used as an autoload name."
-msgstr ""
+msgstr "Nyckelord kan inte användas som ett autoladdningsnamn."
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
@@ -1510,7 +1478,7 @@ msgstr "Ändra ordning på Autoloads"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr ""
+msgstr "Kunde inte lägga till autoladdning:"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -1561,7 +1529,7 @@ msgstr "(tom)"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr "[osparad]"
+msgstr "[inte sparad]"
#: editor/editor_dir_dialog.cpp
#, fuzzy
@@ -1600,7 +1568,7 @@ msgstr "Lagrar Fil:"
#: editor/editor_export.cpp
msgid "No export template found at the expected path:"
-msgstr ""
+msgstr "Ingen exportmall hittades vid den förväntade sökvägen:"
#: editor/editor_export.cpp
msgid "Packing"
@@ -1611,12 +1579,16 @@ msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
msgstr ""
+"Målplattformen kräver 'ETC' texturkomprimering för GLES2. Aktivera 'Import "
+"Etc' i Projektinställningarna."
#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC2' texture compression for GLES3. Enable "
"'Import Etc 2' in Project Settings."
msgstr ""
+"Målplattformen kräver 'ETC2' texturkomprimering för GLES3. Aktivera 'Import "
+"Etc 2' i Projektinställningarna."
#: editor/editor_export.cpp
msgid ""
@@ -1629,9 +1601,8 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
msgid "Custom debug template not found."
-msgstr "Mallfil hittades inte:\n"
+msgstr "Mallfil hittades inte:"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
@@ -1640,9 +1611,8 @@ msgid "Custom release template not found."
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-#, fuzzy
msgid "Template file not found:"
-msgstr "Mallfil hittades inte:\n"
+msgstr "Mallfil hittades inte:"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -2425,10 +2395,6 @@ msgid "There is no defined scene to run."
msgstr "Det finns ingen definierad scen att köra."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Nuvarande scen har aldrig sparats, vänligen spara den innan körning."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Kunde inte starta underprocess!"
@@ -2805,9 +2771,8 @@ msgid "Convert To..."
msgstr "Konvertera Till..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "MeshLibrary..."
-msgstr "MeshLibrary..."
+msgstr "MeshBibliotek..."
#: editor/editor_node.cpp
#, fuzzy
@@ -2965,9 +2930,8 @@ msgid "Editor Layout"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Take Screenshot"
-msgstr "Vettigt!"
+msgstr "Ta Skärmdump"
#: editor/editor_node.cpp
msgid "Screenshots are stored in the Editor Data/Settings Folder."
@@ -3213,9 +3177,8 @@ msgid "Open the previous Editor"
msgstr ""
#: editor/editor_node.h
-#, fuzzy
msgid "Warning!"
-msgstr "Varning"
+msgstr "Varning!"
#: editor/editor_path.cpp
#, fuzzy
@@ -3942,14 +3905,12 @@ msgid "Cancel"
msgstr "Avbryt"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Find: "
-msgstr "Hitta"
+msgstr "Hitta:"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace: "
-msgstr "Ersätt"
+msgstr "Ersätt:"
#: editor/find_in_files.cpp
#, fuzzy
@@ -3975,9 +3936,8 @@ msgid "Remove from Group"
msgstr "Ta bort från Grupp"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Group name already exists."
-msgstr "ERROR: Animationsnamn finns redan!"
+msgstr "Gruppnamn existerar redan."
#: editor/groups_editor.cpp
#, fuzzy
@@ -4417,9 +4377,8 @@ msgid "Open Animation Node"
msgstr "Animations-Node"
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Triangle already exists."
-msgstr "ERROR: Animationsnamn finns redan!"
+msgstr "Triangel existerar redan."
#: editor/plugins/animation_blend_space_2d_editor.cpp
#, fuzzy
@@ -4650,14 +4609,12 @@ msgid "Duplicate Animation"
msgstr "Duplicera Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to copy!"
-msgstr "Animation zoom."
+msgstr "Ingen animation finns att kopiera!"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation resource on clipboard!"
-msgstr "Inte i resursens sökväg."
+msgstr "Ingen animationsresurs i urklipp!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
@@ -4668,9 +4625,8 @@ msgid "Paste Animation"
msgstr "Klistra in Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "No animation to edit!"
-msgstr "Animations-Node"
+msgstr "Ingen animation finns att redigera!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
@@ -4706,7 +4662,7 @@ msgstr "Animeringsverktyg"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation"
-msgstr "Animering"
+msgstr "Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -4815,9 +4771,8 @@ msgid "Move Node"
msgstr "Flytta Nod(er)"
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition exists!"
-msgstr "Övergång"
+msgstr "Övergång existerar!"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -4903,9 +4858,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition: "
-msgstr "Övergång"
+msgstr "Övergång:"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -7881,9 +7835,8 @@ msgid "LightOccluder2D Preview"
msgstr "Skapa Mapp"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Sprite is empty!"
-msgstr "Sökvägen är tom"
+msgstr "Spriten är tom!"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Can't convert a sprite using animation frames to mesh."
@@ -10184,9 +10137,8 @@ msgid ""
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "An action with the name '%s' already exists."
-msgstr "ERROR: Animationsnamn finns redan!"
+msgstr "En process med namnet '%s' existerar redan."
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
@@ -10768,9 +10720,13 @@ msgid "Instantiated scenes can't become root"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make node as Root"
-msgstr "Vettigt!"
+msgstr "Gör nod som Rot"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Ta bort Nod(er)"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -10821,9 +10777,8 @@ msgid "Make Local"
msgstr "Gör Patch"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "New Scene Root"
-msgstr "Vettigt!"
+msgstr "Ny Scenrot"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -10932,9 +10887,8 @@ msgid "Reparent to New Node"
msgstr "Byt Förälder-Node"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Make Scene Root"
-msgstr "Vettigt!"
+msgstr "Skapa Scenrot"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -11188,9 +11142,8 @@ msgid "Will load an existing script file."
msgstr "Ladda in befintlig Skript-fil"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script file already exists."
-msgstr "Autoload '%s' finns redan!"
+msgstr "Skriptfil existerar redan."
#: editor/script_create_dialog.cpp
msgid ""
@@ -12349,9 +12302,8 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Kör exporterad HTML i systemets standardwebbläsare."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:"
-msgstr "Kunde inte skriva till filen:\n"
+msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
#, fuzzy
@@ -12367,9 +12319,8 @@ msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read boot splash image file:"
-msgstr "Kunde inte skriva till filen:\n"
+msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
msgid "Using default boot splash image."
@@ -12482,6 +12433,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12824,9 +12781,8 @@ msgid "In node '%s', invalid animation: '%s'."
msgstr ""
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Invalid animation: '%s'."
-msgstr "ERROR: Ogiltigt animationsnamn!"
+msgstr "Ogiltig animation: '%s'."
#: scene/animation/animation_tree.cpp
#, fuzzy
@@ -12974,6 +12930,10 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Nuvarande scen har aldrig sparats, vänligen spara den innan körning."
+
#~ msgid "Not in resource path."
#~ msgstr "Inte i resursens sökväg."
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 8f161acfc9..01cbcc1881 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -2275,10 +2275,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10187,6 +10183,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯"
@@ -11801,6 +11802,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 87fb947dd0..3523306b0d 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -2251,10 +2251,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10116,6 +10112,10 @@ msgid "Make node as Root"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Delete %d nodes and any children?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr ""
@@ -11717,6 +11717,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 3af6fde5a0..279f8c08ba 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -2290,10 +2290,6 @@ msgid "There is no defined scene to run."
msgstr "ยังไม่ได้เลือà¸à¸‰à¸²à¸à¸—ี่จะเล่น"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภà¸à¸£à¸¸à¸“าบันทึà¸à¸à¹ˆà¸­à¸™à¹€à¸£à¸´à¹ˆà¸¡à¹‚ปรà¹à¸à¸£à¸¡"
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "ไม่สามารถเริ่มขั้นตอนย่อย!"
@@ -10508,6 +10504,11 @@ msgid "Make node as Root"
msgstr "ทำโหนดให้เป็นโหนดà¹à¸¡à¹ˆ"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "ลบโหนด \"%s\" à¹à¸¥à¸°à¹‚หนดลูà¸?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "ลบโหนด %d ?"
@@ -12168,6 +12169,12 @@ msgid ""
"shape resource for it!"
msgstr "ต้องมีรูปทรงเพื่อให้ CollisionShape2D ทำงานได้ à¸à¸£à¸¸à¸“าสร้างรูปทรง!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12689,6 +12696,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได้"
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภà¸à¸£à¸¸à¸“าบันทึà¸à¸à¹ˆà¸­à¸™à¹€à¸£à¸´à¹ˆà¸¡à¹‚ปรà¹à¸à¸£à¸¡"
+
#~ msgid "Not in resource path."
#~ msgstr "ไม่อยู่ในโฟลเดอร์รีซอร์ส"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 27886e1d4d..edc01421d2 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -47,12 +47,15 @@
# Anonymous <noreply@weblate.org>, 2020.
# Güneş Gümüş <gunes.gumus.001@gmail.com>, 2020.
# OÄŸuz Ersen <oguzersen@protonmail.com>, 2020.
+# Vedat Günel <gunel15@itu.edu.tr>, 2020.
+# Ahmet Elgün <ahmetelgn@gmail.com>, 2020.
+# Efruz Yıldırır <efruzyildirir@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-05-22 21:01+0000\n"
-"Last-Translator: Güneş Gümüş <gunes.gumus.001@gmail.com>\n"
+"PO-Revision-Date: 2020-07-06 04:41+0000\n"
+"Last-Translator: Efruz Yıldırır <efruzyildirir@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
@@ -60,7 +63,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.1-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -798,9 +801,8 @@ msgid "Method in target node must be specified."
msgstr "Hedef düğümdeki metod tanımlanmalı."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "Ad doÄŸru bir belirleyici deÄŸil:"
+msgstr "Metod ismi geçerli bir tanımlayıcı değil."
#: editor/connections_dialog.cpp
msgid ""
@@ -1497,7 +1499,7 @@ msgstr "KendindenYüklenme'leri Yeniden Sırala"
#: editor/editor_autoload_settings.cpp
msgid "Can't add autoload:"
-msgstr ""
+msgstr "Otomatik yükleme eklenemiyor:"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -2364,10 +2366,6 @@ msgid "There is no defined scene to run."
msgstr "Çalıştırmak için herhangi bir sahne seçilmedi."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Şimdiki sahne hiç kaydedilmedi, lütfen çalıştırmadan önce kaydediniz."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Alt işlem başlatılamadı!"
@@ -2452,15 +2450,16 @@ msgid "Can't reload a scene that was never saved."
msgstr "Hiç kaydedilmemiş bir sahne yeniden yüklenemiyor."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Reload Saved Scene"
-msgstr "Sahne Kaydet"
+msgstr "Kaydedilmiş Sahneyi Yeniden Yükle"
#: editor/editor_node.cpp
msgid ""
"The current scene has unsaved changes.\n"
"Reload the saved scene anyway? This action cannot be undone."
msgstr ""
+"Mevcut sahnede kaydedilmemiÅŸ deÄŸiÅŸiklikler var.\n"
+"Sahne yine de yeniden yüklensin mi? Bu işlem geri alınamaz."
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
@@ -3395,11 +3394,10 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run()' metodunu unuttunuz mu?"
#: editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
msgstr ""
-"Alıcı bırakmak için Ctrl'e basılı tutun. Genel imza bırakmak için Shift'e "
-"basılı tutun."
+"Tamsayılara yuvarlamak için Ctrl tuşunu basılı tutun. Hassas değişiklikler "
+"için Shift tuşunu basılı tutun."
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -4000,7 +3998,7 @@ msgstr "sonradan-içe aktarılmış betik çalıştırılırken hata:"
#: editor/import/resource_importer_scene.cpp
msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
+msgstr "`Post_import ()` yönteminde Node türevi bir nesne döndürdünüz mü?"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -4024,7 +4022,7 @@ msgstr "Şu Şekilde İçe Aktar:"
#: editor/import_dock.cpp
msgid "Preset"
-msgstr "Önayar"
+msgstr "Ön ayar"
#: editor/import_dock.cpp
msgid "Reimport"
@@ -4037,7 +4035,7 @@ msgstr "Sahneleri kaydet, tekrar içe aktar ve baştan başlat"
#: editor/import_dock.cpp
msgid "Changing the type of an imported file requires editor restart."
msgstr ""
-"İçe aktarılmış dosyanın tipini değiştirmek editörü baştan başlatılmasını "
+"İçe aktarılmış dosyanın tipini değiştirmek editörü yeniden başlatmanı "
"gerektiriyor."
#: editor/import_dock.cpp
@@ -6947,9 +6945,8 @@ msgstr ""
"'%s' düğümünden '%s' düğümüne, '%s' sinyali için '%s' bağlantı metodu eksik."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "[Ignore]"
-msgstr "(gözardı et)"
+msgstr "[Gözardı et]"
#: editor/plugins/script_text_editor.cpp
msgid "Line"
@@ -10558,6 +10555,11 @@ msgid "Make node as Root"
msgstr "Düğümü Kök düğüm yap"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "\"%s\" düğümü ve alt düğümleri silinsin mi?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "%d düğümleri silelim mi?"
@@ -12009,6 +12011,7 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "\"Use Custom Build\" must be enabled to use the plugins."
msgstr ""
+"Eklentileri kullanabilmek için \"Özel Derleme Kullan\" seçeneği aktif olmalı."
#: platform/android/export/export.cpp
msgid ""
@@ -12234,6 +12237,12 @@ msgstr ""
"CollisionShape2D'nin işlevini yerine getirmesi için ona bir şekil sağlanması "
"gerekmektedir. Lütfen onun için bir şekil kaynağı oluşturun!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12808,6 +12817,10 @@ msgstr "varyings yalnızca vertex işlevinde atanabilir."
msgid "Constants cannot be modified."
msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Şimdiki sahne hiç kaydedilmedi, lütfen çalıştırmadan önce kaydediniz."
+
#~ msgid "Not in resource path."
#~ msgstr "Kaynak yolunda deÄŸil."
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 03990a655e..edab41c9b6 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -2342,11 +2342,6 @@ msgid "There is no defined scene to run."
msgstr "Ðемає визначеної Ñцени Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-"Поточна Ñцена ніколи не була збережена, будь лаÑка, збережіть Ñ—Ñ— до запуÑку."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
@@ -10569,6 +10564,11 @@ msgid "Make node as Root"
msgstr "Зробити вузол кореневим"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Вилучити вузол «%s» Ñ– його дочірні запиÑи?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Вилучити %d вузлів?"
@@ -12275,6 +12275,12 @@ msgstr ""
"Ð”Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾ÑÑ‚Ñ– CollisionShape2D Ñлід надати форму. Будь "
"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12854,6 +12860,11 @@ msgstr "Змінні величини можна пов'Ñзувати лише
msgid "Constants cannot be modified."
msgstr "Сталі не можна змінювати."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr ""
+#~ "Поточна Ñцена ніколи не була збережена, будь лаÑка, збережіть Ñ—Ñ— до "
+#~ "запуÑку."
+
#~ msgid "Not in resource path."
#~ msgstr "Ðе в реÑурÑному шлÑху."
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 6985cbdc39..4f4dccd8bb 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -2296,10 +2296,6 @@ msgid "There is no defined scene to run."
msgstr ""
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10359,6 +10355,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
@@ -12011,6 +12012,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index ff214a7091..8db07bf4b0 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -12,12 +12,13 @@
# Steve Dang <itsnguu@outlook.com>, 2019, 2020.
# Peter Anh <peteranh3105@gmail.com>, 2019.
# DÅ©ng Äinh <dqdthanhthanh@gmail.com>, 2019.
+# Steve Dang <bynguu@outlook.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-02-02 08:51+0000\n"
-"Last-Translator: Steve Dang <itsnguu@outlook.com>\n"
+"PO-Revision-Date: 2020-07-28 09:51+0000\n"
+"Last-Translator: Steve Dang <bynguu@outlook.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/"
"godot/vi/>\n"
"Language: vi\n"
@@ -25,16 +26,16 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.11-dev\n"
+"X-Generator: Weblate 4.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Hàm convert() có đối số không hợp lệ, sử dụng các hằng TYPE_*."
+msgstr "Hàm convert() có loại đối số không hợp lệ, sử dụng các hằng TYPE_*."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
-msgstr ""
+msgstr "Mong đợi một chuỗi có độ dài 01 ký tự."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/mono/glue/gd_glue.cpp
@@ -1118,7 +1119,7 @@ msgstr "Äóng góp vào Godot Engine"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr "Sáng lập dự án"
+msgstr "Các đồng sáng lập dự án"
#: editor/editor_about.cpp
msgid "Lead Developer"
@@ -1126,7 +1127,7 @@ msgstr "Phát triển chính"
#: editor/editor_about.cpp
msgid "Project Manager "
-msgstr "Quản lí dự án "
+msgstr "Quản lí Dự án "
#: editor/editor_about.cpp
msgid "Developers"
@@ -1567,12 +1568,16 @@ msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
msgstr ""
+"Ná»n tảng yêu cầu dùng kiểu nén 'ETC' cho GLES2. Bật 'Nhập ETC' trong Cài đặt "
+"Dự án."
#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC2' texture compression for GLES3. Enable "
"'Import Etc 2' in Project Settings."
msgstr ""
+"Ná»n tảng yêu cầu dùng kiểu nén 'ETC2' cho GLES3. Bật 'Nhập ETC2' trong Cài "
+"đặt Dự án."
#: editor/editor_export.cpp
msgid ""
@@ -1581,6 +1586,9 @@ msgid ""
"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
"Enabled'."
msgstr ""
+"Ná»n tảng yêu cầu kiểu nén 'ETC' cho trình Ä‘iá»u khiển dá»± phòng GLES2.\n"
+"Chá»n kích hoạt 'Nhập ETC' trong Cài đặt Dá»± án, hoặc chá»n tắt 'Kích hoạt "
+"Trình Ä‘iá»u khiển Dá»± phòng'."
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
@@ -2340,10 +2348,6 @@ msgid "There is no defined scene to run."
msgstr "Không có cảnh được xác định để chạy."
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "Cảnh hiện tại chưa được lưu, hãy lưu nó trước khi chạy."
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "Không thể bắt đầu quá trình nhá»!"
@@ -2452,7 +2456,7 @@ msgstr "Thoát trình biên tập?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr "Mở Quản lý dự án?"
+msgstr "Mở Quản lý Dự án?"
#: editor/editor_node.cpp
msgid "Save & Quit"
@@ -2464,7 +2468,7 @@ msgstr "Lưu thay đổi trong các scene sau trước khi thoát?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
-msgstr "Lưu thay đổi trong các scene sau trước khi mở Project Manager?"
+msgstr "Lưu thay đổi trong các cảnh sau trước khi mở Quản lí Dự án?"
#: editor/editor_node.cpp
msgid ""
@@ -2527,7 +2531,7 @@ msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
-"Lá»—i nạp cảnh, nó phải trong Ä‘Æ°á»ng dẫn dá»± án. Sá»­ dụng 'Nhập vào' để mở cảnh, "
+"Lá»—i nạp cảnh, nó phải trong Ä‘Æ°á»ng dẫn dá»± án. Sá»­ dụng 'Nhập' để mở các cảnh, "
"sau đó lÆ°u lại trong Ä‘Æ°á»ng dẫn dá»± án."
#: editor/editor_node.cpp
@@ -2554,7 +2558,7 @@ msgid ""
"category."
msgstr ""
"Cảnh đã chá»n '%s' không tồn tại, chá»n má»™t cảnh hợp lệ?\n"
-"Bạn có thể thay đổi nó sau trong \"Cài đặt dự án\", nằm trong mục 'ứng dụng'."
+"Bạn có thể thay đổi nó sau trong \"Cài đặt Dự án\", nằm trong mục 'ứng dụng'."
#: editor/editor_node.cpp
msgid ""
@@ -2562,8 +2566,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"Chá»n '%s' không phải má»™t tệp cảnh, chá»n tệp cảnh hợp lệ?\n"
-"Bạn có thể thay đổi nó sau trong \"Cài đặt dự án\", nằm trong mục 'ứng dụng'."
+"'%s' không phải má»™t tệp phân cảnh, chá»n tệp phân cảnh hợp lệ?\n"
+"Bạn có thể thay đổi nó sau trong \"Cài đặt Dự án\", nằm trong mục 'ứng dụng'."
#: editor/editor_node.cpp
msgid "Save Layout"
@@ -2717,17 +2721,16 @@ msgstr "Làm lại"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "Linh tinh dự án hoặc công cụ toàn phân cảnh."
#: editor/editor_node.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Project"
-msgstr "Dự án"
+msgstr "Dá»± Ãn"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project Settings..."
-msgstr "List Project"
+msgstr "Cài đặt Dá»± Ãn"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
@@ -2754,7 +2757,7 @@ msgstr "Cài đặt mẫu xây dựng Android"
#: editor/editor_node.cpp
msgid "Open Project Data Folder"
-msgstr "Mở thư mục dữ liệu dự án"
+msgstr "Mở ThÆ° mục dữ liệu của Dá»± Ãn"
#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp
msgid "Tools"
@@ -2767,7 +2770,7 @@ msgstr "Lưu tài nguyên thành ..."
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr "Thoát danh sách dự án"
+msgstr "Thoát khá»i Danh sách Dá»± án"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/project_export.cpp
@@ -2799,6 +2802,11 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
+"Khi tuỳ chá»n này được bật, lúc xuất hoặc triển khai sẽ tạo má»™t tệp thá»±c thi "
+"tối giản nhất.\n"
+"Hệ thống tệp tin sẽ được cung cấp từ dự án bởi trình soạn thảo qua mạng.\n"
+"Trên ná»n tảng Android, triển khai sẽ sá»­ dụng cáp USB để có hiệu suất nhanh "
+"hÆ¡n. Tuỳ chá»n này tăng tốc Ä‘á»™ khi thá»­ nghiệm cho các trò chÆ¡i nặng."
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
@@ -2893,9 +2901,8 @@ msgid "Manage Editor Features..."
msgstr "Quản lý tính năng Trình biên tập"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Manage Export Templates..."
-msgstr "Quản lý mẫu Xuất ra"
+msgstr "Quản lý Các Mẫu Xuất Bản ..."
#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp
msgid "Help"
@@ -3005,7 +3012,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr "Quản lý đối tượng"
+msgstr "Quan Sát Viên"
#: editor/editor_node.cpp
msgid "Expand Bottom Panel"
@@ -3022,10 +3029,11 @@ msgstr "Không Lưu"
#: editor/editor_node.cpp
msgid "Android build template is missing, please install relevant templates."
msgstr ""
+"Mẫu xuất bản cho Android bị thiếu, vui lòng cài các mẫu xuất bản liên quan."
#: editor/editor_node.cpp
msgid "Manage Templates"
-msgstr "Quản lý Mẫu"
+msgstr "Quản lý Mẫu xuất bản"
#: editor/editor_node.cpp
msgid ""
@@ -3037,6 +3045,12 @@ msgid ""
"the \"Use Custom Build\" option should be enabled in the Android export "
"preset."
msgstr ""
+"Äiá»u này sẽ thiết lập dá»± án của bạn cho các bản dá»±ng Android tùy chỉnh bằng "
+"cách cài đặt nguồn mẫu thành \"res://android/build\".\n"
+"Bạn có thể áp dụng các sửa đổi và xây dựng APK tùy chỉnh khi xuất (thêm các "
+"mô-đun, thay đổi AndroidManifest.xml, ...).\n"
+"LÆ°u ý rằng để tạo các bản dá»±ng tùy chỉnh, tùy chá»n \"Sá»­ dụng Bản dá»±ng Tùy "
+"chỉnh\" phải được BẬT trong Cài đặt xuất Android."
#: editor/editor_node.cpp
msgid ""
@@ -3045,15 +3059,17 @@ msgid ""
"Remove the \"res://android/build\" directory manually before attempting this "
"operation again."
msgstr ""
+"Mẫu bản dựng cho Android đã được cài đặt trong dự án này sẽ không bị ghi "
+"đè.\n"
+"Xóa thủ công thư mục \"res://android/build\" trước khi thử lại thao tác này."
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
-msgstr "Nhập mẫu vào từ tệp nén ZIP"
+msgstr "Nạp các mẫu xuất bản bằng tệp ZIP"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Template Package"
-msgstr "Khung project"
+msgstr "Gói Ví Dụ"
#: editor/editor_node.cpp
msgid "Export Library"
@@ -3382,7 +3398,7 @@ msgstr "Tải"
#: editor/export_template_manager.cpp
msgid "Official export templates aren't available for development builds."
-msgstr ""
+msgstr "Các mẫu xuất bản chính thức không có sẵn cho các bản dựng phát triển."
#: editor/export_template_manager.cpp
msgid "(Missing)"
@@ -3402,23 +3418,23 @@ msgstr "Xóa template phiên bản '%s'?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
-msgstr ""
+msgstr "Không thể mở tệp zip các mẫu xuất bản."
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates: %s."
-msgstr ""
+msgstr "Äịnh dạng version.txt không hợp lệ bên trong các mẫu xuất bản: %s."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
-msgstr "Không thấy version.txt trong templates."
+msgstr "Không thấy version.txt trong các mẫu xuất bản."
#: editor/export_template_manager.cpp
msgid "Error creating path for templates:"
-msgstr ""
+msgstr "Lá»—i tạo Ä‘Æ°á»ng dẫn đến các mẫu xuất bản:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
-msgstr ""
+msgstr "Trích xuất các Mẫu xuất bản"
#: editor/export_template_manager.cpp
msgid "Importing:"
@@ -3480,6 +3496,8 @@ msgid ""
"Templates installation failed.\n"
"The problematic templates archives can be found at '%s'."
msgstr ""
+"Cài đặt các mẫu xuất bản thất bại.\n"
+"Các lưu trữ mẫu xuất bản có vấn đỠcó thể được tìm thấy tại '%s'."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3558,9 +3576,8 @@ msgid "Select Template File"
msgstr "Chá»n file template"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Godot Export Templates"
-msgstr "Quản lý mẫu Xuất ra"
+msgstr "Các mẫu xuất bản Godot"
#: editor/export_template_manager.cpp
msgid "Export Template Manager"
@@ -3568,7 +3585,7 @@ msgstr ""
#: editor/export_template_manager.cpp
msgid "Download Templates"
-msgstr "Tải các Mẫu"
+msgstr "Tải Xuống Các Mẫu Xuất Bản"
#: editor/export_template_manager.cpp
msgid "Select mirror from list: (Shift+Click: Open in Browser)"
@@ -3780,8 +3797,8 @@ msgid ""
"Include the files with the following extensions. Add or remove them in "
"ProjectSettings."
msgstr ""
-"Bao gồm các tệp tin với các phần mở rộng sau. Thêm hoặc loại bỠchúng trong "
-"Cài đặt Dự án."
+"Bao gồm các tệp tin với các phần mở rộng. Thêm hoặc loại bỠchúng trong Cài "
+"đặt Dự án."
#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -9412,6 +9429,8 @@ msgid ""
"Failed to export the project for platform '%s'.\n"
"Export templates seem to be missing or invalid."
msgstr ""
+"Không thể xuất bản dá»± án cho ná»n tảng '%s'.\n"
+"Mẫu xuất bản dÆ°á»ng nhÆ° bị thiếu hoặc không hợp lệ."
#: editor/project_export.cpp
msgid ""
@@ -9419,6 +9438,9 @@ msgid ""
"This might be due to a configuration issue in the export preset or your "
"export settings."
msgstr ""
+"Không thể xuất dá»± án cho ná»n tảng '%s'.\n"
+"Có thể là do vấn đỠcấu hình trong cài đặt xuất bản hoặc cài đặt xuất bản "
+"của bạn."
#: editor/project_export.cpp
msgid "Release"
@@ -9434,7 +9456,7 @@ msgstr ""
#: editor/project_export.cpp
msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
+msgstr "Các mẫu xuất bản cho ná»n tảng này bị thiếu/há»ng:"
#: editor/project_export.cpp
msgid "Presets"
@@ -9461,7 +9483,7 @@ msgstr ""
#: editor/project_export.cpp
msgid "Export all resources in the project"
-msgstr ""
+msgstr "Xuất ra tất cả tài nguyên dùng trong dự án"
#: editor/project_export.cpp
msgid "Export selected scenes (and dependencies)"
@@ -9490,6 +9512,8 @@ msgid ""
"Filters to exclude files/folders from project\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
+"Bá»™ lá»c loại trừ các tệp tin/thÆ° mục khá»i từ dá»± án\n"
+"(phân tách bằng dấu phẩy, ví dụ: *.json, *.txt, docs/*)"
#: editor/project_export.cpp
msgid "Patches"
@@ -9551,7 +9575,7 @@ msgstr ""
#: editor/project_export.cpp
msgid "Export Project"
-msgstr "Xuất dự án ra"
+msgstr "Xuất bản Dự án"
#: editor/project_export.cpp
msgid "Export mode?"
@@ -9573,11 +9597,11 @@ msgstr ""
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
-msgstr ""
+msgstr "Các mẫu xuất bản cho ná»n tảng này bị thiếu:"
#: editor/project_export.cpp
msgid "Manage Export Templates"
-msgstr "Quản lý mẫu Xuất ra"
+msgstr "Quản Lý Các Mẫu Xuất Bản"
#: editor/project_export.cpp
msgid "Export With Debug"
@@ -9597,6 +9621,7 @@ msgstr "Lỗi không thể mở gói, không phải dạng nén."
msgid ""
"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
msgstr ""
+"Tệp dự án \".zip\" không hợp lệ; trong nó không chứa tệp \"project.godot\"."
#: editor/project_manager.cpp
msgid "Please choose an empty folder."
@@ -9604,24 +9629,23 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
+msgstr "Chá»n tệp \"project.godot\" hoặc tệp \".zip\"."
#: editor/project_manager.cpp
msgid "This directory already contains a Godot project."
-msgstr ""
+msgstr "Thư mục này đã chứa một dự án Godot."
#: editor/project_manager.cpp
msgid "New Game Project"
-msgstr ""
+msgstr "Dự án Trò chơi Mới"
#: editor/project_manager.cpp
msgid "Imported Project"
-msgstr ""
+msgstr "Äã nạp Dá»± án"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid Project Name."
-msgstr "Kích thước font không hợp lệ."
+msgstr "Tên dự án không hợp lệ."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9633,33 +9657,35 @@ msgstr ""
#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
-msgstr ""
+msgstr "Nó là một ý tưởng tuyệt để đặt tên cho dự án của bạn."
#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
-msgstr ""
+msgstr "ÄÆ°á»ng dẫn dá»± án không hợp lệ (bạn có thay đổi Ä‘iá»u gì?)."
#: editor/project_manager.cpp
msgid ""
"Couldn't load project.godot in project path (error %d). It may be missing or "
"corrupted."
msgstr ""
+"Không thể nạp 'project.godot' trong Ä‘Æ°á»ng dẫn dá»± án (lá»—i %d). Nó có thể bị "
+"thiếu hoặc đã há»ng."
#: editor/project_manager.cpp
msgid "Couldn't edit project.godot in project path."
-msgstr ""
+msgstr "Không thể chỉnh sá»­a 'project.godot' trong Ä‘Æ°á»ng dẫn dá»± án."
#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
-msgstr ""
+msgstr "Không thể tạo 'project.godot' trong Ä‘Æ°á»ng dẫn dá»± án."
#: editor/project_manager.cpp
msgid "Rename Project"
-msgstr ""
+msgstr "Äổi tên Dá»± án"
#: editor/project_manager.cpp
msgid "Import Existing Project"
-msgstr ""
+msgstr "Nạp Dự án có sẵn"
#: editor/project_manager.cpp
msgid "Import & Edit"
@@ -9667,7 +9693,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Create New Project"
-msgstr ""
+msgstr "Tạo mới Dự án"
#: editor/project_manager.cpp
msgid "Create & Edit"
@@ -9675,7 +9701,7 @@ msgstr "Tạo & Sửa"
#: editor/project_manager.cpp
msgid "Install Project:"
-msgstr ""
+msgstr "Cài đặt Dự án:"
#: editor/project_manager.cpp
msgid "Install & Edit"
@@ -9683,15 +9709,15 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Project Name:"
-msgstr ""
+msgstr "Tên Dự án:"
#: editor/project_manager.cpp
msgid "Project Path:"
-msgstr ""
+msgstr "ÄÆ°á»ng dẫn Dá»± án:"
#: editor/project_manager.cpp
msgid "Project Installation Path:"
-msgstr ""
+msgstr "ÄÆ°á»ng dẫn cài đặt Dá»± án:"
#: editor/project_manager.cpp
msgid "Renderer:"
@@ -9727,25 +9753,23 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Unnamed Project"
-msgstr ""
+msgstr "Dự án không tên"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Missing Project"
-msgstr "Dự án"
+msgstr "Dự án bị lỗi"
#: editor/project_manager.cpp
msgid "Error: Project is missing on the filesystem."
-msgstr ""
+msgstr "Lỗi: Dự án bị thiếu trên hệ thống tệp tin."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Can't open project at '%s'."
-msgstr "Không thể chạy project"
+msgstr "Không thể mở dự án tại '%s'."
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
-msgstr ""
+msgstr "Bạn chắc chắn mở nhiá»u hÆ¡n má»™t dá»± án?"
#: editor/project_manager.cpp
msgid ""
@@ -9759,6 +9783,13 @@ msgid ""
"Warning: You won't be able to open the project with previous versions of the "
"engine anymore."
msgstr ""
+"Tệp dự án không chỉ định phiên bản Godot mà nó được tạo.\n"
+"\n"
+"%s\n"
+"\n"
+"Nếu bạn vẫn tiến hành mở dự án, tệp dự án sẽ được chuyển đổi sang cấu hình "
+"Godot hiện tại.\n"
+"Cảnh báo: Bạn sẽ không thể mở dự án với các phiên bản cũ của Godot nữa."
#: editor/project_manager.cpp
msgid ""
@@ -9771,12 +9802,21 @@ msgid ""
"Warning: You won't be able to open the project with previous versions of the "
"engine anymore."
msgstr ""
+"Tệp dự án được tạo bởi phiên bản Godot cũ và cần được chuyển đổi cho phiên "
+"bản này:\n"
+"\n"
+"%s\n"
+"\n"
+"Bạn có muốn chuyển đổi nó?\n"
+"Cảnh báo: Bạn sẽ không thể mở dự án với các phiên bản Godot cũ nữa."
#: editor/project_manager.cpp
msgid ""
"The project settings were created by a newer engine version, whose settings "
"are not compatible with this version."
msgstr ""
+"Các cài đặt dự án đã được tạo bởi phiên bản Godot mới, có các cài đặt không "
+"tương thích với phiên bản này."
#: editor/project_manager.cpp
msgid ""
@@ -9784,53 +9824,67 @@ msgid ""
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
msgstr ""
+"Không thể chạy dá»± án: chÆ°a chá»n phân cảnh chính.\n"
+"Äể chá»n phân cảnh chính, mở \"Cài đặt Dá»± án\" sau đó vào mục \"Ứng dụng\"."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Không thể chạy dự án: Các tài sản chưa được nạp.\n"
+"Vui lòng thiết lập dự án để kích hoạt nạp tài sản ban đầu."
#: editor/project_manager.cpp
msgid "Are you sure to run %d projects at once?"
-msgstr ""
+msgstr "Bạn có chắc chắn chạy các dự án %d cùng lúc?"
#: editor/project_manager.cpp
msgid ""
"Remove %d projects from the list?\n"
"The project folders' contents won't be modified."
msgstr ""
+"Gỡ các dá»± án %d khá»i danh sách?\n"
+"Nội dung các thư mục dự án sẽ không được sửa đổi."
#: editor/project_manager.cpp
msgid ""
"Remove this project from the list?\n"
"The project folder's contents won't be modified."
msgstr ""
+"Gỡ dá»± án này khá»i danh sách?\n"
+"Nội dung của thư mục dự án sẽ không được sửa đổi."
#: editor/project_manager.cpp
msgid ""
"Remove all missing projects from the list?\n"
"The project folders' contents won't be modified."
msgstr ""
+"Gỡ tất cả dá»± án bị há»ng khá»i danh sách?\n"
+"Nội dung các thư mục dự án sẽ không bị sửa đổi."
#: editor/project_manager.cpp
msgid ""
"Language changed.\n"
"The interface will update after restarting the editor or project manager."
msgstr ""
+"Äã thay đổi ngôn ngữ.\n"
+"Giao diện sẽ cập nhật sau khi khởi động lại trình biên tập hoặc trình quản "
+"lí dự án."
#: editor/project_manager.cpp
msgid ""
"Are you sure to scan %s folders for existing Godot projects?\n"
"This could take a while."
msgstr ""
+"Bạn có chắc chắn quét các thư mục %s để tìm các dự án Godot có sẵn?\n"
+"Äiá»u này sẽ mất chút thá»i gian."
#: editor/project_manager.cpp
msgid "Project Manager"
-msgstr ""
+msgstr "Trình quản lý Dự án"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Projects"
msgstr "Dự án"
@@ -9848,7 +9902,7 @@ msgstr "Chá»n má»™t Folder để Quét"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr "Tạo Project"
+msgstr "Tạo Dá»± Ãn"
#: editor/project_manager.cpp
#, fuzzy
@@ -9857,7 +9911,7 @@ msgstr "Xóa Animation"
#: editor/project_manager.cpp
msgid "Templates"
-msgstr "Khung project"
+msgstr "Thư Viện"
#: editor/project_manager.cpp
msgid "Restart Now"
@@ -9865,16 +9919,15 @@ msgstr "Restart ngay"
#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Không thể chạy project"
+msgstr "Không thể chạy dự án"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"You currently don't have any projects.\n"
"Would you like to explore official example projects in the Asset Library?"
msgstr ""
-"Hiện giỠbạn không có project nào.\n"
-"Bạn có muốn xem các project official ví dụ trên Asset Library không?"
+"Hiện tại bạn không có bất kỳ dự án nào.\n"
+"Bạn có muốn xem qua các dự án ví dụ trên Thư Viện không?"
#: editor/project_manager.cpp
msgid ""
@@ -9882,6 +9935,9 @@ msgid ""
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
+"Há»™p tìm kiếm lá»c các dá»± án theo tên và phần cuối Ä‘Æ°á»ng dẫn.\n"
+"Äể lá»c các dá»± án theo tên và Ä‘Æ°á»ng dẫn đầy đủ, truy vấn phải chứa ít nhất "
+"một ký tự '/'."
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -10107,7 +10163,7 @@ msgstr ""
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr ""
+msgstr "Cài đặt Dự án (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
@@ -10488,6 +10544,11 @@ msgid "Make node as Root"
msgstr "Gán nút là nút Gốc"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "Xoá nút \"%s\" và các nút con của nó?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "Xoá %d nút?"
@@ -10906,9 +10967,8 @@ msgid "Class Name:"
msgstr "Lá»›p:"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template:"
-msgstr "Khung project"
+msgstr "Bản mẫu:"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -11941,6 +12001,8 @@ msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
msgstr ""
+"Mẫu xuất bản cho Android chưa được cài đặt trong dự án. Cài đặt nó từ menu "
+"Dá»± Ãn."
#: platform/android/export/export.cpp
msgid "Invalid public key for APK expansion."
@@ -11982,6 +12044,8 @@ msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
msgstr ""
+"Cố gắng xây dựng từ một mẫu xuất bản tùy chỉnh, nhưng không có thông tin "
+"phiên bản nào tồn tại. Vui lòng cài đặt lại từ menu 'Dự án'."
#: platform/android/export/export.cpp
msgid ""
@@ -11990,16 +12054,22 @@ msgid ""
" Godot Version: %s\n"
"Please reinstall Android build template from 'Project' menu."
msgstr ""
+"Phiên bản xây dựng Android không khớp:\n"
+" Mẫu xuất bản được cài đặt: %s\n"
+" Phiên bản Godot sử dụng: %s\n"
+"Vui lòng cài đặt lại mẫu xuất bản Android từ menu 'Dá»± Ãn'."
#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
-msgstr ""
+msgstr "Äang dá»±ng dá»± án Android (gradle)"
#: platform/android/export/export.cpp
msgid ""
"Building of Android project failed, check output for the error.\n"
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
+"Xây dựng dự án Android không thành công, kiểm tra lỗi đầu ra.\n"
+"Hoặc truy cập 'docs.godotengine.org' xem tài liệu xây dựng Android."
#: platform/android/export/export.cpp
msgid "No build apk generated at: "
@@ -12015,7 +12085,7 @@ msgstr ""
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
+msgstr "App Store Team ID không được chỉ định - không thể cấu hình dự án."
#: platform/iphone/export/export.cpp
#, fuzzy
@@ -12163,6 +12233,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12591,6 +12667,8 @@ msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
+"Environment mặc định được chỉ định trong Cài đặt Dự án (Rendering -> "
+"Environment -> Default Environment) không thể nạp được."
#: scene/main/viewport.cpp
msgid ""
@@ -12633,6 +12711,9 @@ msgstr ""
msgid "Constants cannot be modified."
msgstr "Không thể chỉnh sửa hằng số."
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "Cảnh hiện tại chưa được lưu, hãy lưu nó trước khi chạy."
+
#, fuzzy
#~ msgid "Revert"
#~ msgstr "Trở lại"
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index f9dc64aea2..e344be12e9 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -3,7 +3,7 @@
# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md).
# This file is distributed under the same license as the Godot source code.
# 360119124 <360119124@qq.com>, 2018.
-# 柠檬æ€æ‰‹ <lemonkiller@gmail.com>, 2018.
+# 柠檬æ€æ‰‹ <lemonkiller@gmail.com>, 2018, 2020.
# 纯æ´çš„å蛋 <tqj.zyy@gmail.com>, 2016.
# 孤月è“风 <trlanfeng@foxmail.com>, 2016.
# å´äº®å¼Ÿ <wu@liangdi.me>, 2017.
@@ -34,7 +34,7 @@
# 刘庆文 <liuqingwen@163.com>, 2018.
# Haowen Liu <liu.haowen.andy@gmail.com>, 2018.
# tangdou1 <1093505442@qq.com>, 2018, 2019.
-# yzt <834950797@qq.com>, 2018, 2019.
+# yzt <834950797@qq.com>, 2018, 2019, 2020.
# DKLost <514dklost@gmail.com>, 2018.
# thanksshu <hezihanshangyuan@gmail.com>, 2018.
# Jsheng <yangea@outlook.com>, 2019.
@@ -66,12 +66,14 @@
# Tim Bao <honiebao@gmail.com>, 2020.
# UnluckyNinja <unluckyninja1994@gmail.com>, 2020.
# æ— åŒæµ <1257678024@qq.com>, 2020.
+# ZhangXinyu <zhang2xinyu@outlook.com>, 2020.
+# Silence Tai <silence.m@hotmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2020-06-25 08:40+0000\n"
-"Last-Translator: UnluckyNinja <unluckyninja1994@gmail.com>\n"
+"PO-Revision-Date: 2020-07-26 15:41+0000\n"
+"Last-Translator: yzt <834950797@qq.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -84,7 +86,7 @@ msgstr ""
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "convert()çš„å‚数类型无效,请使用TYPE_*常é‡ã€‚"
+msgstr "convert() çš„å‚数类型无效,请使用 TYPE_* 常é‡ã€‚"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
@@ -2008,7 +2010,7 @@ msgstr "属性说明"
#: editor/editor_help.cpp
msgid "(value)"
-msgstr "(值)"
+msgstr "(值)"
#: editor/editor_help.cpp
msgid ""
@@ -2348,10 +2350,6 @@ msgid "There is no defined scene to run."
msgstr "没有设置è¦æ‰§è¡Œçš„场景。"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "当å‰åœºæ™¯å°šæœªä¿å­˜ï¼Œè¯·ä¿å­˜åŽå†å°è¯•æ‰§è¡Œã€‚"
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr "无法å¯åŠ¨å­è¿›ç¨‹ï¼"
@@ -2635,15 +2633,15 @@ msgstr "é¢æ¿ä½ç½®"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr "无干扰模å¼"
+msgstr "专注模å¼"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
-msgstr "切æ¢æ— å¹²æ‰°æ¨¡å¼ã€‚"
+msgstr "切æ¢ä¸“注模å¼ã€‚"
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr "添加新场景。"
+msgstr "添加场景。"
#: editor/editor_node.cpp
msgid "Scene"
@@ -2659,11 +2657,11 @@ msgstr "å¤åˆ¶æ–‡æœ¬"
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr "下一个标签页"
+msgstr "下一标签"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr "上一个标签"
+msgstr "上一标签"
#: editor/editor_node.cpp
msgid "Filter Files..."
@@ -6953,7 +6951,7 @@ msgstr "å–消折å æ‰€æœ‰è¡Œ"
#: editor/plugins/script_text_editor.cpp
msgid "Clone Down"
-msgstr "æ‹·è´åˆ°ä¸‹ä¸€è¡Œ"
+msgstr "å¤åˆ¶åˆ°ä¸‹ä¸€è¡Œ"
#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
@@ -7370,7 +7368,7 @@ msgstr "使用å¸é™„"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
-msgstr "仰视图。"
+msgstr "仰视图"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View"
@@ -9803,7 +9801,7 @@ msgid ""
"one `/` character."
msgstr ""
"æœç´¢æ¡†æ ¹æ®å称和路径的末尾部分æ¥è¿‡æ»¤é¡¹ç›®ã€‚\n"
-"如果è¦æ ¹æ®å称和完整路径过滤,æœç´¢å†…容应至少包å«ä¸€ä¸ªâ€œ/â€å­—符。"
+"如果è¦æ ¹æ®å称和完整路径过滤,æœç´¢å†…容应至少包å«ä¸€ä¸ª `/` 字符。"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -10401,6 +10399,11 @@ msgid "Make node as Root"
msgstr "将节点设置为根节点"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "是å¦åˆ é™¤èŠ‚点“%sâ€åŠå…¶å­èŠ‚点?"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "是å¦åˆ é™¤%d个节点?"
@@ -11677,7 +11680,7 @@ msgstr "生æˆå‡½æ•°"
#: modules/visual_script/visual_script_editor.cpp
msgid "Refresh Graph"
-msgstr "刷新图"
+msgstr "刷新节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit Member"
@@ -12040,6 +12043,12 @@ msgid ""
"shape resource for it!"
msgstr "形状资æºå¿…须是通过CollisionShape2D节点的shape属性创建的ï¼"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12320,7 +12329,7 @@ msgid ""
"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
"parent Path's Curve resource."
msgstr ""
-"PathFollowçš„ROTATION_ORIENTEDè¦æ±‚在其父路径的Curve资æºä¸­å¯ç”¨â€œå‘上矢é‡â€ã€‚"
+"PathFollow çš„ ROTATION_ORIENTED è¦æ±‚在其父路径的 Curve 资æºä¸­å¯ç”¨â€œå‘上矢é‡â€ã€‚"
#: scene/3d/physics_body.cpp
msgid ""
@@ -12558,6 +12567,9 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
msgid "Constants cannot be modified."
msgstr "ä¸å…许修改常é‡ã€‚"
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "当å‰åœºæ™¯å°šæœªä¿å­˜ï¼Œè¯·ä¿å­˜åŽå†å°è¯•æ‰§è¡Œã€‚"
+
#~ msgid "Not in resource path."
#~ msgstr "ä¸åœ¨èµ„æºè·¯å¾„下。"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 90c85892f6..d4e1bf62dd 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -2406,10 +2406,6 @@ msgid "There is no defined scene to run."
msgstr "沒有å¯ä»¥å·²å®šç¾©çš„場景å¯ä»¥é‹è¡Œã€‚"
#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Could not start subprocess!"
msgstr ""
@@ -10813,6 +10809,11 @@ msgstr "儲存場景"
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "删除root node \"%s\"?"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete %d nodes?"
msgstr "ä¸é¸"
@@ -12533,6 +12534,12 @@ msgid ""
"shape resource for it!"
msgstr ""
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index 129a3fdad4..73b99ee161 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -28,7 +28,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-06-22 06:40+0000\n"
+"PO-Revision-Date: 2020-07-07 15:56+0000\n"
"Last-Translator: BinotaLIU <me@binota.org>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hant/>\n"
@@ -52,7 +52,7 @@ msgstr "應為一個長度為 1(一個字元)的字串。"
#: modules/mono/glue/gd_glue.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr "欲解碼的ä½å…ƒçµ„ä¸è¶³æˆ–æ ¼å¼ç„¡æ•ˆã€‚"
+msgstr "ä½å…ƒçµ„長度ä¸è¶³ä»¥é€²è¡Œè§£ç¢¼æˆ–或格å¼ç„¡æ•ˆã€‚"
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
@@ -196,7 +196,7 @@ msgstr "更改多個動畫的關éµç•«æ ¼æ•¸å€¼"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Call"
-msgstr "更改多個動畫的回調"
+msgstr "更改多個動畫的呼å«"
#: editor/animation_track_editor.cpp
msgid "Change Animation Length"
@@ -302,7 +302,7 @@ msgstr "ä¸é€£çºŒ"
#: editor/animation_track_editor.cpp
msgid "Trigger"
-msgstr "觸發器"
+msgstr "觸發程åº"
#: editor/animation_track_editor.cpp
msgid "Capture"
@@ -408,7 +408,7 @@ msgstr "é‡æ–°æŽ’列軌é“"
#: editor/animation_track_editor.cpp
msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr "變形軌åªèƒ½å¥—用至 Spatial 節點。"
+msgstr "變形軌僅å¯å¥—用至 Spatial 節點。"
#: editor/animation_track_editor.cpp
msgid ""
@@ -417,18 +417,18 @@ msgid ""
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
msgstr ""
-"音訊軌åªèƒ½æŒ‡å‘以下類型的節點:\n"
+"音訊軌僅å¯æŒ‡å‘以下類型節點:\n"
"-AudioStreamPlayer\n"
"-AudioStreamPlayer2D\n"
"-AudioStreamPlayer3D"
#: editor/animation_track_editor.cpp
msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr "動畫軌åªèƒ½æŒ‡å‘ AnimationPlayer 節點。"
+msgstr "動畫軌僅å¯æŒ‡å‘ AnimationPlayer 節點。"
#: editor/animation_track_editor.cpp
msgid "An animation player can't animate itself, only other players."
-msgstr "å‹•ç•« Player 無法播放自己,åªèƒ½æ’­æ”¾å…¶ä»– Player。"
+msgstr "å‹•ç•« Player 無法播放自己,僅å¯æ’­æ”¾å…¶ä»– Player。"
#: editor/animation_track_editor.cpp
msgid "Not possible to add a new track without a root"
@@ -460,7 +460,7 @@ msgstr "添加軌é“é—œéµç•«æ ¼"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
-msgstr "無效的軌é“路徑,無法新增方法關éµç•«æ ¼ã€‚"
+msgstr "無效軌é“路徑,無法新增方法關éµç•«æ ¼ã€‚"
#: editor/animation_track_editor.cpp
msgid "Add Method Track Key"
@@ -503,11 +503,12 @@ msgid ""
"Alternatively, use an import preset that imports animations to separate "
"files."
msgstr ""
-"這個動畫是由外部匯入之場景æ供,套用於匯入軌é“的修改將ä¸æœƒè¢«ä¿å­˜ã€‚\n"
+"該動畫屬於外部匯入之場景,套用於匯入軌é“的修改將ä¸æœƒè¢«ä¿å­˜ã€‚\n"
"\n"
-"è‹¥è¦é–‹å•Ÿã€ŒåŠ å…¥å®¢åˆ¶è»Œã€çš„功能,請在場景在匯入設定中將「動畫 -> 儲存ã€è¨­å®šç‚º\n"
-"「檔案ã€ï¼Œä¸¦å•Ÿç”¨ã€Œå‹•ç•« -> ä¿å­˜å®¢åˆ¶è»Œã€ï¼Œç„¶å¾Œé‡æ–°åŒ¯å…¥ã€‚\n"
-"或者也å¯ä½¿ç”¨æœƒå°‡å‹•ç•«åŒ¯å…¥ç¨ç«‹æª”案的匯入 Preset。"
+"è‹¥è¦é–‹å•Ÿã€ŒåŠ å…¥å®¢åˆ¶è»Œã€çš„功能,請在場景在匯入設定中將 [Animation] -> "
+"[Storage] 設定為\n"
+"[Files],並啟用 [Animation] -> [Keep Custom Tracks],然後é‡æ–°åŒ¯å…¥ã€‚\n"
+"å¦å¯ä½¿ç”¨æœƒå°‡å‹•ç•«åŒ¯å…¥ç¨ç«‹æª”案的匯入é è¨­è¨­å®šã€‚"
#: editor/animation_track_editor.cpp
msgid "Warning: Editing imported animation"
@@ -597,7 +598,7 @@ msgstr "清除動畫"
#: editor/animation_track_editor.cpp
msgid "Pick the node that will be animated:"
-msgstr "é¸æ“‡è¦è¨­å®šå‹•ç•«çš„節點:"
+msgstr "é¸æ“‡æ¬²è¨­å®šå‹•ç•«ä¹‹ç¯€é»žï¼š"
#: editor/animation_track_editor.cpp
msgid "Use Bezier Curves"
@@ -698,7 +699,7 @@ msgstr "行號:"
#: editor/code_editor.cpp
msgid "%d replaced."
-msgstr "å·²å–代了 %d 件。"
+msgstr "å·²å–代 %d 件。"
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "%d match."
@@ -714,7 +715,7 @@ msgstr "å€åˆ†å¤§å°å¯«"
#: editor/code_editor.cpp editor/find_in_files.cpp
msgid "Whole Words"
-msgstr "æœå°‹å®Œæ•´å–®å­—"
+msgstr "æœå°‹å®Œæ•´å–®è©ž"
#: editor/code_editor.cpp editor/rename_dialog.cpp
msgid "Replace"
@@ -759,16 +760,15 @@ msgstr "警告"
#: editor/code_editor.cpp
msgid "Line and column numbers."
-msgstr "行號和列號。"
+msgstr "行號與列號。"
#: editor/connections_dialog.cpp
msgid "Method in target node must be specified."
-msgstr "必須指定目標節點的方法。"
+msgstr "必須指定目標節點方法。"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Method name must be a valid identifier."
-msgstr "å稱ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符:"
+msgstr "方法å稱必須為有效識別符。"
#: editor/connections_dialog.cpp
msgid ""
@@ -790,7 +790,7 @@ msgstr "自訊號:"
#: editor/connections_dialog.cpp
msgid "Scene does not contain any script."
-msgstr "場景中無任何的腳本。"
+msgstr "場景中無任何腳本。"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
@@ -819,7 +819,7 @@ msgstr "é¡å¤–呼å«å¼•æ•¸ï¼š"
#: editor/connections_dialog.cpp
msgid "Receiver Method:"
-msgstr "Receiver 方法:"
+msgstr "接收器方法:"
#: editor/connections_dialog.cpp
msgid "Advanced"
@@ -1028,7 +1028,7 @@ msgstr "é–‹å•Ÿ"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
-msgstr "æ“有者:"
+msgstr "為下列之æ“有者:"
#: editor/dependency_editor.cpp
msgid "Remove selected files from the project? (Can't be restored)"
@@ -1101,7 +1101,7 @@ msgstr "沒有明確從屬關係的資æºï¼š"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
-msgstr "改變字典éµ"
+msgstr "改變字典索引éµ"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Value"
@@ -1179,7 +1179,7 @@ msgid ""
"respective copyright statements and license terms."
msgstr ""
"Godot Engine ä¾è³´æ•¸å€‹è‡ªç”±ä¸”開放原始碼的第三方函å¼åº«ï¼Œæ‰€æœ‰å‡½å¼åº«çš†ç›¸å®¹æ–¼ MIT "
-"授權æ¢æ¬¾ã€‚以下是這些第三方元件的完整列表於其å„自之著作權宣告與授權æ¢æ¬¾ã€‚"
+"授權æ¢æ¬¾ã€‚以下為這些第三方元件的完整列表與其著作權宣告åŠæŽˆæ¬Šæ¢æ¬¾ã€‚"
#: editor/editor_about.cpp
msgid "All Components"
@@ -1244,39 +1244,39 @@ msgstr "新增效果"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
-msgstr "é‡æ–°å‘½å音訊 Bus"
+msgstr "é‡æ–°å‘½å音訊匯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Change Audio Bus Volume"
-msgstr "更改音訊 Bus 音é‡"
+msgstr "更改音訊匯æµæŽ’音é‡"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr "切æ›éŸ³è¨Š Bus çš„ Solo"
+msgstr "切æ›éŸ³è¨ŠåŒ¯æµæŽ’ Solo"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr "éœéŸ³ï¼å–消éœéŸ³éŸ³è¨Š Bus"
+msgstr "éœéŸ³ï¼å–消éœéŸ³éŸ³è¨ŠåŒ¯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr "忽略ï¼å–消忽略音訊 Bus 效果"
+msgstr "忽略ï¼å–消忽略音訊匯æµæŽ’效果"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr "é¸æ“‡ Bus 輸出地點"
+msgstr "é¸æ“‡éŸ³è¨ŠåŒ¯æµæŽ’輸出ä½ç½®"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr "新增音效 Bus 效果"
+msgstr "新增音效匯æµæŽ’效果"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr "移動 Bus 效果"
+msgstr "移動匯æµæŽ’效果"
#: editor/editor_audio_buses.cpp
msgid "Delete Bus Effect"
-msgstr "刪除 Bus 效果"
+msgstr "刪除匯æµæŽ’效果"
#: editor/editor_audio_buses.cpp
msgid "Drag & drop to rearrange."
@@ -1296,7 +1296,7 @@ msgstr "忽略效果"
#: editor/editor_audio_buses.cpp
msgid "Bus options"
-msgstr "Bus é¸é …"
+msgstr "匯æµæŽ’é¸é …"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1317,31 +1317,31 @@ msgstr "音訊"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
-msgstr "新增音訊 Bus"
+msgstr "新增音訊匯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr "Master Bus ä¸å¯åˆªé™¤ï¼"
+msgstr "ä¸å¯åˆªé™¤ä¸»åŒ¯æµæŽ’ï¼"
#: editor/editor_audio_buses.cpp
msgid "Delete Audio Bus"
-msgstr "刪除音訊 Bus"
+msgstr "刪除音訊匯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Duplicate Audio Bus"
-msgstr "é‡è¤‡éŸ³è¨Š Bus"
+msgstr "é‡è¤‡éŸ³è¨ŠåŒ¯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Reset Bus Volume"
-msgstr "é‡è¨­ Bus 音é‡"
+msgstr "é‡è¨­åŒ¯æµæŽ’音é‡"
#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr "移動音訊 Bus"
+msgstr "移動音訊匯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As..."
-msgstr "å¦å­˜éŸ³è¨Š Bus é…置為..."
+msgstr "將音訊匯æµæŽ’é…ç½®å¦å­˜ç‚º..."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout..."
@@ -1349,7 +1349,7 @@ msgstr "æ–°é…置的ä½ç½®..."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr "開啟音訊 Bus é…ç½®"
+msgstr "開啟音訊匯æµæŽ’é…ç½®"
#: editor/editor_audio_buses.cpp
msgid "There is no '%s' file."
@@ -1361,7 +1361,7 @@ msgstr "ç•«é¢é…ç½®"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr "無效的檔案,或該檔案ä¸æ˜¯éŸ³è¨Š Bus é…置檔。"
+msgstr "無效檔案或該檔案並éžéŸ³è¨ŠåŒ¯æµæŽ’é…置檔。"
#: editor/editor_audio_buses.cpp
msgid "Error saving file: %s"
@@ -1369,11 +1369,11 @@ msgstr "無法ä¿å­˜æª”案:%s"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr "新增 Bus"
+msgstr "新增匯æµæŽ’"
#: editor/editor_audio_buses.cpp
msgid "Add a new Audio Bus to this layout."
-msgstr "新增一個新的音訊 Bus 至該é…置。"
+msgstr "新增一個新的音訊匯æµæŽ’至該é…置。"
#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
@@ -1383,7 +1383,7 @@ msgstr "載入"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr "讀å–ç¾å­˜çš„ Bus é…置。"
+msgstr "讀å–ç¾æœ‰çš„匯æµæŽ’é…置。"
#: editor/editor_audio_buses.cpp
msgid "Save As"
@@ -1391,7 +1391,7 @@ msgstr "å¦å­˜æ–°æª”"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr "將該 Bus é…ç½®ä¿å­˜è‡³æª”案。"
+msgstr "將該匯æµæŽ’é…ç½®ä¿å­˜è‡³æª”案。"
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
@@ -1399,11 +1399,11 @@ msgstr "載入é è¨­"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr "載入é è¨­çš„ Bus é…置。"
+msgstr "載入é è¨­åŒ¯æµæŽ’é…置。"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
-msgstr "建立新的 Bus é…置。"
+msgstr "建立新匯æµæŽ’é…置。"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1419,7 +1419,7 @@ msgstr "ä¸å¯èˆ‡ç¾å­˜çš„引擎類別å稱è¡çªã€‚"
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing built-in type name."
-msgstr "ä¸å¯èˆ‡å…§å»ºçš„列表å稱è¡çªã€‚"
+msgstr "ä¸å¯èˆ‡å…§å»ºçš„類別å稱è¡çªã€‚"
#: editor/editor_autoload_settings.cpp
msgid "Must not collide with an existing global constant name."
@@ -1484,7 +1484,7 @@ msgstr "å稱"
#: editor/editor_autoload_settings.cpp
msgid "Singleton"
-msgstr "單例 (Singleton)"
+msgstr "單例"
#: editor/editor_data.cpp editor/inspector_dock.cpp
msgid "Paste Params"
@@ -1512,7 +1512,7 @@ msgstr "[未ä¿å­˜]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first."
-msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹åŸºç¤Žçš„資料夾。"
+msgstr "è«‹å…ˆé¸æ“‡åŸºç¤Žè³‡æ–™å¤¾ã€‚"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
@@ -1557,15 +1557,16 @@ msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
msgstr ""
-"目標平å°ä¸Šçš„ GLES2 必須使用「ETCã€ç´‹ç†å£“縮。請在專案設定中啟用「匯入 ETCã€ã€‚"
+"目標平å°ä¸Šçš„ GLES2 必須使用「ETCã€ç´‹ç†å£“縮。請在專案設定中啟用「Import "
+"Etcã€ã€‚"
#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC2' texture compression for GLES3. Enable "
"'Import Etc 2' in Project Settings."
msgstr ""
-"目標平å°ä¸Šçš„ GLES3 必須使用「ETC2ã€ç´‹ç†å£“縮。請在專案設定中啟用「匯入 "
-"ETC2ã€ã€‚"
+"目標平å°ä¸Šçš„ GLES3 必須使用「ETC2ã€ç´‹ç†å£“縮。請在專案設定中啟用「Import Etc "
+"2ã€ã€‚"
#: editor/editor_export.cpp
msgid ""
@@ -1575,7 +1576,7 @@ msgid ""
"Enabled'."
msgstr ""
"目標平å°ä¸Šçš„ GLES2 回退驅動器功能必須使用「ETCã€ç´‹ç†å£“縮。\n"
-"請在專案設定中啟用「匯入 ETCã€æˆ–是ç¦ç”¨ã€Œå•Ÿç”¨é©…動器回退ã€ã€‚"
+"請在專案設定中啟用「Import Etcã€æˆ–是ç¦ç”¨ã€ŒDriver Fallback Enabledã€ã€‚"
#: editor/editor_export.cpp platform/android/export/export.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
@@ -1587,7 +1588,7 @@ msgstr "找ä¸åˆ°è‡ªå®šç¾©åµéŒ¯æ¨£æ¿ã€‚"
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom release template not found."
-msgstr "找ä¸åˆ°è‡ªå®šç¾©é‡‹å‡ºæ¨£æ¿ã€‚"
+msgstr "找ä¸åˆ°è‡ªå®šç¾©ç™¼è¡Œæ¨£æ¿ã€‚"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:"
@@ -1595,7 +1596,7 @@ msgstr "找ä¸åˆ°æ¨£æ¿æª”案:"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr "匯出 32 ä½å…ƒæª”時,內嵌的 PCK 大å°ä¸å¾—è¶…éŽ 4 GB。"
+msgstr "匯出 32 ä½å…ƒæª”時,內嵌 PCK 大å°ä¸å¾—è¶…éŽ 4 GB。"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -1627,15 +1628,15 @@ msgstr "檔案系統與匯入 Dock"
#: editor/editor_feature_profile.cpp
msgid "Erase profile '%s'? (no undo)"
-msgstr "確定è¦æ¸…除 Profile「%sã€å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰"
+msgstr "確定è¦æ¸…除設定檔「%sã€å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰"
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
-msgstr "Profile 必須為一個有效的檔案å稱,並且ä¸åŒ…å«ã€Œ.ã€"
+msgstr "設定檔必須為有效檔å,且ä¸å¯åŒ…å«ã€Œ.ã€"
#: editor/editor_feature_profile.cpp
msgid "Profile with this name already exists."
-msgstr "已有相åŒå稱的 Profile 存在。"
+msgstr "已有相åŒå稱的設定檔存在。"
#: editor/editor_feature_profile.cpp
msgid "(Editor Disabled, Properties Disabled)"
@@ -1677,11 +1678,11 @@ msgstr "檔案「%sã€çš„æ ¼å¼ç„¡æ•ˆï¼Œå·²ä¸­æ­¢åŒ¯å…¥ã€‚"
msgid ""
"Profile '%s' already exists. Remove it first before importing, import "
"aborted."
-msgstr "Profile「%sã€å·²ç¶“存在。匯入å‰è«‹å…ˆå°‡å…¶ç§»é™¤ã€‚已中止匯入。"
+msgstr "設定檔「%sã€å·²å­˜åœ¨ã€‚匯入å‰è«‹å…ˆå°‡å…¶ç§»é™¤ã€‚已中止匯入。"
#: editor/editor_feature_profile.cpp
msgid "Error saving profile to path: '%s'."
-msgstr "ä¿å­˜ Profile 至路徑「%sã€æ™‚發生錯誤。"
+msgstr "在下列路徑ä¿å­˜è¨­å®šæª”時發生錯誤:%s。"
#: editor/editor_feature_profile.cpp
msgid "Unset"
@@ -1689,7 +1690,7 @@ msgstr "未設定"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
-msgstr "ç›®å‰ç‰ˆæœ¬ï¼š"
+msgstr "ç›®å‰è¨­å®šæª”:"
#: editor/editor_feature_profile.cpp
msgid "Make Current"
@@ -1712,7 +1713,7 @@ msgstr "匯出"
#: editor/editor_feature_profile.cpp
msgid "Available Profiles:"
-msgstr "å¯ç”¨çš„ Profile:"
+msgstr "å¯ç”¨è¨­å®šæª”:"
#: editor/editor_feature_profile.cpp
msgid "Class Options"
@@ -1720,31 +1721,31 @@ msgstr "類別é¸é …"
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
-msgstr "新增 Profile å稱:"
+msgstr "新增設定檔å稱:"
#: editor/editor_feature_profile.cpp
msgid "Erase Profile"
-msgstr "清除 Profile"
+msgstr "清除設定檔"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
-msgstr "Godot 功能 Profile"
+msgstr "Godot 功能設定檔"
#: editor/editor_feature_profile.cpp
msgid "Import Profile(s)"
-msgstr "匯入 Profile"
+msgstr "匯入設定檔"
#: editor/editor_feature_profile.cpp
msgid "Export Profile"
-msgstr "匯出 Profile"
+msgstr "匯出設定檔"
#: editor/editor_feature_profile.cpp
msgid "Manage Editor Feature Profiles"
-msgstr "管ç†ç·¨è¼¯å™¨åŠŸèƒ½ Profile"
+msgstr "管ç†ç·¨è¼¯å™¨åŠŸèƒ½è¨­å®šæª”"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
-msgstr "é¸æ“‡ç›®å‰çš„資料夾"
+msgstr "é¸æ“‡ç›®å‰è³‡æ–™å¤¾"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1865,7 +1866,7 @@ msgstr "é‡æ–°æ•´ç†æª”案。"
#: editor/editor_file_dialog.cpp
msgid "(Un)favorite current folder."
-msgstr "將目å‰çš„資料夾新增或移除我的最愛。"
+msgstr "將目å‰è³‡æ–™å¤¾æ–°å¢žæˆ–移除至我的最愛。"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Toggle the visibility of hidden files."
@@ -1913,7 +1914,7 @@ msgstr "(é‡æ–°ï¼‰åŒ¯å…¥ç´ æ"
#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Top"
-msgstr "上"
+msgstr "頂端"
#: editor/editor_help.cpp
msgid "Class:"
@@ -2009,27 +2010,27 @@ msgstr "全部顯示"
#: editor/editor_help_search.cpp
msgid "Classes Only"
-msgstr "僅é™é¡žåˆ¥"
+msgstr "僅顯示類別"
#: editor/editor_help_search.cpp
msgid "Methods Only"
-msgstr "僅é™æ–¹æ³•"
+msgstr "僅顯示方法"
#: editor/editor_help_search.cpp
msgid "Signals Only"
-msgstr "僅é™ä¿¡è™Ÿ"
+msgstr "僅顯示訊號"
#: editor/editor_help_search.cpp
msgid "Constants Only"
-msgstr "僅é™å¸¸æ•¸"
+msgstr "僅顯示常數"
#: editor/editor_help_search.cpp
msgid "Properties Only"
-msgstr "僅é™å±¬æ€§"
+msgstr "僅顯示屬性"
#: editor/editor_help_search.cpp
msgid "Theme Properties Only"
-msgstr "僅é™ä¸»é¡Œå±¬æ€§"
+msgstr "僅顯示主題屬性"
#: editor/editor_help_search.cpp
msgid "Member Type"
@@ -2156,7 +2157,7 @@ msgstr "ä¿å­˜è³‡æºéŒ¯èª¤ï¼"
msgid ""
"This resource can't be saved because it does not belong to the edited scene. "
"Make it unique first."
-msgstr "由於該資æºä¸å±¬æ–¼å·²ç·¨è¼¯çš„場景,無法ä¿å­˜è©²è³‡æºã€‚請先確ä¿å…¶ç¨ç«‹ã€‚"
+msgstr "由於該資æºä¸å±¬æ–¼å·²ç·¨è¼¯çš„場景,無法ä¿å­˜è©²è³‡æºã€‚請先使其ç¨ç«‹åŒ–。"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Save Resource As..."
@@ -2305,11 +2306,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr "沒有已定義的場景å¯åŸ·è¡Œã€‚"
-
-#: editor/editor_node.cpp
-msgid "Current scene was never saved, please save it prior to running."
-msgstr "ç›®å‰çš„場景從未被ä¿å­˜ï¼Œè«‹å…ˆä¿å­˜ä»¥åŸ·è¡Œã€‚"
+msgstr "未定義欲執行之場景。"
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
@@ -2365,7 +2362,7 @@ msgstr "是"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr "此場景從未被ä¿å­˜ã€‚是å¦è¦åœ¨åŸ·è¡Œå‰å…ˆä¿å­˜ï¼Ÿ"
+msgstr "此場景從未被ä¿å­˜ã€‚是å¦æ–¼åŸ·è¡Œå‰å…ˆä¿å­˜ï¼Ÿ"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
@@ -2381,15 +2378,15 @@ msgstr "該æ“作必須è¦æœ‰è·Ÿç¯€é»žæ‰å¯å®Œæˆã€‚"
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr "匯出 Tile Set"
+msgstr "匯出圖塊集"
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
-msgstr "該æ“作必須è¦æœ‰å·²é¸æ“‡çš„節點æ‰å¯å®Œæˆã€‚"
+msgstr "è«‹å…ˆé¸æ“‡ç¯€é»žä»¥åŸ·è¡Œè©²æ“作。"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr "ç›®å‰çš„場景尚未ä¿å­˜ã€‚ä»ç„¶è¦é–‹å•Ÿå—Žï¼Ÿ"
+msgstr "尚未ä¿å­˜ç›®å‰å ´æ™¯ã€‚ä»ç„¶è¦é–‹å•Ÿå—Žï¼Ÿ"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
@@ -2404,8 +2401,8 @@ msgid ""
"The current scene has unsaved changes.\n"
"Reload the saved scene anyway? This action cannot be undone."
msgstr ""
-"ç›®å‰çš„場景有未ä¿å­˜çš„改動。\n"
-"ä»ç„¶è¦é‡æ–°è¼‰å…¥å ´æ™¯å—Žï¼Ÿé€™å€‹æ“作將無法復原。"
+"ç›®å‰å ´æ™¯æœ‰æœªä¿å­˜çš„改動。\n"
+"ä»è¦é‡æ–°è¼‰å…¥å ´æ™¯å—Žï¼Ÿæ­¤æ“作將無法復原。"
#: editor/editor_node.cpp
msgid "Quick Run Scene..."
@@ -2439,9 +2436,7 @@ msgstr "開啟專案管ç†å“¡å‰è¦å…ˆä¿å­˜ä»¥ä¸‹å ´æ™¯å—Žï¼Ÿ"
msgid ""
"This option is deprecated. Situations where refresh must be forced are now "
"considered a bug. Please report."
-msgstr ""
-"該é¸é …å·²åœæ­¢ç¶­è­·ã€‚é‡åˆ°éœ€è¦å¼·åˆ¶é‡æ–°æ•´ç†çš„ç‹€æ³ç¾åœ¨å·²è¢«è¦–為程å¼éŒ¯èª¤ã€‚請回報該å•"
-"題。"
+msgstr "該é¸é …å·²åœæ­¢ç¶­è­·ã€‚ç›®å‰å·²å°‡éœ€å¼·åˆ¶é‡æ–°æ•´ç†ä¹‹ç‹€æ³è¦–為 Bug,請回報該å•é¡Œã€‚"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
@@ -2471,12 +2466,12 @@ msgstr "無法自路徑「%sã€è¼‰å…¥æ“´å……腳本。"
msgid ""
"Unable to load addon script from path: '%s' There seems to be an error in "
"the code, please check the syntax."
-msgstr "無法從路徑「%sã€è¼‰å…¥æ“´å……腳本。看樣å­æ˜¯ç¨‹å¼ç¢¼ä¸­æœ‰éŒ¯èª¤ï¼Œè«‹æª¢æŸ¥èªžæ³•ã€‚"
+msgstr "無法自路徑「%sã€è¼‰å…¥æ“´å……腳本。å¯èƒ½ç‚ºç¨‹å¼ç¢¼ä¸­æœ‰éŒ¯èª¤ï¼Œè«‹æª¢æŸ¥èªžæ³•ã€‚"
#: editor/editor_node.cpp
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr "無法自路徑「%sã€è¼‰å…¥æ“´å……腳本,基礎型別ä¸æ˜¯ EditorPlugin。"
+msgstr "無法自路徑「%sã€è¼‰å…¥æ“´å……è…³æœ¬ï¼ŒåŸºç¤Žåž‹åˆ¥éž EditorPlugin。"
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
@@ -2495,7 +2490,7 @@ msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
-"載入場景時發生錯誤,場景必須置於專案路徑內。請使用「匯入ã€ä¾†é–‹å•Ÿè©²å ´æ™¯ï¼Œä¸¦å°‡"
+"載入場景時發生錯誤,場景必須置於專案路徑內。請使用 [匯入] 來開啟該場景,並將"
"å…¶ä¿å­˜æ–¼å°ˆæ¡ˆè·¯å¾‘內。"
#: editor/editor_node.cpp
@@ -2513,7 +2508,7 @@ msgid ""
"category."
msgstr ""
"尚未定義主場景。è¦é¸æ“‡ä¸€å€‹å ´æ™¯å—Žï¼Ÿ\n"
-"ç¨å¾Œå¯åœ¨ã€Œæ‡‰ç”¨ç¨‹å¼ã€åˆ†é¡žä¸­çš„「專案設定ã€ä¿®æ”¹ã€‚"
+"ç¨å¾Œå¯åœ¨ã€Œå°ˆæ¡ˆè¨­å®šã€çš„ [Application] 分類中修改。"
#: editor/editor_node.cpp
msgid ""
@@ -2522,7 +2517,7 @@ msgid ""
"category."
msgstr ""
"所é¸çš„場景「%sã€ä¸å­˜åœ¨ï¼Œæ˜¯å¦è¦é¸æ“‡ä¸€å€‹æœ‰æ•ˆçš„場景?\n"
-"ç¨å¾Œå¯åœ¨ã€Œæ‡‰ç”¨ç¨‹å¼ã€åˆ†é¡žä¸­çš„「專案設定ã€ä¸­ä¿®æ”¹ã€‚"
+"ç¨å¾Œå¯åœ¨ã€Œå°ˆæ¡ˆè¨­å®šã€çš„ [Application] 分類中修改。"
#: editor/editor_node.cpp
msgid ""
@@ -2530,8 +2525,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"所é¸çš„場景「%sã€ä¸æ˜¯å ´æ™¯æª”案,是å¦è¦é¸æ“‡å¦ä¸€å€‹æœ‰æ•ˆçš„場景?\n"
-"ç¨å¾Œå¯åœ¨ã€Œæ‡‰ç”¨ç¨‹å¼ã€åˆ†é¡žä¸­çš„「專案設定ã€ä¸­ä¿®æ”¹ã€‚"
+"所é¸çš„場景「%sã€ä¸¦éžå ´æ™¯æª”案,是å¦è¦é¸æ“‡å¦ä¸€å€‹æœ‰æ•ˆçš„場景?\n"
+"ç¨å¾Œå¯åœ¨ã€Œå°ˆæ¡ˆè¨­å®šã€ä¸­çš„ [Application] 中修改。"
#: editor/editor_node.cpp
msgid "Save Layout"
@@ -2589,7 +2584,7 @@ msgstr "還有 %d 個資料夾"
#: editor/editor_node.cpp
msgid "%d more files"
-msgstr "還有 %d 個檔案"
+msgstr "其他 %d 個檔案"
#: editor/editor_node.cpp
msgid "Dock Position"
@@ -2759,10 +2754,10 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
-"當該é¸é …啟用後,匯出或部署將會產生最å°åŒ–çš„å¯åŸ·è¡Œæª”。\n"
-"檔案系統將由這個編輯器在網路上æ供。\n"
-"Android å¹³å°ä¸Šï¼Œéƒ¨ç½²éœ€è¦ä½¿ç”¨ USB 線以ç²å¾—更快速的效能。該é¸é …å°æ–¼å¤§åž‹éŠæˆ²èƒ½åŠ "
-"速測試。"
+"啟用該é¸é …後,匯出或部署是會產生最å°å¯åŸ·è¡Œæª”。\n"
+"專案之檔案系統將由本編輯器以網路æ供。\n"
+"部署至 Android å¹³å°éœ€ä½¿ç”¨ USB 線以ç²å¾—更快速的效能。該é¸é …å°æ–¼å¤§åž‹éŠæˆ²èƒ½åŠ é€Ÿ"
+"測試。"
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
@@ -2772,7 +2767,7 @@ msgstr "顯示碰撞å€åŸŸ"
msgid ""
"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
"running game if this option is turned on."
-msgstr "該é¸é …開啟後,執行éŠæˆ²æ™‚å°‡å¯çœ‹è¦‹ç¢°æ’žå€åŸŸèˆ‡ï¼ˆ2D 或 3D 的)射線節點。"
+msgstr "é–‹å•Ÿé¸é …後,執行éŠæˆ²æ™‚å°‡å¯çœ‹è¦‹ç¢°æ’žå€åŸŸèˆ‡ï¼ˆ2D 或 3D 的)射線節點。"
#: editor/editor_node.cpp
msgid "Visible Navigation"
@@ -2782,7 +2777,7 @@ msgstr "顯示導航"
msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
-msgstr "該é¸é …開啟後,執行éŠæˆ²æ™‚å°‡å¯çœ‹è¦‹å°Žèˆªç¶²æ ¼ (mesh) 與多邊形。"
+msgstr "開啟該é¸é …後,執行éŠæˆ²æ™‚å°‡å¯çœ‹è¦‹å°Žèˆªç¶²æ ¼ (mesh) 與多邊形。"
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
@@ -2809,7 +2804,7 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
-"當開啟該é¸é …後,ä¿å­˜çš„腳本都將在執行中的éŠæˆ²é‡æ–°è¼‰å…¥ã€‚\n"
+"開啟該é¸é …後,ä¿å­˜ä¹‹è…³æœ¬éƒ½å°‡æ–¼åŸ·è¡Œä¸­çš„éŠæˆ²é‡æ–°è¼‰å…¥ã€‚\n"
"若在é ç«¯è£ç½®ä¸Šä½¿ç”¨ï¼Œå¯ä½¿ç”¨ç¶²è·¯æª”案系統 NFS 以ç²å¾—最佳效能。"
#: editor/editor_node.cpp editor/script_create_dialog.cpp
@@ -2842,7 +2837,7 @@ msgstr "é–‹å•Ÿï¼é—œé–‰ç³»çµ±ä¸»æŽ§å°"
#: editor/editor_node.cpp
msgid "Open Editor Data/Settings Folder"
-msgstr "開啟「編輯器資料ï¼ç·¨è¼¯å™¨è¨­å®šã€è³‡æ–™å¤¾"
+msgstr "é–‹å•Ÿ 編輯器資料ï¼ç·¨è¼¯å™¨è¨­å®š 資料夾"
#: editor/editor_node.cpp
msgid "Open Editor Data Folder"
@@ -2997,12 +2992,12 @@ msgid ""
"the \"Use Custom Build\" option should be enabled in the Android export "
"preset."
msgstr ""
-"將通éŽåœ¨ã€Œres://android/buildã€ä¸­å®‰è£åŽŸå§‹æ¨£æ¿ä»¥ç‚ºè©²é …目設定自定 Android 建構"
-"樣æ¿ã€‚\n"
-"輸出時å¯ä»¥å¥—用修改並建構自定 APK(如新增模組ã€ä¿®æ”¹ AndroidManifest.xml …"
+"將於「res://android/buildã€å®‰è£åŽŸå§‹æ¨£æ¿ä»¥ç‚ºè©²é …目設定自定 Android 建構樣"
+"æ¿ã€‚\n"
+"輸出時å¯å¥—用修改並建構自定 APK(如新增模組ã€ä¿®æ”¹ AndroidManifest.xml …"
"等)。\n"
-"請注æ„,若è¦ä½¿ç”¨è‡ªå®šå»ºæ§‹è€Œéžä½¿ç”¨é å…ˆå»ºæ§‹å¥½çš„ APK,請啟用 Android 匯出 Preset "
-"中的「使用自定建構ã€é¸é …。"
+"請注æ„,若è¦ä½¿ç”¨è‡ªå®šå»ºæ§‹è€Œéžä½¿ç”¨é å…ˆå»ºæ§‹ä¹‹ APK,請啟用 Android 匯出é è¨­è¨­å®šä¸­"
+"çš„ [Use Custom Build] é¸é …。"
#: editor/editor_node.cpp
msgid ""
@@ -3145,7 +3140,7 @@ msgstr "全部"
#: editor/editor_profiler.cpp
msgid "Self"
-msgstr "僅自己"
+msgstr "自身"
#: editor/editor_profiler.cpp
msgid "Frame #:"
@@ -3198,7 +3193,7 @@ msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
-"無法為è¦ä¿å­˜ç‚ºæª”案的資æºå»ºç«‹æª¢è¦–å€ç´‹ç† (ViewportTexture)。\n"
+"無法為欲ä¿å­˜ç‚ºæª”案之資æºå»ºç«‹ ViewportTexture。\n"
"資æºå¿…須屬於一個場景。"
#: editor/editor_properties.cpp
@@ -3209,11 +3204,11 @@ msgid ""
"containing it up to a node)."
msgstr ""
"無法為該資æºå»ºç«‹æª¢è¦–å€ç´‹ç† (ViewportTexture),因其未設定å°æ‡‰çš„本地場景。\n"
-"請開啟其(與其至節點的所有資æºï¼‰çš„「本地化場景ã€å±¬æ€§ã€‚"
+"請開啟其(與其至節點的所有資æºï¼‰ã€ŒLocal to Sceneã€å±¬æ€§ã€‚"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
-msgstr "é¸æ“‡æª¢è¦–å€"
+msgstr "é¸æ“‡ Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "New Script"
@@ -3247,11 +3242,11 @@ msgstr "貼上"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Convert To %s"
-msgstr "轉æ›æˆ %s"
+msgstr "轉æ›ç‚º %s"
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
-msgstr "所é¸ç¯€é»žä¸æ˜¯æª¢è¦–å€ (Viewport)ï¼"
+msgstr "所é¸ç¯€é»žä¸¦éž Viewportï¼"
#: editor/editor_properties_array_dict.cpp
msgid "Size: "
@@ -3268,7 +3263,7 @@ msgstr "移除項目"
#: editor/editor_properties_array_dict.cpp
msgid "New Key:"
-msgstr "新增éµå€¼ï¼š"
+msgstr "新增索引éµï¼š"
#: editor/editor_properties_array_dict.cpp
msgid "New Value:"
@@ -3276,15 +3271,15 @@ msgstr "新增數值:"
#: editor/editor_properties_array_dict.cpp
msgid "Add Key/Value Pair"
-msgstr "新增éµï¼å€¼é…å°"
+msgstr "新增索引éµï¼å€¼çµ„"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
-"該平å°æ²’有å¯åŸ·è¡Œçš„匯出 Preset。\n"
-"請在匯出é¸å–®ä¸­æ–°å¢žä¸€å€‹å¯åŸ·è¡Œçš„ Preset。"
+"該平å°æ²’有å¯åŸ·è¡Œçš„匯出é è¨­è¨­å®šã€‚\n"
+"請在匯出é¸å–®ä¸­æ–°å¢žä¸€å€‹å¯åŸ·è¡Œçš„é è¨­è¨­å®šã€‚"
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -3300,7 +3295,7 @@ msgstr "無法實體化腳本:"
#: editor/editor_run_script.cpp
msgid "Did you forget the 'tool' keyword?"
-msgstr "是å¦éºæ¼ã€Œtoolã€é—œéµå­—?"
+msgstr "是å¦æœªåŠ ä¸Šã€Œtoolã€é—œéµå­—?"
#: editor/editor_run_script.cpp
msgid "Couldn't run script:"
@@ -3308,7 +3303,7 @@ msgstr "無法執行腳本:"
#: editor/editor_run_script.cpp
msgid "Did you forget the '_run' method?"
-msgstr "是å¦éºæ¼äº†ã€Œ_runã€æ–¹æ³•ï¼Ÿ"
+msgstr "是å¦æœªæ–°å¢žã€Œ_runã€æ–¹æ³•ï¼Ÿ"
#: editor/editor_spin_slider.cpp
msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
@@ -3403,7 +3398,7 @@ msgstr "解æžé¡åƒåˆ—表的 JSON 時發生錯誤。請回報此å•é¡Œï¼"
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
-msgstr "為找到該版本的下載éˆæŽ¥ã€‚直接下載僅é©ç”¨æ–¼æ­£å¼ç‰ˆæœ¬ã€‚"
+msgstr "未找到該版本的下載éˆæŽ¥ã€‚直接下載僅é©ç”¨æ–¼æ­£å¼ç™¼è¡Œç‰ˆæœ¬ã€‚"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -3446,8 +3441,8 @@ msgid ""
"Templates installation failed.\n"
"The problematic templates archives can be found at '%s'."
msgstr ""
-"未找到樣æ¿å®‰è£ã€‚\n"
-"有å•é¡Œçš„樣æ¿æª”案存放於「%sã€ã€‚"
+"樣æ¿å®‰è£å¤±æ•—。\n"
+"發生å•é¡Œä¹‹æ¨£æ¿æª”案存放於「%sã€ã€‚"
#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
@@ -3573,7 +3568,7 @@ msgstr "未æä¾›å稱。"
#: editor/filesystem_dock.cpp
msgid "Provided name contains invalid characters."
-msgstr "æ供的å稱包å«äº†ç„¡æ•ˆçš„字元。"
+msgstr "æ供的å稱包å«ç„¡æ•ˆå­—元。"
#: editor/filesystem_dock.cpp
msgid "A file or folder with this name already exists."
@@ -3581,7 +3576,7 @@ msgstr "已有相åŒå稱的檔案或資料夾存在。"
#: editor/filesystem_dock.cpp
msgid "Name contains invalid characters."
-msgstr "å稱包å«äº†ç„¡æ•ˆçš„字元。"
+msgstr "å稱包å«ç„¡æ•ˆå­—元。"
#: editor/filesystem_dock.cpp
msgid "Renaming file:"
@@ -3891,7 +3886,7 @@ msgstr "正在執行自定腳本..."
#: editor/import/resource_importer_scene.cpp
msgid "Couldn't load post-import script:"
-msgstr "無法載入匯入後腳本:"
+msgstr "無法載入 Post-Import 腳本:"
#: editor/import/resource_importer_scene.cpp
msgid "Invalid/broken script for post-import (check console):"
@@ -3903,7 +3898,7 @@ msgstr "執行匯入後腳本時發生錯誤:"
#: editor/import/resource_importer_scene.cpp
msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr "是å¦æœ‰åœ¨ `post_import()` 方法內回傳 Node è¡ç”Ÿä¹‹ç‰©ä»¶ï¼Ÿ"
+msgstr "是å¦æœ‰åœ¨ `post_import()` 方法內回傳繼承 Node 之物件?"
#: editor/import/resource_importer_scene.cpp
msgid "Saving..."
@@ -3927,7 +3922,7 @@ msgstr "匯入為:"
#: editor/import_dock.cpp
msgid "Preset"
-msgstr "Preset"
+msgstr "é è¨­è¨­å®š"
#: editor/import_dock.cpp
msgid "Reimport"
@@ -3944,7 +3939,7 @@ msgstr "修改匯入檔案的型別需è¦é‡æ–°å•Ÿå‹•ç·¨è¼¯å™¨ã€‚"
#: editor/import_dock.cpp
msgid ""
"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr "警告:有素æ使用該資æºï¼Œå°‡æœƒç„¡æ³•æ­£ç¢ºåŠ è¼‰ã€‚"
+msgstr "警告:有素æ使用該資æºï¼Œå°‡ç„¡æ³•æ­£ç¢ºåŠ è¼‰ã€‚"
#: editor/inspector_dock.cpp
msgid "Failed to load resource."
@@ -3989,7 +3984,7 @@ msgstr "在說明中開啟"
#: editor/inspector_dock.cpp
msgid "Create a new resource in memory and edit it."
-msgstr "在記憶體中建立一個新的資æºå編輯。"
+msgstr "在記憶體中建立新資æºä¸¦ç·¨è¼¯ã€‚"
#: editor/inspector_dock.cpp
msgid "Load an existing resource from disk and edit it."
@@ -4001,11 +3996,11 @@ msgstr "ä¿å­˜ç›®å‰ç·¨è¼¯çš„資æºã€‚"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
-msgstr "在歷å²è¨˜éŒ„中跳至上一個編輯的物件。"
+msgstr "跳至歷å²è¨˜éŒ„中上一個編輯的物件。"
#: editor/inspector_dock.cpp
msgid "Go to the next edited object in history."
-msgstr "在歷å²è¨˜éŒ„中跳至下一個編輯的物件。"
+msgstr "跳至歷å²è¨˜éŒ„中下一個編輯的物件。"
#: editor/inspector_dock.cpp
msgid "History of recently edited objects."
@@ -4017,7 +4012,7 @@ msgstr "物件屬性。"
#: editor/inspector_dock.cpp
msgid "Filter properties"
-msgstr "éŽæ¿¾å±¬æ€§"
+msgstr "篩é¸å±¬æ€§"
#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
@@ -4207,23 +4202,23 @@ msgstr "新增三角形"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Change BlendSpace2D Limits"
-msgstr "修改混åˆç©ºé–“ 2D é™åˆ¶"
+msgstr "修改 BlendSpace2D é™åˆ¶"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Change BlendSpace2D Labels"
-msgstr "修改混åˆç©ºé–“ 2D 標籤"
+msgstr "修改 BlendSpace2D 標籤"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Remove BlendSpace2D Point"
-msgstr "移除混åˆç©ºé–“ 2D 頂點"
+msgstr "移除 BlendSpace2D 頂點"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Remove BlendSpace2D Triangle"
-msgstr "移除混åˆç©ºé–“ 2D 三角形"
+msgstr "移除 BlendSpace2D 三角形"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr "æ··åˆç©ºé–“ 2D ä¸å±¬æ–¼ä»»ä½•å‹•ç•«æ¨¹ç¯€é»žã€‚"
+msgstr "BlendSpace2D ä¸å±¬æ–¼ä»»ä½• AnimationTree 節點。"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
@@ -4257,11 +4252,11 @@ msgstr "已更改åƒæ•¸"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Filters"
-msgstr "編輯篩é¸"
+msgstr "編輯篩é¸æ¢ä»¶"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Output node can't be added to the blend tree."
-msgstr "輸出節點無法被新增到混åˆæ¨¹ã€‚"
+msgstr "輸出節點無法被新增至混åˆæ¨¹ã€‚"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Add Node to BlendTree"
@@ -4302,11 +4297,11 @@ msgstr "刪除節點"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Toggle Filter On/Off"
-msgstr "é–‹å•Ÿï¼é—œé–‰éŽæ¿¾"
+msgstr "é–‹å•Ÿï¼é—œé–‰ç¯©é¸"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Change Filter"
-msgstr "更改éŽæ¿¾"
+msgstr "更改篩é¸æ¢ä»¶"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "No animation player set, so unable to retrieve track names."
@@ -4352,7 +4347,7 @@ msgstr "編輯已篩é¸çš„軌é“:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Enable Filtering"
-msgstr "啟用篩é¸"
+msgstr "啟用æ¢ä»¶ç¯©é¸"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -4415,7 +4410,7 @@ msgstr "ç„¡å‹•ç•«å¯è¤‡è£½ï¼"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "No animation resource on clipboard!"
-msgstr "剪貼簿中沒有動畫資æºï¼"
+msgstr "剪貼簿中無動畫資æºï¼"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
@@ -4483,11 +4478,11 @@ msgstr "載入後自動播放"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
-msgstr "啟用洋蔥皮化 (Onion Skinning)"
+msgstr "啟用æ圖紙"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Onion Skinning Options"
-msgstr "洋蔥皮化é¸é …"
+msgstr "æ圖紙é¸é …"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Directions"
@@ -4531,7 +4526,7 @@ msgstr "åŒ…å« Gizmo (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pin AnimationPlayer"
-msgstr "固定動畫播放器"
+msgstr "固定 AnimationPlayer"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
@@ -4641,7 +4636,7 @@ msgstr "移除所é¸çš„節點或轉場。"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr "é–‹å•Ÿï¼é—œé–‰è©²å‹•ç•«åœ¨é–‹å§‹ã€é‡æ–°å•Ÿå‹•æˆ–尋覓至 0 時的自動播放。"
+msgstr "é–‹å•Ÿï¼é—œé–‰è‡ªå‹•æ’­æ”¾å‹•ç•«æ–¼é–‹å§‹ã€é‡æ–°å•Ÿå‹•æˆ–æœå°‹è‡³ 0 時。"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Set the end animation. This is useful for sub-transitions."
@@ -4716,7 +4711,7 @@ msgstr "æ··åˆ 1:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "X-Fade Time (s):"
-msgstr "交å‰æ·¡åŒ– (X-Fade) 時間(秒):"
+msgstr "淡入與淡出時間(秒):"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Current:"
@@ -4750,39 +4745,39 @@ msgstr "無效的動畫樹。"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Animation Node"
-msgstr "動畫節點"
+msgstr "Animation 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "OneShot Node"
-msgstr "單項節點"
+msgstr "OneShot 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Mix Node"
-msgstr "æ··åˆç¯€é»ž"
+msgstr "Mix 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend2 Node"
-msgstr "æ··åˆ 2 節點"
+msgstr "Blend2 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend3 Node"
-msgstr "æ··åˆ 3 節點"
+msgstr "Blend3 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend4 Node"
-msgstr "æ··åˆ 4 節點"
+msgstr "Blend4 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "TimeScale Node"
-msgstr "時間縮放節點"
+msgstr "TimeScale 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "TimeSeek Node"
-msgstr "時間尋覓節點"
+msgstr "TimeSeek 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Transition Node"
-msgstr "轉場節點"
+msgstr "Transition 節點"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Import Animations..."
@@ -4790,11 +4785,11 @@ msgstr "匯入動畫…"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Node Filters"
-msgstr "編輯節點éŽæ¿¾"
+msgstr "編輯節點篩é¸æ¢ä»¶"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Filters..."
-msgstr "éŽæ¿¾..."
+msgstr "篩é¸..."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -4858,7 +4853,7 @@ msgstr "下載雜湊錯誤,檔案å¯èƒ½è¢«ç¯¡æ”¹ã€‚"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr "é è¨ˆï¼š"
+msgstr "應為:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Got:"
@@ -5011,7 +5006,8 @@ msgstr ""
msgid ""
"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
"Light' flag is on."
-msgstr "æ²’æœ‰å¯ Bake 的網格。請確ä¿ç¶²æ ¼åŒ…å« UV2 通é“並已開啟「Bake 光照ã€æ——標。"
+msgstr ""
+"ç„¡å¯è£½ä½œä¹‹ç¶²æ ¼ã€‚請確ä¿é€™äº›ç¶²æ ¼åŒ…å« UV2 通é“並已開啟「Bake Lightã€æ——標。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5019,7 +5015,7 @@ msgstr "建立光照圖失敗,請確ä¿è©²è·¯å¾‘å¯å¯«å…¥ã€‚"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr "Bake 光照圖"
+msgstr "建立光照圖"
#: editor/plugins/camera_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp
@@ -5092,7 +5088,7 @@ msgstr "移動軸心"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotate CanvasItem"
-msgstr "旋轉畫布項目"
+msgstr "旋轉 CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move anchor"
@@ -5100,31 +5096,31 @@ msgstr "移動錨點"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Resize CanvasItem"
-msgstr "調整畫布項目大å°"
+msgstr "調整 CanvasItem 大å°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Scale CanvasItem"
-msgstr "縮放畫布項目"
+msgstr "縮放 CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move CanvasItem"
-msgstr "移動畫布項目"
+msgstr "移動 CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Children of containers have their anchors and margins values overridden by "
"their parent."
-msgstr "容器å­é …ç›®çš„éŒ¨é»žèˆ‡å¤–é‚Šè· (margin) 值被其æ¯é …目複寫。"
+msgstr "容器å­é …目的錨點與外邊è·å€¼é­å…¶æ¯é …目複寫。"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Presets for the anchors and margins values of a Control node."
-msgstr "控制節點的錨點與外邊è·çš„ Preset。"
+msgstr "控制節點的錨點與外邊è·ä¹‹é è¨­è¨­å®šã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"When active, moving Control nodes changes their anchors instead of their "
"margins."
-msgstr "啟用時,移動控制節點將修改錨點而éžå¤–é‚Šè·ã€‚"
+msgstr "啟用後,移動控制節點將修改錨點而éžå¤–é‚Šè·ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Top Left"
@@ -5164,27 +5160,27 @@ msgstr "中央"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Left Wide"
-msgstr "左延長"
+msgstr "左延展"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Top Wide"
-msgstr "上延長"
+msgstr "上延展"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Right Wide"
-msgstr "å³å»¶é•·"
+msgstr "å³å»¶å±•"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Bottom Wide"
-msgstr "下延長"
+msgstr "下延展"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "VCenter Wide"
-msgstr "垂直中央延長"
+msgstr "垂直中央延展"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "HCenter Wide"
-msgstr "水平中央延長"
+msgstr "水平中央延展"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Full Rect"
@@ -5212,7 +5208,7 @@ msgid ""
"Game Camera Override\n"
"Overrides game camera with editor viewport camera."
msgstr ""
-"éŠæˆ²ç›¸æ©Ÿè¦†è“‹\n"
+"éŠæˆ²ç›¸æ©Ÿè¤‡å¯«\n"
"以檢視å€ç›¸æ©Ÿå–代éŠæˆ²ç›¸æ©Ÿã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5221,7 +5217,7 @@ msgid ""
"Game Camera Override\n"
"No game instance running."
msgstr ""
-"éŠæˆ²ç›¸æ©Ÿè¦†è“‹\n"
+"éŠæˆ²ç›¸æ©Ÿè¤‡å¯«\n"
"無正在執行的éŠæˆ²å¯¦é«”。"
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5254,7 +5250,7 @@ msgstr "清除åƒè€ƒç·š"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Create Custom Bone(s) from Node(s)"
-msgstr "å­ç¯€é»žå»ºç«‹è‡ªå®šéª¨éª¼"
+msgstr "自節點建立自定骨骼"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Bones"
@@ -5272,7 +5268,7 @@ msgstr "清除 IK éˆ"
msgid ""
"Warning: Children of a container get their position and size determined only "
"by their parent."
-msgstr "警告:容器的å­é …目的ä½ç½®èˆ‡å¤§å°æœ‰å…¶æ¯é …目決定。"
+msgstr "警告:容器å­é …目之ä½ç½®èˆ‡å¤§å°ç”±å…¶æ¯é …目決定。"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -5510,8 +5506,8 @@ msgid ""
"Keys are only added to existing tracks, no new tracks will be created.\n"
"Keys must be inserted manually for the first time."
msgstr ""
-"檔物件被轉æ›ã€æ—‹è½‰ã€æˆ–(基於é®ç½©ï¼‰ç¸®æ”¾æ™‚自動æ’入關éµå½±æ ¼ã€‚\n"
-"é—œéµå½±æ ¼åªæœƒè¢«æ–°å¢žè‡³ç¾å­˜çš„軌é“,將ä¸æœƒå»ºç«‹æ–°çš„軌é“。\n"
+"當物件被轉æ›ã€æ—‹è½‰ 或(基於é®ç½©ï¼‰ç¸®æ”¾æ™‚自動æ’入關éµå½±æ ¼ã€‚\n"
+"é—œéµå½±æ ¼åªæœƒè¢«æ–°å¢žè‡³ç¾æœ‰è»Œé“,ä¸æœƒå»ºç«‹æ–°è»Œé“。\n"
"第一次必須先手動æ’入關éµå½±æ ¼ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5524,7 +5520,7 @@ msgstr "å‹•ç•«é—œéµå½±æ ¼èˆ‡å§¿å‹¢é¸é …"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr "æ’入關éµå½±æ ¼ï¼ˆåœ¨ç¾æœ‰è»Œé“)"
+msgstr "æ’入關éµå½±æ ¼ï¼ˆæ–¼ç¾æœ‰è»Œé“)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
@@ -5582,7 +5578,7 @@ msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Polygon3D"
-msgstr "建立多邊形 3D"
+msgstr "建立 Polygon3D"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Edit Poly"
@@ -5678,11 +5674,11 @@ msgstr "Flat 1"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease In"
-msgstr "ç·©å…¥"
+msgstr "緩慢移入"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease Out"
-msgstr "緩出"
+msgstr "緩慢移出"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Smoothstep"
@@ -5698,7 +5694,7 @@ msgstr "修改曲線切線"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Curve Preset"
-msgstr "加載曲線 Preset"
+msgstr "加載曲線é è¨­è¨­å®š"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add Point"
@@ -5718,7 +5714,7 @@ msgstr "å³ç·šæ€§"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Preset"
-msgstr "載入 Preset"
+msgstr "載入é è¨­è¨­å®š"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove Curve Point"
@@ -5738,7 +5734,7 @@ msgstr "å³éµé»žæ“Šä»¥æ–°å¢žæŽ§åˆ¶é»ž"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr "Bake GI 探é‡"
+msgstr "製作 GI 探查"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Gradient Edited"
@@ -5810,7 +5806,7 @@ msgstr "建立導航網格"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr "包å«çš„網格的型別ä¸æ˜¯é™£åˆ—網格 (ArrayMesh)。"
+msgstr "包å«ä¹‹ Mesh ä¸¦éž ArrayMesh 型別。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
@@ -5818,7 +5814,7 @@ msgstr "UV 展開失敗,該網格å¯èƒ½ä¸¦éžæµå½¢ï¼Ÿ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr "沒有å¯é™¤éŒ¯çš„網格。"
+msgstr "沒有å¯é€²è¡ŒåµéŒ¯ä¹‹ç¶²æ ¼ã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
@@ -5826,15 +5822,15 @@ msgstr "模型在該圖層上無 UV"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr "網格實體 (MeshInstance) 缺ä¹ç¶²æ ¼ï¼"
+msgstr "MeshInstance æœªåŒ…å« Meshï¼"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr "網格未包å«å¯å»ºç«‹è¼ªå»“的表é¢ï¼"
+msgstr "Mesh 未包å«å¯å»ºç«‹è¼ªå»“的表é¢ï¼"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr "網格的原始類型ä¸æ˜¯ PRIMITIVE_TRIANGLESï¼"
+msgstr "Mesh çš„åŽŸå§‹é¡žåž‹ä¸¦éž PRIMITIVE_TRIANGLESï¼"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
@@ -5858,8 +5854,8 @@ msgid ""
"automatically.\n"
"This is the most accurate (but slowest) option for collision detection."
msgstr ""
-"建立éœæ…‹å½¢é«” (StaticBody) 並自動指派一個基於多邊形的碰撞形體。\n"
-"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œé€™æ˜¯æœ€ç²¾ç¢ºï¼ˆä½†æœ€æ…¢ï¼‰çš„é¸é …。"
+"建立 StaticBody 並自動指派一個基於多邊形的碰撞形體。\n"
+"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œè©²é¸é …為最精確(但最慢)的é¸é …。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
@@ -5871,7 +5867,7 @@ msgid ""
"This is the most accurate (but slowest) option for collision detection."
msgstr ""
"建立基於多邊形的碰撞形狀。\n"
-"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œé€™æ˜¯æœ€ç²¾ç¢ºï¼ˆä½†æœ€æ…¢ï¼‰çš„é¸é …。"
+"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œè©²é¸é …為最精確(但最慢)的é¸é …。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Collision Sibling"
@@ -5883,7 +5879,7 @@ msgid ""
"This is the fastest (but least accurate) option for collision detection."
msgstr ""
"建立單一凸é¢ç¢°æ’žå½¢ç‹€ã€‚\n"
-"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œé€™æ˜¯æœ€å¿«ï¼ˆä½†æœ€ä¸ç²¾ç¢ºï¼‰çš„é¸é …。"
+"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œè©²é¸é …為最快(但最ä¸ç²¾ç¢ºï¼‰çš„é¸é …。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
@@ -5949,7 +5945,7 @@ msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Mesh Library"
-msgstr "網格庫 (Mesh Library)"
+msgstr "網格庫"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5970,11 +5966,11 @@ msgstr "自場景更新"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr "未指定網格來æºï¼ˆä¸”節點中沒有多網格集 (MultiMesh Set))。"
+msgstr "未指定網格來æºï¼ˆä¸”節點中沒有 MultiMesh 集)。"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr "未指定網格來æºï¼ˆä¸”多網格 (MultiMesh) 未包å«ç¶²æ ¼ (Mesh))。"
+msgstr "未指定網格來æºï¼ˆä¸” MultiMesh æœªåŒ…å« Mesh)。"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
@@ -5982,11 +5978,11 @@ msgstr "網格來æºç„¡æ•ˆï¼ˆç„¡æ•ˆçš„路徑)。"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr "網格來æºç„¡æ•ˆï¼ˆä¸æ˜¯ç¶²æ ¼å¯¦é«” (MeshInstance))。"
+msgstr "網格來æºç„¡æ•ˆï¼ˆéž MeshInstance)。"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr "網格來æºç„¡æ•ˆï¼ˆæœªåŒ…å«ç¶²æ ¼ (Mesh) 資æºï¼‰ã€‚"
+msgstr "網格來æºç„¡æ•ˆï¼ˆæœªåŒ…å« Mesh 資æºï¼‰ã€‚"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
@@ -6010,7 +6006,7 @@ msgstr "é¸æ“‡ä¾†æºç¶²æ ¼ï¼š"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Target Surface:"
-msgstr "é¸æ“‡ç›®æ¨™ç¶²æ ¼ï¼š"
+msgstr "é¸æ“‡ç›®æ¨™è¡¨é¢ï¼š"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate Surface"
@@ -6018,7 +6014,7 @@ msgstr "填充表é¢"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr "填充多網格 (MultiMesh)"
+msgstr "å¡«å…… MultiMesh"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
@@ -6080,7 +6076,7 @@ msgstr "產生矩形å¯è¦‹æ€§"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
-msgstr "僅é™æŒ‡å‘ç²’å­æ料的處ç†ææ–™ (ParticlesMaterial Process Material)"
+msgstr "僅å¯å°‡ç‚º ParticlesMaterial 處ç†æ料設定點"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -6097,7 +6093,7 @@ msgstr "幾何體未包å«ä»»ä½•é¢ã€‚"
#: editor/plugins/particles_editor_plugin.cpp
msgid "\"%s\" doesn't inherit from Spatial."
-msgstr "「%sã€éžè‡ª Spatial 繼承。"
+msgstr "「%sã€éžç¹¼æ‰¿è‡ª Spatial。"
#: editor/plugins/particles_editor_plugin.cpp
msgid "\"%s\" doesn't contain geometry."
@@ -6133,7 +6129,7 @@ msgstr "發射æºï¼š "
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr "需è¦ã€Œç²’å­ææ–™ (ParticlesMaterial)ã€åž‹åˆ¥çš„處ç†å™¨æ料。"
+msgstr "需「ParticlesMaterialã€åž‹åˆ¥çš„處ç†å™¨æ料。"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
@@ -6232,12 +6228,12 @@ msgstr "é¸é …"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Mirror Handle Angles"
-msgstr "é¡åƒæ‰‹æŸ„角度"
+msgstr "é¡åƒæŽ§é»žè§’度"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Mirror Handle Lengths"
-msgstr "é¡åƒæ‰‹æŸ„長度"
+msgstr "é¡åƒæŽ§é»žé•·åº¦"
#: editor/plugins/path_editor_plugin.cpp
msgid "Curve Point #"
@@ -6245,15 +6241,15 @@ msgstr "曲線控制點 #"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
-msgstr "設定曲線控制點的ä½ç½®"
+msgstr "設定曲線控制點ä½ç½®"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
-msgstr "設定曲線的內控制點ä½ç½®"
+msgstr "設定曲線內控制點ä½ç½®"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Position"
-msgstr "設定曲線的外控制點ä½ç½®"
+msgstr "設定曲線外控制點ä½ç½®"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -6282,7 +6278,7 @@ msgstr "移動關節"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr "多邊形 2D (Polygon2D) 的骨架屬性未指å‘骨架 2D (Skeleton2D) 節點"
+msgstr "Polygon2D çš„éª¨æž¶å±¬æ€§æœªæŒ‡å‘ Skeleton2D 節點"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Sync Bones"
@@ -6304,7 +6300,7 @@ msgstr "建立 UV Map"
msgid ""
"Polygon 2D has internal vertices, so it can no longer be edited in the "
"viewport."
-msgstr "多邊形 2D 有內部頂點,將無法在檢視å€ç·¨è¼¯ã€‚"
+msgstr "Polygon2D 有內部頂點,將無法在檢視å€ç·¨è¼¯ã€‚"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create Polygon & UV"
@@ -6344,11 +6340,11 @@ msgstr "æ繪骨骼權é‡"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Open Polygon 2D UV editor."
-msgstr "開啟多邊形 2D UV 編輯器。"
+msgstr "Polygon2D UV 編輯器。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
-msgstr "多邊形 2D UV 編輯器"
+msgstr "Polygon2D UV 編輯器"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV"
@@ -6396,13 +6392,13 @@ msgstr "縮放多邊形"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr "建立自定多邊形。啟用自定多邊形算圖。"
+msgstr "建立自定多邊形。啟用自定多邊形算繪。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"Remove a custom polygon. If none remain, custom polygon rendering is "
"disabled."
-msgstr "移除自定多邊形。若無剩餘多邊形,將ç¦ç”¨è‡ªå®šå¤šé‚Šå½¢ç®—圖。"
+msgstr "移除自定多邊形。若無剩餘多邊形,將ç¦ç”¨è‡ªå®šå¤šé‚Šå½¢ç®—繪。"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Paint weights with specified intensity."
@@ -6520,11 +6516,11 @@ msgstr "載入資æº"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "ResourcePreloader"
-msgstr "資æºé åŠ è¼‰ (ResourcePreloader)"
+msgstr "ResourcePreloader"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr "動畫樹 (AnimationTree) 未設定至動畫播放器 (AnimationPlayer) 的路徑"
+msgstr "AnimationTree 未設定至 AnimationPlayer 的路徑"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "Path to AnimationPlayer is invalid"
@@ -6540,7 +6536,7 @@ msgstr "關閉並ä¿å­˜ä¿®æ”¹å—Žï¼Ÿ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
-msgstr "寫入文字檔案 (TextFile) 時發生錯誤:"
+msgstr "寫入 TextFile 時發生錯誤:"
#: editor/plugins/script_editor_plugin.cpp
msgid "Could not load file at:"
@@ -6593,7 +6589,7 @@ msgstr "腳本ä¸åœ¨å·¥å…·æ¨¡å¼ä¸‹ï¼Œç„¡æ³•åŸ·è¡Œã€‚"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr "欲執行該腳本,其必須繼承自編輯器腳本 (EditorScript) 並設為工具模å¼ã€‚"
+msgstr "該腳本必須繼承 EditorScript 並設為工具模å¼æ‰å¯åŸ·è¡Œã€‚"
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
@@ -6627,7 +6623,7 @@ msgstr "尋找上一個"
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter scripts"
-msgstr "éŽæ¿¾è…³æœ¬"
+msgstr "篩é¸è…³æœ¬"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle alphabetical sorting of the method list."
@@ -6635,7 +6631,7 @@ msgstr "é–‹å•Ÿï¼é—œé–‰æŒ‰ç…§å­—æ¯é †åºæŽ’列方法列表。"
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter methods"
-msgstr "éŽæ¿¾æ–¹æ³•"
+msgstr "篩é¸æ–¹æ³•"
#: editor/plugins/script_editor_plugin.cpp
msgid "Sort"
@@ -6724,11 +6720,11 @@ msgstr "執行"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Into"
-msgstr "步入"
+msgstr "é€æ­¥åŸ·è¡Œ"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Over"
-msgstr "æ­¥éŽ"
+msgstr "ä¸é€²å…¥å‡½å¼"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Break"
@@ -6773,7 +6769,7 @@ msgid ""
"What action should be taken?:"
msgstr ""
"ç£ç¢Ÿä¸­çš„下列檔案已更新。\n"
-"è¦åŸ·è¡Œä»€éº¼ï¼Ÿï¼š"
+"è«‹é¸æ“‡æ–¼åŸ·è¡Œä¹‹æ“作:"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -6833,7 +6829,7 @@ msgstr "åªå¯æ‹–移來自檔案系統的資æºã€‚"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr "無法防止節點,由於腳本「%sã€ä¸¦æœªåœ¨è©²å ´æ™¯ä¸­ä½¿ç”¨ã€‚"
+msgstr "無法放置節點,由於腳本「%sã€ä¸¦æœªåœ¨è©²å ´æ™¯ä¸­ä½¿ç”¨ã€‚"
#: editor/plugins/script_text_editor.cpp
msgid "Lookup Symbol"
@@ -6901,7 +6897,7 @@ msgstr "å‘å³ç¸®æŽ’"
#: editor/plugins/script_text_editor.cpp
msgid "Toggle Comment"
-msgstr "展開ï¼æ”¶èµ·è¨»è§£"
+msgstr "註解ï¼å–消註解"
#: editor/plugins/script_text_editor.cpp
msgid "Fold/Unfold Line"
@@ -7006,27 +7002,27 @@ msgstr "著色器"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr "此骨架未包å«éª¨éª¼ï¼Œè«‹å»ºç«‹ä¸€äº›å­éª¨éª¼ 2D (Bone2D) 節點。"
+msgstr "此骨架未包å«éª¨éª¼ï¼Œè«‹å»ºç«‹ä¸€äº›å­ Bone2D 節點。"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Create Rest Pose from Bones"
-msgstr "自骨骼建立放鬆姿勢"
+msgstr "自骨骼建立éœæ­¢å§¿å‹¢"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Set Rest Pose to Bones"
-msgstr "設定放鬆姿勢至骨骼"
+msgstr "設定éœæ­¢å§¿å‹¢è‡³éª¨éª¼"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Skeleton2D"
-msgstr "骨架2D (Sekeleton2D)"
+msgstr "Sekeleton2D"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Make Rest Pose (From Bones)"
-msgstr "製作放鬆姿勢(自骨骼)"
+msgstr "製作éœæ­¢å§¿å‹¢ï¼ˆè‡ªéª¨éª¼ï¼‰"
#: editor/plugins/skeleton_2d_editor_plugin.cpp
msgid "Set Bones to Rest Pose"
-msgstr "設定骨骼為放鬆姿勢"
+msgstr "設定骨骼為éœæ­¢å§¿å‹¢"
#: editor/plugins/skeleton_editor_plugin.cpp
msgid "Create physical bones"
@@ -7242,7 +7238,7 @@ msgstr "效果é è¦½"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Not available when using the GLES2 renderer."
-msgstr "使用 GLES2 算圖器時無法使用。"
+msgstr "使用 GLES2 轉譯器時無法使用。"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -7285,7 +7281,7 @@ msgid ""
"Note: The FPS value displayed is the editor's framerate.\n"
"It cannot be used as a reliable indication of in-game performance."
msgstr ""
-"注æ„:顯示的 FPS 值時編輯器的畫é¢é€ŸçŽ‡ã€‚\n"
+"注æ„:顯示的 FPS 值為編輯器之畫é¢é€ŸçŽ‡ã€‚\n"
"無法實際å映為éŠæˆ²ä¸­çš„效能。"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7496,35 +7492,35 @@ msgstr "未命åçš„ Gizmo"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Mesh2D"
-msgstr "建立網格 2D (Mesh2D)"
+msgstr "建立 Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Mesh2D Preview"
-msgstr "建立網格 2D (Mesh2D) é è¦½"
+msgstr "建立 Mesh2D é è¦½"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create Polygon2D"
-msgstr "建立多邊形 2D (Polygon2D)"
+msgstr "建立 Polygon2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Polygon2D Preview"
-msgstr "é è¦½å¤šé‚Šå½¢ 2D (Polygon2D)"
+msgstr "é è¦½ Polygon2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create CollisionPolygon2D"
-msgstr "建立碰撞多邊形 2D (CollisionPolygon2D)"
+msgstr "建立 CollisionPolygon2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "CollisionPolygon2D Preview"
-msgstr "碰撞多邊形 2D (CollisionPolygon2D) é è¦½"
+msgstr "碰撞 CollisionPolygon2D é è¦½"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create LightOccluder2D"
-msgstr "建立é®å…‰ 2D (LightOccluder2D)"
+msgstr "建立 LightOccluder2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "LightOccluder2D Preview"
-msgstr "é®å…‰ 2D (LightOccluder2D) é è¦½"
+msgstr "LightOccluder2D é è¦½"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Sprite is empty!"
@@ -7540,7 +7536,7 @@ msgstr "無效的幾何圖形,無法以網格å–代。"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Convert to Mesh2D"
-msgstr "轉æ›ç‚ºç¶²æ ¼ 2D (Mesh2D)"
+msgstr "轉æ›ç‚º Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -7548,7 +7544,7 @@ msgstr "無效的幾何圖形,無法建立多邊形。"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Convert to Polygon2D"
-msgstr "轉æ›ç‚ºå¤šé‚Šå½¢ 2D (Polygon2D)"
+msgstr "轉æ›ç‚º Polygon2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create collision polygon."
@@ -7556,7 +7552,7 @@ msgstr "無效的幾何圖形,無法建立碰撞多邊形。"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create CollisionPolygon2D Sibling"
-msgstr "建立碰撞多邊形 2D (CollisionPolygon2D) åŒç´š"
+msgstr "建立 CollisionPolygon2D åŒç´š"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create light occluder."
@@ -7564,7 +7560,7 @@ msgstr "無效的幾何圖形,無法建立é®å…‰ã€‚"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Create LightOccluder2D Sibling"
-msgstr "建立é®å…‰ 2D (LightOccluder2D) åŒç´š"
+msgstr "建立 LightOccluder2D åŒç´š"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Sprite"
@@ -7700,7 +7696,7 @@ msgstr "自 Sprite 表建立幀"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "SpriteFrames"
-msgstr "SpriteFrames(Sprite 影格)"
+msgstr "SpriteFrame"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
@@ -7708,7 +7704,7 @@ msgstr "設定å€åŸŸçŸ©å½¢ (Region Rect)"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Margin"
-msgstr "設置外邊è·"
+msgstr "設定外邊è·"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -7745,7 +7741,7 @@ msgstr "分隔線:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
-msgstr "ç´‹ç†å€åŸŸ (TextureRegion)"
+msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All Items"
@@ -7849,7 +7845,7 @@ msgstr "許多"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Disabled LineEdit"
-msgstr "å·²åœç”¨çš„行編輯"
+msgstr "å·²åœç”¨çš„ LineEdit"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 1"
@@ -7951,7 +7947,7 @@ msgstr "啟用優先級"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Filter tiles"
-msgstr "éŽæ¿¾åœ–å¡Š"
+msgstr "篩é¸åœ–å¡Š"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Give a TileSet resource to this TileMap to use its tiles."
@@ -8229,7 +8225,7 @@ msgstr "建立圖塊"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Set Tile Icon"
-msgstr "設定ç£è²¼åœ–示"
+msgstr "設定圖塊圖示"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Edit Tile Bitmask"
@@ -8466,7 +8462,7 @@ msgstr "設定表示å¼"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Resize VisualShader node"
-msgstr "調整視覺著色器 (VisualShader) 節點大å°"
+msgstr "調整 VisualShader 節點大å°"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Set Uniform Name"
@@ -8535,7 +8531,7 @@ msgstr "å°‡ HSV å‘é‡è½‰ç‚ºåŒç­‰ä¹‹ RGB。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts RGB vector to HSV equivalent."
-msgstr "å°‡ RGB å‘é‡è½‰ç‚ºåŒç­‰è‡³ HSV。"
+msgstr "å°‡ RGB å‘é‡è½‰ç‚ºåŒç­‰ä¹‹ HSV。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Sepia function."
@@ -8649,7 +8645,7 @@ msgstr "回傳兩個åƒæ•¸é–“比較的布林çµæžœã€‚"
msgid ""
"Returns the boolean result of the comparison between INF (or NaN) and a "
"scalar parameter."
-msgstr "回傳 INF(或 NaN)與一個純é‡é–“比較的布林çµæžœã€‚"
+msgstr "回傳 INF (或 NaN) 與一個純é‡é–“比較的布林çµæžœã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Boolean constant."
@@ -8701,7 +8697,7 @@ msgstr "ç´”é‡é‹ç®—å­ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr "E 常數(2.718282)。表示自然å°æ•¸çš„底數。"
+msgstr "E 常數 (2.718282)。表示自然å°æ•¸çš„底數。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Epsilon constant (0.00001). Smallest possible scalar number."
@@ -8725,7 +8721,7 @@ msgstr "π (Pi) 常數 (3.141593) 或 180 度。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Tau constant (6.283185) or 360 degrees."
-msgstr "τ 常數 (6.283185) 或 360 度。"
+msgstr "τ (Tau) 常數 (6.283185) 或 360 度。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Sqrt2 constant (1.414214). Square root of 2."
@@ -8770,7 +8766,7 @@ msgstr "尋找大於或等於該åƒæ•¸æœ€è¿‘的整數。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Constrains a value to lie between two further values."
-msgstr "將值é™åˆ¶æ¬²å…©å€‹å€¼ä¹‹é–“。"
+msgstr "將值é™åˆ¶æ–¼å…©å€‹å€¼ä¹‹é–“。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the cosine of the parameter."
@@ -8782,7 +8778,7 @@ msgstr "回傳åƒæ•¸çš„雙曲餘弦值。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in radians to degrees."
-msgstr "將弧度轉æ›ç‚ºåº¦ã€‚"
+msgstr "將弧度轉æ›ç‚ºè§’度。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Base-e Exponential."
@@ -8802,7 +8798,7 @@ msgstr "計算引數的å°æ•¸éƒ¨åˆ†ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Returns the inverse of the square root of the parameter."
-msgstr "回傳åƒæ•¸çš„平方根的倒數。"
+msgstr "回傳åƒæ•¸çš„平方根之倒數。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Natural logarithm."
@@ -8839,7 +8835,7 @@ msgstr "回傳第一個åƒæ•¸çš„第二個åƒæ•¸å†ªæ¬¡çš„值。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Converts a quantity in degrees to radians."
-msgstr "將度數轉æ›ç‚ºå¼§åº¦ã€‚"
+msgstr "將角度轉æ›ç‚ºå¼§åº¦ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "1.0 / scalar"
@@ -8851,7 +8847,7 @@ msgstr "尋找åƒæ•¸æœ€è¿‘的整數。"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Finds the nearest even integer to the parameter."
-msgstr "尋找åƒæ•¸æœ€è¿‘的整數。"
+msgstr "尋找åƒæ•¸æœ€è¿‘çš„å¶æ•¸ã€‚"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Clamps the value between 0.0 and 1.0."
@@ -9230,7 +9226,7 @@ msgstr "(é™ç‰‡æ®µï¼å…‰ç…§æ¨¡å¼ï¼‰ï¼ˆç´”é‡ï¼‰åŠ ç¸½ã€Œxã€èˆ‡ã€Œyã€é€²è¡Œç
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
-msgstr "視覺著色器 (VisualShader)"
+msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Edit Visual Property"
@@ -9258,7 +9254,7 @@ msgstr "是å¦è¦è‡ªåˆ—表中刪除「%sã€ä¿®æ­£æª”?"
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
-msgstr "確定è¦åˆªé™¤ Preset「%sã€ï¼Ÿ"
+msgstr "確定è¦åˆªé™¤é è¨­è¨­å®šã€Œ%sã€ï¼Ÿ"
#: editor/project_export.cpp
msgid ""
@@ -9275,11 +9271,11 @@ msgid ""
"export settings."
msgstr ""
"為平å°ã€Œ%sã€åŒ¯å‡ºå°ˆæ¡ˆå¤±æ•—。\n"
-"å¯èƒ½ä½¿ç”±æ–¼åŒ¯å‡º Preset 或匯出設定中的組態設定有å•é¡Œå°Žè‡´ã€‚"
+"å¯èƒ½æ˜¯ç”±æ–¼åŒ¯å‡ºé è¨­è¨­å®šæˆ–匯出設定中的組態設定有å•é¡Œå°Žè‡´ã€‚"
#: editor/project_export.cpp
msgid "Release"
-msgstr "釋出"
+msgstr "發行"
#: editor/project_export.cpp
msgid "Exporting All"
@@ -9295,7 +9291,7 @@ msgstr "該平å°çš„匯出範本éºå¤±ï¼æ毀:"
#: editor/project_export.cpp
msgid "Presets"
-msgstr "Preset"
+msgstr "é è¨­è¨­å®š"
#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add..."
@@ -9306,8 +9302,8 @@ msgid ""
"If checked, the preset will be available for use in one-click deploy.\n"
"Only one preset per platform may be marked as runnable."
msgstr ""
-"è‹¥é¸ä¸­ï¼Œå‰‡ Preset å°‡å¯ä½¿ç”¨ä¸€éµéƒ¨ç½²ã€‚\n"
-"æ¯å€‹å¹³å°åªå¯å°‡ä¸€å€‹ Preset 設為å¯åŸ·è¡Œã€‚"
+"è‹¥é¸ä¸­ï¼Œå‰‡é è¨­è¨­å®šå°‡å¯ä½¿ç”¨å–®éµéƒ¨ç½²ã€‚\n"
+"æ¯å€‹å¹³å°åªå¯å°‡ä¸€å€‹é è¨­è¨­å®šè¨­ç‚ºå¯åŸ·è¡Œã€‚"
#: editor/project_export.cpp
msgid "Export Path"
@@ -9342,7 +9338,7 @@ msgid ""
"Filters to export non-resource files/folders\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
-"éŽæ¿¾éžè³‡æºçš„檔案ï¼è³‡æ–™å¤¾ä»¥åŒ¯å‡º\n"
+"篩é¸éžè³‡æºçš„檔案ï¼è³‡æ–™å¤¾ä»¥é€²è¡ŒåŒ¯å‡º\n"
"(以åŠå½¢é€—號å€åˆ†ï¼Œå¦‚: *.json, *.txt, docs/*)"
#: editor/project_export.cpp
@@ -9350,7 +9346,7 @@ msgid ""
"Filters to exclude files/folders from project\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
-"éŽæ¿¾ä»¥åœ¨å°ˆæ¡ˆå…§æŽ’除檔案ï¼è³‡æ–™å¤¾\n"
+"進行篩é¸ä»¥åœ¨å°ˆæ¡ˆå…§æŽ’除檔案ï¼è³‡æ–™å¤¾\n"
"(以åŠå½¢é€—號å€åˆ†ï¼Œå¦‚: *.json, *.txt, docs/*)"
#: editor/project_export.cpp
@@ -9550,7 +9546,7 @@ msgstr "專案安è£è·¯å¾‘:"
#: editor/project_manager.cpp
msgid "Renderer:"
-msgstr "算圖器:"
+msgstr "轉譯器:"
#: editor/project_manager.cpp
msgid "OpenGL ES 3.0"
@@ -9586,7 +9582,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr "ç¨å¾Œä»å¯æ›´æ”¹ç®—圖器,但å¯èƒ½éœ€è¦å°å ´æ™¯é€²è¡Œèª¿æ•´ã€‚"
+msgstr "ç¨å¾Œä»å¯æ›´æ”¹è½‰è­¯å™¨ï¼Œä½†å¯èƒ½éœ€è¦å°å ´æ™¯é€²è¡Œèª¿æ•´ã€‚"
#: editor/project_manager.cpp
msgid "Unnamed Project"
@@ -9602,7 +9598,7 @@ msgstr "錯誤:專案在檔案系統上éºå¤±ã€‚"
#: editor/project_manager.cpp
msgid "Can't open project at '%s'."
-msgstr "無法在「%sã€ä¸­æ‰“開專案。"
+msgstr "無法於「%sã€æ‰“開專案。"
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
@@ -9625,7 +9621,7 @@ msgstr ""
"%s\n"
"\n"
"若您繼續開啟,會將其轉æ›ç‚ºç›®å‰ Godot 版本的組態設定檔案格å¼ã€‚\n"
-"警告:您將ä¸å†å¯ä½¿ç”¨éŽå¾€ç‰ˆæœ¬çš„引擎開啟該專案。"
+"警告:您將ä¸å†å¯ä½¿ç”¨èˆŠç‰ˆçš„ Godot 開啟該專案。"
#: editor/project_manager.cpp
msgid ""
@@ -9638,12 +9634,13 @@ msgid ""
"Warning: You won't be able to open the project with previous versions of the "
"engine anymore."
msgstr ""
-"下列專案設定檔時由較舊版本的引擎所產生,且需è¦å°‡å…¶è½‰æ›ç‚ºç›®å‰çš„版本:\n"
+"下列專案設定檔是由較舊版本的 Godot 產生,需進行轉æ›ä»¥é©ç”¨æ–¼ç›®å‰ç‰ˆæœ¬çš„ "
+"Godot:\n"
"\n"
"%s\n"
"\n"
"è¦é€²è¡Œè½‰æ›å—Žï¼Ÿ\n"
-"警告:您將ä¸å†å¯ä½¿ç”¨éŽå¾€ç‰ˆæœ¬çš„引擎開啟該專案。"
+"警告:您將ä¸å†å¯ä½¿ç”¨èˆŠç‰ˆçš„ Godot 開啟該專案。"
#: editor/project_manager.cpp
msgid ""
@@ -9709,7 +9706,7 @@ msgid ""
"Are you sure to scan %s folders for existing Godot projects?\n"
"This could take a while."
msgstr ""
-"確定è¦ç‚ºç¾å­˜çš„ Godot 專案掃æ %s 資料夾嗎?\n"
+"確定è¦æŽƒæ %s 中的 Godot 專案嗎?\n"
"這å¯èƒ½éœ€è¦ä¸€æ®µæ™‚間。"
#: editor/project_manager.cpp
@@ -9766,12 +9763,12 @@ msgid ""
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
-"æœå°‹æ¡†å¯ä»¥ç”¨ä¾†ä¾æ“šå稱與路徑中的最後一部分來éŽæ¿¾å°ˆæ¡ˆã€‚\n"
-"è‹¥è¦ä»¥å稱與完整路徑來éŽæ¿¾å°ˆæ¡ˆï¼Œæœå°‹å…§å®¹æ‡‰è©²è‡³å°‘包å«ä¸€å€‹ã€Œ/ã€å­—元。"
+"æœå°‹æ¡†å¯ä»¥ç”¨ä¾†ä¾æ“šå稱與路徑中的最後一部分來篩é¸å°ˆæ¡ˆã€‚\n"
+"è‹¥è¦ä»¥å稱與完整路徑來éŽæ¿¾å°ˆæ¡ˆï¼Œæœå°‹å…§å®¹æ‡‰è‡³å°‘包å«ä¸€å€‹ã€Œ/ã€å­—元。"
#: editor/project_settings_editor.cpp
msgid "Key "
-msgstr "éµ "
+msgstr "æŒ‰éµ "
#: editor/project_settings_editor.cpp
msgid "Joy Button"
@@ -9789,7 +9786,7 @@ msgstr "滑鼠按鈕"
msgid ""
"Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
-msgstr "無效的æ“作å稱。ä¸èƒ½ç‚ºç©ºæˆ–包å«ã€Œ/ã€ã€ã€Œ:ã€ã€ã€Œ=ã€ã€ã€Œ\\ã€æˆ–「\"ã€"
+msgstr "無效的æ“作å稱。å稱ä¸å¯ç•™ç©ºæˆ–åŒ…å« â€œ/â€, “:â€, “=â€, “\\†或 “\"â€"
#: editor/project_settings_editor.cpp
msgid "An action with the name '%s' already exists."
@@ -9885,7 +9882,7 @@ msgstr "新增事件"
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr "Button (按鈕)"
+msgstr "按鈕"
#: editor/project_settings_editor.cpp
msgid "Left Button."
@@ -9931,7 +9928,7 @@ msgstr "刪除項目"
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'."
-msgstr "無效的æ“作å稱。ä¸èƒ½ç‚ºç©ºæˆ–包å«ã€Œ/ã€ã€ã€Œ:ã€ã€ã€Œ=ã€ã€ã€Œ\\ã€æˆ–「\"ã€ã€‚"
+msgstr "無效的æ“作å稱。å稱ä¸å¯ç•™ç©ºæˆ–åŒ…å« â€œ/â€, “:â€, “=â€, “\\†或 “\"â€ã€‚"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
@@ -9983,11 +9980,11 @@ msgstr "移除資æºé‡æ˜ å°„é¸é …"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter"
-msgstr "更改å€åŸŸéŽæ¿¾"
+msgstr "更改地å€è¨­å®šç¯©é¸æ¢ä»¶"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter Mode"
-msgstr "更改å€åŸŸéŽæ¿¾æ¨¡å¼"
+msgstr "更改地å€è¨­å®šç¯©é¸æ¨¡å¼"
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
@@ -10051,31 +10048,31 @@ msgstr "資æºï¼š"
#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
-msgstr "ä¾èªžè¨€é‡æ˜ å°„:"
+msgstr "ä¾åœ°å€è¨­å®šé‡æ˜ å°„:"
#: editor/project_settings_editor.cpp
msgid "Locale"
-msgstr "語言"
+msgstr "地å€"
#: editor/project_settings_editor.cpp
msgid "Locales Filter"
-msgstr "語言éŽæ¿¾"
+msgstr "地å€ç¯©é¸æ¢ä»¶"
#: editor/project_settings_editor.cpp
msgid "Show All Locales"
-msgstr "顯示所有語言"
+msgstr "顯示所有地å€"
#: editor/project_settings_editor.cpp
msgid "Show Selected Locales Only"
-msgstr "僅顯示é¸å®šçš„語言"
+msgstr "僅顯示é¸å®šçš„地å€"
#: editor/project_settings_editor.cpp
msgid "Filter mode:"
-msgstr "éŽæ¿¾æ¨¡å¼ï¼š"
+msgstr "篩é¸æ¨¡å¼ï¼š"
#: editor/project_settings_editor.cpp
msgid "Locales:"
-msgstr "語言:"
+msgstr "地å€ï¼š"
#: editor/project_settings_editor.cpp
msgid "AutoLoad"
@@ -10087,7 +10084,7 @@ msgstr "外掛"
#: editor/property_editor.cpp
msgid "Preset..."
-msgstr "Preset..."
+msgstr "é è¨­è¨­å®š..."
#: editor/property_editor.cpp
msgid "Zero"
@@ -10099,7 +10096,7 @@ msgstr "緩入緩出"
#: editor/property_editor.cpp
msgid "Easing Out-In"
-msgstr "緩入緩出(åå‘)"
+msgstr "緩出緩入"
#: editor/property_editor.cpp
msgid "File..."
@@ -10333,7 +10330,7 @@ msgstr "å–消附加腳本"
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on the tree root."
-msgstr "æ­¤æ“作無法在樹狀根執行。"
+msgstr "æ­¤æ“作無法在樹狀根節點執行。"
#: editor/scene_tree_dock.cpp
msgid "Move Node In Parent"
@@ -10364,6 +10361,11 @@ msgid "Make node as Root"
msgstr "將節點設為根節點"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Delete %d nodes and any children?"
+msgstr "確定è¦åˆªé™¤ç¯€é»žã€Œ%sã€èˆ‡å…¶å­ç¯€é»žå—Žï¼Ÿ"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete %d nodes?"
msgstr "刪除 %d 個節點?"
@@ -10456,7 +10458,7 @@ msgstr "更改節點的型別"
msgid ""
"Couldn't save new scene. Likely dependencies (instances) couldn't be "
"satisfied."
-msgstr "無法ä¿å­˜æ–°å ´æ™¯ã€‚很å¯èƒ½ç”±æ–¼ç„¡æ³•æ»¿è¶³å…¶ä¾è³´æ€§ï¼ˆå¯¦é«”)。"
+msgstr "無法ä¿å­˜æ–°å ´æ™¯ã€‚å¯èƒ½æ˜¯ç”±æ–¼ç„¡æ³•æ»¿è¶³å…¶ä¾è³´æ€§ï¼ˆå¯¦é«”)。"
#: editor/scene_tree_dock.cpp
msgid "Error saving scene."
@@ -10493,7 +10495,7 @@ msgid ""
"disabled."
msgstr ""
"無法附加腳本:未註冊任何語言。\n"
-"有å¯èƒ½æ˜¯ç”±æ–¼ç·¨è¼¯å™¨åœ¨å»ºæ§‹æ™‚未啟用任何語言模組。"
+"å¯èƒ½æ˜¯ç”±æ–¼ç·¨è¼¯å™¨åœ¨å»ºæ§‹æ™‚未啟用任何語言模組。"
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
@@ -10634,7 +10636,7 @@ msgid ""
"AnimationPlayer is pinned.\n"
"Click to unpin."
msgstr ""
-"已固定動畫播放器 (AnimationPlayer)。\n"
+"已固定 AnimationPlayer。\n"
"點擊以å–消固定。"
#: editor/scene_tree_editor.cpp
@@ -10739,7 +10741,7 @@ msgstr "å¯ç”¨çš„腳本路徑ï¼å稱。"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr "å¯ä½¿ç”¨ï¼ša-zã€A-Zã€0-9ã€_ ä»¥åŠ ."
+msgstr "å¯ä½¿ç”¨ï¼ša-z, A-Z, 0-9, _ ä»¥åŠ ."
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)."
@@ -10761,7 +10763,7 @@ msgstr "腳本檔案已存在。"
msgid ""
"Note: Built-in scripts have some limitations and can't be edited using an "
"external editor."
-msgstr "注æ„:內置腳本有些é™åˆ¶ï¼Œä¸”無法使用外部編輯器來編輯。"
+msgstr "注æ„:內建腳本有些é™åˆ¶ï¼Œä¸”無法使用外部編輯器來編輯。"
#: editor/script_create_dialog.cpp
msgid "Class Name:"
@@ -10869,11 +10871,11 @@ msgstr "數值"
#: editor/script_editor_debugger.cpp
msgid "Monitors"
-msgstr "監視程å¼"
+msgstr "監視器"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
-msgstr "å­åˆ—表中é¸æ“‡ä¸€å€‹æˆ–多個項目以顯示圖表。"
+msgstr "在å­åˆ—表中é¸æ“‡ä¸€å€‹æˆ–多個項目以顯示圖表。"
#: editor/script_editor_debugger.cpp
msgid "List of Video Memory Usage by Resource:"
@@ -10957,7 +10959,7 @@ msgstr "更改光照åŠå¾‘"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr "更改音訊串æµæ’­æ”¾å™¨ 3D (AudioStreamPlayer3D) 發射角"
+msgstr "更改 AudioStreamPlayer3D 發射角"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -10977,7 +10979,7 @@ msgstr "æ›´æ”¹ç²’å­ AABB"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
-msgstr "更改探é‡ç¯„åœ"
+msgstr "更改探查範åœ"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Sphere Shape Radius"
@@ -11237,11 +11239,11 @@ msgstr "é¸æ“‡è·é›¢ï¼š"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Filter meshes"
-msgstr "éŽæ¿¾ç¶²æ ¼"
+msgstr "篩é¸ç¶²æ ¼"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr "æ供網格庫資æºäºˆè©²ç¶²æ ¼åœ°åœ–以使用其網格。"
+msgstr "æä¾› MeshLibrary 予該 GridMap 以使用其網格。"
#: modules/mono/csharp_script.cpp
msgid "Class name can't be a reserved keyword"
@@ -11253,7 +11255,7 @@ msgstr "內部異常堆疊回溯çµæŸ"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Bake NavMesh"
-msgstr "Bake 導航網格 (NavMesh)"
+msgstr "製作 NavMesh"
#: modules/recast/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -11391,11 +11393,11 @@ msgstr "訊號:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Create a new signal."
-msgstr "建立一個新的訊號。"
+msgstr "建立一個新訊號。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name is not a valid identifier:"
-msgstr "å稱ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符:"
+msgstr "å稱並éžæœ‰æ•ˆè­˜åˆ¥ç¬¦ï¼š"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
@@ -11451,13 +11453,12 @@ msgstr "é‡è¤‡è¦–覺腳本 (VisualScript) 節點"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-"æŒ‰ä½ %s 以拖移 Getter ç¯€é»žã€‚æŒ‰ä½ Shift 以拖移一個通用的簽章 (Signature)。"
+msgstr "æŒ‰ä½ %s 以拖移 Getter ç¯€é»žã€‚æŒ‰ä½ Shift 以拖移通用簽章 (Signature)。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
-"æŒ‰ä½ Ctrl 以拖移 Getter ç¯€é»žã€‚æŒ‰ä½ Shift 以拖移一個通用的簽å (Signature)。"
+"æŒ‰ä½ Ctrl 以拖移 Getter ç¯€é»žã€‚æŒ‰ä½ Shift 以拖移通用通用簽章 (Signature)。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a simple reference to the node."
@@ -11477,7 +11478,7 @@ msgstr "æŒ‰ä½ Ctrl 以拖動一個變數 Setter 節點。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Preload Node"
-msgstr "新增餘載 (Preload) 節點"
+msgstr "新增é è¼‰ (Preload) 節點"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
@@ -11665,7 +11666,7 @@ msgstr "無效的索引屬性å稱。"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
-msgstr "基礎物件ä¸æ˜¯ä¸€å€‹ç¯€é»žï¼"
+msgstr "基礎物件並éžç¯€é»žï¼"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
@@ -11677,11 +11678,11 @@ msgstr "無效的索引屬性å稱「%sã€ï¼Œæ–¼ç¯€é»žã€Œ%sã€ã€‚"
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
-msgstr ": 無效的引數型別 : "
+msgstr ": 無效的引數型別: "
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid arguments: "
-msgstr ": 無效的引數 : "
+msgstr ": 無效的引數: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
@@ -11751,11 +11752,11 @@ msgstr "尚未於編輯器設定中設定 OpenJDK Jarsigner。"
#: platform/android/export/export.cpp
msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr "尚未於編輯器設定或 Preset 中設定除錯鑰匙圈 (Keystore)。"
+msgstr "尚未於編輯器設定或é è¨­è¨­å®šä¸­è¨­å®šé‡‘é‘°å„²å­˜å€ (Keystore)。"
#: platform/android/export/export.cpp
msgid "Release keystore incorrectly configured in the export preset."
-msgstr "釋出 Keystore 中ä¸æ­£ç¢ºä¹‹çµ„態設定至匯出 Preset。"
+msgstr "發行金鑰儲存å€ä¸­ä¸æ­£ç¢ºä¹‹çµ„態設定至匯出é è¨­è¨­å®šã€‚"
#: platform/android/export/export.cpp
msgid "Custom build requires a valid Android SDK path in Editor Settings."
@@ -11866,7 +11867,7 @@ msgstr "無效的識別符:"
#: platform/iphone/export/export.cpp
msgid "Required icon is not specified in the preset."
-msgstr "必須在 Preset 中指定必填圖示。"
+msgstr "必須在é è¨­è¨­å®šä¸­æŒ‡å®šå¿…填圖示。"
#: platform/javascript/export/export.cpp
msgid "Stop HTTP Server"
@@ -11979,8 +11980,7 @@ msgid ""
"define its shape."
msgstr ""
"該節點無形狀,故無法與其他物件碰撞或互動。\n"
-"請考慮新增一個 CollisionShape2D 或 CollisionPolygon2D 為其å­ç¯€é»žä»¥å®šç¾©å…¶å½¢"
-"狀。"
+"建議您新增 CollisionShape2D 或 CollisionPolygon2D 作為其å­ç¯€é»žä»¥å®šç¾©å…¶å½¢ç‹€ã€‚"
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -11988,7 +11988,7 @@ msgid ""
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
-"CollisionPolygon2D åªèƒ½ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅"
+"CollisionPolygon2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅"
"æ–¼ Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D…等節點下作為å­ç¯€é»žä½¿"
"用。"
@@ -12002,7 +12002,7 @@ msgid ""
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
-"CollisionShape2D åªèƒ½ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
+"CollisionShape2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
"Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D…等節點下作為å­ç¯€é»žä½¿ç”¨ä»¥æ"
"供形狀。"
@@ -12012,6 +12012,12 @@ msgid ""
"shape resource for it!"
msgstr "CollisionShape2D 必須被賦予形狀æ‰èƒ½é‹ä½œã€‚請先建立形狀ï¼"
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"Polygon-based shapes are not meant be used nor edited directly through the "
+"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
+msgstr ""
+
#: scene/2d/cpu_particles_2d.cpp
msgid ""
"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
@@ -12063,7 +12069,7 @@ msgid ""
"CPUParticles\" option for this purpose."
msgstr ""
"GLES2 視訊驅動程å¼ç›®å‰ä¸æ”¯æ´åŸºæ–¼ GPU çš„ç²’å­ã€‚\n"
-"請改為使用 CPUParticles2D 節點。你å¯ä»¥ä½¿ç”¨ã€Œè½‰æ›ç‚º CPUParticlesã€é¸é …。"
+"請改為使用 CPUParticles2D 節點。å¯ä½¿ç”¨ã€ŒConvert to CPUParticlesã€é¸é …。"
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid ""
@@ -12075,7 +12081,9 @@ msgstr "尚未指定è¦è™•ç†ç²’å­çš„æ料,故未產生任何行為。"
msgid ""
"Particles2D animation requires the usage of a CanvasItemMaterial with "
"\"Particles Animation\" enabled."
-msgstr "Particles2D 動畫需è¦ä½¿ç”¨é–‹å•Ÿäº†ã€Œç²’å­å‹•ç•«ã€çš„ CanvasItemMaterial。"
+msgstr ""
+"Particles2D 動畫需è¦ä½¿ç”¨é–‹å•Ÿäº†ã€ŒParticles Animation(粒å­å‹•ç•«ï¼‰ã€çš„ "
+"CanvasItemMaterial。"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -12106,7 +12114,7 @@ msgstr "Bone2D 僅在其為 Skeleton2D 或å¦ä¸€å€‹ Bone2D çš„å­ç¯€é»žæ™‚有效
#: scene/2d/skeleton_2d.cpp
msgid ""
"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr "該骨骼缺少é©ç•¶çš„ REST 姿勢。請跳至 Skeleton2D 節點並進行設定。"
+msgstr "該骨骼缺少é©ç•¶çš„「éœæ­¢å§¿å‹¢ã€ã€‚請跳至 Skeleton2D 節點並進行設定。"
#: scene/2d/tile_map.cpp
msgid ""
@@ -12114,7 +12122,7 @@ msgid ""
"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
"KinematicBody2D, etc. to give them a shape."
msgstr ""
-"CollisionShape2D åªèƒ½ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請將其"
+"CollisionShape2D 僅å¯ç‚º CollisionObject2D è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請將其"
"設為 Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D… çš„å­ç¯€é»žä»¥è³¦äºˆå…¶å½¢"
"狀。"
@@ -12183,7 +12191,7 @@ msgid ""
"its shape."
msgstr ""
"該節點沒有形狀,故無法與其他物件碰撞或互動。\n"
-"請考慮新增一個 CollisionShape 或 CollisionPolygon 作為其å­ç¯€é»žä»¥å®šç¾©å…¶å½¢ç‹€ã€‚"
+"建議您新增 CollisionShape 或 CollisionPolygon 作為其å­ç¯€é»žä»¥å®šç¾©å…¶å½¢ç‹€ã€‚"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -12191,7 +12199,7 @@ msgid ""
"CollisionObject derived node. Please only use it as a child of Area, "
"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
msgstr ""
-"CollisionPolygon åªèƒ½ç‚º CollisionObject è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
+"CollisionPolygon 僅å¯ç‚º CollisionObject è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
"Areaã€StaticBodyã€RigidBodyã€KinematicBody…等節點下作為å­ç¯€é»žä½¿ç”¨ã€‚"
#: scene/3d/collision_polygon.cpp
@@ -12204,7 +12212,7 @@ msgid ""
"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
"KinematicBody, etc. to give them a shape."
msgstr ""
-"CollisionShape åªèƒ½ç‚º CollisionObject è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
+"CollisionShape 僅å¯ç‚º CollisionObject è¡ç”Ÿçš„節點æ供碰撞形狀資訊。請僅於 "
"Areaã€StaticBodyã€RigidBodyã€KinematicBody…等節點下作為å­ç¯€é»žä½¿ç”¨ã€‚"
#: scene/3d/collision_shape.cpp
@@ -12217,7 +12225,7 @@ msgstr "CollisionShape 必須被賦予形狀æ‰èƒ½é‹ä½œã€‚請先建立形狀。
msgid ""
"Plane shapes don't work well and will be removed in future versions. Please "
"don't use them."
-msgstr "å¹³é¢å½¢ç‹€çš„é‹ä½œä¸å¤ªæ­£å¸¸ï¼Œä¸”將在未來的版本移除。請勿使用。"
+msgstr "å¹³é¢å½¢ç‹€æ™‚常無法正常使用,且將在未來的版本移除。請勿使用。"
#: scene/3d/collision_shape.cpp
msgid ""
@@ -12271,7 +12279,7 @@ msgid ""
"\" option for this purpose."
msgstr ""
"GLES2 視訊驅動程å¼ä¸æ”¯æ´åŸºæ–¼ GPU çš„ç²’å­ã€‚\n"
-"請改為使用 CPUParticles 節點。為此您å¯ä»¥ä½¿ç”¨ã€Œè½‰æ›ç‚º CPUParticlesã€é¸é …。"
+"請改為使用 CPUParticles 節點。å¯ä½¿ç”¨ã€ŒConvert to CPUParticlesã€é¸é …。"
#: scene/3d/particles.cpp
msgid ""
@@ -12295,8 +12303,8 @@ msgid ""
"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
"parent Path's Curve resource."
msgstr ""
-"PathFollow çš„ ROTATION_ORIENTED 需è¦åœ¨å…¶æ¯ç¯€é»ž Path çš„ Curve 資æºå…§å•Ÿç”¨ã€Œä¸Šå‘"
-"é‡ (Up Vector)ã€ã€‚"
+"PathFollow çš„ ROTATION_ORIENTED 需è¦åœ¨å…¶æ¯ç¯€é»ž Path çš„ Curve 資æºå…§å•Ÿç”¨ã€ŒUp "
+"Vectorã€ã€‚"
#: scene/3d/physics_body.cpp
msgid ""
@@ -12313,7 +12321,7 @@ msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
-"「é ç«¯è·¯å¾‘ã€å±¬æ€§å¿…須指å‘一個有效的 Spatial 或 Spatial è¡ç”Ÿä¹‹ç¯€é»žæ‰å¯é‹ä½œã€‚"
+"「Remote Pathã€å±¬æ€§å¿…須指å‘一個有效的 Spatial 或 Spatial è¡ç”Ÿä¹‹ç¯€é»žæ‰å¯é‹ä½œã€‚"
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -12362,8 +12370,8 @@ msgid ""
"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
"this environment's Background Mode to Canvas (for 2D scenes)."
msgstr ""
-"已忽略該 WorldEnvironment。請(為 3D 場景)新增一個相機或(為 2D 場景)設定環"
-"å¢ƒä¹‹èƒŒæ™¯æ¨¡å¼ (Background Mode) 為畫布 (Canvas)。"
+"已忽略該 WorldEnvironment。請(為 3D 場景)新增一個相機或(為 2D 場景)將 "
+"Environment 之 Background Mode 設為 Canvas。"
#: scene/animation/animation_blend_tree.cpp
msgid "On BlendTree node '%s', animation not found: '%s'"
@@ -12413,7 +12421,7 @@ msgid ""
msgstr ""
"色彩: #%s\n"
"å·¦éµé»žæ“Šï¼šè¨­å®šè‰²å½©\n"
-"å³éµé»žæ“Šï¼šåˆªé™¤ Preset"
+"å³éµé»žæ“Šï¼šåˆªé™¤é è¨­è¨­å®š"
#: scene/gui/color_picker.cpp
msgid "Pick a color from the editor window."
@@ -12433,7 +12441,7 @@ msgstr "在 16 進ä½èˆ‡ä»£ç¢¼å€¼ä¹‹é–“切æ›ã€‚"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset."
-msgstr "將目å‰çš„é¡è‰²åŠ å…¥ Preset。"
+msgstr "將目å‰çš„é¡è‰²åŠ å…¥é è¨­è¨­å®šã€‚"
#: scene/gui/container.cpp
msgid ""
@@ -12450,8 +12458,8 @@ msgid ""
"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
msgstr ""
-"ç”±æ–¼è¨­å®šçš„æ»‘é¼ ç¯©é¸ (Mouse Filter) 設定為「忽略 (Ignore)ã€ï¼Œå°‡ä¸æœƒé¡¯ç¤ºæ示 "
-"Tooltip 。è¦è§£æ±ºè©²å•é¡Œï¼Œè«‹å°‡æ»‘鼠篩é¸è¨­ç‚ºã€Œåœæ­¢ (Stop)ã€æˆ–ã€Œé€šéŽ (Pass)ã€ã€‚"
+"由於設定的 Mouse Filter 設定為「Ignoreã€ï¼Œå°‡ä¸æœƒé¡¯ç¤ºæ示工具æ示 。è¦è§£æ±ºè©²å•"
+"題,請將 Mouse Filter 設為「Stopã€æˆ–「Passã€ã€‚"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -12472,7 +12480,7 @@ msgstr ""
#: scene/gui/range.cpp
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr "若啟用「表示å¼ç·¨è¼¯ã€ï¼Œå‰‡ã€Œæœ€å°å€¼ã€å¿…須大於 0。"
+msgstr "若啟用「Exp Editã€ï¼Œå‰‡ã€ŒMin Valueã€å¿…須大於 0。"
#: scene/gui/scroll_container.cpp
msgid ""
@@ -12492,7 +12500,7 @@ msgstr "(其它)"
msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
-msgstr "無法載入專案設定中指定的é è¨­ç’°å¢ƒï¼ˆç®—圖 -> 環境 -> é è¨­ç’°å¢ƒï¼‰ã€‚"
+msgstr "無法載入專案設定中指定的é è¨­ç’°å¢ƒï¼ˆç®—繪 -> 環境 -> é è¨­ç’°å¢ƒï¼‰ã€‚"
#: scene/main/viewport.cpp
msgid ""
@@ -12501,13 +12509,13 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
-"該 Viewport 尚未被設定為算圖目標。若你想直接將其內容顯示於畫é¢ä¸Šï¼Œè«‹å°‡å…¶è¨­ç‚º "
+"該 Viewport 尚未被設定為算繪目標。若你想直接將其內容顯示於畫é¢ä¸Šï¼Œè«‹å°‡å…¶è¨­ç‚º "
"Control çš„å­ç¯€é»žä»¥è®“å…¶å–得大å°ã€‚å¦å‰‡è«‹å°‡å…¶è¨­ç‚º RenderTarget 並指派其內部紋ç†"
"為其他節點以顯示。"
#: scene/main/viewport.cpp
msgid "Viewport size must be greater than 0 to render anything."
-msgstr "Viewport 大å°å¿…須大於 0 æ‰å¯é€²è¡Œç®—圖。"
+msgstr "Viewport 大å°å¿…須大於 0 æ‰å¯é€²è¡Œç®—繪。"
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for preview."
@@ -12537,6 +12545,9 @@ msgstr "Varying 變數åªå¯åœ¨é ‚點函å¼ä¸­æŒ‡æ´¾ã€‚"
msgid "Constants cannot be modified."
msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
+#~ msgid "Current scene was never saved, please save it prior to running."
+#~ msgstr "ç›®å‰çš„場景從未被ä¿å­˜ï¼Œè«‹å…ˆä¿å­˜ä»¥åŸ·è¡Œã€‚"
+
#~ msgid "Not in resource path."
#~ msgstr "ä¸åœ¨è³‡æºè·¯å¾‘中。"
diff --git a/main/SCsub b/main/SCsub
index 97f77840f1..ebadefd450 100644
--- a/main/SCsub
+++ b/main/SCsub
@@ -2,7 +2,6 @@
Import("env")
-from platform_methods import run_in_subprocess
import main_builders
env.main_sources = []
@@ -15,15 +14,21 @@ if env["tests"]:
env_main.Append(CPPDEFINES=["TESTS_ENABLED"])
env_main.Depends("#main/splash.gen.h", "#main/splash.png")
-env_main.CommandNoCache("#main/splash.gen.h", "#main/splash.png", run_in_subprocess(main_builders.make_splash))
+env_main.CommandNoCache(
+ "#main/splash.gen.h", "#main/splash.png", env.Run(main_builders.make_splash, "Building splash screen header."),
+)
env_main.Depends("#main/splash_editor.gen.h", "#main/splash_editor.png")
env_main.CommandNoCache(
- "#main/splash_editor.gen.h", "#main/splash_editor.png", run_in_subprocess(main_builders.make_splash_editor)
+ "#main/splash_editor.gen.h",
+ "#main/splash_editor.png",
+ env.Run(main_builders.make_splash_editor, "Building editor splash screen header."),
)
env_main.Depends("#main/app_icon.gen.h", "#main/app_icon.png")
-env_main.CommandNoCache("#main/app_icon.gen.h", "#main/app_icon.png", run_in_subprocess(main_builders.make_app_icon))
+env_main.CommandNoCache(
+ "#main/app_icon.gen.h", "#main/app_icon.png", env.Run(main_builders.make_app_icon, "Building application icon."),
+)
lib = env_main.add_library("main", env.main_sources)
env.Prepend(LIBS=[lib])
diff --git a/main/main.cpp b/main/main.cpp
index 6965e5415a..5f791159f9 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -262,25 +262,20 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" -h, --help Display this help message.\n");
OS::get_singleton()->print(" --version Display the version string.\n");
OS::get_singleton()->print(" -v, --verbose Use verbose stdout mode.\n");
- OS::get_singleton()->print(
- " --quiet Quiet mode, silences stdout messages. Errors are still displayed.\n");
+ OS::get_singleton()->print(" --quiet Quiet mode, silences stdout messages. Errors are still displayed.\n");
OS::get_singleton()->print("\n");
OS::get_singleton()->print("Run options:\n");
#ifdef TOOLS_ENABLED
OS::get_singleton()->print(" -e, --editor Start the editor instead of running the scene.\n");
- OS::get_singleton()->print(
- " -p, --project-manager Start the project manager, even if a project is auto-detected.\n");
+ OS::get_singleton()->print(" -p, --project-manager Start the project manager, even if a project is auto-detected.\n");
#endif
OS::get_singleton()->print(" -q, --quit Quit after the first iteration.\n");
- 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(" -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(" --render-thread <mode> Render thread mode ('unsafe', 'safe', 'separate').\n");
OS::get_singleton()->print(" --remote-fs <address> Remote filesystem (<host/IP>[:<port>] address).\n");
OS::get_singleton()->print(" --remote-fs-password <password> Password for remote filesystem.\n");
@@ -321,12 +316,9 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --resolution <W>x<H> Request window resolution.\n");
OS::get_singleton()->print(" --position <X>,<Y> Request window position.\n");
OS::get_singleton()->print(" --low-dpi Force low-DPI mode (macOS and Windows only).\n");
- OS::get_singleton()->print(
- " --no-window Disable window creation (Windows only). Useful together with --script.\n");
- OS::get_singleton()->print(
- " --enable-vsync-via-compositor When vsync is enabled, vsync via the OS' window compositor (Windows only).\n");
- OS::get_singleton()->print(
- " --disable-vsync-via-compositor Disable vsync via the OS' window compositor (Windows only).\n");
+ OS::get_singleton()->print(" --no-window Disable window creation (Windows only). Useful together with --script.\n");
+ OS::get_singleton()->print(" --enable-vsync-via-compositor When vsync is enabled, vsync via the OS' window compositor (Windows only).\n");
+ OS::get_singleton()->print(" --disable-vsync-via-compositor Disable vsync via the OS' window compositor (Windows only).\n");
OS::get_singleton()->print(" --single-window Use a single window (no separate subwindows).\n");
OS::get_singleton()->print(" --tablet-driver Tablet input driver (");
for (int i = 0; i < OS::get_singleton()->get_tablet_driver_count(); i++) {
@@ -340,62 +332,38 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print("Debug options:\n");
OS::get_singleton()->print(" -d, --debug Debug (local stdout debugger).\n");
- OS::get_singleton()->print(
- " -b, --breakpoints Breakpoint list as source::line comma-separated pairs, no spaces (use %%20 instead).\n");
+ OS::get_singleton()->print(" -b, --breakpoints Breakpoint list as source::line comma-separated pairs, no spaces (use %%20 instead).\n");
OS::get_singleton()->print(" --profiling Enable profiling in the script debugger.\n");
- OS::get_singleton()->print(
- " --gpu-abort Abort on GPU errors (usually validation layer errors), may help see the problem if your system freezes.\n");
- OS::get_singleton()->print(
- " --remote-debug <uri> Remote debug (<protocol>://<host/IP>[:<port>], e.g. tcp://127.0.0.1:6007).\n");
+ OS::get_singleton()->print(" --gpu-abort Abort on GPU errors (usually validation layer errors), may help see the problem if your system freezes.\n");
+ OS::get_singleton()->print(" --remote-debug <uri> Remote debug (<protocol>://<host/IP>[:<port>], e.g. tcp://127.0.0.1:6007).\n");
#if defined(DEBUG_ENABLED) && !defined(SERVER_ENABLED)
OS::get_singleton()->print(" --debug-collisions Show collision shapes when running the scene.\n");
OS::get_singleton()->print(" --debug-navigation Show navigation polygons when running the scene.\n");
#endif
- OS::get_singleton()->print(
- " --frame-delay <ms> Simulate high CPU load (delay each frame by <ms> milliseconds).\n");
- OS::get_singleton()->print(
- " --time-scale <scale> Force time scale (higher values are faster, 1.0 is normal speed).\n");
- OS::get_singleton()->print(
- " --disable-render-loop Disable render loop so rendering only occurs when called explicitly from script.\n");
- OS::get_singleton()->print(
- " --disable-crash-handler Disable crash handler when supported by the platform code.\n");
- OS::get_singleton()->print(
- " --fixed-fps <fps> Force a fixed number of frames per second. This setting disables real-time synchronization.\n");
+ OS::get_singleton()->print(" --frame-delay <ms> Simulate high CPU load (delay each frame by <ms> milliseconds).\n");
+ OS::get_singleton()->print(" --time-scale <scale> Force time scale (higher values are faster, 1.0 is normal speed).\n");
+ OS::get_singleton()->print(" --disable-render-loop Disable render loop so rendering only occurs when called explicitly from script.\n");
+ OS::get_singleton()->print(" --disable-crash-handler Disable crash handler when supported by the platform code.\n");
+ OS::get_singleton()->print(" --fixed-fps <fps> Force a fixed number of frames per second. This setting disables real-time synchronization.\n");
OS::get_singleton()->print(" --print-fps Print the frames per second to the stdout.\n");
OS::get_singleton()->print("\n");
OS::get_singleton()->print("Standalone tools:\n");
OS::get_singleton()->print(" -s, --script <script> Run a script.\n");
- OS::get_singleton()->print(
- " --check-only Only parse for errors and quit (use with --script).\n");
+ OS::get_singleton()->print(" --check-only Only parse for errors and quit (use with --script).\n");
#ifdef TOOLS_ENABLED
- OS::get_singleton()->print(
- " --export <preset> <path> Export the project using the given preset and matching release template. The preset name should match one defined in export_presets.cfg.\n");
- OS::get_singleton()->print(
- " <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe'). The target directory should exist.\n");
+ OS::get_singleton()->print(" --export <preset> <path> Export the project using the given preset and matching release template. The preset name should match one defined in export_presets.cfg.\n");
+ OS::get_singleton()->print(" <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe'). The target directory should exist.\n");
OS::get_singleton()->print(" --export-debug <preset> <path> Same as --export, but using the debug template.\n");
- OS::get_singleton()->print(
- " --export-pack <preset> <path> Same as --export, but only export the game pack for the given preset. The <path> extension determines whether it will be in PCK or ZIP format.\n");
- OS::get_singleton()->print(
- " --doctool <path> Dump the engine API reference to the given <path> in XML format, merging if existing files are found.\n");
- OS::get_singleton()->print(
- " --no-docbase Disallow dumping the base types (used with --doctool).\n");
- OS::get_singleton()->print(
- " --build-solutions Build the scripting solutions (e.g. for C# projects). Implies --editor and requires a valid project to edit.\n");
+ OS::get_singleton()->print(" --export-pack <preset> <path> Same as --export, but only export the game pack for the given preset. The <path> extension determines whether it will be in PCK or ZIP format.\n");
+ OS::get_singleton()->print(" --doctool <path> Dump the engine API reference to the given <path> in XML format, merging if existing files are found.\n");
+ OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n");
+ OS::get_singleton()->print(" --build-solutions Build the scripting solutions (e.g. for C# projects). Implies --editor and requires a valid project to edit.\n");
#ifdef DEBUG_METHODS_ENABLED
- OS::get_singleton()->print(
- " --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n");
+ OS::get_singleton()->print(" --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n");
#endif
#ifdef TESTS_ENABLED
- OS::get_singleton()->print(" --test <test> Run a unit test [");
- const char **test_names = tests_get_names();
- const char *comma = "";
- while (*test_names) {
- OS::get_singleton()->print("%s'%s'", comma, *test_names);
- test_names++;
- comma = ", ";
- }
- OS::get_singleton()->print("].\n");
+ OS::get_singleton()->print(" --test [--help] Run unit tests. Use --test --help for more information.\n");
#endif
OS::get_singleton()->print("\n");
#endif
@@ -879,7 +847,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
} else if (I->get() == "--time-scale") { // force time scale
if (I->next()) {
- Engine::get_singleton()->set_time_scale(I->next()->get().to_double());
+ Engine::get_singleton()->set_time_scale(I->next()->get().to_float());
N = I->next()->next();
} else {
OS::get_singleton()->print("Missing time scale argument, aborting.\n");
@@ -2017,7 +1985,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),
+ Size2i stretch_size = Size2i(GLOBAL_DEF("display/window/size/width", 0),
GLOBAL_DEF("display/window/size/height", 0));
Window::ContentScaleMode cs_sm = Window::CONTENT_SCALE_MODE_DISABLED;
diff --git a/methods.py b/methods.py
index fe93db4797..65b0e2dd6b 100644
--- a/methods.py
+++ b/methods.py
@@ -4,6 +4,11 @@ import glob
import subprocess
from collections import OrderedDict
+# We need to define our own `Action` method to control the verbosity of output
+# and whenever we need to run those commands in a subprocess on some platforms.
+from SCons.Script import Action
+from platform_methods import run_in_subprocess
+
def add_source_files(self, sources, files, warn_duplicates=True):
# Convert string to list of absolute paths (including expanding wildcard)
@@ -621,6 +626,14 @@ def CommandNoCache(env, target, sources, command, **args):
return result
+def Run(env, function, short_message, subprocess=True):
+ output_print = short_message if not env["verbose"] else ""
+ if not subprocess:
+ return Action(function, output_print)
+ else:
+ return Action(run_in_subprocess(function), output_print)
+
+
def detect_darwin_sdk_path(platform, env):
sdk_name = ""
if platform == "osx":
diff --git a/misc/scripts/black_format.sh b/misc/scripts/black_format.sh
index 04dfe32f60..f93e8cbc2a 100755
--- a/misc/scripts/black_format.sh
+++ b/misc/scripts/black_format.sh
@@ -16,11 +16,9 @@ PY_FILES=$(find \( -path "./.git" \
black -l 120 $PY_FILES
git diff > patch.patch
-FILESIZE="$(stat -c%s patch.patch)"
-MAXSIZE=5
# If no patch has been generated all is OK, clean up, and exit.
-if (( FILESIZE < MAXSIZE )); then
+if [ ! -s patch.patch ] ; then
printf "Files in this commit comply with the black style rules.\n"
rm -f patch.patch
exit 0
diff --git a/misc/scripts/clang_format.sh b/misc/scripts/clang_format.sh
index 5131f7fe33..e686305dea 100755
--- a/misc/scripts/clang_format.sh
+++ b/misc/scripts/clang_format.sh
@@ -39,11 +39,9 @@ while IFS= read -rd '' f; do
done
git diff > patch.patch
-FILESIZE="$(stat -c%s patch.patch)"
-MAXSIZE=5
# If no patch has been generated all is OK, clean up, and exit.
-if (( FILESIZE < MAXSIZE )); then
+if [ ! -s patch.patch ] ; then
printf "Files in this commit comply with the clang-format style rules.\n"
rm -f patch.patch
exit 0
diff --git a/misc/scripts/file_format.sh b/misc/scripts/file_format.sh
index 30988e51c6..c570ec23a7 100755
--- a/misc/scripts/file_format.sh
+++ b/misc/scripts/file_format.sh
@@ -1,7 +1,13 @@
#!/usr/bin/env bash
# This script ensures proper POSIX text file formatting and a few other things.
-# This is supplementary to clang-black-format.sh, but should be run before it.
+# This is supplementary to clang_format.sh and black_format.sh, but should be
+# run before them.
+
+# We need dos2unix and recode.
+if [ ! -x "$(command -v dos2unix)" -o ! -x "$(command -v recode)" ]; then
+ printf "Install 'dos2unix' and 'recode' to use this script.\n"
+fi
set -uo pipefail
IFS=$'\n\t'
@@ -25,26 +31,21 @@ while IFS= read -rd '' f; do
elif [[ "$f" == "platform/android/java/lib/src/com/google"* ]]; then
continue
fi
- # Ensures that files are UTF-8 formatted.
+ # Ensure that files are UTF-8 formatted.
recode UTF-8 "$f" 2> /dev/null
- # Ensures that files have LF line endings.
+ # Ensure that files have LF line endings and do not contain a BOM.
dos2unix "$f" 2> /dev/null
- # Ensures that files do not contain a BOM.
- sed -i '1s/^\xEF\xBB\xBF//' "$f"
- # Ensures that files end with newline characters.
- tail -c1 < "$f" | read -r _ || echo >> "$f";
- # Remove trailing space characters.
- sed -z -i 's/\x20\x0A/\x0A/g' "$f"
+ # Remove trailing space characters and ensures that files end
+ # with newline characters. -l option handles newlines conveniently.
+ perl -i -ple 's/\s*$//g' "$f"
# Remove the character sequence "== true" if it has a leading space.
- sed -z -i 's/\x20== true//g' "$f"
+ perl -i -pe 's/\x20== true//g' "$f"
done
git diff > patch.patch
-FILESIZE="$(stat -c%s patch.patch)"
-MAXSIZE=5
# If no patch has been generated all is OK, clean up, and exit.
-if (( FILESIZE < MAXSIZE )); then
+if [ ! -s patch.patch ] ; then
printf "Files in this commit comply with the formatting rules.\n"
rm -f patch.patch
exit 0
diff --git a/modules/SCsub b/modules/SCsub
index 2d774306e4..edfc4ed9c6 100644
--- a/modules/SCsub
+++ b/modules/SCsub
@@ -10,14 +10,28 @@ env_modules = env.Clone()
Export("env_modules")
# Header with MODULE_*_ENABLED defines.
-env.CommandNoCache("modules_enabled.gen.h", Value(env.module_list), modules_builders.generate_modules_enabled)
+env.CommandNoCache(
+ "modules_enabled.gen.h",
+ Value(env.module_list),
+ env.Run(
+ modules_builders.generate_modules_enabled,
+ "Generating enabled modules header.",
+ # NOTE: No need to run in subprocess since this is still executed serially.
+ subprocess=False,
+ ),
+)
# Header to be included in `tests/test_main.cpp` to run module-specific tests.
if env["tests"]:
env.CommandNoCache(
"modules_tests.gen.h",
Value(env.module_list),
- Action(modules_builders.generate_modules_tests, "Generating modules tests header."),
+ env.Run(
+ modules_builders.generate_modules_tests,
+ "Generating modules tests header.",
+ # NOTE: No need to run in subprocess since this is still executed serially.
+ subprocess=False,
+ ),
)
env.AlwaysBuild("modules_tests.gen.h")
diff --git a/modules/bullet/area_bullet.cpp b/modules/bullet/area_bullet.cpp
index edbd9565b8..b35019bea3 100644
--- a/modules/bullet/area_bullet.cpp
+++ b/modules/bullet/area_bullet.cpp
@@ -65,14 +65,11 @@ AreaBullet::~AreaBullet() {
}
void AreaBullet::dispatch_callbacks() {
- if (!isScratched) {
- return;
- }
- isScratched = false;
+ RigidCollisionObjectBullet::dispatch_callbacks();
// Reverse order because I've to remove EXIT objects
for (int i = overlappingObjects.size() - 1; 0 <= i; --i) {
- OverlappingObjectData &otherObj = overlappingObjects.write[i];
+ OverlappingObjectData &otherObj = overlappingObjects[i];
switch (otherObj.state) {
case OVERLAP_STATE_ENTER:
@@ -112,10 +109,9 @@ void AreaBullet::call_event(CollisionObjectBullet *p_otherObject, PhysicsServer3
}
void AreaBullet::scratch() {
- if (isScratched) {
- return;
+ if (space != nullptr) {
+ space->add_to_pre_flush_queue(this);
}
- isScratched = true;
}
void AreaBullet::clear_overlaps(bool p_notify) {
@@ -173,9 +169,9 @@ void AreaBullet::do_reload_body() {
void AreaBullet::set_space(SpaceBullet *p_space) {
// Clear the old space if there is one
+
if (space) {
clear_overlaps(false);
- isScratched = false;
// Remove this object form the physics world
space->unregister_collision_object(this);
@@ -187,10 +183,11 @@ void AreaBullet::set_space(SpaceBullet *p_space) {
if (space) {
space->register_collision_object(this);
reload_body();
+ scratch();
}
}
-void AreaBullet::on_collision_filters_change() {
+void AreaBullet::do_reload_collision_filters() {
if (space) {
space->reload_collision_filters(this);
}
@@ -204,13 +201,13 @@ void AreaBullet::add_overlap(CollisionObjectBullet *p_otherObject) {
void AreaBullet::put_overlap_as_exit(int p_index) {
scratch();
- overlappingObjects.write[p_index].state = OVERLAP_STATE_EXIT;
+ overlappingObjects[p_index].state = OVERLAP_STATE_EXIT;
}
void AreaBullet::put_overlap_as_inside(int p_index) {
// This check is required to be sure this body was inside
if (OVERLAP_STATE_DIRTY == overlappingObjects[p_index].state) {
- overlappingObjects.write[p_index].state = OVERLAP_STATE_INSIDE;
+ overlappingObjects[p_index].state = OVERLAP_STATE_INSIDE;
}
}
diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h
index 12272092f7..51fbc1f71d 100644
--- a/modules/bullet/area_bullet.h
+++ b/modules/bullet/area_bullet.h
@@ -32,7 +32,7 @@
#define AREABULLET_H
#include "collision_object_bullet.h"
-#include "core/vector.h"
+#include "core/local_vector.h"
#include "servers/physics_server_3d.h"
#include "space_bullet.h"
@@ -83,7 +83,7 @@ private:
Variant *call_event_res_ptr[5];
btGhostObject *btGhost;
- Vector<OverlappingObjectData> overlappingObjects;
+ LocalVector<OverlappingObjectData> overlappingObjects;
bool monitorable = true;
PhysicsServer3D::AreaSpaceOverrideMode spOv_mode = PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED;
@@ -96,8 +96,6 @@ private:
real_t spOv_angularDump = 0.1;
int spOv_priority = 0;
- bool isScratched = false;
-
InOutEventCallback eventsCallbacks[2];
public:
@@ -139,11 +137,11 @@ public:
_FORCE_INLINE_ void set_spOv_priority(int p_priority) { spOv_priority = p_priority; }
_FORCE_INLINE_ int get_spOv_priority() { return spOv_priority; }
- virtual void main_shape_changed();
- virtual void do_reload_body();
- virtual void set_space(SpaceBullet *p_space);
+ virtual void main_shape_changed() override;
+ virtual void do_reload_body() override;
+ virtual void set_space(SpaceBullet *p_space) override;
- virtual void dispatch_callbacks();
+ virtual void dispatch_callbacks() override;
void call_event(CollisionObjectBullet *p_otherObject, PhysicsServer3D::AreaBodyStatus p_status);
void set_on_state_change(ObjectID p_id, const StringName &p_method, const Variant &p_udata = Variant());
void scratch();
@@ -152,9 +150,9 @@ public:
// Dispatch the callbacks and removes from overlapping list
void remove_overlap(CollisionObjectBullet *p_object, bool p_notify);
- virtual void on_collision_filters_change();
- virtual void on_collision_checker_start() {}
- virtual void on_collision_checker_end() { isTransformChanged = false; }
+ virtual void do_reload_collision_filters() override;
+ virtual void on_collision_checker_start() override {}
+ virtual void on_collision_checker_end() override { isTransformChanged = false; }
void add_overlap(CollisionObjectBullet *p_otherObject);
void put_overlap_as_exit(int p_index);
@@ -166,8 +164,8 @@ public:
void set_event_callback(Type p_callbackObjectType, ObjectID p_id, const StringName &p_method);
bool has_event_callback(Type p_callbackObjectType);
- virtual void on_enter_area(AreaBullet *p_area);
- virtual void on_exit_area(AreaBullet *p_area);
+ virtual void on_enter_area(AreaBullet *p_area) override;
+ virtual void on_exit_area(AreaBullet *p_area) override;
};
#endif
diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h
index 6078babaf8..eb95120f74 100644
--- a/modules/bullet/bullet_physics_server.h
+++ b/modules/bullet/bullet_physics_server.h
@@ -52,7 +52,7 @@ class BulletPhysicsServer3D : public PhysicsServer3D {
bool active = true;
char active_spaces_count = 0;
- Vector<SpaceBullet *> active_spaces;
+ LocalVector<SpaceBullet *> active_spaces;
mutable RID_PtrOwner<SpaceBullet> space_owner;
mutable RID_PtrOwner<ShapeBullet> shape_owner;
diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp
index dd208965bd..660e9afc5e 100644
--- a/modules/bullet/collision_object_bullet.cpp
+++ b/modules/bullet/collision_object_bullet.cpp
@@ -165,11 +165,20 @@ bool CollisionObjectBullet::has_collision_exception(const CollisionObjectBullet
return !bt_collision_object->checkCollideWith(p_otherCollisionObject->bt_collision_object);
}
-void CollisionObjectBullet::prepare_object_for_dispatch() {
- if (need_body_reload) {
+void CollisionObjectBullet::reload_body() {
+ needs_body_reload = true;
+}
+
+void CollisionObjectBullet::dispatch_callbacks() {}
+
+void CollisionObjectBullet::pre_process() {
+ if (needs_body_reload) {
do_reload_body();
- need_body_reload = false;
+ } else if (needs_collision_filters_reload) {
+ do_reload_collision_filters();
}
+ needs_body_reload = false;
+ needs_collision_filters_reload = false;
}
void CollisionObjectBullet::set_collision_enabled(bool p_enabled) {
@@ -245,7 +254,7 @@ void RigidCollisionObjectBullet::add_shape(ShapeBullet *p_shape, const Transform
}
void RigidCollisionObjectBullet::set_shape(int p_index, ShapeBullet *p_shape) {
- ShapeWrapper &shp = shapes.write[p_index];
+ ShapeWrapper &shp = shapes[p_index];
shp.shape->remove_owner(this);
p_shape->add_owner(this);
shp.shape = p_shape;
@@ -307,7 +316,7 @@ void RigidCollisionObjectBullet::remove_all_shapes(bool p_permanentlyFromThisBod
void RigidCollisionObjectBullet::set_shape_transform(int p_index, const Transform &p_transform) {
ERR_FAIL_INDEX(p_index, get_shape_count());
- shapes.write[p_index].set_transform(p_transform);
+ shapes[p_index].set_transform(p_transform);
shape_changed(p_index);
}
@@ -325,7 +334,7 @@ void RigidCollisionObjectBullet::set_shape_disabled(int p_index, bool p_disabled
if (shapes[p_index].active != p_disabled) {
return;
}
- shapes.write[p_index].active = !p_disabled;
+ shapes[p_index].active = !p_disabled;
shape_changed(p_index);
}
@@ -333,16 +342,16 @@ bool RigidCollisionObjectBullet::is_shape_disabled(int p_index) {
return !shapes[p_index].active;
}
-void RigidCollisionObjectBullet::prepare_object_for_dispatch() {
+void RigidCollisionObjectBullet::pre_process() {
if (need_shape_reload) {
do_reload_shapes();
need_shape_reload = false;
}
- CollisionObjectBullet::prepare_object_for_dispatch();
+ CollisionObjectBullet::pre_process();
}
void RigidCollisionObjectBullet::shape_changed(int p_shape_index) {
- ShapeWrapper &shp = shapes.write[p_shape_index];
+ ShapeWrapper &shp = shapes[p_shape_index];
if (shp.bt_shape == mainShape) {
mainShape = nullptr;
}
@@ -363,12 +372,11 @@ void RigidCollisionObjectBullet::do_reload_shapes() {
mainShape = nullptr;
const int shape_count = shapes.size();
- ShapeWrapper *shapes_ptr = shapes.ptrw();
// Reset all shapes if required
if (force_shape_reset) {
for (int i(0); i < shape_count; ++i) {
- shapes_ptr[i].release_bt_shape();
+ shapes[i].release_bt_shape();
}
force_shape_reset = false;
}
@@ -377,10 +385,10 @@ void RigidCollisionObjectBullet::do_reload_shapes() {
if (1 == shape_count) {
// Is it possible to optimize by not using compound?
- btTransform transform = shapes_ptr[0].get_adjusted_transform();
+ btTransform transform = shapes[0].get_adjusted_transform();
if (transform.getOrigin().isZero() && transform.getBasis() == transform.getBasis().getIdentity()) {
- shapes_ptr[0].claim_bt_shape(body_scale);
- mainShape = shapes_ptr[0].bt_shape;
+ shapes[0].claim_bt_shape(body_scale);
+ mainShape = shapes[0].bt_shape;
main_shape_changed();
// Nothing more to do
return;
@@ -391,10 +399,10 @@ void RigidCollisionObjectBullet::do_reload_shapes() {
btCompoundShape *compoundShape = bulletnew(btCompoundShape(enableDynamicAabbTree, shape_count));
for (int i(0); i < shape_count; ++i) {
- shapes_ptr[i].claim_bt_shape(body_scale);
- btTransform scaled_shape_transform(shapes_ptr[i].get_adjusted_transform());
+ shapes[i].claim_bt_shape(body_scale);
+ btTransform scaled_shape_transform(shapes[i].get_adjusted_transform());
scaled_shape_transform.getOrigin() *= body_scale;
- compoundShape->addChildShape(scaled_shape_transform, shapes_ptr[i].bt_shape);
+ compoundShape->addChildShape(scaled_shape_transform, shapes[i].bt_shape);
}
compoundShape->recalculateLocalAabb();
@@ -408,7 +416,7 @@ void RigidCollisionObjectBullet::body_scale_changed() {
}
void RigidCollisionObjectBullet::internal_shape_destroy(int p_index, bool p_permanentlyFromThisBody) {
- ShapeWrapper &shp = shapes.write[p_index];
+ ShapeWrapper &shp = shapes[p_index];
shp.shape->remove_owner(this, p_permanentlyFromThisBody);
if (shp.bt_shape == mainShape) {
mainShape = nullptr;
diff --git a/modules/bullet/collision_object_bullet.h b/modules/bullet/collision_object_bullet.h
index ac74661f24..920d80af23 100644
--- a/modules/bullet/collision_object_bullet.h
+++ b/modules/bullet/collision_object_bullet.h
@@ -31,6 +31,7 @@
#ifndef COLLISION_OBJECT_BULLET_H
#define COLLISION_OBJECT_BULLET_H
+#include "core/local_vector.h"
#include "core/math/transform.h"
#include "core/math/vector3.h"
#include "core/object.h"
@@ -126,16 +127,18 @@ protected:
VSet<RID> exceptions;
- bool need_body_reload = true;
+ bool needs_body_reload = true;
+ bool needs_collision_filters_reload = true;
/// This array is used to know all areas where this Object is overlapped in
/// New area is added when overlap with new area (AreaBullet::addOverlap), then is removed when it exit (CollisionObjectBullet::onExitArea)
/// This array is used mainly to know which area hold the pointer of this object
- Vector<AreaBullet *> areasOverlapped;
+ LocalVector<AreaBullet *> areasOverlapped;
bool isTransformChanged = false;
public:
bool is_in_world = false;
+ bool is_in_flush_queue = false;
public:
CollisionObjectBullet(Type p_type);
@@ -171,7 +174,7 @@ public:
_FORCE_INLINE_ void set_collision_layer(uint32_t p_layer) {
if (collisionLayer != p_layer) {
collisionLayer = p_layer;
- on_collision_filters_change();
+ needs_collision_filters_reload = true;
}
}
_FORCE_INLINE_ uint32_t get_collision_layer() const { return collisionLayer; }
@@ -179,24 +182,23 @@ public:
_FORCE_INLINE_ void set_collision_mask(uint32_t p_mask) {
if (collisionMask != p_mask) {
collisionMask = p_mask;
- on_collision_filters_change();
+ needs_collision_filters_reload = true;
}
}
_FORCE_INLINE_ uint32_t get_collision_mask() const { return collisionMask; }
- virtual void on_collision_filters_change() = 0;
+ virtual void do_reload_collision_filters() = 0;
_FORCE_INLINE_ bool test_collision_mask(CollisionObjectBullet *p_other) const {
return collisionLayer & p_other->collisionMask || p_other->collisionLayer & collisionMask;
}
bool need_reload_body() const {
- return need_body_reload;
+ return needs_body_reload;
}
- void reload_body() {
- need_body_reload = true;
- }
+ void reload_body();
+
virtual void do_reload_body() = 0;
virtual void set_space(SpaceBullet *p_space) = 0;
_FORCE_INLINE_ SpaceBullet *get_space() const { return space; }
@@ -204,8 +206,8 @@ public:
virtual void on_collision_checker_start() = 0;
virtual void on_collision_checker_end() = 0;
- virtual void prepare_object_for_dispatch();
- virtual void dispatch_callbacks() = 0;
+ virtual void dispatch_callbacks();
+ virtual void pre_process();
void set_collision_enabled(bool p_enabled);
bool is_collisions_response_enabled();
@@ -229,7 +231,7 @@ public:
class RigidCollisionObjectBullet : public CollisionObjectBullet, public ShapeOwnerBullet {
protected:
btCollisionShape *mainShape = nullptr;
- Vector<ShapeWrapper> shapes;
+ LocalVector<ShapeWrapper> shapes;
bool need_shape_reload = true;
public:
@@ -237,7 +239,7 @@ public:
CollisionObjectBullet(p_type) {}
~RigidCollisionObjectBullet();
- _FORCE_INLINE_ const Vector<ShapeWrapper> &get_shapes_wrappers() const { return shapes; }
+ _FORCE_INLINE_ const LocalVector<ShapeWrapper> &get_shapes_wrappers() const { return shapes; }
_FORCE_INLINE_ btCollisionShape *get_main_shape() const { return mainShape; }
@@ -248,9 +250,9 @@ public:
ShapeBullet *get_shape(int p_index) const;
btCollisionShape *get_bt_shape(int p_index) const;
- int find_shape(ShapeBullet *p_shape) const;
+ virtual int find_shape(ShapeBullet *p_shape) const override;
- virtual void remove_shape_full(ShapeBullet *p_shape);
+ virtual void remove_shape_full(ShapeBullet *p_shape) override;
void remove_shape_full(int p_index);
void remove_all_shapes(bool p_permanentlyFromThisBody = false, bool p_force_not_reload = false);
@@ -262,15 +264,15 @@ public:
void set_shape_disabled(int p_index, bool p_disabled);
bool is_shape_disabled(int p_index);
- virtual void prepare_object_for_dispatch();
+ virtual void pre_process() override;
- virtual void shape_changed(int p_shape_index);
- void reload_shapes();
+ virtual void shape_changed(int p_shape_index) override;
+ virtual void reload_shapes() override;
bool need_reload_shapes() const { return need_shape_reload; }
virtual void do_reload_shapes();
virtual void main_shape_changed() = 0;
- virtual void body_scale_changed();
+ virtual void body_scale_changed() override;
private:
void internal_shape_destroy(int p_index, bool p_permanentlyFromThisBody = false);
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp
index e1f950dad1..f82648d6ff 100644
--- a/modules/bullet/godot_result_callbacks.cpp
+++ b/modules/bullet/godot_result_callbacks.cpp
@@ -57,7 +57,7 @@ bool GodotFilterCallback::needBroadphaseCollision(btBroadphaseProxy *proxy0, btB
bool GodotClosestRayResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
const bool needs = GodotFilterCallback::test_collision_filters(m_collisionFilterGroup, m_collisionFilterMask, proxy0->m_collisionFilterGroup, proxy0->m_collisionFilterMask);
- if (m_pickRay || needs) {
+ if (needs) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp
index 717c99c738..5c1144b875 100644
--- a/modules/bullet/rigid_body_bullet.cpp
+++ b/modules/bullet/rigid_body_bullet.cpp
@@ -51,9 +51,7 @@
BulletPhysicsDirectBodyState3D *BulletPhysicsDirectBodyState3D::singleton = nullptr;
Vector3 BulletPhysicsDirectBodyState3D::get_total_gravity() const {
- Vector3 gVec;
- B_TO_G(body->btBody->getGravity(), gVec);
- return gVec;
+ return body->total_gravity;
}
float BulletPhysicsDirectBodyState3D::get_total_angular_damp() const {
@@ -183,7 +181,7 @@ int BulletPhysicsDirectBodyState3D::get_contact_collider_shape(int p_contact_idx
}
Vector3 BulletPhysicsDirectBodyState3D::get_contact_collider_velocity_at_position(int p_contact_idx) const {
- RigidBodyBullet::CollisionData &colDat = body->collisions.write[p_contact_idx];
+ RigidBodyBullet::CollisionData &colDat = body->collisions[p_contact_idx];
btVector3 hitLocation;
G_TO_B(colDat.hitLocalLocation, hitLocation);
@@ -213,7 +211,7 @@ void RigidBodyBullet::KinematicUtilities::setSafeMargin(btScalar p_margin) {
}
void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() {
- const Vector<CollisionObjectBullet::ShapeWrapper> &shapes_wrappers(owner->get_shapes_wrappers());
+ const LocalVector<CollisionObjectBullet::ShapeWrapper> &shapes_wrappers(owner->get_shapes_wrappers());
const int shapes_count = shapes_wrappers.size();
just_delete_shapes(shapes_count);
@@ -228,8 +226,8 @@ void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() {
continue;
}
- shapes.write[i].transform = shape_wrapper->transform;
- shapes.write[i].transform.getOrigin() *= owner_scale;
+ shapes[i].transform = shape_wrapper->transform;
+ shapes[i].transform.getOrigin() *= owner_scale;
switch (shape_wrapper->shape->get_type()) {
case PhysicsServer3D::SHAPE_SPHERE:
case PhysicsServer3D::SHAPE_BOX:
@@ -237,11 +235,11 @@ void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() {
case PhysicsServer3D::SHAPE_CYLINDER:
case PhysicsServer3D::SHAPE_CONVEX_POLYGON:
case PhysicsServer3D::SHAPE_RAY: {
- shapes.write[i].shape = static_cast<btConvexShape *>(shape_wrapper->shape->internal_create_bt_shape(owner_scale * shape_wrapper->scale, safe_margin));
+ shapes[i].shape = static_cast<btConvexShape *>(shape_wrapper->shape->internal_create_bt_shape(owner_scale * shape_wrapper->scale, safe_margin));
} break;
default:
WARN_PRINT("This shape is not supported for kinematic collision.");
- shapes.write[i].shape = nullptr;
+ shapes[i].shape = nullptr;
}
}
}
@@ -249,7 +247,7 @@ void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() {
void RigidBodyBullet::KinematicUtilities::just_delete_shapes(int new_size) {
for (int i = shapes.size() - 1; 0 <= i; --i) {
if (shapes[i].shape) {
- bulletdelete(shapes.write[i].shape);
+ bulletdelete(shapes[i].shape);
}
}
shapes.resize(new_size);
@@ -271,8 +269,8 @@ RigidBodyBullet::RigidBodyBullet() :
reload_axis_lock();
areasWhereIam.resize(maxAreasWhereIam);
- for (int i = areasWhereIam.size() - 1; 0 <= i; --i) {
- areasWhereIam.write[i] = nullptr;
+ for (uint32_t i = 0; i < areasWhereIam.size(); i += 1) {
+ areasWhereIam[i] = nullptr;
}
btBody->setSleepingThresholds(0.2, 0.2);
@@ -335,16 +333,15 @@ void RigidBodyBullet::set_space(SpaceBullet *p_space) {
if (space) {
space->register_collision_object(this);
reload_body();
+ space->add_to_flush_queue(this);
}
}
void RigidBodyBullet::dispatch_callbacks() {
+ RigidCollisionObjectBullet::dispatch_callbacks();
+
/// The check isFirstTransformChanged is necessary in order to call integrated forces only when the first transform is sent
if ((btBody->isKinematicObject() || btBody->isActive() || previousActiveState != btBody->isActive()) && force_integration_callback && can_integrate_forces) {
- if (omit_forces_integration) {
- btBody->clearForces();
- }
-
BulletPhysicsDirectBodyState3D *bodyDirect = BulletPhysicsDirectBodyState3D::get_singleton(this);
Variant variantBodyDirect = bodyDirect;
@@ -362,16 +359,22 @@ void RigidBodyBullet::dispatch_callbacks() {
}
}
+ previousActiveState = btBody->isActive();
+}
+
+void RigidBodyBullet::pre_process() {
+ RigidCollisionObjectBullet::pre_process();
+
if (isScratchedSpaceOverrideModificator || 0 < countGravityPointSpaces) {
isScratchedSpaceOverrideModificator = false;
reload_space_override_modificator();
}
- /// Lock axis
- btBody->setLinearVelocity(btBody->getLinearVelocity() * btBody->getLinearFactor());
- btBody->setAngularVelocity(btBody->getAngularVelocity() * btBody->getAngularFactor());
-
- previousActiveState = btBody->isActive();
+ if (is_active()) {
+ /// Lock axis
+ btBody->setLinearVelocity(btBody->getLinearVelocity() * btBody->getLinearFactor());
+ btBody->setAngularVelocity(btBody->getAngularVelocity() * btBody->getAngularFactor());
+ }
}
void RigidBodyBullet::set_force_integration_callback(ObjectID p_id, const StringName &p_method, const Variant &p_udata) {
@@ -392,7 +395,7 @@ void RigidBodyBullet::scratch_space_override_modificator() {
isScratchedSpaceOverrideModificator = true;
}
-void RigidBodyBullet::on_collision_filters_change() {
+void RigidBodyBullet::do_reload_collision_filters() {
if (space) {
space->reload_collision_filters(this);
}
@@ -405,14 +408,15 @@ void RigidBodyBullet::on_collision_checker_start() {
collisionsCount = 0;
// Swap array
- Vector<RigidBodyBullet *> *s = prev_collision_traces;
- prev_collision_traces = curr_collision_traces;
- curr_collision_traces = s;
+ SWAP(prev_collision_traces, curr_collision_traces);
}
void RigidBodyBullet::on_collision_checker_end() {
// Always true if active and not a static or kinematic body
isTransformChanged = btBody->isActive() && !btBody->isStaticOrKinematicObject();
+ if (isTransformChanged && space != nullptr) {
+ space->add_to_flush_queue(this);
+ }
}
bool RigidBodyBullet::add_collision_object(RigidBodyBullet *p_otherObject, const Vector3 &p_hitWorldLocation, const Vector3 &p_hitLocalLocation, const Vector3 &p_hitNormal, const float &p_appliedImpulse, int p_other_shape_index, int p_local_shape_index) {
@@ -420,7 +424,7 @@ bool RigidBodyBullet::add_collision_object(RigidBodyBullet *p_otherObject, const
return false;
}
- CollisionData &cd = collisions.write[collisionsCount];
+ CollisionData &cd = collisions[collisionsCount];
cd.hitLocalLocation = p_hitLocalLocation;
cd.otherObject = p_otherObject;
cd.hitWorldLocation = p_hitWorldLocation;
@@ -429,7 +433,7 @@ bool RigidBodyBullet::add_collision_object(RigidBodyBullet *p_otherObject, const
cd.other_object_shape = p_other_shape_index;
cd.local_shape = p_local_shape_index;
- curr_collision_traces->write[collisionsCount] = p_otherObject;
+ (*curr_collision_traces)[collisionsCount] = p_otherObject;
++collisionsCount;
return true;
@@ -464,6 +468,7 @@ bool RigidBodyBullet::is_active() const {
void RigidBodyBullet::set_omit_forces_integration(bool p_omit) {
omit_forces_integration = p_omit;
+ scratch_space_override_modificator();
}
void RigidBodyBullet::set_param(PhysicsServer3D::BodyParameter p_param, real_t p_value) {
@@ -839,15 +844,15 @@ void RigidBodyBullet::on_enter_area(AreaBullet *p_area) {
for (int i = 0; i < areaWhereIamCount; ++i) {
if (nullptr == areasWhereIam[i]) {
// This area has the highest priority
- areasWhereIam.write[i] = p_area;
+ areasWhereIam[i] = p_area;
break;
} else {
if (areasWhereIam[i]->get_spOv_priority() > p_area->get_spOv_priority()) {
// The position was found, just shift all elements
for (int j = i; j < areaWhereIamCount; ++j) {
- areasWhereIam.write[j + 1] = areasWhereIam[j];
+ areasWhereIam[j + 1] = areasWhereIam[j];
}
- areasWhereIam.write[i] = p_area;
+ areasWhereIam[i] = p_area;
break;
}
}
@@ -871,7 +876,7 @@ void RigidBodyBullet::on_exit_area(AreaBullet *p_area) {
if (p_area == areasWhereIam[i]) {
// The area was found, just shift down all elements
for (int j = i; j < areaWhereIamCount; ++j) {
- areasWhereIam.write[j] = areasWhereIam[j + 1];
+ areasWhereIam[j] = areasWhereIam[j + 1];
}
wasTheAreaFound = true;
break;
@@ -884,7 +889,7 @@ void RigidBodyBullet::on_exit_area(AreaBullet *p_area) {
}
--areaWhereIamCount;
- areasWhereIam.write[areaWhereIamCount] = nullptr; // Even if this is not required, I clear the last element to be safe
+ areasWhereIam[areaWhereIamCount] = nullptr; // Even if this is not required, I clear the last element to be safe
if (PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED != p_area->get_spOv_mode()) {
scratch_space_override_modificator();
}
@@ -897,36 +902,31 @@ void RigidBodyBullet::reload_space_override_modificator() {
return;
}
- Vector3 newGravity(0.0, 0.0, 0.0);
+ Vector3 newGravity;
real_t newLinearDamp = MAX(0.0, linearDamp);
real_t newAngularDamp = MAX(0.0, angularDamp);
- AreaBullet *currentArea;
- // Variable used to calculate new gravity for gravity point areas, it is pointed by currentGravity pointer
- Vector3 support_gravity(0, 0, 0);
-
bool stopped = false;
- for (int i = areaWhereIamCount - 1; (0 <= i) && !stopped; --i) {
- currentArea = areasWhereIam[i];
+ for (int i = 0; i < areaWhereIamCount && !stopped; i += 1) {
+ AreaBullet *currentArea = areasWhereIam[i];
if (!currentArea || PhysicsServer3D::AREA_SPACE_OVERRIDE_DISABLED == currentArea->get_spOv_mode()) {
continue;
}
+ Vector3 support_gravity;
+
/// Here is calculated the gravity
if (currentArea->is_spOv_gravityPoint()) {
/// It calculates the direction of new gravity
support_gravity = currentArea->get_transform().xform(currentArea->get_spOv_gravityVec()) - get_transform().get_origin();
- real_t distanceMag = support_gravity.length();
+
+ const real_t distanceMag = support_gravity.length();
// Normalized in this way to avoid the double call of function "length()"
if (distanceMag == 0) {
- support_gravity.x = 0;
- support_gravity.y = 0;
- support_gravity.z = 0;
+ support_gravity = Vector3();
} else {
- support_gravity.x /= distanceMag;
- support_gravity.y /= distanceMag;
- support_gravity.z /= distanceMag;
+ support_gravity /= distanceMag;
}
/// Here is calculated the final gravity
@@ -988,10 +988,17 @@ void RigidBodyBullet::reload_space_override_modificator() {
newAngularDamp += space->get_angular_damp();
}
- btVector3 newBtGravity;
- G_TO_B(newGravity * gravity_scale, newBtGravity);
+ total_gravity = newGravity;
+
+ if (omit_forces_integration) {
+ // Custom behaviour.
+ btBody->setGravity(btVector3(0, 0, 0));
+ } else {
+ btVector3 newBtGravity;
+ G_TO_B(newGravity * gravity_scale, newBtGravity);
+ btBody->setGravity(newBtGravity);
+ }
- btBody->setGravity(newBtGravity);
btBody->setDamping(newLinearDamp, newAngularDamp);
}
diff --git a/modules/bullet/rigid_body_bullet.h b/modules/bullet/rigid_body_bullet.h
index eb62d0d39e..047645677b 100644
--- a/modules/bullet/rigid_body_bullet.h
+++ b/modules/bullet/rigid_body_bullet.h
@@ -171,7 +171,7 @@ public:
struct KinematicUtilities {
RigidBodyBullet *owner;
btScalar safe_margin;
- Vector<KinematicShape> shapes;
+ LocalVector<KinematicShape> shapes;
KinematicUtilities(RigidBodyBullet *p_owner);
~KinematicUtilities();
@@ -193,6 +193,7 @@ private:
PhysicsServer3D::BodyMode mode;
GodotMotionState *godotMotionState;
btRigidBody *btBody;
+ Vector3 total_gravity;
uint16_t locked_axis = 0;
real_t mass = 1;
real_t gravity_scale = 1;
@@ -202,18 +203,18 @@ private:
bool omit_forces_integration = false;
bool can_integrate_forces = false;
- Vector<CollisionData> collisions;
- Vector<RigidBodyBullet *> collision_traces_1;
- Vector<RigidBodyBullet *> collision_traces_2;
- Vector<RigidBodyBullet *> *prev_collision_traces;
- Vector<RigidBodyBullet *> *curr_collision_traces;
+ LocalVector<CollisionData> collisions;
+ LocalVector<RigidBodyBullet *> collision_traces_1;
+ LocalVector<RigidBodyBullet *> collision_traces_2;
+ LocalVector<RigidBodyBullet *> *prev_collision_traces;
+ LocalVector<RigidBodyBullet *> *curr_collision_traces;
// these parameters are used to avoid vector resize
- int maxCollisionsDetection = 0;
- int collisionsCount = 0;
- int prev_collision_count = 0;
+ uint32_t maxCollisionsDetection = 0;
+ uint32_t collisionsCount = 0;
+ uint32_t prev_collision_count = 0;
- Vector<AreaBullet *> areasWhereIam;
+ LocalVector<AreaBullet *> areasWhereIam;
// these parameters are used to avoid vector resize
int maxAreasWhereIam = 10;
int areaWhereIamCount = 0;
@@ -235,21 +236,20 @@ public:
_FORCE_INLINE_ btRigidBody *get_bt_rigid_body() { return btBody; }
- virtual void main_shape_changed();
- virtual void do_reload_body();
- virtual void set_space(SpaceBullet *p_space);
+ virtual void main_shape_changed() override;
+ virtual void do_reload_body() override;
+ virtual void set_space(SpaceBullet *p_space) override;
- virtual void dispatch_callbacks();
+ virtual void dispatch_callbacks() override;
+ virtual void pre_process() override;
void set_force_integration_callback(ObjectID p_id, const StringName &p_method, const Variant &p_udata = Variant());
void scratch_space_override_modificator();
- virtual void on_collision_filters_change();
- virtual void on_collision_checker_start();
- virtual void on_collision_checker_end();
-
- void set_max_collisions_detection(int p_maxCollisionsDetection) {
- ERR_FAIL_COND(0 > p_maxCollisionsDetection);
+ virtual void do_reload_collision_filters() override;
+ virtual void on_collision_checker_start() override;
+ virtual void on_collision_checker_end() override;
+ void set_max_collisions_detection(uint32_t p_maxCollisionsDetection) {
maxCollisionsDetection = p_maxCollisionsDetection;
collisions.resize(p_maxCollisionsDetection);
@@ -312,19 +312,19 @@ public:
void set_angular_velocity(const Vector3 &p_velocity);
Vector3 get_angular_velocity() const;
- virtual void set_transform__bullet(const btTransform &p_global_transform);
- virtual const btTransform &get_transform__bullet() const;
+ virtual void set_transform__bullet(const btTransform &p_global_transform) override;
+ virtual const btTransform &get_transform__bullet() const override;
- virtual void do_reload_shapes();
+ virtual void do_reload_shapes() override;
- virtual void on_enter_area(AreaBullet *p_area);
- virtual void on_exit_area(AreaBullet *p_area);
+ virtual void on_enter_area(AreaBullet *p_area) override;
+ virtual void on_exit_area(AreaBullet *p_area) override;
void reload_space_override_modificator();
/// Kinematic
void reload_kinematic_shapes();
- virtual void notify_transform_changed();
+ virtual void notify_transform_changed() override;
private:
void _internal_set_mass(real_t p_mass);
diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp
index 3fccd3d8a2..ee48b3c5f0 100644
--- a/modules/bullet/soft_body_bullet.cpp
+++ b/modules/bullet/soft_body_bullet.cpp
@@ -346,14 +346,14 @@ void SoftBodyBullet::set_trimesh_body_shape(Vector<int> p_indices, Vector<Vector
indices_table.push_back(Vector<int>());
}
- indices_table.write[vertex_id].push_back(vs_vertex_index);
+ indices_table[vertex_id].push_back(vs_vertex_index);
vs_indices_to_physics_table.push_back(vertex_id);
}
}
const int indices_map_size(indices_table.size());
- Vector<btScalar> bt_vertices;
+ LocalVector<btScalar> bt_vertices;
{ // Parse vertices to bullet
@@ -361,13 +361,13 @@ void SoftBodyBullet::set_trimesh_body_shape(Vector<int> p_indices, Vector<Vector
const Vector3 *p_vertices_read = p_vertices.ptr();
for (int i = 0; i < indices_map_size; ++i) {
- bt_vertices.write[3 * i + 0] = p_vertices_read[indices_table[i][0]].x;
- bt_vertices.write[3 * i + 1] = p_vertices_read[indices_table[i][0]].y;
- bt_vertices.write[3 * i + 2] = p_vertices_read[indices_table[i][0]].z;
+ bt_vertices[3 * i + 0] = p_vertices_read[indices_table[i][0]].x;
+ bt_vertices[3 * i + 1] = p_vertices_read[indices_table[i][0]].y;
+ bt_vertices[3 * i + 2] = p_vertices_read[indices_table[i][0]].z;
}
}
- Vector<int> bt_triangles;
+ LocalVector<int> bt_triangles;
const int triangles_size(p_indices.size() / 3);
{ // Parse indices
@@ -377,9 +377,9 @@ void SoftBodyBullet::set_trimesh_body_shape(Vector<int> p_indices, Vector<Vector
const int *p_indices_read = p_indices.ptr();
for (int i = 0; i < triangles_size; ++i) {
- bt_triangles.write[3 * i + 0] = vs_indices_to_physics_table[p_indices_read[3 * i + 2]];
- bt_triangles.write[3 * i + 1] = vs_indices_to_physics_table[p_indices_read[3 * i + 1]];
- bt_triangles.write[3 * i + 2] = vs_indices_to_physics_table[p_indices_read[3 * i + 0]];
+ bt_triangles[3 * i + 0] = vs_indices_to_physics_table[p_indices_read[3 * i + 2]];
+ bt_triangles[3 * i + 1] = vs_indices_to_physics_table[p_indices_read[3 * i + 1]];
+ bt_triangles[3 * i + 2] = vs_indices_to_physics_table[p_indices_read[3 * i + 0]];
}
}
diff --git a/modules/bullet/soft_body_bullet.h b/modules/bullet/soft_body_bullet.h
index ba968f4271..229204b539 100644
--- a/modules/bullet/soft_body_bullet.h
+++ b/modules/bullet/soft_body_bullet.h
@@ -32,7 +32,6 @@
#define SOFT_BODY_BULLET_H
#include "collision_object_bullet.h"
-#include "scene/resources/material.h" // TODO remove this please
#ifdef None
/// This is required to remove the macro None defined by x11 compiler because this word "None" is used internally by Bullet
@@ -58,7 +57,7 @@
class SoftBodyBullet : public CollisionObjectBullet {
private:
btSoftBody *bt_soft_body = nullptr;
- Vector<Vector<int>> indices_table;
+ LocalVector<Vector<int>> indices_table;
btSoftBody::Material *mat0; // This is just a copy of pointer managed by btSoftBody
bool isScratched = false;
@@ -73,7 +72,7 @@ private:
real_t pose_matching_coefficient = 0.; // [0,1]
real_t damping_coefficient = 0.01; // [0,1]
real_t drag_coefficient = 0.; // [0,1]
- Vector<int> pinned_nodes;
+ LocalVector<int> pinned_nodes;
// Other property to add
//btScalar kVC; // Volume conversation coefficient [0,+inf]
@@ -87,15 +86,14 @@ public:
SoftBodyBullet();
~SoftBodyBullet();
- virtual void do_reload_body();
- virtual void set_space(SpaceBullet *p_space);
+ virtual void do_reload_body() override;
+ virtual void set_space(SpaceBullet *p_space) override;
- virtual void dispatch_callbacks() {}
- virtual void on_collision_filters_change() {}
- virtual void on_collision_checker_start() {}
- virtual void on_collision_checker_end() {}
- virtual void on_enter_area(AreaBullet *p_area);
- virtual void on_exit_area(AreaBullet *p_area);
+ virtual void do_reload_collision_filters() override {}
+ virtual void on_collision_checker_start() override {}
+ virtual void on_collision_checker_end() override {}
+ virtual void on_enter_area(AreaBullet *p_area) override;
+ virtual void on_exit_area(AreaBullet *p_area) override;
_FORCE_INLINE_ btSoftBody *get_bt_soft_body() const { return bt_soft_body; }
diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp
index 9dc307c629..2b60f8df36 100644
--- a/modules/bullet/space_bullet.cpp
+++ b/modules/bullet/space_bullet.cpp
@@ -348,16 +348,46 @@ SpaceBullet::~SpaceBullet() {
destroy_world();
}
+void SpaceBullet::add_to_pre_flush_queue(CollisionObjectBullet *p_co) {
+ if (p_co->is_in_flush_queue == false) {
+ p_co->is_in_flush_queue = true;
+ queue_pre_flush.push_back(p_co);
+ }
+}
+
+void SpaceBullet::add_to_flush_queue(CollisionObjectBullet *p_co) {
+ if (p_co->is_in_flush_queue == false) {
+ p_co->is_in_flush_queue = true;
+ queue_flush.push_back(p_co);
+ }
+}
+
+void SpaceBullet::remove_from_any_queue(CollisionObjectBullet *p_co) {
+ if (p_co->is_in_flush_queue) {
+ p_co->is_in_flush_queue = false;
+ queue_pre_flush.erase(p_co);
+ queue_flush.erase(p_co);
+ }
+}
+
void SpaceBullet::flush_queries() {
- const int size = collision_objects.size();
- CollisionObjectBullet **objects = collision_objects.ptrw();
- for (int i = 0; i < size; i += 1) {
- objects[i]->prepare_object_for_dispatch();
- objects[i]->dispatch_callbacks();
+ for (uint32_t i = 0; i < queue_pre_flush.size(); i += 1) {
+ queue_pre_flush[i]->dispatch_callbacks();
+ queue_pre_flush[i]->is_in_flush_queue = false;
}
+ for (uint32_t i = 0; i < queue_flush.size(); i += 1) {
+ queue_flush[i]->dispatch_callbacks();
+ queue_flush[i]->is_in_flush_queue = false;
+ }
+ queue_pre_flush.clear();
+ queue_flush.clear();
}
void SpaceBullet::step(real_t p_delta_time) {
+ for (uint32_t i = 0; i < collision_objects.size(); i += 1) {
+ collision_objects[i]->pre_process();
+ }
+
delta_time = p_delta_time;
dynamicsWorld->stepSimulation(p_delta_time, 0, 0);
}
@@ -488,6 +518,7 @@ void SpaceBullet::register_collision_object(CollisionObjectBullet *p_object) {
}
void SpaceBullet::unregister_collision_object(CollisionObjectBullet *p_object) {
+ remove_from_any_queue(p_object);
collision_objects.erase(p_object);
}
@@ -702,7 +733,7 @@ void SpaceBullet::check_ghost_overlaps() {
/// 1. Reset all states
for (i = area->overlappingObjects.size() - 1; 0 <= i; --i) {
- AreaBullet::OverlappingObjectData &otherObj = area->overlappingObjects.write[i];
+ AreaBullet::OverlappingObjectData &otherObj = area->overlappingObjects[i];
// This check prevent the overwrite of ENTER state
// if this function is called more times before dispatchCallbacks
if (otherObj.state != AreaBullet::OVERLAP_STATE_ENTER) {
diff --git a/modules/bullet/space_bullet.h b/modules/bullet/space_bullet.h
index aa9a70594e..897f902fe1 100644
--- a/modules/bullet/space_bullet.h
+++ b/modules/bullet/space_bullet.h
@@ -31,8 +31,8 @@
#ifndef SPACE_BULLET_H
#define SPACE_BULLET_H
+#include "core/local_vector.h"
#include "core/variant.h"
-#include "core/vector.h"
#include "godot_result_callbacks.h"
#include "rid_bullet.h"
#include "servers/physics_server_3d.h"
@@ -110,17 +110,23 @@ class SpaceBullet : public RIDBullet {
real_t linear_damp = 0.0;
real_t angular_damp = 0.0;
- Vector<CollisionObjectBullet *> collision_objects;
- Vector<AreaBullet *> areas;
+ LocalVector<CollisionObjectBullet *> queue_pre_flush;
+ LocalVector<CollisionObjectBullet *> queue_flush;
+ LocalVector<CollisionObjectBullet *> collision_objects;
+ LocalVector<AreaBullet *> areas;
- Vector<Vector3> contactDebug;
- int contactDebugCount = 0;
+ LocalVector<Vector3> contactDebug;
+ uint32_t contactDebugCount = 0;
real_t delta_time = 0.;
public:
SpaceBullet();
virtual ~SpaceBullet();
+ void add_to_flush_queue(CollisionObjectBullet *p_co);
+ void add_to_pre_flush_queue(CollisionObjectBullet *p_co);
+ void remove_from_any_queue(CollisionObjectBullet *p_co);
+
void flush_queries();
real_t get_delta_time() { return delta_time; }
void step(real_t p_delta_time);
@@ -177,7 +183,7 @@ public:
}
_FORCE_INLINE_ void add_debug_contact(const Vector3 &p_contact) {
if (contactDebugCount < contactDebug.size()) {
- contactDebug.write[contactDebugCount++] = p_contact;
+ contactDebug[contactDebugCount++] = p_contact;
}
}
_FORCE_INLINE_ Vector<Vector3> get_debug_contacts() { return contactDebug; }
diff --git a/modules/denoise/SCsub b/modules/denoise/SCsub
index 0fa65c6296..bf3bd7d073 100644
--- a/modules/denoise/SCsub
+++ b/modules/denoise/SCsub
@@ -1,7 +1,6 @@
#!/usr/bin/env python
import resource_to_cpp
-from platform_methods import run_in_subprocess
Import("env")
Import("env_modules")
diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp
index ed3924f2d2..64977ad237 100644
--- a/modules/enet/networked_multiplayer_enet.cpp
+++ b/modules/enet/networked_multiplayer_enet.cpp
@@ -104,6 +104,7 @@ Error NetworkedMultiplayerENet::create_server(int p_port, int p_max_clients, int
if (dtls_enabled) {
enet_host_dtls_server_setup(host, dtls_key.ptr(), dtls_cert.ptr());
}
+ enet_host_refuse_new_connections(host, refuse_connections);
#endif
_setup_compressor();
@@ -160,6 +161,7 @@ Error NetworkedMultiplayerENet::create_client(const String &p_address, int p_por
if (dtls_enabled) {
enet_host_dtls_client_setup(host, dtls_cert.ptr(), dtls_verify, p_address.utf8().get_data());
}
+ enet_host_refuse_new_connections(host, refuse_connections);
#endif
_setup_compressor();
@@ -641,7 +643,9 @@ int NetworkedMultiplayerENet::get_unique_id() const {
void NetworkedMultiplayerENet::set_refuse_new_connections(bool p_enable) {
refuse_connections = p_enable;
#ifdef GODOT_ENET
- enet_host_refuse_new_connections(host, p_enable);
+ if (active) {
+ enet_host_refuse_new_connections(host, p_enable);
+ }
#endif
}
diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp
index 9b6d8a2d35..d1ba3dc355 100644
--- a/modules/etc/image_etc.cpp
+++ b/modules/etc/image_etc.cpp
@@ -106,7 +106,7 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
// If VRAM compression is using ETC, but image has alpha, convert to RGBA4444 or LA8
// This saves space while maintaining the alpha channel
if (detected_channels == Image::USED_CHANNELS_RGBA) {
-
+
if (p_img->has_mipmaps()) {
// Image doesn't support mipmaps with RGBA4444 textures
p_img->clear_mipmaps();
diff --git a/modules/gdnative/SCsub b/modules/gdnative/SCsub
index cab05549d2..0e2291c1f9 100644
--- a/modules/gdnative/SCsub
+++ b/modules/gdnative/SCsub
@@ -22,13 +22,12 @@ SConscript("pluginscript/SCsub")
SConscript("videodecoder/SCsub")
-from platform_methods import run_in_subprocess
import gdnative_builders
_, gensource = env_gdnative.CommandNoCache(
["include/gdnative_api_struct.gen.h", "gdnative_api_struct.gen.cpp"],
"gdnative_api.json",
- run_in_subprocess(gdnative_builders.build_gdnative_api_struct),
+ env.Run(gdnative_builders.build_gdnative_api_struct, "Generating GDNative API."),
)
env_gdnative.add_source_files(env.modules_sources, [gensource])
diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp
index 8b0c7474e8..26c40b625c 100644
--- a/modules/gdnative/gdnative/string.cpp
+++ b/modules/gdnative/gdnative/string.cpp
@@ -541,13 +541,7 @@ godot_string GDAPI godot_string_substr(const godot_string *p_self, godot_int p_f
return result;
}
-double GDAPI godot_string_to_double(const godot_string *p_self) {
- const String *self = (const String *)p_self;
-
- return self->to_double();
-}
-
-godot_real GDAPI godot_string_to_float(const godot_string *p_self) {
+double GDAPI godot_string_to_float(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->to_float();
@@ -583,8 +577,8 @@ godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_s
return result;
}
-double GDAPI godot_string_char_to_double(const char *p_what) {
- return String::to_double(p_what);
+double GDAPI godot_string_char_to_float(const char *p_what) {
+ return String::to_float(p_what);
}
godot_int GDAPI godot_string_char_to_int(const char *p_what) {
@@ -621,8 +615,8 @@ int64_t GDAPI godot_string_to_int64(const godot_string *p_self) {
return self->to_int();
}
-double GDAPI godot_string_unicode_char_to_double(const wchar_t *p_str, const wchar_t **r_end) {
- return String::to_double(p_str, r_end);
+double GDAPI godot_string_unicode_char_to_float(const wchar_t *p_str, const wchar_t **r_end) {
+ return String::to_float(p_str, r_end);
}
godot_string GDAPI godot_string_get_slice(const godot_string *p_self, godot_string p_splitter, godot_int p_slice) {
diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json
index 9852928d22..8ccf44ff1a 100644
--- a/modules/gdnative/gdnative_api.json
+++ b/modules/gdnative/gdnative_api.json
@@ -4237,15 +4237,8 @@
]
},
{
- "name": "godot_string_to_double",
- "return_type": "double",
- "arguments": [
- ["const godot_string *", "p_self"]
- ]
- },
- {
"name": "godot_string_to_float",
- "return_type": "godot_real",
+ "return_type": "double",
"arguments": [
["const godot_string *", "p_self"]
]
@@ -4279,7 +4272,7 @@
]
},
{
- "name": "godot_string_char_to_double",
+ "name": "godot_string_char_to_float",
"return_type": "double",
"arguments": [
["const char *", "p_what"]
@@ -4337,7 +4330,7 @@
]
},
{
- "name": "godot_string_unicode_char_to_double",
+ "name": "godot_string_unicode_char_to_float",
"return_type": "double",
"arguments": [
["const wchar_t *", "p_str"],
diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h
index dfd4fcab89..d89383dc1b 100644
--- a/modules/gdnative/include/gdnative/string.h
+++ b/modules/gdnative/include/gdnative/string.h
@@ -145,14 +145,13 @@ godot_string GDAPI godot_string_rpad_with_custom_character(const godot_string *p
godot_real GDAPI godot_string_similarity(const godot_string *p_self, const godot_string *p_string);
godot_string GDAPI godot_string_sprintf(const godot_string *p_self, const godot_array *p_values, godot_bool *p_error);
godot_string GDAPI godot_string_substr(const godot_string *p_self, godot_int p_from, godot_int p_chars);
-double GDAPI godot_string_to_double(const godot_string *p_self);
-godot_real GDAPI godot_string_to_float(const godot_string *p_self);
+double GDAPI godot_string_to_float(const godot_string *p_self);
godot_int GDAPI godot_string_to_int(const godot_string *p_self);
godot_string GDAPI godot_string_camelcase_to_underscore(const godot_string *p_self);
godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_string *p_self);
godot_string GDAPI godot_string_capitalize(const godot_string *p_self);
-double GDAPI godot_string_char_to_double(const char *p_what);
+double GDAPI godot_string_char_to_float(const char *p_what);
godot_int GDAPI godot_string_char_to_int(const char *p_what);
int64_t GDAPI godot_string_wchar_to_int(const wchar_t *p_str);
godot_int GDAPI godot_string_char_to_int_with_len(const char *p_what, godot_int p_len);
@@ -160,7 +159,7 @@ int64_t GDAPI godot_string_char_to_int64_with_len(const wchar_t *p_str, int p_le
int64_t GDAPI godot_string_hex_to_int64(const godot_string *p_self);
int64_t GDAPI godot_string_hex_to_int64_with_prefix(const godot_string *p_self);
int64_t GDAPI godot_string_to_int64(const godot_string *p_self);
-double GDAPI godot_string_unicode_char_to_double(const wchar_t *p_str, const wchar_t **r_end);
+double GDAPI godot_string_unicode_char_to_float(const wchar_t *p_str, const wchar_t **r_end);
godot_int GDAPI godot_string_get_slice_count(const godot_string *p_self, godot_string p_splitter);
godot_string GDAPI godot_string_get_slice(const godot_string *p_self, godot_string p_splitter, godot_int p_slice);
diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml
index d8825ecc9a..c86b974f47 100644
--- a/modules/gdscript/doc_classes/@GDScript.xml
+++ b/modules/gdscript/doc_classes/@GDScript.xml
@@ -1367,42 +1367,6 @@
[code]wrapi[/code] is more flexible than using the [method posmod] approach by giving the user control over the minimum value.
</description>
</method>
- <method name="yield">
- <return type="GDScriptFunctionState">
- </return>
- <argument index="0" name="object" type="Object" default="null">
- </argument>
- <argument index="1" name="signal" type="String" default="&quot;&quot;">
- </argument>
- <description>
- Stops the function execution and returns the current suspended state to the calling function.
- From the caller, call [method GDScriptFunctionState.resume] on the state to resume execution. This invalidates the state. Within the resumed function, [code]yield()[/code] returns whatever was passed to the [code]resume()[/code] function call.
- If passed an object and a signal, the execution is resumed when the object emits the given signal. In this case, [code]yield()[/code] returns the argument passed to [code]emit_signal()[/code] if the signal takes only one argument, or an array containing all the arguments passed to [code]emit_signal()[/code] if the signal takes multiple arguments.
- You can also use [code]yield[/code] to wait for a function to finish:
- [codeblock]
- func _ready():
- yield(countdown(), "completed") # waiting for the countdown() function to complete
- print('Ready')
-
- func countdown():
- yield(get_tree(), "idle_frame") # returns a GDScriptFunctionState object to _ready()
- print(3)
- yield(get_tree().create_timer(1.0), "timeout")
- print(2)
- yield(get_tree().create_timer(1.0), "timeout")
- print(1)
- yield(get_tree().create_timer(1.0), "timeout")
-
- # prints:
- # 3
- # 2
- # 1
- # Ready
- [/codeblock]
- When yielding on a function, the [code]completed[/code] signal will be emitted automatically when the function returns. It can, therefore, be used as the [code]signal[/code] parameter of the [code]yield[/code] method to resume.
- In order to yield on a function, the resulting function should also return a [code]GDScriptFunctionState[/code]. Notice [code]yield(get_tree(), "idle_frame")[/code] from the above example.
- </description>
- </method>
</methods>
<constants>
<constant name="PI" value="3.141593">
diff --git a/modules/gdscript/doc_classes/GDScriptFunctionState.xml b/modules/gdscript/doc_classes/GDScriptFunctionState.xml
index 9a73764646..5e369b32d9 100644
--- a/modules/gdscript/doc_classes/GDScriptFunctionState.xml
+++ b/modules/gdscript/doc_classes/GDScriptFunctionState.xml
@@ -4,7 +4,8 @@
State of a function call after yielding.
</brief_description>
<description>
- Calling [method @GDScript.yield] within a function will cause that function to yield and return its current state as an object of this type. The yielded function call can then be resumed later by calling [method resume] on this state object.
+ FIXME: Outdated docs as of GDScript rewrite in 4.0.
+ Calling [code]yield[/code] within a function will cause that function to yield and return its current state as an object of this type. The yielded function call can then be resumed later by calling [method resume] on this state object.
</description>
<tutorials>
</tutorials>
@@ -26,7 +27,7 @@
</argument>
<description>
Resume execution of the yielded function call.
- If handed an argument, return the argument from the [method @GDScript.yield] call in the yielded function call. You can pass e.g. an [Array] to hand multiple arguments.
+ If handed an argument, return the argument from the [code]yield[/code] call in the yielded function call. You can pass e.g. an [Array] to hand multiple arguments.
This function returns what the resumed function call returns, possibly another function state if yielded again.
</description>
</method>
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 0843a54106..597a79a40c 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -1430,6 +1430,12 @@ void GDScriptAnalyzer::reduce_assignment(GDScriptParser::AssignmentNode *p_assig
}
void GDScriptAnalyzer::reduce_await(GDScriptParser::AwaitNode *p_await) {
+ if (p_await->to_await == nullptr) {
+ GDScriptParser::DataType await_type;
+ await_type.kind = GDScriptParser::DataType::VARIANT;
+ p_await->set_datatype(await_type);
+ return;
+ }
if (p_await->to_await->type == GDScriptParser::Node::CALL) {
reduce_call(static_cast<GDScriptParser::CallNode *>(p_await->to_await), true);
} else {
@@ -2013,7 +2019,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
GDScriptParser::ClassNode *outer = base_class->outer;
while (outer != nullptr) {
if (outer->has_member(name)) {
- const GDScriptParser::ClassNode::Member &member = base_class->get_member(name);
+ const GDScriptParser::ClassNode::Member &member = outer->get_member(name);
if (member.type == GDScriptParser::ClassNode::Member::CONSTANT) {
// TODO: Make sure loops won't cause problem. And make special error message for those.
// For out-of-order resolution:
diff --git a/modules/gdscript/gdscript_tokenizer.cpp b/modules/gdscript/gdscript_tokenizer.cpp
index d230173e9a..7a4bdd88ba 100644
--- a/modules/gdscript/gdscript_tokenizer.cpp
+++ b/modules/gdscript/gdscript_tokenizer.cpp
@@ -646,7 +646,7 @@ GDScriptTokenizer::Token GDScriptTokenizer::number() {
int64_t value = number.bin_to_int();
return make_literal(value);
} else if (has_decimal || has_exponent) {
- double value = number.to_double();
+ double value = number.to_float();
return make_literal(value);
} else {
int64_t value = number.to_int();
diff --git a/modules/mono/editor/script_class_parser.cpp b/modules/mono/editor/script_class_parser.cpp
index 012ccd5339..430c82953e 100644
--- a/modules/mono/editor/script_class_parser.cpp
+++ b/modules/mono/editor/script_class_parser.cpp
@@ -235,7 +235,7 @@ ScriptClassParser::Token ScriptClassParser::get_token() {
if (code[idx] == '-' || (code[idx] >= '0' && code[idx] <= '9')) {
//a number
const CharType *rptr;
- double number = String::to_double(&code[idx], &rptr);
+ double number = String::to_float(&code[idx], &rptr);
idx += (rptr - &code[idx]);
value = number;
return TK_NUMBER;
diff --git a/modules/mono/mono_gd/gd_mono_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp
index a170fd36e7..9dbeee57ce 100644
--- a/modules/mono/mono_gd/gd_mono_assembly.cpp
+++ b/modules/mono/mono_gd/gd_mono_assembly.cpp
@@ -425,7 +425,7 @@ GDMonoClass *GDMonoAssembly::get_object_derived_class(const StringName &p_class)
while (!nested_classes.empty()) {
GDMonoClass *current_nested = nested_classes.front()->get();
- nested_classes.pop_back();
+ nested_classes.pop_front();
void *iter = nullptr;
diff --git a/modules/regex/doc_classes/RegEx.xml b/modules/regex/doc_classes/RegEx.xml
index c00fa96b2e..312275842a 100644
--- a/modules/regex/doc_classes/RegEx.xml
+++ b/modules/regex/doc_classes/RegEx.xml
@@ -11,7 +11,7 @@
regex.compile("\\w-(\\d+)")
[/codeblock]
The search pattern must be escaped first for GDScript before it is escaped for the expression. For example, [code]compile("\\d+")[/code] would be read by RegEx as [code]\d+[/code]. Similarly, [code]compile("\"(?:\\\\.|[^\"])*\"")[/code] would be read as [code]"(?:\\.|[^"])*"[/code].
- Using [method search] you can find the pattern within the given text. If a pattern is found, [RegExMatch] is returned and you can retrieve details of the results using functions such as [method RegExMatch.get_string] and [method RegExMatch.get_start].
+ Using [method search], you can find the pattern within the given text. If a pattern is found, [RegExMatch] is returned and you can retrieve details of the results using methods such as [method RegExMatch.get_string] and [method RegExMatch.get_start].
[codeblock]
var regex = RegEx.new()
regex.compile("\\w-(\\d+)")
@@ -19,7 +19,7 @@
if result:
print(result.get_string()) # Would print n-0123
[/codeblock]
- The results of capturing groups [code]()[/code] can be retrieved by passing the group number to the various functions in [RegExMatch]. Group 0 is the default and will always refer to the entire pattern. In the above example, calling [code]result.get_string(1)[/code] would give you [code]0123[/code].
+ The results of capturing groups [code]()[/code] can be retrieved by passing the group number to the various methods in [RegExMatch]. Group 0 is the default and will always refer to the entire pattern. In the above example, calling [code]result.get_string(1)[/code] would give you [code]0123[/code].
This version of RegEx also supports named capturing groups, and the names can be used to retrieve the results. If two or more groups have the same name, the name would only refer to the first one with a match.
[codeblock]
var regex = RegEx.new()
@@ -34,6 +34,15 @@
print(result.get_string("digit"))
# Would print 01 03 0 3f 42
[/codeblock]
+ [b]Example of splitting a string using a RegEx:[/b]
+ [codeblock]
+ var regex = RegEx.new()
+ regex.compile("\\S+") # Negated whitespace character class.
+ var results = []
+ for match in regex.search_all("One Two \n\tThree"):
+ results.push_back(match.get_string())
+ # The `results` array now contains "One", "Two", "Three".
+ [/codeblock]
[b]Note:[/b] Godot's regex implementation is based on the [url=https://www.pcre.org/]PCRE2[/url] library. You can view the full pattern reference [url=https://www.pcre.org/current/doc/html/pcre2pattern.html]here[/url].
[b]Tip:[/b] You can use [url=https://regexr.com/]Regexr[/url] to test regular expressions online.
</description>
diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp
index bd41117497..2ac7793b8c 100644
--- a/modules/visual_script/visual_script_expression.cpp
+++ b/modules/visual_script/visual_script_expression.cpp
@@ -489,7 +489,7 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
r_token.type = TK_CONSTANT;
if (is_float) {
- r_token.value = num.to_double();
+ r_token.value = num.to_float();
} else {
r_token.value = num.to_int();
}
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 8d3257a365..6f8a968c82 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -2080,6 +2080,93 @@ public:
return OK;
}
+ Error sign_apk(const Ref<EditorExportPreset> &p_preset, bool p_debug, String apk_path, EditorProgress ep) {
+ String release_keystore = p_preset->get("keystore/release");
+ String release_username = p_preset->get("keystore/release_user");
+ String release_password = p_preset->get("keystore/release_password");
+
+ String jarsigner = EditorSettings::get_singleton()->get("export/android/jarsigner");
+ if (!FileAccess::exists(jarsigner)) {
+ EditorNode::add_io_error("'jarsigner' could not be found.\nPlease supply a path in the Editor Settings.\nThe resulting APK is unsigned.");
+ return OK;
+ }
+
+ String keystore;
+ String password;
+ String user;
+ if (p_debug) {
+ keystore = p_preset->get("keystore/debug");
+ password = p_preset->get("keystore/debug_password");
+ user = p_preset->get("keystore/debug_user");
+
+ if (keystore.empty()) {
+ keystore = EditorSettings::get_singleton()->get("export/android/debug_keystore");
+ password = EditorSettings::get_singleton()->get("export/android/debug_keystore_pass");
+ user = EditorSettings::get_singleton()->get("export/android/debug_keystore_user");
+ }
+
+ if (ep.step("Signing debug APK...", 103)) {
+ return ERR_SKIP;
+ }
+
+ } else {
+ keystore = release_keystore;
+ password = release_password;
+ user = release_username;
+
+ if (ep.step("Signing release APK...", 103)) {
+ return ERR_SKIP;
+ }
+ }
+
+ if (!FileAccess::exists(keystore)) {
+ EditorNode::add_io_error("Could not find keystore, unable to export.");
+ return ERR_FILE_CANT_OPEN;
+ }
+
+ List<String> args;
+ args.push_back("-digestalg");
+ args.push_back("SHA-256");
+ args.push_back("-sigalg");
+ args.push_back("SHA256withRSA");
+ String tsa_url = EditorSettings::get_singleton()->get("export/android/timestamping_authority_url");
+ if (tsa_url != "") {
+ args.push_back("-tsa");
+ args.push_back(tsa_url);
+ }
+ args.push_back("-verbose");
+ args.push_back("-keystore");
+ args.push_back(keystore);
+ args.push_back("-storepass");
+ args.push_back(password);
+ args.push_back(apk_path);
+ args.push_back(user);
+ int retval;
+ OS::get_singleton()->execute(jarsigner, args, true, NULL, NULL, &retval);
+ if (retval) {
+ EditorNode::add_io_error("'jarsigner' returned with error #" + itos(retval));
+ return ERR_CANT_CREATE;
+ }
+
+ if (ep.step("Verifying APK...", 104)) {
+ return ERR_SKIP;
+ }
+
+ args.clear();
+ args.push_back("-verify");
+ args.push_back("-keystore");
+ args.push_back(keystore);
+ args.push_back(apk_path);
+ args.push_back("-verbose");
+
+ OS::get_singleton()->execute(jarsigner, args, true, NULL, NULL, &retval);
+ if (retval) {
+ EditorNode::add_io_error("'jarsigner' verification of APK failed. Make sure to use a jarsigner from OpenJDK 8.");
+ return ERR_CANT_CREATE;
+ }
+ return OK;
+ }
+
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override {
ExportNotifier notifier(*this, p_preset, p_debug, p_path, p_flags);
@@ -2249,10 +2336,6 @@ public:
bool apk_expansion = p_preset->get("apk_expansion/enable");
String apk_expansion_pkey = p_preset->get("apk_expansion/public_key");
- String release_keystore = p_preset->get("keystore/release");
- String release_username = p_preset->get("keystore/release_user");
- String release_password = p_preset->get("keystore/release_password");
-
Vector<String> enabled_abis = get_enabled_abis(p_preset);
// Prepare images to be resized for the icons. If some image ends up being uninitialized, the default image from the export template will be used.
@@ -2404,84 +2487,9 @@ public:
}
if (_signed) {
- String jarsigner = EditorSettings::get_singleton()->get("export/android/jarsigner");
- if (!FileAccess::exists(jarsigner)) {
- EditorNode::add_io_error("'jarsigner' could not be found.\nPlease supply a path in the Editor Settings.\nThe resulting APK is unsigned.");
- CLEANUP_AND_RETURN(OK);
- }
-
- String keystore;
- String password;
- String user;
- if (p_debug) {
- keystore = p_preset->get("keystore/debug");
- password = p_preset->get("keystore/debug_password");
- user = p_preset->get("keystore/debug_user");
-
- if (keystore.empty()) {
- keystore = EditorSettings::get_singleton()->get("export/android/debug_keystore");
- password = EditorSettings::get_singleton()->get("export/android/debug_keystore_pass");
- user = EditorSettings::get_singleton()->get("export/android/debug_keystore_user");
- }
-
- if (ep.step("Signing debug APK...", 103)) {
- CLEANUP_AND_RETURN(ERR_SKIP);
- }
-
- } else {
- keystore = release_keystore;
- password = release_password;
- user = release_username;
-
- if (ep.step("Signing release APK...", 103)) {
- CLEANUP_AND_RETURN(ERR_SKIP);
- }
- }
-
- if (!FileAccess::exists(keystore)) {
- EditorNode::add_io_error("Could not find keystore, unable to export.");
- CLEANUP_AND_RETURN(ERR_FILE_CANT_OPEN);
- }
-
- List<String> args;
- args.push_back("-digestalg");
- args.push_back("SHA-256");
- args.push_back("-sigalg");
- args.push_back("SHA256withRSA");
- String tsa_url = EditorSettings::get_singleton()->get("export/android/timestamping_authority_url");
- if (tsa_url != "") {
- args.push_back("-tsa");
- args.push_back(tsa_url);
- }
- args.push_back("-verbose");
- args.push_back("-keystore");
- args.push_back(keystore);
- args.push_back("-storepass");
- args.push_back(password);
- args.push_back(tmp_unaligned_path);
- args.push_back(user);
- int retval;
- OS::get_singleton()->execute(jarsigner, args, true, nullptr, nullptr, &retval);
- if (retval) {
- EditorNode::add_io_error("'jarsigner' returned with error #" + itos(retval));
- CLEANUP_AND_RETURN(ERR_CANT_CREATE);
- }
-
- if (ep.step("Verifying APK...", 104)) {
- CLEANUP_AND_RETURN(ERR_SKIP);
- }
-
- args.clear();
- args.push_back("-verify");
- args.push_back("-keystore");
- args.push_back(keystore);
- args.push_back(tmp_unaligned_path);
- args.push_back("-verbose");
-
- OS::get_singleton()->execute(jarsigner, args, true, nullptr, nullptr, &retval);
- if (retval) {
- EditorNode::add_io_error("'jarsigner' verification of APK failed. Make sure to use a jarsigner from OpenJDK 8.");
- CLEANUP_AND_RETURN(ERR_CANT_CREATE);
+ err = sign_apk(p_preset, p_debug, tmp_unaligned_path, ep);
+ if (err != OK) {
+ CLEANUP_AND_RETURN(err);
}
}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/Godot.java b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
index 72746e06f7..35852f31ef 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
@@ -56,8 +56,6 @@ import android.content.SharedPreferences.Editor;
import android.content.pm.ConfigurationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.Point;
-import android.graphics.Rect;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
@@ -70,7 +68,6 @@ import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings.Secure;
import android.view.Display;
-import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -78,12 +75,10 @@ import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
-import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.FrameLayout;
-import android.widget.PopupWindow;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -165,7 +160,7 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
public GodotRenderView mRenderView;
private boolean godot_initialized = false;
- private PopupWindow mKeyboardWindow;
+ private GodotEditText mEditText;
private SensorManager mSensorManager;
private Sensor mAccelerometer;
@@ -223,24 +218,6 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
containerLayout = new FrameLayout(activity);
containerLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- // Create a popup window with an invisible layout for the virtual keyboard,
- // so the view can be resized to get the vk height without resizing the main godot view.
- final FrameLayout keyboardLayout = new FrameLayout(activity);
- keyboardLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- keyboardLayout.setVisibility(View.INVISIBLE);
- mKeyboardWindow = new PopupWindow(keyboardLayout, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- mKeyboardWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
- mKeyboardWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
- mKeyboardWindow.setFocusable(true); // for the text edit to work
- mKeyboardWindow.setTouchable(false); // inputs need to go through
-
- // GodotEditText layout
- GodotEditText editText = new GodotEditText(activity);
- editText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
- editText.setKeyboardView(keyboardLayout);
- // ...add to keyboard layout
- keyboardLayout.addView(editText);
-
GodotLib.setup(command_line);
final String videoDriver = GodotLib.getGlobal("rendering/quality/driver/driver_name");
@@ -253,21 +230,9 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
View view = mRenderView.getView();
containerLayout.addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- editText.setView(mRenderView);
- io.setEdit(editText);
- keyboardLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- Point fullSize = new Point();
- activity.getWindowManager().getDefaultDisplay().getSize(fullSize);
- Rect gameSize = new Rect();
- mKeyboardWindow.getContentView().getWindowVisibleDisplayFrame(gameSize);
-
- final int keyboardHeight = fullSize.y - gameSize.bottom;
- GodotLib.setVirtualKeyboardHeight(keyboardHeight);
- }
- });
+ mEditText = new GodotEditText(activity, mRenderView);
+ io.setEdit(mEditText);
mRenderView.queueOnRenderThread(new Runnable() {
@Override
@@ -626,14 +591,14 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
mRenderView.getView().post(new Runnable() {
@Override
public void run() {
- mKeyboardWindow.showAtLocation(getActivity().getWindow().getDecorView(), Gravity.NO_GRAVITY, 0, 0);
+ mEditText.onInitView();
}
});
}
@Override
public void onDestroy() {
- mKeyboardWindow.dismiss();
+ mEditText.onDestroyView();
for (GodotPlugin plugin : pluginRegistry.getAllPlugins()) {
plugin.onMainDestroy();
diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java
index 042b3ac48a..6855f91f1c 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java
@@ -32,17 +32,27 @@ package org.godotengine.godot.input;
import org.godotengine.godot.*;
+import android.app.Activity;
import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
import android.os.Handler;
import android.os.Message;
import android.text.InputFilter;
import android.text.InputType;
import android.util.AttributeSet;
+import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.ViewTreeObserver;
+import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
+import android.widget.FrameLayout;
+import android.widget.PopupWindow;
import java.lang.ref.WeakReference;
@@ -58,6 +68,7 @@ public class GodotEditText extends EditText {
// ===========================================================
private GodotRenderView mRenderView;
private View mKeyboardView;
+ private PopupWindow mKeyboardWindow;
private GodotTextInputWrapper mInputWrapper;
private EditHandler sHandler = new EditHandler(this);
private String mOriginText;
@@ -82,24 +93,52 @@ public class GodotEditText extends EditText {
// ===========================================================
// Constructors
// ===========================================================
- public GodotEditText(final Context context) {
+ public GodotEditText(final Context context, final GodotRenderView view) {
super(context);
- initView();
- }
- public GodotEditText(final Context context, final AttributeSet attrs) {
- super(context, attrs);
- initView();
+ setPadding(0, 0, 0, 0);
+ setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_ACTION_DONE);
+ setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
+
+ mRenderView = view;
+ mInputWrapper = new GodotTextInputWrapper(mRenderView, this);
+ setOnEditorActionListener(mInputWrapper);
+ view.getView().requestFocus();
+
+ // Create a popup window with an invisible layout for the virtual keyboard,
+ // so the view can be resized to get the vk height without resizing the main godot view.
+ final FrameLayout keyboardLayout = new FrameLayout(context);
+ keyboardLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ keyboardLayout.setVisibility(View.INVISIBLE);
+ keyboardLayout.addView(this);
+ mKeyboardView = keyboardLayout;
+
+ mKeyboardWindow = new PopupWindow(keyboardLayout, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+ mKeyboardWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ mKeyboardWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
+ mKeyboardWindow.setFocusable(true); // for the text edit to work
+ mKeyboardWindow.setTouchable(false); // inputs need to go through
+
+ keyboardLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ Point fullSize = new Point();
+ ((Activity)mRenderView.getView().getContext()).getWindowManager().getDefaultDisplay().getSize(fullSize);
+ Rect gameSize = new Rect();
+ mKeyboardWindow.getContentView().getWindowVisibleDisplayFrame(gameSize);
+
+ final int keyboardHeight = fullSize.y - gameSize.bottom;
+ GodotLib.setVirtualKeyboardHeight(keyboardHeight);
+ }
+ });
}
- public GodotEditText(final Context context, final AttributeSet attrs, final int defStyle) {
- super(context, attrs, defStyle);
- initView();
+ public void onInitView() {
+ mKeyboardWindow.showAtLocation(mRenderView.getView(), Gravity.NO_GRAVITY, 0, 0);
}
- protected void initView() {
- setPadding(0, 0, 0, 0);
- setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_ACTION_DONE);
+ public void onDestroyView() {
+ mKeyboardWindow.dismiss();
}
public boolean isMultiline() {
@@ -154,21 +193,6 @@ public class GodotEditText extends EditText {
}
// ===========================================================
- // Getter & Setter
- // ===========================================================
- public void setView(final GodotRenderView view) {
- mRenderView = view;
- if (mInputWrapper == null)
- mInputWrapper = new GodotTextInputWrapper(mRenderView, this);
- setOnEditorActionListener(mInputWrapper);
- view.getView().requestFocus();
- }
-
- public void setKeyboardView(final View keyboardView) {
- mKeyboardView = keyboardView;
- }
-
- // ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
diff --git a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt
index aeb4628d5d..7fa8e3b4e5 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt
+++ b/platform/android/java/lib/src/org/godotengine/godot/vulkan/VkRenderer.kt
@@ -71,7 +71,7 @@ internal class VkRenderer {
*/
fun onVkSurfaceChanged(surface: Surface, width: Int, height: Int) {
GodotLib.resize(surface, width, height)
-
+
for (plugin in pluginRegistry.getAllPlugins()) {
plugin.onVkSurfaceChanged(surface, width, height)
}
diff --git a/platform/javascript/display_server_javascript.cpp b/platform/javascript/display_server_javascript.cpp
index 2f0a2faa83..2fd1f45939 100644
--- a/platform/javascript/display_server_javascript.cpp
+++ b/platform/javascript/display_server_javascript.cpp
@@ -829,6 +829,19 @@ DisplayServer *DisplayServerJavaScript::create_func(const String &p_rendering_dr
}
DisplayServerJavaScript::DisplayServerJavaScript(const String &p_rendering_driver, WindowMode p_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
+ r_error = OK; // Always succeeds for now.
+
+ /* clang-format off */
+ swap_cancel_ok = EM_ASM_INT({
+ const win = (['Windows', 'Win64', 'Win32', 'WinCE']);
+ const plat = navigator.platform || "";
+ if (win.indexOf(plat) !== -1) {
+ return 1;
+ }
+ return 0;
+ }) == 1;
+ /* clang-format on */
+
RasterizerDummy::make_current(); // TODO GLES2 in Godot 4.0... or webgpu?
#if 0
EmscriptenWebGLContextAttributes attributes;
@@ -1181,6 +1194,10 @@ int DisplayServerJavaScript::get_current_video_driver() const {
return 1;
}
+bool DisplayServerJavaScript::get_swap_cancel_ok() {
+ return swap_cancel_ok;
+}
+
void DisplayServerJavaScript::swap_buffers() {
//emscripten_webgl_commit_frame();
}
diff --git a/platform/javascript/display_server_javascript.h b/platform/javascript/display_server_javascript.h
index b149665d67..6569ef1e42 100644
--- a/platform/javascript/display_server_javascript.h
+++ b/platform/javascript/display_server_javascript.h
@@ -56,6 +56,8 @@ class DisplayServerJavaScript : public DisplayServer {
int last_width = 0;
int last_height = 0;
+ bool swap_cancel_ok = false;
+
// utilities
static Point2 compute_position_in_canvas(int p_x, int p_y);
static void focus_canvas();
@@ -195,6 +197,7 @@ public:
virtual void set_icon(const Ref<Image> &p_icon);
// others
+ virtual bool get_swap_cancel_ok();
virtual void swap_buffers();
static void register_javascript_driver();
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp
index f697887f08..a30d84a52c 100644
--- a/platform/javascript/javascript_main.cpp
+++ b/platform/javascript/javascript_main.cpp
@@ -34,6 +34,7 @@
#include "platform/javascript/os_javascript.h"
#include <emscripten/emscripten.h>
+#include <stdlib.h>
static OS_JavaScript *os = nullptr;
static uint64_t target_ticks = 0;
diff --git a/platform/windows/godot.natvis b/platform/windows/godot.natvis
index 593557cc69..90f0b55d0a 100644
--- a/platform/windows/godot.natvis
+++ b/platform/windows/godot.natvis
@@ -19,7 +19,7 @@
</ArrayItems>
</Expand>
</Type>
-
+
<Type Name="List&lt;*&gt;">
<Expand>
<Item Name="[size]">_data ? (_data->size_cache) : 0</Item>
@@ -62,7 +62,7 @@
<DisplayString Condition="type == Variant::POOL_COLOR_ARRAY">{*(PoolColorArray *)_data._mem}</DisplayString>
<StringView Condition="type == Variant::STRING &amp;&amp; ((String *)(_data._mem))->_cowdata._ptr">((String *)(_data._mem))->_cowdata._ptr,su</StringView>
-
+
<Expand>
<Item Name="[value]" Condition="type == Variant::BOOL">_data._bool</Item>
<Item Name="[value]" Condition="type == Variant::INT">_data._int</Item>
@@ -143,7 +143,7 @@
<Item Name="alpha">a</Item>
</Expand>
</Type>
-
+
<Type Name="Node" Inheritable="false">
<Expand>
<Item Name="Object">(Object*)this</Item>
diff --git a/platform_methods.py b/platform_methods.py
index 805d7de82a..ec394d76d8 100644
--- a/platform_methods.py
+++ b/platform_methods.py
@@ -44,11 +44,12 @@ def run_in_subprocess(builder_function):
json.dump(data, json_file, indent=2)
json_file_size = os.stat(json_path).st_size
- print(
- "Executing builder function in subprocess: "
- "module_path=%r, parameter_file=%r, parameter_file_size=%r, target=%r, source=%r"
- % (module_path, json_path, json_file_size, target, source)
- )
+ if env["verbose"]:
+ print(
+ "Executing builder function in subprocess: "
+ "module_path=%r, parameter_file=%r, parameter_file_size=%r, target=%r, source=%r"
+ % (module_path, json_path, json_file_size, target, source)
+ )
try:
exit_code = subprocess.call([sys.executable, module_path, json_path], env=subprocess_env)
finally:
diff --git a/scene/3d/skeleton_ik_3d.cpp b/scene/3d/skeleton_ik_3d.cpp
index 9023f3c68a..32d7afd5df 100644
--- a/scene/3d/skeleton_ik_3d.cpp
+++ b/scene/3d/skeleton_ik_3d.cpp
@@ -511,6 +511,11 @@ bool SkeletonIK3D::is_running() {
void SkeletonIK3D::start(bool p_one_time) {
if (p_one_time) {
set_process_internal(false);
+
+ if (target_node_override) {
+ reload_goal();
+ }
+
_solve_chain();
} else {
set_process_internal(true);
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 572be8d901..41cd67dbf1 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -2898,7 +2898,7 @@ Dictionary RichTextLabel::parse_expressions_for_values(Vector<String> p_expressi
a.append(false);
}
} else if (!decimal.search(values[j]).is_null()) {
- a.append(values[j].to_double());
+ a.append(values[j].to_float());
} else if (!numerical.search(values[j]).is_null()) {
a.append(values[j].to_int());
} else {
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 39ac10a46e..b974dc2897 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -4889,6 +4889,7 @@ void TextEdit::_update_caches() {
cache.folded_eol_icon = get_theme_icon("GuiEllipsis", "EditorIcons");
cache.executing_icon = get_theme_icon("MainPlay", "EditorIcons");
text.set_font(cache.font);
+ text.clear_width_cache();
if (syntax_highlighter.is_valid()) {
syntax_highlighter->set_text_edit(this);
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index eeb7f9430d..5057f84192 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -1971,7 +1971,7 @@ void Tree::_text_editor_enter(String p_text) {
//popup_edited_item->edited_signal.call( popup_edited_item_col );
} break;
case TreeItem::CELL_MODE_RANGE: {
- c.val = p_text.to_double();
+ c.val = p_text.to_float();
if (c.step > 0) {
c.val = Math::stepify(c.val, c.step);
}
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 75b3d7a73d..2449b3bd35 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -875,8 +875,12 @@ void SceneTree::_call_input_pause(const StringName &p_group, const StringName &p
continue;
}
- n->call(p_method, (const Variant **)v, 1);
- //ERR_FAIL_COND(node_count != g.nodes.size());
+ Callable::CallError err;
+ // Call both script and native method.
+ if (n->get_script_instance()) {
+ n->get_script_instance()->call(p_method, (const Variant **)v, 1, err);
+ }
+ n->call(p_method, (const Variant **)v, 1, err);
}
call_lock--;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 16d0325881..d962171555 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1607,7 +1607,17 @@ void Viewport::_gui_call_input(Control *p_control, const Ref<InputEvent> &p_inpu
}
if (control->data.mouse_filter != Control::MOUSE_FILTER_IGNORE) {
- control->call(SceneStringNames::get_singleton()->_gui_input, ev);
+ // Call both script and native methods.
+ Callable::CallError error;
+ Variant event = ev;
+ const Variant *args[1] = { &event };
+ if (control->get_script_instance()) {
+ control->get_script_instance()->call(SceneStringNames::get_singleton()->_gui_input, args, 1, error);
+ }
+ MethodBind *method = ClassDB::get_method(control->get_class_name(), SceneStringNames::get_singleton()->_gui_input);
+ if (method) {
+ method->call(control, args, 1, error);
+ }
}
if (!control->is_inside_tree() || control->is_set_as_toplevel()) {
@@ -2989,10 +2999,8 @@ void Viewport::unhandled_input(const Ref<InputEvent> &p_event, bool p_local_coor
}
get_tree()->_call_input_pause(unhandled_input_group, "_unhandled_input", ev, this);
- //call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_input","_unhandled_input",ev);
if (!is_input_handled() && Object::cast_to<InputEventKey>(*ev) != nullptr) {
get_tree()->_call_input_pause(unhandled_key_input_group, "_unhandled_key_input", ev, this);
- //call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_key_input","_unhandled_key_input",ev);
}
if (physics_object_picking && !is_input_handled()) {
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index db80dbe814..47b8b6073b 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -547,6 +547,7 @@ void register_scene_types() {
ClassDB::register_class<VisualShaderNodeTexture2DArray>();
ClassDB::register_class<VisualShaderNodeCubemap>();
ClassDB::register_virtual_class<VisualShaderNodeUniform>();
+ ClassDB::register_class<VisualShaderNodeUniformRef>();
ClassDB::register_class<VisualShaderNodeFloatUniform>();
ClassDB::register_class<VisualShaderNodeIntUniform>();
ClassDB::register_class<VisualShaderNodeBooleanUniform>();
diff --git a/scene/resources/syntax_highlighter.cpp b/scene/resources/syntax_highlighter.cpp
index abf7235fd6..9c8f9334a9 100644
--- a/scene/resources/syntax_highlighter.cpp
+++ b/scene/resources/syntax_highlighter.cpp
@@ -488,7 +488,7 @@ void CodeHighlighter::add_color_region(const String &p_start_key, const String &
color_region.color = p_color;
color_region.start_key = p_start_key;
color_region.end_key = p_end_key;
- color_region.line_only = p_line_only;
+ color_region.line_only = p_line_only || p_end_key == "";
color_regions.push_back(color_region);
clear_highlighting_cache();
}
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 0b8e435c19..8b84ce9e8c 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -1151,7 +1151,10 @@ Error VisualShader::_write_node(Type type, StringBuilder &global_code, StringBui
bool skip_global = input.is_valid() && for_preview;
if (!skip_global) {
- global_code += vsnode->generate_global(get_mode(), type, node);
+ Ref<VisualShaderNodeUniform> uniform = vsnode;
+ if (!uniform.is_valid() || !uniform->is_global_code_generated()) {
+ global_code += vsnode->generate_global(get_mode(), type, node);
+ }
String class_name = vsnode->get_class_name();
if (class_name == "VisualShaderNodeCustom") {
@@ -1398,6 +1401,9 @@ void VisualShader::_update_shader() const {
static const char *func_name[TYPE_MAX] = { "vertex", "fragment", "light" };
String global_expressions;
+ Set<String> used_uniform_names;
+ List<VisualShaderNodeUniform *> uniforms;
+
for (int i = 0, index = 0; i < TYPE_MAX; i++) {
if (!ShaderTypes::get_singleton()->get_functions(RenderingServer::ShaderMode(shader_mode)).has(func_name[i])) {
continue;
@@ -1413,6 +1419,24 @@ void VisualShader::_update_shader() const {
expr += "\n";
global_expressions += expr;
}
+ Ref<VisualShaderNodeUniformRef> uniform_ref = Object::cast_to<VisualShaderNodeUniformRef>(E->get().node.ptr());
+ if (uniform_ref.is_valid()) {
+ used_uniform_names.insert(uniform_ref->get_uniform_name());
+ }
+ Ref<VisualShaderNodeUniform> uniform = Object::cast_to<VisualShaderNodeUniform>(E->get().node.ptr());
+ if (uniform.is_valid()) {
+ uniforms.push_back(uniform.ptr());
+ }
+ }
+ }
+
+ for (int i = 0; i < uniforms.size(); i++) {
+ VisualShaderNodeUniform *uniform = uniforms[i];
+ if (used_uniform_names.has(uniform->get_uniform_name())) {
+ global_code += uniform->generate_global(get_mode(), Type(i), -1);
+ const_cast<VisualShaderNodeUniform *>(uniform)->set_global_code_generated(true);
+ } else {
+ const_cast<VisualShaderNodeUniform *>(uniform)->set_global_code_generated(false);
}
}
@@ -2002,6 +2026,199 @@ VisualShaderNodeInput::VisualShaderNodeInput() {
shader_mode = Shader::MODE_MAX;
}
+////////////// UniformRef
+
+List<VisualShaderNodeUniformRef::Uniform> uniforms;
+
+void VisualShaderNodeUniformRef::add_uniform(const String &p_name, UniformType p_type) {
+ uniforms.push_back({ p_name, p_type });
+}
+
+void VisualShaderNodeUniformRef::clear_uniforms() {
+ uniforms.clear();
+}
+
+String VisualShaderNodeUniformRef::get_caption() const {
+ return "UniformRef";
+}
+
+int VisualShaderNodeUniformRef::get_input_port_count() const {
+ return 0;
+}
+
+VisualShaderNodeUniformRef::PortType VisualShaderNodeUniformRef::get_input_port_type(int p_port) const {
+ return PortType::PORT_TYPE_SCALAR;
+}
+
+String VisualShaderNodeUniformRef::get_input_port_name(int p_port) const {
+ return "";
+}
+
+int VisualShaderNodeUniformRef::get_output_port_count() const {
+ if (uniform_name == "[None]") {
+ return 0;
+ }
+
+ switch (uniform_type) {
+ case UniformType::UNIFORM_TYPE_FLOAT:
+ return 1;
+ case UniformType::UNIFORM_TYPE_INT:
+ return 1;
+ case UniformType::UNIFORM_TYPE_BOOLEAN:
+ return 1;
+ case UniformType::UNIFORM_TYPE_VECTOR:
+ return 1;
+ case UniformType::UNIFORM_TYPE_TRANSFORM:
+ return 1;
+ case UniformType::UNIFORM_TYPE_COLOR:
+ return 2;
+ case UniformType::UNIFORM_TYPE_SAMPLER:
+ return 1;
+ default:
+ break;
+ }
+ return 0;
+}
+
+VisualShaderNodeUniformRef::PortType VisualShaderNodeUniformRef::get_output_port_type(int p_port) const {
+ switch (uniform_type) {
+ case UniformType::UNIFORM_TYPE_FLOAT:
+ return PortType::PORT_TYPE_SCALAR;
+ case UniformType::UNIFORM_TYPE_INT:
+ return PortType::PORT_TYPE_SCALAR_INT;
+ case UniformType::UNIFORM_TYPE_BOOLEAN:
+ return PortType::PORT_TYPE_BOOLEAN;
+ case UniformType::UNIFORM_TYPE_VECTOR:
+ return PortType::PORT_TYPE_VECTOR;
+ case UniformType::UNIFORM_TYPE_TRANSFORM:
+ return PortType::PORT_TYPE_TRANSFORM;
+ case UniformType::UNIFORM_TYPE_COLOR:
+ if (p_port == 0) {
+ return PortType::PORT_TYPE_VECTOR;
+ } else if (p_port == 1) {
+ return PORT_TYPE_SCALAR;
+ }
+ break;
+ case UniformType::UNIFORM_TYPE_SAMPLER:
+ return PortType::PORT_TYPE_SAMPLER;
+ default:
+ break;
+ }
+ return PORT_TYPE_SCALAR;
+}
+
+String VisualShaderNodeUniformRef::get_output_port_name(int p_port) const {
+ switch (uniform_type) {
+ case UniformType::UNIFORM_TYPE_FLOAT:
+ return "";
+ case UniformType::UNIFORM_TYPE_INT:
+ return "";
+ case UniformType::UNIFORM_TYPE_BOOLEAN:
+ return "";
+ case UniformType::UNIFORM_TYPE_VECTOR:
+ return "";
+ case UniformType::UNIFORM_TYPE_TRANSFORM:
+ return "";
+ case UniformType::UNIFORM_TYPE_COLOR:
+ if (p_port == 0) {
+ return "rgb";
+ } else if (p_port == 1) {
+ return "alpha";
+ }
+ break;
+ case UniformType::UNIFORM_TYPE_SAMPLER:
+ return "";
+ break;
+ default:
+ break;
+ }
+ return "";
+}
+
+void VisualShaderNodeUniformRef::set_uniform_name(const String &p_name) {
+ uniform_name = p_name;
+ if (p_name != "[None]") {
+ uniform_type = get_uniform_type_by_name(p_name);
+ } else {
+ uniform_type = UniformType::UNIFORM_TYPE_FLOAT;
+ }
+ emit_changed();
+}
+
+String VisualShaderNodeUniformRef::get_uniform_name() const {
+ return uniform_name;
+}
+
+int VisualShaderNodeUniformRef::get_uniforms_count() const {
+ return uniforms.size();
+}
+
+String VisualShaderNodeUniformRef::get_uniform_name_by_index(int p_idx) const {
+ if (p_idx >= 0 && p_idx < uniforms.size()) {
+ return uniforms[p_idx].name;
+ }
+ return "";
+}
+
+VisualShaderNodeUniformRef::UniformType VisualShaderNodeUniformRef::get_uniform_type_by_name(const String &p_name) const {
+ for (int i = 0; i < uniforms.size(); i++) {
+ if (uniforms[i].name == p_name) {
+ return uniforms[i].type;
+ }
+ }
+ return UniformType::UNIFORM_TYPE_FLOAT;
+}
+
+VisualShaderNodeUniformRef::UniformType VisualShaderNodeUniformRef::get_uniform_type_by_index(int p_idx) const {
+ if (p_idx >= 0 && p_idx < uniforms.size()) {
+ return uniforms[p_idx].type;
+ }
+ return UniformType::UNIFORM_TYPE_FLOAT;
+}
+
+String VisualShaderNodeUniformRef::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
+ switch (uniform_type) {
+ case UniformType::UNIFORM_TYPE_FLOAT:
+ return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
+ case UniformType::UNIFORM_TYPE_INT:
+ return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
+ case UniformType::UNIFORM_TYPE_BOOLEAN:
+ return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
+ case UniformType::UNIFORM_TYPE_VECTOR:
+ return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
+ case UniformType::UNIFORM_TYPE_TRANSFORM:
+ return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
+ case UniformType::UNIFORM_TYPE_COLOR: {
+ String code = "\t" + p_output_vars[0] + " = " + get_uniform_name() + ".rgb;\n";
+ code += "\t" + p_output_vars[1] + " = " + get_uniform_name() + ".a;\n";
+ return code;
+ } break;
+ case UniformType::UNIFORM_TYPE_SAMPLER:
+ break;
+ default:
+ break;
+ }
+ return "";
+}
+
+void VisualShaderNodeUniformRef::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_uniform_name", "name"), &VisualShaderNodeUniformRef::set_uniform_name);
+ ClassDB::bind_method(D_METHOD("get_uniform_name"), &VisualShaderNodeUniformRef::get_uniform_name);
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "uniform_name", PROPERTY_HINT_ENUM, ""), "set_uniform_name", "get_uniform_name");
+}
+
+Vector<StringName> VisualShaderNodeUniformRef::get_editable_properties() const {
+ Vector<StringName> props;
+ props.push_back("uniform_name");
+ return props;
+}
+
+VisualShaderNodeUniformRef::VisualShaderNodeUniformRef() {
+ uniform_name = "[None]";
+ uniform_type = UniformType::UNIFORM_TYPE_FLOAT;
+}
+
////////////////////////////////////////////
const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
@@ -2195,6 +2412,14 @@ VisualShaderNodeUniform::Qualifier VisualShaderNodeUniform::get_qualifier() cons
return qualifier;
}
+void VisualShaderNodeUniform::set_global_code_generated(bool p_enabled) {
+ global_code_generated = p_enabled;
+}
+
+bool VisualShaderNodeUniform::is_global_code_generated() const {
+ return global_code_generated;
+}
+
void VisualShaderNodeUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_uniform_name", "name"), &VisualShaderNodeUniform::set_uniform_name);
ClassDB::bind_method(D_METHOD("get_uniform_name"), &VisualShaderNodeUniform::get_uniform_name);
diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h
index 6d3fda1744..d74269cfc6 100644
--- a/scene/resources/visual_shader.h
+++ b/scene/resources/visual_shader.h
@@ -388,6 +388,7 @@ public:
private:
String uniform_name;
Qualifier qualifier;
+ bool global_code_generated = false;
protected:
static void _bind_methods();
@@ -400,6 +401,9 @@ public:
void set_qualifier(Qualifier p_qual);
Qualifier get_qualifier() const;
+ void set_global_code_generated(bool p_enabled);
+ bool is_global_code_generated() const;
+
virtual bool is_qualifier_supported(Qualifier p_qual) const = 0;
virtual Vector<StringName> get_editable_properties() const override;
@@ -410,6 +414,62 @@ public:
VARIANT_ENUM_CAST(VisualShaderNodeUniform::Qualifier)
+class VisualShaderNodeUniformRef : public VisualShaderNode {
+ GDCLASS(VisualShaderNodeUniformRef, VisualShaderNode);
+
+public:
+ enum UniformType {
+ UNIFORM_TYPE_FLOAT,
+ UNIFORM_TYPE_INT,
+ UNIFORM_TYPE_BOOLEAN,
+ UNIFORM_TYPE_VECTOR,
+ UNIFORM_TYPE_TRANSFORM,
+ UNIFORM_TYPE_COLOR,
+ UNIFORM_TYPE_SAMPLER,
+ };
+
+ struct Uniform {
+ String name;
+ UniformType type;
+ };
+
+private:
+ String uniform_name;
+ UniformType uniform_type;
+
+protected:
+ static void _bind_methods();
+
+public:
+ static void add_uniform(const String &p_name, UniformType p_type);
+ static void clear_uniforms();
+
+public:
+ virtual String get_caption() const override;
+
+ virtual int get_input_port_count() const override;
+ virtual PortType get_input_port_type(int p_port) const override;
+ virtual String get_input_port_name(int p_port) const override;
+
+ virtual int get_output_port_count() const override;
+ virtual PortType get_output_port_type(int p_port) const override;
+ virtual String get_output_port_name(int p_port) const override;
+
+ void set_uniform_name(const String &p_name);
+ String get_uniform_name() const;
+
+ int get_uniforms_count() const;
+ String get_uniform_name_by_index(int p_idx) const;
+ UniformType get_uniform_type_by_name(const String &p_name) const;
+ UniformType get_uniform_type_by_index(int p_idx) const;
+
+ virtual Vector<StringName> get_editable_properties() const override;
+
+ virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
+
+ VisualShaderNodeUniformRef();
+};
+
class VisualShaderNodeGroupBase : public VisualShaderNode {
GDCLASS(VisualShaderNodeGroupBase, VisualShaderNode);
diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp
index 0caa3cecd8..b0c871bc71 100644
--- a/scene/resources/visual_shader_nodes.cpp
+++ b/scene/resources/visual_shader_nodes.cpp
@@ -3435,12 +3435,19 @@ String VisualShaderNodeFloatUniform::get_output_port_name(int p_port) const {
}
String VisualShaderNodeFloatUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
+ String code = "";
if (hint == HINT_RANGE) {
- return _get_qual_str() + "uniform float " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ");\n";
+ code += _get_qual_str() + "uniform float " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ")";
} else if (hint == HINT_RANGE_STEP) {
- return _get_qual_str() + "uniform float " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ", " + rtos(hint_range_step) + ");\n";
+ code += _get_qual_str() + "uniform float " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ", " + rtos(hint_range_step) + ")";
+ } else {
+ code += _get_qual_str() + "uniform float " + get_uniform_name();
+ }
+ if (default_value_enabled) {
+ code += " = " + rtos(default_value);
}
- return _get_qual_str() + "uniform float " + get_uniform_name() + ";\n";
+ code += ";\n";
+ return code;
}
String VisualShaderNodeFloatUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
@@ -3483,6 +3490,24 @@ float VisualShaderNodeFloatUniform::get_step() const {
return hint_range_step;
}
+void VisualShaderNodeFloatUniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeFloatUniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeFloatUniform::set_default_value(float p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+float VisualShaderNodeFloatUniform::get_default_value() const {
+ return default_value;
+}
+
void VisualShaderNodeFloatUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_hint", "hint"), &VisualShaderNodeFloatUniform::set_hint);
ClassDB::bind_method(D_METHOD("get_hint"), &VisualShaderNodeFloatUniform::get_hint);
@@ -3496,10 +3521,18 @@ void VisualShaderNodeFloatUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_step", "value"), &VisualShaderNodeFloatUniform::set_step);
ClassDB::bind_method(D_METHOD("get_step"), &VisualShaderNodeFloatUniform::get_step);
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeFloatUniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeFloatUniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeFloatUniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeFloatUniform::get_default_value);
+
ADD_PROPERTY(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,Range+Step"), "set_hint", "get_hint");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "min"), "set_min", "get_min");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max"), "set_max", "get_max");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "step"), "set_step", "get_step");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "default_value"), "set_default_value", "get_default_value");
BIND_ENUM_CONSTANT(HINT_NONE);
BIND_ENUM_CONSTANT(HINT_RANGE);
@@ -3520,6 +3553,10 @@ Vector<StringName> VisualShaderNodeFloatUniform::get_editable_properties() const
if (hint == HINT_RANGE_STEP) {
props.push_back("step");
}
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
return props;
}
@@ -3528,6 +3565,8 @@ VisualShaderNodeFloatUniform::VisualShaderNodeFloatUniform() {
hint_range_min = 0.0;
hint_range_max = 1.0;
hint_range_step = 0.1;
+ default_value_enabled = false;
+ default_value = 0.0;
}
////////////// Integer Uniform
@@ -3561,12 +3600,19 @@ String VisualShaderNodeIntUniform::get_output_port_name(int p_port) const {
}
String VisualShaderNodeIntUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
+ String code = "";
if (hint == HINT_RANGE) {
- return _get_qual_str() + "uniform int " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ");\n";
+ code += _get_qual_str() + "uniform int " + get_uniform_name() + " : hint_range(" + itos(hint_range_min) + ", " + itos(hint_range_max) + ")";
} else if (hint == HINT_RANGE_STEP) {
- return _get_qual_str() + "uniform int " + get_uniform_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ", " + rtos(hint_range_step) + ");\n";
+ code += _get_qual_str() + "uniform int " + get_uniform_name() + " : hint_range(" + itos(hint_range_min) + ", " + itos(hint_range_max) + ", " + itos(hint_range_step) + ")";
+ } else {
+ code += _get_qual_str() + "uniform int " + get_uniform_name();
}
- return _get_qual_str() + "uniform int " + get_uniform_name() + ";\n";
+ if (default_value_enabled) {
+ code += " = " + itos(default_value);
+ }
+ code += ";\n";
+ return code;
}
String VisualShaderNodeIntUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
@@ -3609,6 +3655,24 @@ int VisualShaderNodeIntUniform::get_step() const {
return hint_range_step;
}
+void VisualShaderNodeIntUniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeIntUniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeIntUniform::set_default_value(int p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+int VisualShaderNodeIntUniform::get_default_value() const {
+ return default_value;
+}
+
void VisualShaderNodeIntUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_hint", "hint"), &VisualShaderNodeIntUniform::set_hint);
ClassDB::bind_method(D_METHOD("get_hint"), &VisualShaderNodeIntUniform::get_hint);
@@ -3622,10 +3686,18 @@ void VisualShaderNodeIntUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_step", "value"), &VisualShaderNodeIntUniform::set_step);
ClassDB::bind_method(D_METHOD("get_step"), &VisualShaderNodeIntUniform::get_step);
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeIntUniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeIntUniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeIntUniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeIntUniform::get_default_value);
+
ADD_PROPERTY(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,Range+Step"), "set_hint", "get_hint");
ADD_PROPERTY(PropertyInfo(Variant::INT, "min"), "set_min", "get_min");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max"), "set_max", "get_max");
ADD_PROPERTY(PropertyInfo(Variant::INT, "step"), "set_step", "get_step");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "default_value"), "set_default_value", "get_default_value");
BIND_ENUM_CONSTANT(HINT_NONE);
BIND_ENUM_CONSTANT(HINT_RANGE);
@@ -3646,6 +3718,10 @@ Vector<StringName> VisualShaderNodeIntUniform::get_editable_properties() const {
if (hint == HINT_RANGE_STEP) {
props.push_back("step");
}
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
return props;
}
@@ -3654,6 +3730,8 @@ VisualShaderNodeIntUniform::VisualShaderNodeIntUniform() {
hint_range_min = 0;
hint_range_max = 100;
hint_range_step = 1;
+ default_value_enabled = false;
+ default_value = 0;
}
////////////// Boolean Uniform
@@ -3686,19 +3764,68 @@ String VisualShaderNodeBooleanUniform::get_output_port_name(int p_port) const {
return ""; //no output port means the editor will be used as port
}
+void VisualShaderNodeBooleanUniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeBooleanUniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeBooleanUniform::set_default_value(bool p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+bool VisualShaderNodeBooleanUniform::get_default_value() const {
+ return default_value;
+}
+
String VisualShaderNodeBooleanUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
- return _get_qual_str() + "uniform bool " + get_uniform_name() + ";\n";
+ String code = _get_qual_str() + "uniform bool " + get_uniform_name();
+ if (default_value_enabled) {
+ if (default_value) {
+ code += " = true";
+ } else {
+ code += " = false";
+ }
+ }
+ code += ";\n";
+ return code;
}
String VisualShaderNodeBooleanUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
}
+void VisualShaderNodeBooleanUniform::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeBooleanUniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeBooleanUniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeBooleanUniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeBooleanUniform::get_default_value);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value"), "set_default_value", "get_default_value");
+}
+
bool VisualShaderNodeBooleanUniform::is_qualifier_supported(Qualifier p_qual) const {
return true; // all qualifiers are supported
}
+Vector<StringName> VisualShaderNodeBooleanUniform::get_editable_properties() const {
+ Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
+ return props;
+}
+
VisualShaderNodeBooleanUniform::VisualShaderNodeBooleanUniform() {
+ default_value_enabled = false;
+ default_value = false;
}
////////////// Color Uniform
@@ -3731,8 +3858,31 @@ String VisualShaderNodeColorUniform::get_output_port_name(int p_port) const {
return p_port == 0 ? "color" : "alpha"; //no output port means the editor will be used as port
}
+void VisualShaderNodeColorUniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeColorUniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeColorUniform::set_default_value(const Color &p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+Color VisualShaderNodeColorUniform::get_default_value() const {
+ return default_value;
+}
+
String VisualShaderNodeColorUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
- return _get_qual_str() + "uniform vec4 " + get_uniform_name() + " : hint_color;\n";
+ String code = _get_qual_str() + "uniform vec4 " + get_uniform_name() + " : hint_color";
+ if (default_value_enabled) {
+ code += vformat(" = vec4(%.6f, %.6f, %.6f, %.6f)", default_value.r, default_value.g, default_value.b, default_value.a);
+ }
+ code += ";\n";
+ return code;
}
String VisualShaderNodeColorUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
@@ -3741,11 +3891,33 @@ String VisualShaderNodeColorUniform::generate_code(Shader::Mode p_mode, VisualSh
return code;
}
+void VisualShaderNodeColorUniform::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeColorUniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeColorUniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeColorUniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeColorUniform::get_default_value);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::COLOR, "default_value"), "set_default_value", "get_default_value");
+}
+
bool VisualShaderNodeColorUniform::is_qualifier_supported(Qualifier p_qual) const {
return true; // all qualifiers are supported
}
+Vector<StringName> VisualShaderNodeColorUniform::get_editable_properties() const {
+ Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
+ return props;
+}
+
VisualShaderNodeColorUniform::VisualShaderNodeColorUniform() {
+ default_value_enabled = false;
+ default_value = Color(1.0, 1.0, 1.0, 1.0);
}
////////////// Vector Uniform
@@ -3778,19 +3950,64 @@ String VisualShaderNodeVec3Uniform::get_output_port_name(int p_port) const {
return ""; //no output port means the editor will be used as port
}
+void VisualShaderNodeVec3Uniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeVec3Uniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeVec3Uniform::set_default_value(const Vector3 &p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+Vector3 VisualShaderNodeVec3Uniform::get_default_value() const {
+ return default_value;
+}
+
String VisualShaderNodeVec3Uniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
- return _get_qual_str() + "uniform vec3 " + get_uniform_name() + ";\n";
+ String code = _get_qual_str() + "uniform vec3 " + get_uniform_name();
+ if (default_value_enabled) {
+ code += vformat(" = vec3(%.6f, %.6f, %.6f)", default_value.x, default_value.y, default_value.z);
+ }
+ code += ";\n";
+ return code;
}
String VisualShaderNodeVec3Uniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
}
+void VisualShaderNodeVec3Uniform::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeVec3Uniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeVec3Uniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeVec3Uniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeVec3Uniform::get_default_value);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "default_value"), "set_default_value", "get_default_value");
+}
+
bool VisualShaderNodeVec3Uniform::is_qualifier_supported(Qualifier p_qual) const {
return true; // all qualifiers are supported
}
+Vector<StringName> VisualShaderNodeVec3Uniform::get_editable_properties() const {
+ Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
+ return props;
+}
+
VisualShaderNodeVec3Uniform::VisualShaderNodeVec3Uniform() {
+ default_value_enabled = false;
+ default_value = Vector3(0.0, 0.0, 0.0);
}
////////////// Transform Uniform
@@ -3823,19 +4040,68 @@ String VisualShaderNodeTransformUniform::get_output_port_name(int p_port) const
return ""; //no output port means the editor will be used as port
}
+void VisualShaderNodeTransformUniform::set_default_value_enabled(bool p_enabled) {
+ default_value_enabled = p_enabled;
+ emit_changed();
+}
+
+bool VisualShaderNodeTransformUniform::is_default_value_enabled() const {
+ return default_value_enabled;
+}
+
+void VisualShaderNodeTransformUniform::set_default_value(const Transform &p_value) {
+ default_value = p_value;
+ emit_changed();
+}
+
+Transform VisualShaderNodeTransformUniform::get_default_value() const {
+ return default_value;
+}
+
String VisualShaderNodeTransformUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
- return _get_qual_str() + "uniform mat4 " + get_uniform_name() + ";\n";
+ String code = _get_qual_str() + "uniform mat4 " + get_uniform_name();
+ if (default_value_enabled) {
+ Vector3 row0 = default_value.basis.get_row(0);
+ Vector3 row1 = default_value.basis.get_row(1);
+ Vector3 row2 = default_value.basis.get_row(2);
+ Vector3 origin = default_value.origin;
+ code += " = mat4(" + vformat("vec4(%.6f, %.6f, %.6f, 0.0)", row0.x, row0.y, row0.z) + vformat(", vec4(%.6f, %.6f, %.6f, 0.0)", row1.x, row1.y, row1.z) + vformat(", vec4(%.6f, %.6f, %.6f, 0.0)", row2.x, row2.y, row2.z) + vformat(", vec4(%.6f, %.6f, %.6f, 1.0)", origin.x, origin.y, origin.z) + ")";
+ }
+ code += ";\n";
+ return code;
}
String VisualShaderNodeTransformUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const {
return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
}
+void VisualShaderNodeTransformUniform::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeTransformUniform::set_default_value_enabled);
+ ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeTransformUniform::is_default_value_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeTransformUniform::set_default_value);
+ ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeTransformUniform::get_default_value);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "default_value"), "set_default_value", "get_default_value");
+}
+
bool VisualShaderNodeTransformUniform::is_qualifier_supported(Qualifier p_qual) const {
return true; // all qualifiers are supported
}
+Vector<StringName> VisualShaderNodeTransformUniform::get_editable_properties() const {
+ Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
+ props.push_back("default_value_enabled");
+ if (default_value_enabled) {
+ props.push_back("default_value");
+ }
+ return props;
+}
+
VisualShaderNodeTransformUniform::VisualShaderNodeTransformUniform() {
+ default_value_enabled = false;
+ default_value = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0);
}
////////////// Texture Uniform
diff --git a/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h
index 6c6e7b7580..b9c40d0521 100644
--- a/scene/resources/visual_shader_nodes.h
+++ b/scene/resources/visual_shader_nodes.h
@@ -1486,6 +1486,8 @@ private:
float hint_range_min;
float hint_range_max;
float hint_range_step;
+ bool default_value_enabled;
+ float default_value;
protected:
static void _bind_methods();
@@ -1516,6 +1518,12 @@ public:
void set_step(float p_value);
float get_step() const;
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(float p_value);
+ float get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
virtual Vector<StringName> get_editable_properties() const override;
@@ -1540,6 +1548,8 @@ private:
int hint_range_min;
int hint_range_max;
int hint_range_step;
+ bool default_value_enabled;
+ int default_value;
protected:
static void _bind_methods();
@@ -1570,6 +1580,12 @@ public:
void set_step(int p_value);
int get_step() const;
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(int p_value);
+ int get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
virtual Vector<StringName> get_editable_properties() const override;
@@ -1584,6 +1600,13 @@ VARIANT_ENUM_CAST(VisualShaderNodeIntUniform::Hint)
class VisualShaderNodeBooleanUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeBooleanUniform, VisualShaderNodeUniform);
+private:
+ bool default_value_enabled;
+ bool default_value;
+
+protected:
+ static void _bind_methods();
+
public:
virtual String get_caption() const override;
@@ -1598,8 +1621,16 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(bool p_value);
+ bool get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
+ virtual Vector<StringName> get_editable_properties() const override;
+
VisualShaderNodeBooleanUniform();
};
@@ -1608,6 +1639,13 @@ public:
class VisualShaderNodeColorUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeColorUniform, VisualShaderNodeUniform);
+private:
+ bool default_value_enabled;
+ Color default_value;
+
+protected:
+ static void _bind_methods();
+
public:
virtual String get_caption() const override;
@@ -1622,8 +1660,16 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(const Color &p_value);
+ Color get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
+ virtual Vector<StringName> get_editable_properties() const override;
+
VisualShaderNodeColorUniform();
};
@@ -1632,6 +1678,13 @@ public:
class VisualShaderNodeVec3Uniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeVec3Uniform, VisualShaderNodeUniform);
+private:
+ bool default_value_enabled;
+ Vector3 default_value;
+
+protected:
+ static void _bind_methods();
+
public:
virtual String get_caption() const override;
@@ -1646,8 +1699,16 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(const Vector3 &p_value);
+ Vector3 get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
+ virtual Vector<StringName> get_editable_properties() const override;
+
VisualShaderNodeVec3Uniform();
};
@@ -1656,6 +1717,13 @@ public:
class VisualShaderNodeTransformUniform : public VisualShaderNodeUniform {
GDCLASS(VisualShaderNodeTransformUniform, VisualShaderNodeUniform);
+private:
+ bool default_value_enabled;
+ Transform default_value;
+
+protected:
+ static void _bind_methods();
+
public:
virtual String get_caption() const override;
@@ -1670,8 +1738,16 @@ public:
virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty
+ void set_default_value_enabled(bool p_enabled);
+ bool is_default_value_enabled() const;
+
+ void set_default_value(const Transform &p_value);
+ Transform get_default_value() const;
+
bool is_qualifier_supported(Qualifier p_qual) const override;
+ virtual Vector<StringName> get_editable_properties() const override;
+
VisualShaderNodeTransformUniform();
};
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index 2083caf4c3..966dcbd651 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -34,9 +34,8 @@
#include "core/os/os.h"
#include "core/pair.h"
#include "physics_server_2d_sw.h"
-
-_FORCE_INLINE_ static bool _can_collide_with(CollisionObject2DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_ignore_layers = false) {
- if (!p_ignore_layers && !(p_object->get_collision_layer() & p_collision_mask)) {
+_FORCE_INLINE_ static bool _can_collide_with(CollisionObject2DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+ if (!(p_object->get_collision_layer() & p_collision_mask)) {
return false;
}
@@ -65,7 +64,7 @@ int PhysicsDirectSpaceState2DSW::_intersect_point_impl(const Vector2 &p_point, S
int cc = 0;
for (int i = 0; i < amount; i++) {
- if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas, p_filter_by_canvas)) {
+ if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas)) {
continue;
}
diff --git a/servers/physics_3d/space_3d_sw.cpp b/servers/physics_3d/space_3d_sw.cpp
index aa4cb894dd..48f250ba35 100644
--- a/servers/physics_3d/space_3d_sw.cpp
+++ b/servers/physics_3d/space_3d_sw.cpp
@@ -34,8 +34,8 @@
#include "core/project_settings.h"
#include "physics_server_3d_sw.h"
-_FORCE_INLINE_ static bool _can_collide_with(CollisionObject3DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, bool p_ignore_layers = false) {
- if (!p_ignore_layers && !(p_object->get_collision_layer() & p_collision_mask)) {
+_FORCE_INLINE_ static bool _can_collide_with(CollisionObject3DSW *p_object, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
+ if (!(p_object->get_collision_layer() & p_collision_mask)) {
return false;
}
@@ -117,7 +117,7 @@ bool PhysicsDirectSpaceState3DSW::intersect_ray(const Vector3 &p_from, const Vec
real_t min_d = 1e10;
for (int i = 0; i < amount; i++) {
- if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas, p_pick_ray)) {
+ if (!_can_collide_with(space->intersection_query_results[i], p_collision_mask, p_collide_with_bodies, p_collide_with_areas)) {
continue;
}
diff --git a/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp
index 873f74e3be..8c122983da 100644
--- a/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp
+++ b/servers/rendering/rasterizer_rd/rasterizer_scene_high_end_rd.cpp
@@ -1331,8 +1331,8 @@ void RasterizerSceneHighEndRD::_add_geometry(InstanceBase *p_instance, uint32_t
material = (MaterialData *)storage->material_get_data(material->next_pass, RasterizerStorageRD::SHADER_TYPE_3D);
if (!material || !material->shader_data->valid) {
break;
- _add_geometry_with_material(p_instance, p_surface, material, material->next_pass, p_pass_mode, p_geometry_index, p_using_sdfgi);
}
+ _add_geometry_with_material(p_instance, p_surface, material, material->next_pass, p_pass_mode, p_geometry_index, p_using_sdfgi);
}
}
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 535011710d..d6acad83f7 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -645,7 +645,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
if (hexa_found) {
tk.constant = (double)str.hex_to_int(true);
} else {
- tk.constant = str.to_double();
+ tk.constant = str.to_float();
}
tk.line = tk_line;
diff --git a/tests/test_main.cpp b/tests/test_main.cpp
index 0fb9f2fcda..7c656517b6 100644
--- a/tests/test_main.cpp
+++ b/tests/test_main.cpp
@@ -32,8 +32,6 @@
#include "core/list.h"
-#ifdef DEBUG_ENABLED
-
#include "test_astar.h"
#include "test_basis.h"
#include "test_class_db.h"
@@ -48,42 +46,18 @@
#include "test_shader_lang.h"
#include "test_string.h"
#include "test_validate_testing.h"
+#include "test_variant.h"
#include "modules/modules_tests.gen.h"
#include "thirdparty/doctest/doctest.h"
-const char **tests_get_names() {
- static const char *test_names[] = {
- "*",
- "all",
- "math",
- "basis",
- "physics_2d",
- "physics_3d",
- "render",
- "oa_hash_map",
- "class_db",
- "gui",
- "shaderlang",
- "gd_tokenizer",
- "gd_parser",
- "gd_compiler",
- "gd_bytecode",
- "ordered_hash_map",
- "astar",
- nullptr
- };
-
- return test_names;
-}
-
int test_main(int argc, char *argv[]) {
- // doctest runner for when legacy unit tests are no found
+ // Doctest runner.
doctest::Context test_context;
List<String> valid_arguments;
- // clean arguments of --test from the args
+ // Clean arguments of "--test" from the args.
int argument_count = 0;
for (int x = 0; x < argc; x++) {
if (strncmp(argv[x], "--test", 6) != 0) {
@@ -91,15 +65,14 @@ int test_main(int argc, char *argv[]) {
argument_count++;
}
}
-
- // convert godot command line arguments back to standard arguments.
+ // Convert Godot command line arguments back to standard arguments.
char **args = new char *[valid_arguments.size()];
for (int x = 0; x < valid_arguments.size(); x++) {
- // operation to convert godot string to non wchar string
+ // Operation to convert Godot string to non wchar string.
const char *str = valid_arguments[x].utf8().ptr();
- // allocate the string copy
+ // Allocate the string copy.
args[x] = new char[strlen(str) + 1];
- // copy this into memory
+ // Copy this into memory.
std::memcpy(args[x], str, strlen(str) + 1);
}
@@ -108,22 +81,8 @@ int test_main(int argc, char *argv[]) {
test_context.setOption("order-by", "name");
test_context.setOption("abort-after", 5);
test_context.setOption("no-breaks", true);
- delete[] args;
- return test_context.run();
-}
-#else
-
-const char **tests_get_names() {
- static const char *test_names[] = {
- nullptr
- };
-
- return test_names;
-}
+ delete[] args;
-int test_main(int argc, char *argv[]) {
- return 0;
+ return test_context.run();
}
-
-#endif
diff --git a/tests/test_main.h b/tests/test_main.h
index 8273b74eac..983bfde402 100644
--- a/tests/test_main.h
+++ b/tests/test_main.h
@@ -31,11 +31,6 @@
#ifndef TEST_MAIN_H
#define TEST_MAIN_H
-#include "core/list.h"
-#include "core/os/main_loop.h"
-#include "core/ustring.h"
-
-const char **tests_get_names();
int test_main(int argc, char *argv[]);
#endif // TEST_MAIN_H
diff --git a/tests/test_math.cpp b/tests/test_math.cpp
index 5f84bad4e9..84a85be2f6 100644
--- a/tests/test_math.cpp
+++ b/tests/test_math.cpp
@@ -242,7 +242,7 @@ class GetClassAndNamespace {
if (code[idx] == '-' || (code[idx] >= '0' && code[idx] <= '9')) {
//a number
const CharType *rptr;
- double number = String::to_double(&code[idx], &rptr);
+ double number = String::to_float(&code[idx], &rptr);
idx += (rptr - &code[idx]);
value = number;
return TK_NUMBER;
diff --git a/tests/test_string.h b/tests/test_string.h
index 25fd513a1a..310be31f4b 100644
--- a/tests/test_string.h
+++ b/tests/test_string.h
@@ -209,7 +209,7 @@ TEST_CASE("[String] String to float") {
static const double num[4] = { -12348298412.2, 0.05, 2.0002, -0.0001 };
for (int i = 0; i < 4; i++) {
- CHECK(!(ABS(String(nums[i]).to_double() - num[i]) > 0.00001));
+ CHECK(!(ABS(String(nums[i]).to_float() - num[i]) > 0.00001));
}
}
diff --git a/tests/test_variant.h b/tests/test_variant.h
new file mode 100644
index 0000000000..06dcfde664
--- /dev/null
+++ b/tests/test_variant.h
@@ -0,0 +1,111 @@
+/*************************************************************************/
+/* test_variant.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef TEST_VARIANT_H
+#define TEST_VARIANT_H
+
+#include "core/variant.h"
+#include "core/variant_parser.h"
+
+#include "thirdparty/doctest/doctest.h"
+
+namespace TestVariant {
+
+TEST_CASE("[Variant] Writer and parser integer") {
+ int64_t a32 = 2147483648; // 2^31, so out of bounds for 32-bit signed int [-2^31,-2^31-1].
+ String a32_str;
+ VariantWriter::write_to_string(a32, a32_str);
+
+ CHECK_MESSAGE(a32_str != "-2147483648", "Should not wrap around");
+
+ int64_t b64 = 9223372036854775807; // 2^63-1, upper bound for signed 64-bit int.
+ String b64_str;
+ VariantWriter::write_to_string(b64, b64_str);
+
+ CHECK_MESSAGE(b64_str == "9223372036854775807", "Should not wrap around.");
+
+ VariantParser::StreamString ss;
+ String errs;
+ int line;
+ Variant b64_parsed;
+ int64_t b64_int_parsed;
+
+ ss.s = b64_str;
+ VariantParser::parse(&ss, b64_parsed, errs, line);
+ b64_int_parsed = b64_parsed;
+
+ CHECK_MESSAGE(b64_int_parsed == 9223372036854775807, "Should parse back.");
+
+ ss.s = "9223372036854775808"; // Overflowed by one.
+ VariantParser::parse(&ss, b64_parsed, errs, line);
+ b64_int_parsed = b64_parsed;
+
+ CHECK_MESSAGE(b64_int_parsed == 9223372036854775807, "The result should be clamped to max value.");
+
+ ss.s = "1e100"; // Googol! Scientific notation.
+ VariantParser::parse(&ss, b64_parsed, errs, line);
+ b64_int_parsed = b64_parsed;
+
+ CHECK_MESSAGE(b64_int_parsed == 9223372036854775807, "The result should be clamped to max value.");
+}
+
+TEST_CASE("[Variant] Writer and parser float") {
+ // Assuming real_t is double.
+ real_t a64 = 340282346638528859811704183484516925440.0; // std::numeric_limits<real_t>::max()
+ String a64_str;
+ VariantWriter::write_to_string(a64, a64_str);
+
+ CHECK_MESSAGE(a64_str == "3.40282e+38", "Writes in scientific notation.");
+ CHECK_MESSAGE(a64_str != "inf", "Should not overflow.");
+ CHECK_MESSAGE(a64_str != "nan", "The result should be defined.");
+
+ VariantParser::StreamString ss;
+ String errs;
+ int line;
+ Variant b64_parsed;
+ real_t b64_float_parsed;
+
+ ss.s = a64_str;
+ VariantParser::parse(&ss, b64_parsed, errs, line);
+ b64_float_parsed = b64_parsed;
+
+ CHECK_MESSAGE(b64_float_parsed == 340282001837565597733306976381245063168.0, "Should parse back.");
+ // Loses precision, but that's alright.
+
+ ss.s = "1.0e+100"; // Float version of Googol!
+ VariantParser::parse(&ss, b64_parsed, errs, line);
+ b64_float_parsed = b64_parsed;
+
+ CHECK_MESSAGE(b64_float_parsed == 340282001837565597733306976381245063168.0, "Should not overflow.");
+}
+
+} // namespace TestVariant
+
+#endif // TEST_VARIANT_H