summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/config/project_settings.cpp7
-rw-r--r--core/core_bind.cpp4
-rw-r--r--core/core_bind.h2
-rw-r--r--core/core_constants.cpp39
-rw-r--r--core/core_constants.h2
-rw-r--r--core/extension/extension_api_dump.cpp10
-rw-r--r--core/extension/native_extension.cpp7
-rw-r--r--core/math/audio_frame.h2
-rw-r--r--core/object/class_db.cpp12
-rw-r--r--core/object/class_db.h6
-rw-r--r--core/os/keyboard.cpp38
-rw-r--r--core/os/keyboard.h115
-rw-r--r--core/variant/variant_call.cpp8
-rw-r--r--doc/classes/@GlobalScope.xml155
-rw-r--r--doc/classes/AudioStreamPlayer2D.xml3
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml3
-rw-r--r--doc/classes/NavigationRegion2D.xml4
-rw-r--r--doc/classes/NavigationRegion3D.xml4
-rw-r--r--doc/classes/ProjectSettings.xml11
-rw-r--r--doc/classes/World3D.xml2
-rw-r--r--doc/translations/ar.po37
-rw-r--r--doc/translations/ca.po37
-rw-r--r--doc/translations/classes.pot37
-rw-r--r--doc/translations/cs.po37
-rw-r--r--doc/translations/de.po45
-rw-r--r--doc/translations/el.po37
-rw-r--r--doc/translations/es.po43
-rw-r--r--doc/translations/fa.po37
-rw-r--r--doc/translations/fi.po37
-rw-r--r--doc/translations/fil.po37
-rw-r--r--doc/translations/fr.po342
-rw-r--r--doc/translations/gl.po37
-rw-r--r--doc/translations/hi.po37
-rw-r--r--doc/translations/hu.po46
-rw-r--r--doc/translations/id.po37
-rw-r--r--doc/translations/is.po37
-rw-r--r--doc/translations/it.po38
-rw-r--r--doc/translations/ja.po44
-rw-r--r--doc/translations/ko.po37
-rw-r--r--doc/translations/lt.po37
-rw-r--r--doc/translations/lv.po37
-rw-r--r--doc/translations/mr.po37
-rw-r--r--doc/translations/nb.po37
-rw-r--r--doc/translations/ne.po37
-rw-r--r--doc/translations/nl.po37
-rw-r--r--doc/translations/pl.po38
-rw-r--r--doc/translations/pt.po37
-rw-r--r--doc/translations/pt_BR.po41
-rw-r--r--doc/translations/ro.po37
-rw-r--r--doc/translations/ru.po41
-rw-r--r--doc/translations/sk.po37
-rw-r--r--doc/translations/sr_Cyrl.po37
-rw-r--r--doc/translations/sv.po37
-rw-r--r--doc/translations/th.po37
-rw-r--r--doc/translations/tl.po37
-rw-r--r--doc/translations/tr.po37
-rw-r--r--doc/translations/uk.po37
-rw-r--r--doc/translations/vi.po37
-rw-r--r--doc/translations/zh_CN.po610
-rw-r--r--doc/translations/zh_TW.po37
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp2
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h1
-rw-r--r--editor/import/resource_importer_texture.cpp53
-rw-r--r--editor/import/resource_importer_texture.h5
-rw-r--r--editor/plugins/animation_library_editor.cpp6
-rw-r--r--editor/plugins/animation_library_editor.h2
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp12
-rw-r--r--editor/translations/af.po34
-rw-r--r--editor/translations/ar.po172
-rw-r--r--editor/translations/az.po31
-rw-r--r--editor/translations/bg.po38
-rw-r--r--editor/translations/bn.po38
-rw-r--r--editor/translations/br.po31
-rw-r--r--editor/translations/ca.po429
-rw-r--r--editor/translations/cs.po38
-rw-r--r--editor/translations/da.po38
-rw-r--r--editor/translations/de.po35
-rw-r--r--editor/translations/editor.pot31
-rw-r--r--editor/translations/el.po37
-rw-r--r--editor/translations/en_Shaw.po31
-rw-r--r--editor/translations/eo.po38
-rw-r--r--editor/translations/es.po313
-rw-r--r--editor/translations/es_AR.po39
-rw-r--r--editor/translations/et.po36
-rw-r--r--editor/translations/eu.po39
-rw-r--r--editor/translations/fa.po36
-rw-r--r--editor/translations/fi.po38
-rw-r--r--editor/translations/fil.po35
-rw-r--r--editor/translations/fr.po39
-rw-r--r--editor/translations/ga.po31
-rw-r--r--editor/translations/gl.po38
-rw-r--r--editor/translations/he.po38
-rw-r--r--editor/translations/hi.po38
-rw-r--r--editor/translations/hr.po34
-rw-r--r--editor/translations/hu.po67
-rw-r--r--editor/translations/id.po35
-rw-r--r--editor/translations/is.po31
-rw-r--r--editor/translations/it.po117
-rw-r--r--editor/translations/ja.po35
-rw-r--r--editor/translations/ka.po31
-rw-r--r--editor/translations/km.po31
-rw-r--r--editor/translations/ko.po35
-rw-r--r--editor/translations/lt.po38
-rw-r--r--editor/translations/lv.po38
-rw-r--r--editor/translations/mk.po31
-rw-r--r--editor/translations/ml.po31
-rw-r--r--editor/translations/mr.po31
-rw-r--r--editor/translations/ms.po37
-rw-r--r--editor/translations/nb.po37
-rw-r--r--editor/translations/nl.po38
-rw-r--r--editor/translations/pl.po37
-rw-r--r--editor/translations/pr.po31
-rw-r--r--editor/translations/pt.po37
-rw-r--r--editor/translations/pt_BR.po52
-rw-r--r--editor/translations/ro.po38
-rw-r--r--editor/translations/ru.po35
-rw-r--r--editor/translations/si.po31
-rw-r--r--editor/translations/sk.po38
-rw-r--r--editor/translations/sl.po38
-rw-r--r--editor/translations/sq.po38
-rw-r--r--editor/translations/sr_Cyrl.po40
-rw-r--r--editor/translations/sr_Latn.po31
-rw-r--r--editor/translations/sv.po38
-rw-r--r--editor/translations/te.po31
-rw-r--r--editor/translations/th.po38
-rw-r--r--editor/translations/tl.po38
-rw-r--r--editor/translations/tr.po36
-rw-r--r--editor/translations/uk.po35
-rw-r--r--editor/translations/ur_PK.po31
-rw-r--r--editor/translations/vi.po37
-rw-r--r--editor/translations/zh_CN.po338
-rw-r--r--editor/translations/zh_HK.po38
-rw-r--r--editor/translations/zh_TW.po37
-rwxr-xr-x[-rw-r--r--]misc/scripts/codespell.sh0
-rw-r--r--modules/gdscript/gdscript.cpp2
-rw-r--r--modules/gdscript/gdscript.h2
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp2
-rw-r--r--modules/gdscript/gdscript_compiler.cpp2
-rw-r--r--modules/mono/class_db_api_json.cpp2
-rw-r--r--modules/mono/editor/bindings_generator.cpp12
-rw-r--r--modules/mono/editor/bindings_generator.h4
-rw-r--r--modules/mono/utils/string_utils.cpp2
-rw-r--r--modules/visual_script/visual_script.cpp4
-rw-r--r--modules/visual_script/visual_script.h4
-rw-r--r--platform/linuxbsd/key_mapping_x11.cpp42
-rw-r--r--platform/osx/key_mapping_osx.mm29
-rw-r--r--platform/windows/key_mapping_windows.cpp17
-rw-r--r--scene/2d/audio_stream_player_2d.cpp24
-rw-r--r--scene/2d/audio_stream_player_2d.h6
-rw-r--r--scene/2d/cpu_particles_2d.cpp2
-rw-r--r--scene/3d/audio_stream_player_3d.cpp22
-rw-r--r--scene/3d/audio_stream_player_3d.h6
-rw-r--r--scene/3d/light_3d.cpp2
-rw-r--r--scene/3d/skeleton_3d.cpp12
-rw-r--r--scene/animation/animation_player.cpp2
-rw-r--r--scene/animation/animation_tree.cpp1
-rw-r--r--scene/main/window.cpp13
-rw-r--r--scene/resources/scene_replication_config.cpp12
-rw-r--r--servers/audio/effects/audio_effect_record.cpp4
-rw-r--r--servers/audio/effects/audio_effect_record.h1
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp5
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h1
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp5
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h1
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp2
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.h1
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl8
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl3
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl4
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl6
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl1
-rw-r--r--servers/rendering_server.cpp8
-rw-r--r--tests/core/object/test_class_db.h6
-rw-r--r--thirdparty/README.md2
-rw-r--r--thirdparty/doctest/doctest.h2109
175 files changed, 5183 insertions, 3704 deletions
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 12d936d456..28fbc78501 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -1200,6 +1200,10 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF_BASIC("audio/buses/default_bus_layout", "res://default_bus_layout.tres");
custom_prop_info["audio/buses/default_bus_layout"] = PropertyInfo(Variant::STRING, "audio/buses/default_bus_layout", PROPERTY_HINT_FILE, "*.tres");
+ GLOBAL_DEF_RST("audio/general/2d_panning_strength", 1.0f);
+ custom_prop_info["audio/general/2d_panning_strength"] = PropertyInfo(Variant::FLOAT, "audio/general/2d_panning_strength", PROPERTY_HINT_RANGE, "0,4,0.01");
+ GLOBAL_DEF_RST("audio/general/3d_panning_strength", 1.0f);
+ custom_prop_info["audio/general/3d_panning_strength"] = PropertyInfo(Variant::FLOAT, "audio/general/3d_panning_strength", PROPERTY_HINT_RANGE, "0,4,0.01");
PackedStringArray extensions = PackedStringArray();
extensions.push_back("gd");
@@ -1246,6 +1250,9 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray());
GLOBAL_DEF_INTERNAL("internationalization/locale/translation_remaps", PackedStringArray());
GLOBAL_DEF_INTERNAL("internationalization/locale/translations", PackedStringArray());
+
+ GLOBAL_DEF("rendering/textures/vram_compression/minimum_size", 512);
+ custom_prop_info["rendering/textures/vram_compression/minimum_size"] = PropertyInfo(Variant::INT, "rendering/textures/vram_compression/minimum_size", PROPERTY_HINT_RANGE, "16,16384,1");
}
ProjectSettings::~ProjectSettings() {
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index 194c7fdefd..8fafc459e3 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -2076,9 +2076,9 @@ bool ClassDB::has_integer_constant(const StringName &p_class, const StringName &
return success;
}
-int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name) const {
+int64_t ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name) const {
bool found;
- int c = ::ClassDB::get_integer_constant(p_class, p_name, &found);
+ int64_t c = ::ClassDB::get_integer_constant(p_class, p_name, &found);
ERR_FAIL_COND_V(!found, 0);
return c;
}
diff --git a/core/core_bind.h b/core/core_bind.h
index e4d15d5c9d..c2098b1b59 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -604,7 +604,7 @@ public:
PackedStringArray get_integer_constant_list(const StringName &p_class, bool p_no_inheritance = false) const;
bool has_integer_constant(const StringName &p_class, const StringName &p_name) const;
- int get_integer_constant(const StringName &p_class, const StringName &p_name) const;
+ int64_t get_integer_constant(const StringName &p_class, const StringName &p_name) const;
bool has_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false) const;
PackedStringArray get_enum_list(const StringName &p_class, bool p_no_inheritance = false) const;
diff --git a/core/core_constants.cpp b/core/core_constants.cpp
index 4f22c99656..4e0845e625 100644
--- a/core/core_constants.cpp
+++ b/core/core_constants.cpp
@@ -42,19 +42,19 @@ struct _CoreConstant {
bool ignore_value_in_docs = false;
#endif
const char *name = nullptr;
- int value = 0;
+ int64_t value = 0;
_CoreConstant() {}
#ifdef DEBUG_METHODS_ENABLED
- _CoreConstant(const StringName &p_enum_name, const char *p_name, int p_value, bool p_ignore_value_in_docs = false) :
+ _CoreConstant(const StringName &p_enum_name, const char *p_name, int64_t p_value, bool p_ignore_value_in_docs = false) :
enum_name(p_enum_name),
ignore_value_in_docs(p_ignore_value_in_docs),
name(p_name),
value(p_value) {
}
#else
- _CoreConstant(const char *p_name, int p_value) :
+ _CoreConstant(const char *p_name, int64_t p_value) :
name(p_name),
value(p_value) {
}
@@ -73,13 +73,13 @@ static Vector<_CoreConstant> _global_constants;
// This just binds enum classes as if they were regular enum constants.
#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_name), #m_name, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_name), #m_name, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int)m_enum::m_member, true));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int64_t)m_enum::m_member, true));
#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
_global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_constant, #m_constant), m_custom_name, m_constant));
@@ -103,13 +103,13 @@ static Vector<_CoreConstant> _global_constants;
// This just binds enum classes as if they were regular enum constants.
#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(#m_name, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_name, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
_global_constants.push_back(_CoreConstant(m_custom_name, m_constant));
@@ -213,6 +213,25 @@ void register_global_constants() {
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F14);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F15);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F16);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F17);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F18);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F19);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F20);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F21);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F22);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F23);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F24);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F25);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F26);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F27);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F28);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F29);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F30);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F31);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F32);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F33);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F34);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F35);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_MULTIPLY);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_DIVIDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_SUBTRACT);
@@ -753,6 +772,6 @@ const char *CoreConstants::get_global_constant_name(int p_idx) {
return _global_constants[p_idx].name;
}
-int CoreConstants::get_global_constant_value(int p_idx) {
+int64_t CoreConstants::get_global_constant_value(int p_idx) {
return _global_constants[p_idx].value;
}
diff --git a/core/core_constants.h b/core/core_constants.h
index 9302c23959..d5b3b156b2 100644
--- a/core/core_constants.h
+++ b/core/core_constants.h
@@ -39,7 +39,7 @@ public:
static StringName get_global_constant_enum(int p_idx);
static bool get_ignore_value_in_docs(int p_idx);
static const char *get_global_constant_name(int p_idx);
- static int get_global_constant_value(int p_idx);
+ static int64_t get_global_constant_value(int p_idx);
};
#endif // GLOBAL_CONSTANTS_H
diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp
index 9e8addf8aa..edd48cf9cd 100644
--- a/core/extension/extension_api_dump.cpp
+++ b/core/extension/extension_api_dump.cpp
@@ -334,14 +334,14 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
{
// Global enums and constants.
Array constants;
- HashMap<String, List<Pair<String, int>>> enum_list;
+ HashMap<String, List<Pair<String, int64_t>>> enum_list;
for (int i = 0; i < CoreConstants::get_global_constant_count(); i++) {
- int value = CoreConstants::get_global_constant_value(i);
+ int64_t value = CoreConstants::get_global_constant_value(i);
String enum_name = CoreConstants::get_global_constant_enum(i);
String name = CoreConstants::get_global_constant_name(i);
if (!enum_name.is_empty()) {
- enum_list[enum_name].push_back(Pair<String, int>(name, value));
+ enum_list[enum_name].push_back(Pair<String, int64_t>(name, value));
} else {
Dictionary d;
d["name"] = name;
@@ -353,11 +353,11 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
api_dump["global_constants"] = constants;
Array enums;
- for (const KeyValue<String, List<Pair<String, int>>> &E : enum_list) {
+ for (const KeyValue<String, List<Pair<String, int64_t>>> &E : enum_list) {
Dictionary d1;
d1["name"] = E.key;
Array values;
- for (const Pair<String, int> &F : E.value) {
+ for (const Pair<String, int64_t> &F : E.value) {
Dictionary d2;
d2["name"] = F.first;
d2["value"] = F.second;
diff --git a/core/extension/native_extension.cpp b/core/extension/native_extension.cpp
index ac9d2ca8a6..ebdfa20725 100644
--- a/core/extension/native_extension.cpp
+++ b/core/extension/native_extension.cpp
@@ -281,6 +281,7 @@ void NativeExtension::_get_library_path(const GDNativeExtensionClassLibraryPtr p
Error NativeExtension::open_library(const String &p_path, const String &p_entry_symbol) {
Error err = OS::get_singleton()->open_dynamic_library(p_path, library, true, &library_path);
if (err != OK) {
+ ERR_PRINT("GDExtension dynamic library not found: " + p_path);
return err;
}
@@ -289,6 +290,7 @@ Error NativeExtension::open_library(const String &p_path, const String &p_entry_
err = OS::get_singleton()->get_dynamic_library_symbol_handle(library, p_entry_symbol, entry_funcptr, false);
if (err != OK) {
+ ERR_PRINT("GDExtension entry point '" + p_entry_symbol + "' not found in library " + p_path);
OS::get_singleton()->close_dynamic_library(library);
return err;
}
@@ -299,6 +301,7 @@ Error NativeExtension::open_library(const String &p_path, const String &p_entry_
level_initialized = -1;
return OK;
} else {
+ ERR_PRINT("GDExtension initialization function '" + p_entry_symbol + "' returned an error.");
return FAILED;
}
}
@@ -387,6 +390,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
}
if (err != OK) {
+ ERR_PRINT("Error loading GDExtension config file: " + p_path);
return Ref<Resource>();
}
@@ -394,6 +398,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
if (r_error) {
*r_error = ERR_INVALID_DATA;
}
+ ERR_PRINT("GDExtension config file must contain 'configuration.entry_symbol' key: " + p_path);
return Ref<Resource>();
}
@@ -426,6 +431,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
if (r_error) {
*r_error = ERR_FILE_NOT_FOUND;
}
+ ERR_PRINT("No GDExtension library found for current architecture; in config file " + p_path);
return Ref<Resource>();
}
@@ -443,6 +449,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
}
if (err != OK) {
+ // Errors already logged in open_library()
return Ref<Resource>();
}
diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h
index 8b244e9fe4..b3d63c0094 100644
--- a/core/math/audio_frame.h
+++ b/core/math/audio_frame.h
@@ -52,7 +52,7 @@ static const float AUDIO_MIN_PEAK_DB = -200.0f; // linear2db(AUDIO_PEAK_OFFSET)
struct AudioFrame {
//left and right samples
- float l, r;
+ float l = 0.f, r = 0.f;
_ALWAYS_INLINE_ const float &operator[](int idx) const { return idx == 0 ? l : r; }
_ALWAYS_INLINE_ float &operator[](int idx) { return idx == 0 ? l : r; }
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index f61bd24efd..533cb6e789 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -228,7 +228,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
List<StringName> snames;
- for (const KeyValue<StringName, int> &F : t->constant_map) {
+ for (const KeyValue<StringName, int64_t> &F : t->constant_map) {
snames.push_back(F.key);
}
@@ -536,7 +536,7 @@ MethodBind *ClassDB::get_method(const StringName &p_class, const StringName &p_n
return nullptr;
}
-void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant) {
+void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int64_t p_constant) {
OBJTYPE_WLOCK;
ClassInfo *type = classes.getptr(p_class);
@@ -583,7 +583,7 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
}
#else
- for (const KeyValue<StringName, int> &E : type->constant_map) {
+ for (const KeyValue<StringName, int64_t> &E : type->constant_map) {
p_constants->push_back(E.key);
}
@@ -596,13 +596,13 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
}
}
-int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success) {
+int64_t ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success) {
OBJTYPE_RLOCK;
ClassInfo *type = classes.getptr(p_class);
while (type) {
- int *constant = type->constant_map.getptr(p_name);
+ int64_t *constant = type->constant_map.getptr(p_name);
if (constant) {
if (p_success) {
*p_success = true;
@@ -1066,7 +1066,7 @@ bool ClassDB::get_property(Object *p_object, const StringName &p_property, Varia
return true;
}
- const int *c = check->constant_map.getptr(p_property); //constants count
+ const int64_t *c = check->constant_map.getptr(p_property); //constants count
if (c) {
r_value = *c;
return true;
diff --git a/core/object/class_db.h b/core/object/class_db.h
index 2448a86e33..f2f73dc674 100644
--- a/core/object/class_db.h
+++ b/core/object/class_db.h
@@ -103,7 +103,7 @@ public:
ObjectNativeExtension *native_extension = nullptr;
HashMap<StringName, MethodBind *> method_map;
- HashMap<StringName, int> constant_map;
+ HashMap<StringName, int64_t> constant_map;
HashMap<StringName, List<StringName>> enum_map;
HashMap<StringName, MethodInfo> signal_map;
List<PropertyInfo> property_list;
@@ -325,9 +325,9 @@ public:
static void add_virtual_method(const StringName &p_class, const MethodInfo &p_method, bool p_virtual = true, const Vector<String> &p_arg_names = Vector<String>(), bool p_object_core = false);
static void get_virtual_methods(const StringName &p_class, List<MethodInfo> *p_methods, bool p_no_inheritance = false);
- static void bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant);
+ static void bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int64_t p_constant);
static void get_integer_constant_list(const StringName &p_class, List<String> *p_constants, bool p_no_inheritance = false);
- static int get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success = nullptr);
+ static int64_t get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success = nullptr);
static bool has_integer_constant(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false);
static StringName get_integer_constant_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false);
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 24907d34c8..3e690991d9 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -86,6 +86,25 @@ static const _KeyCodeText _keycodes[] = {
{Key::F14 ,"F14"},
{Key::F15 ,"F15"},
{Key::F16 ,"F16"},
+ {Key::F17 ,"F17"},
+ {Key::F18 ,"F18"},
+ {Key::F19 ,"F19"},
+ {Key::F20 ,"F20"},
+ {Key::F21 ,"F21"},
+ {Key::F22 ,"F22"},
+ {Key::F23 ,"F23"},
+ {Key::F24 ,"F24"},
+ {Key::F25 ,"F25"},
+ {Key::F26 ,"F26"},
+ {Key::F27 ,"F27"},
+ {Key::F28 ,"F28"},
+ {Key::F29 ,"F29"},
+ {Key::F30 ,"F30"},
+ {Key::F31 ,"F31"},
+ {Key::F32 ,"F32"},
+ {Key::F33 ,"F33"},
+ {Key::F34 ,"F34"},
+ {Key::F35 ,"F35"},
{Key::KP_MULTIPLY ,"Kp Multiply"},
{Key::KP_DIVIDE ,"Kp Divide"},
{Key::KP_SUBTRACT ,"Kp Subtract"},
@@ -333,6 +352,25 @@ bool keycode_has_unicode(Key p_keycode) {
case Key::F14:
case Key::F15:
case Key::F16:
+ case Key::F17:
+ case Key::F18:
+ case Key::F19:
+ case Key::F20:
+ case Key::F21:
+ case Key::F22:
+ case Key::F23:
+ case Key::F24:
+ case Key::F25:
+ case Key::F26:
+ case Key::F27:
+ case Key::F28:
+ case Key::F29:
+ case Key::F30:
+ case Key::F31:
+ case Key::F32:
+ case Key::F33:
+ case Key::F34:
+ case Key::F35:
case Key::SUPER_L:
case Key::SUPER_R:
case Key::MENU:
diff --git a/core/os/keyboard.h b/core/os/keyboard.h
index 3176a8a210..517a53e505 100644
--- a/core/os/keyboard.h
+++ b/core/os/keyboard.h
@@ -85,6 +85,25 @@ enum class Key {
F14 = SPECIAL | 0x29,
F15 = SPECIAL | 0x2A,
F16 = SPECIAL | 0x2B,
+ F17 = SPECIAL | 0x2C,
+ F18 = SPECIAL | 0x2D,
+ F19 = SPECIAL | 0x2E,
+ F20 = SPECIAL | 0x2F,
+ F21 = SPECIAL | 0x30,
+ F22 = SPECIAL | 0x31,
+ F23 = SPECIAL | 0x32,
+ F24 = SPECIAL | 0x33,
+ F25 = SPECIAL | 0x34,
+ F26 = SPECIAL | 0x35,
+ F27 = SPECIAL | 0x36,
+ F28 = SPECIAL | 0x37,
+ F29 = SPECIAL | 0x38,
+ F30 = SPECIAL | 0x39,
+ F31 = SPECIAL | 0x3A,
+ F32 = SPECIAL | 0x3B,
+ F33 = SPECIAL | 0x3C,
+ F34 = SPECIAL | 0x3D,
+ F35 = SPECIAL | 0x3E,
KP_MULTIPLY = SPECIAL | 0x81,
KP_DIVIDE = SPECIAL | 0x82,
KP_SUBTRACT = SPECIAL | 0x83,
@@ -100,54 +119,54 @@ enum class Key {
KP_7 = SPECIAL | 0x8D,
KP_8 = SPECIAL | 0x8E,
KP_9 = SPECIAL | 0x8F,
- SUPER_L = SPECIAL | 0x2C,
- SUPER_R = SPECIAL | 0x2D,
- MENU = SPECIAL | 0x2E,
- HYPER_L = SPECIAL | 0x2F,
- HYPER_R = SPECIAL | 0x30,
- HELP = SPECIAL | 0x31,
- DIRECTION_L = SPECIAL | 0x32,
- DIRECTION_R = SPECIAL | 0x33,
- BACK = SPECIAL | 0x40,
- FORWARD = SPECIAL | 0x41,
- STOP = SPECIAL | 0x42,
- REFRESH = SPECIAL | 0x43,
- VOLUMEDOWN = SPECIAL | 0x44,
- VOLUMEMUTE = SPECIAL | 0x45,
- VOLUMEUP = SPECIAL | 0x46,
- BASSBOOST = SPECIAL | 0x47,
- BASSUP = SPECIAL | 0x48,
- BASSDOWN = SPECIAL | 0x49,
- TREBLEUP = SPECIAL | 0x4A,
- TREBLEDOWN = SPECIAL | 0x4B,
- MEDIAPLAY = SPECIAL | 0x4C,
- MEDIASTOP = SPECIAL | 0x4D,
- MEDIAPREVIOUS = SPECIAL | 0x4E,
- MEDIANEXT = SPECIAL | 0x4F,
- MEDIARECORD = SPECIAL | 0x50,
- HOMEPAGE = SPECIAL | 0x51,
- FAVORITES = SPECIAL | 0x52,
- SEARCH = SPECIAL | 0x53,
- STANDBY = SPECIAL | 0x54,
- OPENURL = SPECIAL | 0x55,
- LAUNCHMAIL = SPECIAL | 0x56,
- LAUNCHMEDIA = SPECIAL | 0x57,
- LAUNCH0 = SPECIAL | 0x58,
- LAUNCH1 = SPECIAL | 0x59,
- LAUNCH2 = SPECIAL | 0x5A,
- LAUNCH3 = SPECIAL | 0x5B,
- LAUNCH4 = SPECIAL | 0x5C,
- LAUNCH5 = SPECIAL | 0x5D,
- LAUNCH6 = SPECIAL | 0x5E,
- LAUNCH7 = SPECIAL | 0x5F,
- LAUNCH8 = SPECIAL | 0x60,
- LAUNCH9 = SPECIAL | 0x61,
- LAUNCHA = SPECIAL | 0x62,
- LAUNCHB = SPECIAL | 0x63,
- LAUNCHC = SPECIAL | 0x64,
- LAUNCHD = SPECIAL | 0x65,
- LAUNCHE = SPECIAL | 0x66,
- LAUNCHF = SPECIAL | 0x67,
+ SUPER_L = SPECIAL | 0x40,
+ SUPER_R = SPECIAL | 0x41,
+ MENU = SPECIAL | 0x42,
+ HYPER_L = SPECIAL | 0x43,
+ HYPER_R = SPECIAL | 0x44,
+ HELP = SPECIAL | 0x45,
+ DIRECTION_L = SPECIAL | 0x46,
+ DIRECTION_R = SPECIAL | 0x47,
+ BACK = SPECIAL | 0x48,
+ FORWARD = SPECIAL | 0x49,
+ STOP = SPECIAL | 0x4A,
+ REFRESH = SPECIAL | 0x4B,
+ VOLUMEDOWN = SPECIAL | 0x4C,
+ VOLUMEMUTE = SPECIAL | 0x4D,
+ VOLUMEUP = SPECIAL | 0x4E,
+ BASSBOOST = SPECIAL | 0x4F,
+ BASSUP = SPECIAL | 0x50,
+ BASSDOWN = SPECIAL | 0x51,
+ TREBLEUP = SPECIAL | 0x52,
+ TREBLEDOWN = SPECIAL | 0x53,
+ MEDIAPLAY = SPECIAL | 0x54,
+ MEDIASTOP = SPECIAL | 0x55,
+ MEDIAPREVIOUS = SPECIAL | 0x56,
+ MEDIANEXT = SPECIAL | 0x57,
+ MEDIARECORD = SPECIAL | 0x58,
+ HOMEPAGE = SPECIAL | 0x59,
+ FAVORITES = SPECIAL | 0x5A,
+ SEARCH = SPECIAL | 0x5B,
+ STANDBY = SPECIAL | 0x5C,
+ OPENURL = SPECIAL | 0x5D,
+ LAUNCHMAIL = SPECIAL | 0x5E,
+ LAUNCHMEDIA = SPECIAL | 0x5F,
+ LAUNCH0 = SPECIAL | 0x60,
+ LAUNCH1 = SPECIAL | 0x61,
+ LAUNCH2 = SPECIAL | 0x62,
+ LAUNCH3 = SPECIAL | 0x63,
+ LAUNCH4 = SPECIAL | 0x64,
+ LAUNCH5 = SPECIAL | 0x65,
+ LAUNCH6 = SPECIAL | 0x66,
+ LAUNCH7 = SPECIAL | 0x67,
+ LAUNCH8 = SPECIAL | 0x68,
+ LAUNCH9 = SPECIAL | 0x69,
+ LAUNCHA = SPECIAL | 0x6A,
+ LAUNCHB = SPECIAL | 0x6B,
+ LAUNCHC = SPECIAL | 0x6C,
+ LAUNCHD = SPECIAL | 0x6D,
+ LAUNCHE = SPECIAL | 0x6E,
+ LAUNCHF = SPECIAL | 0x6F,
UNKNOWN = SPECIAL | 0xFFFFFF,
diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp
index b335f2fcf4..6e8dc64811 100644
--- a/core/variant/variant_call.cpp
+++ b/core/variant/variant_call.cpp
@@ -919,7 +919,7 @@ struct _VariantCall {
}
struct ConstantData {
- HashMap<StringName, int> value;
+ HashMap<StringName, int64_t> value;
#ifdef DEBUG_ENABLED
List<StringName> value_ordered;
#endif
@@ -931,7 +931,7 @@ struct _VariantCall {
static ConstantData *constant_data;
- static void add_constant(int p_type, StringName p_constant_name, int p_constant_value) {
+ static void add_constant(int p_type, StringName p_constant_name, int64_t p_constant_value) {
constant_data[p_type].value[p_constant_name] = p_constant_value;
#ifdef DEBUG_ENABLED
constant_data[p_type].value_ordered.push_back(p_constant_name);
@@ -1245,7 +1245,7 @@ void Variant::get_constants_for_type(Variant::Type p_type, List<StringName> *p_c
for (const List<StringName>::Element *E = cd.value_ordered.front(); E; E = E->next()) {
p_constants->push_back(E->get());
#else
- for (const KeyValue<StringName, int> &E : cd.value) {
+ for (const KeyValue<StringName, int64_t> &E : cd.value) {
p_constants->push_back(E.key);
#endif
}
@@ -1281,7 +1281,7 @@ Variant Variant::get_constant_value(Variant::Type p_type, const StringName &p_va
ERR_FAIL_INDEX_V(p_type, Variant::VARIANT_MAX, 0);
_VariantCall::ConstantData &cd = _VariantCall::constant_data[p_type];
- HashMap<StringName, int>::Iterator E = cd.value.find(p_value);
+ HashMap<StringName, int64_t>::Iterator E = cd.value.find(p_value);
if (!E) {
HashMap<StringName, Variant>::Iterator F = cd.variant_value.find(p_value);
if (F) {
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 18ea29857b..9f4041fa2b 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -1414,6 +1414,63 @@
<constant name="KEY_F16" value="16777259" enum="Key">
F16 key.
</constant>
+ <constant name="KEY_F17" value="16777260" enum="Key">
+ F17 key.
+ </constant>
+ <constant name="KEY_F18" value="16777261" enum="Key">
+ F18 key.
+ </constant>
+ <constant name="KEY_F19" value="16777262" enum="Key">
+ F19 key.
+ </constant>
+ <constant name="KEY_F20" value="16777263" enum="Key">
+ F20 key.
+ </constant>
+ <constant name="KEY_F21" value="16777264" enum="Key">
+ F21 key.
+ </constant>
+ <constant name="KEY_F22" value="16777265" enum="Key">
+ F22 key.
+ </constant>
+ <constant name="KEY_F23" value="16777266" enum="Key">
+ F23 key.
+ </constant>
+ <constant name="KEY_F24" value="16777267" enum="Key">
+ F24 key.
+ </constant>
+ <constant name="KEY_F25" value="16777268" enum="Key">
+ F25 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F26" value="16777269" enum="Key">
+ F26 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F27" value="16777270" enum="Key">
+ F27 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F28" value="16777271" enum="Key">
+ F28 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F29" value="16777272" enum="Key">
+ F29 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F30" value="16777273" enum="Key">
+ F30 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F31" value="16777274" enum="Key">
+ F31 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F32" value="16777275" enum="Key">
+ F32 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F33" value="16777276" enum="Key">
+ F33 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F34" value="16777277" enum="Key">
+ F34 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F35" value="16777278" enum="Key">
+ F35 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
<constant name="KEY_KP_MULTIPLY" value="16777345" enum="Key">
Multiply (*) key on the numeric keypad.
</constant>
@@ -1459,148 +1516,148 @@
<constant name="KEY_KP_9" value="16777359" enum="Key">
Number 9 on the numeric keypad.
</constant>
- <constant name="KEY_SUPER_L" value="16777260" enum="Key">
+ <constant name="KEY_SUPER_L" value="16777280" enum="Key">
Left Super key (Windows key).
</constant>
- <constant name="KEY_SUPER_R" value="16777261" enum="Key">
+ <constant name="KEY_SUPER_R" value="16777281" enum="Key">
Right Super key (Windows key).
</constant>
- <constant name="KEY_MENU" value="16777262" enum="Key">
+ <constant name="KEY_MENU" value="16777282" enum="Key">
Context menu key.
</constant>
- <constant name="KEY_HYPER_L" value="16777263" enum="Key">
+ <constant name="KEY_HYPER_L" value="16777283" enum="Key">
Left Hyper key.
</constant>
- <constant name="KEY_HYPER_R" value="16777264" enum="Key">
+ <constant name="KEY_HYPER_R" value="16777284" enum="Key">
Right Hyper key.
</constant>
- <constant name="KEY_HELP" value="16777265" enum="Key">
+ <constant name="KEY_HELP" value="16777285" enum="Key">
Help key.
</constant>
- <constant name="KEY_DIRECTION_L" value="16777266" enum="Key">
+ <constant name="KEY_DIRECTION_L" value="16777286" enum="Key">
Left Direction key.
</constant>
- <constant name="KEY_DIRECTION_R" value="16777267" enum="Key">
+ <constant name="KEY_DIRECTION_R" value="16777287" enum="Key">
Right Direction key.
</constant>
- <constant name="KEY_BACK" value="16777280" enum="Key">
+ <constant name="KEY_BACK" value="16777288" enum="Key">
Media back key. Not to be confused with the Back button on an Android device.
</constant>
- <constant name="KEY_FORWARD" value="16777281" enum="Key">
+ <constant name="KEY_FORWARD" value="16777289" enum="Key">
Media forward key.
</constant>
- <constant name="KEY_STOP" value="16777282" enum="Key">
+ <constant name="KEY_STOP" value="16777290" enum="Key">
Media stop key.
</constant>
- <constant name="KEY_REFRESH" value="16777283" enum="Key">
+ <constant name="KEY_REFRESH" value="16777291" enum="Key">
Media refresh key.
</constant>
- <constant name="KEY_VOLUMEDOWN" value="16777284" enum="Key">
+ <constant name="KEY_VOLUMEDOWN" value="16777292" enum="Key">
Volume down key.
</constant>
- <constant name="KEY_VOLUMEMUTE" value="16777285" enum="Key">
+ <constant name="KEY_VOLUMEMUTE" value="16777293" enum="Key">
Mute volume key.
</constant>
- <constant name="KEY_VOLUMEUP" value="16777286" enum="Key">
+ <constant name="KEY_VOLUMEUP" value="16777294" enum="Key">
Volume up key.
</constant>
- <constant name="KEY_BASSBOOST" value="16777287" enum="Key">
+ <constant name="KEY_BASSBOOST" value="16777295" enum="Key">
Bass Boost key.
</constant>
- <constant name="KEY_BASSUP" value="16777288" enum="Key">
+ <constant name="KEY_BASSUP" value="16777296" enum="Key">
Bass up key.
</constant>
- <constant name="KEY_BASSDOWN" value="16777289" enum="Key">
+ <constant name="KEY_BASSDOWN" value="16777297" enum="Key">
Bass down key.
</constant>
- <constant name="KEY_TREBLEUP" value="16777290" enum="Key">
+ <constant name="KEY_TREBLEUP" value="16777298" enum="Key">
Treble up key.
</constant>
- <constant name="KEY_TREBLEDOWN" value="16777291" enum="Key">
+ <constant name="KEY_TREBLEDOWN" value="16777299" enum="Key">
Treble down key.
</constant>
- <constant name="KEY_MEDIAPLAY" value="16777292" enum="Key">
+ <constant name="KEY_MEDIAPLAY" value="16777300" enum="Key">
Media play key.
</constant>
- <constant name="KEY_MEDIASTOP" value="16777293" enum="Key">
+ <constant name="KEY_MEDIASTOP" value="16777301" enum="Key">
Media stop key.
</constant>
- <constant name="KEY_MEDIAPREVIOUS" value="16777294" enum="Key">
+ <constant name="KEY_MEDIAPREVIOUS" value="16777302" enum="Key">
Previous song key.
</constant>
- <constant name="KEY_MEDIANEXT" value="16777295" enum="Key">
+ <constant name="KEY_MEDIANEXT" value="16777303" enum="Key">
Next song key.
</constant>
- <constant name="KEY_MEDIARECORD" value="16777296" enum="Key">
+ <constant name="KEY_MEDIARECORD" value="16777304" enum="Key">
Media record key.
</constant>
- <constant name="KEY_HOMEPAGE" value="16777297" enum="Key">
+ <constant name="KEY_HOMEPAGE" value="16777305" enum="Key">
Home page key.
</constant>
- <constant name="KEY_FAVORITES" value="16777298" enum="Key">
+ <constant name="KEY_FAVORITES" value="16777306" enum="Key">
Favorites key.
</constant>
- <constant name="KEY_SEARCH" value="16777299" enum="Key">
+ <constant name="KEY_SEARCH" value="16777307" enum="Key">
Search key.
</constant>
- <constant name="KEY_STANDBY" value="16777300" enum="Key">
+ <constant name="KEY_STANDBY" value="16777308" enum="Key">
Standby key.
</constant>
- <constant name="KEY_OPENURL" value="16777301" enum="Key">
+ <constant name="KEY_OPENURL" value="16777309" enum="Key">
Open URL / Launch Browser key.
</constant>
- <constant name="KEY_LAUNCHMAIL" value="16777302" enum="Key">
+ <constant name="KEY_LAUNCHMAIL" value="16777310" enum="Key">
Launch Mail key.
</constant>
- <constant name="KEY_LAUNCHMEDIA" value="16777303" enum="Key">
+ <constant name="KEY_LAUNCHMEDIA" value="16777311" enum="Key">
Launch Media key.
</constant>
- <constant name="KEY_LAUNCH0" value="16777304" enum="Key">
+ <constant name="KEY_LAUNCH0" value="16777312" enum="Key">
Launch Shortcut 0 key.
</constant>
- <constant name="KEY_LAUNCH1" value="16777305" enum="Key">
+ <constant name="KEY_LAUNCH1" value="16777313" enum="Key">
Launch Shortcut 1 key.
</constant>
- <constant name="KEY_LAUNCH2" value="16777306" enum="Key">
+ <constant name="KEY_LAUNCH2" value="16777314" enum="Key">
Launch Shortcut 2 key.
</constant>
- <constant name="KEY_LAUNCH3" value="16777307" enum="Key">
+ <constant name="KEY_LAUNCH3" value="16777315" enum="Key">
Launch Shortcut 3 key.
</constant>
- <constant name="KEY_LAUNCH4" value="16777308" enum="Key">
+ <constant name="KEY_LAUNCH4" value="16777316" enum="Key">
Launch Shortcut 4 key.
</constant>
- <constant name="KEY_LAUNCH5" value="16777309" enum="Key">
+ <constant name="KEY_LAUNCH5" value="16777317" enum="Key">
Launch Shortcut 5 key.
</constant>
- <constant name="KEY_LAUNCH6" value="16777310" enum="Key">
+ <constant name="KEY_LAUNCH6" value="16777318" enum="Key">
Launch Shortcut 6 key.
</constant>
- <constant name="KEY_LAUNCH7" value="16777311" enum="Key">
+ <constant name="KEY_LAUNCH7" value="16777319" enum="Key">
Launch Shortcut 7 key.
</constant>
- <constant name="KEY_LAUNCH8" value="16777312" enum="Key">
+ <constant name="KEY_LAUNCH8" value="16777320" enum="Key">
Launch Shortcut 8 key.
</constant>
- <constant name="KEY_LAUNCH9" value="16777313" enum="Key">
+ <constant name="KEY_LAUNCH9" value="16777321" enum="Key">
Launch Shortcut 9 key.
</constant>
- <constant name="KEY_LAUNCHA" value="16777314" enum="Key">
+ <constant name="KEY_LAUNCHA" value="16777322" enum="Key">
Launch Shortcut A key.
</constant>
- <constant name="KEY_LAUNCHB" value="16777315" enum="Key">
+ <constant name="KEY_LAUNCHB" value="16777323" enum="Key">
Launch Shortcut B key.
</constant>
- <constant name="KEY_LAUNCHC" value="16777316" enum="Key">
+ <constant name="KEY_LAUNCHC" value="16777324" enum="Key">
Launch Shortcut C key.
</constant>
- <constant name="KEY_LAUNCHD" value="16777317" enum="Key">
+ <constant name="KEY_LAUNCHD" value="16777325" enum="Key">
Launch Shortcut D key.
</constant>
- <constant name="KEY_LAUNCHE" value="16777318" enum="Key">
+ <constant name="KEY_LAUNCHE" value="16777326" enum="Key">
Launch Shortcut E key.
</constant>
- <constant name="KEY_LAUNCHF" value="16777319" enum="Key">
+ <constant name="KEY_LAUNCHF" value="16777327" enum="Key">
Launch Shortcut F key.
</constant>
<constant name="KEY_UNKNOWN" value="33554431" enum="Key">
@@ -2444,7 +2501,7 @@
Hints that an integer property is a bitmask using the optionally named 3D physics layers.
</constant>
<constant name="PROPERTY_HINT_LAYERS_3D_NAVIGATION" value="14" enum="PropertyHint">
- Hints that an integer property is a bitmask using the optionally named 2D navigation layers.
+ Hints that an integer property is a bitmask using the optionally named 3D navigation layers.
</constant>
<constant name="PROPERTY_HINT_FILE" value="15" enum="PropertyHint">
Hints that a string property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code].
diff --git a/doc/classes/AudioStreamPlayer2D.xml b/doc/classes/AudioStreamPlayer2D.xml
index 7d0470f396..76666b1f27 100644
--- a/doc/classes/AudioStreamPlayer2D.xml
+++ b/doc/classes/AudioStreamPlayer2D.xml
@@ -64,6 +64,9 @@
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
</member>
+ <member name="panning_strength" type="float" setter="set_panning_strength" getter="get_panning_strength" default="1.0">
+ Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+ </member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
</member>
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index 8356596f54..a49b1e2291 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -86,6 +86,9 @@
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
</member>
+ <member name="panning_strength" type="float" setter="set_panning_strength" getter="get_panning_strength" default="1.0">
+ Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/3d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+ </member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
</member>
diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml
index 62e64f2a3c..2647e961c9 100644
--- a/doc/classes/NavigationRegion2D.xml
+++ b/doc/classes/NavigationRegion2D.xml
@@ -26,7 +26,7 @@
Determines if the [NavigationRegion2D] is enabled or disabled.
</member>
<member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0">
- When pathfinding enters this regions navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
+ When pathfinding enters this region's navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
</member>
<member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer2D.map_get_path].
@@ -35,7 +35,7 @@
The [NavigationPolygon] resource to use.
</member>
<member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0">
- When pathfinding moves inside this regions navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
+ When pathfinding moves inside this region's navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
</member>
</members>
</class>
diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml
index 3af7fe5c97..61dcd13dc8 100644
--- a/doc/classes/NavigationRegion3D.xml
+++ b/doc/classes/NavigationRegion3D.xml
@@ -33,7 +33,7 @@
Determines if the [NavigationRegion3D] is enabled or disabled.
</member>
<member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0">
- When pathfinding enters this regions navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
+ When pathfinding enters this region's navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
</member>
<member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer3D.map_get_path].
@@ -42,7 +42,7 @@
The [NavigationMesh] resource to use.
</member>
<member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0">
- When pathfinding moves inside this regions navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
+ When pathfinding moves inside this region's navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
</member>
</members>
<signals>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index ad95572bf1..2c28a297cf 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -307,6 +307,12 @@
<member name="audio/driver/output_latency.web" type="int" setter="" getter="" default="50">
Safer override for [member audio/driver/output_latency] in the Web platform, to avoid audio issues especially on mobile devices.
</member>
+ <member name="audio/general/2d_panning_strength" type="float" setter="" getter="" default="1.0">
+ The base strength of the panning effect for all AudioStreamPlayer2D nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer2D.panning_strength].
+ </member>
+ <member name="audio/general/3d_panning_strength" type="float" setter="" getter="" default="1.0">
+ The base strength of the panning effect for all AudioStreamPlayer3D nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer3D.panning_strength].
+ </member>
<member name="audio/video/video_delay_compensation_ms" type="int" setter="" getter="" default="0">
Setting to hardcode audio delay when playing video. Best to leave this untouched unless you know what you are doing.
</member>
@@ -1927,6 +1933,11 @@
If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm. This algorithm is only supported on desktop platforms and consoles.
[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]).
</member>
+ <member name="rendering/textures/vram_compression/minimum_size" type="int" setter="" getter="" default="512">
+ When a texture is detected as used in 3D in the editor, only enable VRAM compression if its size is greater than or equal to [code]minimum_size * minimum_size[/code] pixels. This is done to prevent reducing texture quality when it doesn't save much video memory, especially for pixel art.
+ For non-square textures, the pixel count is used. For example, with [member rendering/textures/vram_compression/minimum_size] set to [code]512[/code], a 512×512 texture will use VRAM compression, while 256×256 textures, 256×512 and 1024×64 textures will keep their existing compression mode (Lossless by default).
+ [b]Note:[/b] This project setting only affects textures that are detected to be used in 3D at a given time. Textures that were already imported will not be affected by changes to this setting. To force 3D detection to occur again, select a texture in the FileSystem dock, change its Detect 3D import option in the Import dock to [b]VRAM Compressed[/b] or [b]Basis Universal[/b] then click [b]Reimport[/b].
+ </member>
<member name="rendering/vulkan/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64">
</member>
<member name="rendering/vulkan/rendering/back_end" type="int" setter="" getter="" default="0">
diff --git a/doc/classes/World3D.xml b/doc/classes/World3D.xml
index c57029a180..56a662d062 100644
--- a/doc/classes/World3D.xml
+++ b/doc/classes/World3D.xml
@@ -19,7 +19,7 @@
The World3D's [Environment].
</member>
<member name="fallback_environment" type="Environment" setter="set_fallback_environment" getter="get_fallback_environment">
- The World3D's fallback_environment will be used if the World3D's [Environment] fails or is missing.
+ The World3D's fallback environment will be used if [member environment] fails or is missing.
</member>
<member name="navigation_map" type="RID" setter="" getter="get_navigation_map">
The [RID] of this world's navigation map. Used by the [NavigationServer3D].
diff --git a/doc/translations/ar.po b/doc/translations/ar.po
index b68cb7cd59..8354193353 100644
--- a/doc/translations/ar.po
+++ b/doc/translations/ar.po
@@ -480,7 +480,7 @@ msgstr ""
#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3561,6 +3561,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30323,8 +30329,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36715,7 +36721,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36735,7 +36741,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47559,6 +47565,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66862,11 +66880,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74904,8 +74923,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ca.po b/doc/translations/ca.po
index 5553d751ee..234b5cd60c 100644
--- a/doc/translations/ca.po
+++ b/doc/translations/ca.po
@@ -460,7 +460,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3510,6 +3510,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30240,8 +30246,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36596,7 +36602,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36616,7 +36622,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47404,6 +47410,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66681,11 +66699,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74702,8 +74721,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/classes.pot b/doc/translations/classes.pot
index 3e7eb08673..72d9388f80 100644
--- a/doc/translations/classes.pot
+++ b/doc/translations/classes.pot
@@ -340,7 +340,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3390,6 +3390,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30117,8 +30123,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36473,7 +36479,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36493,7 +36499,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47281,6 +47287,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66558,11 +66576,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74579,8 +74598,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/cs.po b/doc/translations/cs.po
index 388d3d7d4d..4b60e4d7c4 100644
--- a/doc/translations/cs.po
+++ b/doc/translations/cs.po
@@ -489,7 +489,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3895,6 +3895,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30713,8 +30719,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37117,7 +37123,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37137,7 +37143,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47977,6 +47983,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67339,11 +67357,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75388,8 +75407,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/de.po b/doc/translations/de.po
index 6907c97794..640725bd9a 100644
--- a/doc/translations/de.po
+++ b/doc/translations/de.po
@@ -533,9 +533,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4403,6 +4404,15 @@ msgstr ""
"die optional benannten 3D-Physikebenen verwendet."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Weist darauf hin, dass eine Integer-Eigenschaft eine Bitmaske ist, welche "
+"die optional benannten 2D-Renderebenen verwendet."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -32499,8 +32509,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -38957,7 +38967,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -38978,7 +38988,7 @@ msgstr "Das [NavigationMeshGenerator] Singleton."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -49925,6 +49935,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -69616,12 +69638,16 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
+"Die Animationen werden während des Physikframes (d. h. [method Node."
+"_physics_process]) fortgesetzt."
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
@@ -77758,9 +77784,10 @@ msgid "The World's [Environment]."
msgstr "Das [Environment] der Welt."
#: doc/classes/World.xml
+#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"Das fallback_environment der Welt wird genutzt, sollte das [Environment] der "
"Welt nicht existieren oder nicht geladen werden können."
diff --git a/doc/translations/el.po b/doc/translations/el.po
index 1ec00b61aa..e19557ebb4 100644
--- a/doc/translations/el.po
+++ b/doc/translations/el.po
@@ -355,7 +355,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3405,6 +3405,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30168,8 +30174,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36554,7 +36560,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36574,7 +36580,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47385,6 +47391,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66688,11 +66706,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74729,8 +74748,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/es.po b/doc/translations/es.po
index e5276e7f7c..4c4982ad59 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -526,7 +526,7 @@ msgstr ""
#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4459,6 +4459,15 @@ msgstr ""
"opcionalmente nombrada, capas fisicas 3D."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Sugiere que una propiedad entera es una máscara de bits usando las, "
+"opcionalmente nombradas, capas de representación 2D."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -39964,9 +39973,10 @@ msgstr ""
"code], se libera el estado del botón."
#: doc/classes/InputEventJoypadButton.xml
+#, fuzzy
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
"Representa la presión que el usuario ejerce sobre el botón con su dedo, si "
"el controlador lo soporta. Va de [code]0[/code] a [code]1[/code]."
@@ -48108,7 +48118,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -48129,7 +48139,7 @@ msgstr "El recurso [Mesh] para la instancia."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -62813,6 +62823,18 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
#, fuzzy
msgid ""
"Search path for project-specific script templates. Godot will search for "
@@ -87439,11 +87461,14 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr "Este habilitador detendrá los nodos [GPUParticles2D]."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr "Este habilitador detendrá la función _process del padre."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr "Este habilitador detendrá la función del _physics_process del padre."
#: doc/classes/VisibilityEnabler2D.xml
@@ -97788,8 +97813,8 @@ msgstr "El [Environment] del World."
#: doc/classes/World.xml
#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"El fallback_environment del World3D se usará si el [Environment] de World3D "
"falla o falta."
diff --git a/doc/translations/fa.po b/doc/translations/fa.po
index 46b4d9600e..ee4b608fbd 100644
--- a/doc/translations/fa.po
+++ b/doc/translations/fa.po
@@ -492,7 +492,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3829,6 +3829,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30559,8 +30565,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36921,7 +36927,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36941,7 +36947,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47741,6 +47747,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67022,11 +67040,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75043,8 +75062,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/fi.po b/doc/translations/fi.po
index 5be805e91a..108f9f7780 100644
--- a/doc/translations/fi.po
+++ b/doc/translations/fi.po
@@ -422,7 +422,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3472,6 +3472,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30251,8 +30257,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36639,7 +36645,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36659,7 +36665,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47470,6 +47476,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66781,11 +66799,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74826,8 +74845,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/fil.po b/doc/translations/fil.po
index 6e76d65426..d34766797c 100644
--- a/doc/translations/fil.po
+++ b/doc/translations/fil.po
@@ -356,7 +356,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3406,6 +3406,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30136,8 +30142,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36492,7 +36498,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36512,7 +36518,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47300,6 +47306,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66577,11 +66595,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74598,8 +74617,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index 60d840e7ab..98f4921109 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -61,7 +61,7 @@ msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-06-16 18:57+0000\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
@@ -70,7 +70,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -548,9 +548,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4496,6 +4497,15 @@ msgstr ""
"couches de physique 3D optionnellement nommées."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Indique qu'une propriété nombre entier est un masque de bits utilisant les "
+"couches de rendu 2D optionnellement nommées."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -4984,6 +4994,8 @@ msgid ""
"Returns the center of the [AABB], which is equal to [member position] + "
"([member size] / 2)."
msgstr ""
+"Retourne le centre du [AABB], qui est égal à [member position] + ([member "
+"size] / 2)."
#: doc/classes/AABB.xml
msgid "Gets the position of the 8 endpoints of the [AABB] in space."
@@ -5165,6 +5177,10 @@ msgid ""
"may cause a crash. If you wish to hide it or any of its children, use their "
"[member CanvasItem.visible] property."
msgstr ""
+"Retourne le label utilisé pour le texte intégré.\n"
+"[b]Avertissement :[/b] Il s'agit d'un nœud interne nécessaire, le retirer et "
+"le libérer peut causer un plantage. Si vous voulez le cacher lui ou l'un de "
+"ses enfants, utilisez plutôt [membre CanvasItem.visible]."
#: doc/classes/AcceptDialog.xml
msgid ""
@@ -5173,6 +5189,10 @@ msgid ""
"may cause a crash. If you wish to hide it or any of its children, use their "
"[member CanvasItem.visible] property."
msgstr ""
+"Retourne l'instance du [Button] \"OK\".\n"
+"[b]Avertissement :[/b] Il s'agit d'un nœud interne nécessaire, le retirer et "
+"le libérer peut causer un plantage. Si vous voulez le cacher lui ou l'un de "
+"ses enfants, utilisez plutôt [membre CanvasItem.visible]."
#: doc/classes/AcceptDialog.xml
msgid ""
@@ -7636,6 +7656,14 @@ msgid ""
"animation_finished]. If you want to skip animation and emit the signal, use "
"[method advance]."
msgstr ""
+"Avance la lecture de l'animation à la position [code]secondes[/code] dans le "
+"temps (en secondes). Si [code]update[/code] est [code]true[/code], "
+"l'animation se mettra à jour, sinon elle le sera au moment du traitement. "
+"Les événements entre la trame actuel et la position [code]secondes[/code] "
+"sont ignorés.\n"
+"[b]Note :[/b] Aller à la fin de l'animation n'émet pas le signal [signal "
+"animation_finished]. Si vous voulez sauter l'animation et émettre le signal, "
+"utilisez plutôt [method advance]."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -15821,6 +15849,33 @@ msgid ""
"parameters must have angles specified as [i]radians[/i]. To convert degrees "
"to radians, use [method @GDScript.deg2rad]."
msgstr ""
+"La classe de base de tout ce qui est en 2D. Les objets du canevas sont placé "
+"dans une arborescence; les enfants héritent et étendent la transformation du "
+"parent. [CanvasItem] est hérité par [Control] pour tout ce qui concerne "
+"l'interface utilisateur, et par [Node2D] pour tout ce qui concerne le moteur "
+"2D.\n"
+"Tout [CanvasItem] peut servir à dessiner. Pour cela, [méthode update] doit "
+"être appelée, puis [constant NOTIFICATION_DRAW] sera reçu lors du temps "
+"inoccupé pour la requête de dessin. En raison de cela, les éléments des "
+"canevas n'ont pas besoin d'être redessinés à chaque trame, ce qui améliore "
+"considérablement les performances. Plusieurs fonctions pour dessiner dans un "
+"[CanvasItem] sont fournies (voir [code]draw_*[/code]). Cependant, elles ne "
+"peuvent être utilisés qu'à l'intérieur des fonctions virtuelles [method "
+"Object._notification], des signaux ou de [method _draw].\n"
+"Les objets des canevas sont dessinés dans l'ordre de l'arborescence. Par "
+"défaut, les enfants sont au-dessus de leurs parents afin que le [CanvasItem] "
+"racine soit dessiné en arrière fond. Ce comportement peut être modifié pour "
+"chaque élément.\n"
+"Un [CanvasItem] peut aussi être caché, ce qui cachera aussi ses enfants. Il "
+"existe de nombreuses façons de modifier des paramètres tels que la "
+"modulation (pour lui-même et ses enfants) et la modulation de ce seul "
+"élément, ainsi que son mode de mélange.\n"
+"Enfin, une notification de transformation peut être demandée, ce qui "
+"signalera au nœud que sa position globale a changé au cas où l'arborescence "
+"parente a changé.\n"
+"[b]Note :[/b] Sauf exception, toutes les paramètres d'angle doivent être des "
+"spécifiés en [i]radians[/i]. Pour convertir des degrés en radians, utilisez "
+"[méthod @GDScript.deg2rad]"
#: doc/classes/CanvasItem.xml doc/classes/CanvasLayer.xml
#: doc/classes/InputEvent.xml doc/classes/Viewport.xml
@@ -15852,12 +15907,28 @@ msgid ""
"mipmaps to perform antialiasing. 2D batching is also still supported with "
"those antialiased lines."
msgstr ""
+"Dessine un arc non rempli entre les deux angles donnés. Plus la valeur "
+"[code]point_count[/code] est grande, plus la courbe est lisse. Voir aussi "
+"[method draw_circle].\n"
+"[b]Note :[/b] Le dessin de ligne n'est pas accéléré par lots si "
+"[code]antialiased[/code] est [code]true[/code].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les lignes semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage. L'accélération par lot est "
+"toujours supporté même avec les lignes avec anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
"Draws a string character using a custom font. Returns the advance, depending "
"on the character width and kerning with an optional next character."
msgstr ""
+"Dessine un caractère d'une chaîne en utilisant une police personnalisée. "
+"Retourne l'avancement, en fonction de la largeur de caractère et du kerning "
+"avec un caractère optionnel suivant."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -15869,6 +15940,14 @@ msgid ""
"create an AntialiasedRegularPolygon2D node. That node relies on a texture "
"with custom mipmaps to perform antialiasing."
msgstr ""
+"Dessine un cercle coloré rempli. Voir aussi [method draw_arc], [method "
+"draw_polyline] et [method draw_polygon].\n"
+"[b]Note :[/b] L'anticrénelage intégré n'est pas prévu pour [méthod "
+"draw_circle]. Vous pouvez corriger ce problème en installant le greffon "
+"[url=https://github.com/godot-extended-libraries/godot-antialiased-"
+"line2d]Antialiased Line2D[/url] puis créez un nœud "
+"AntialiasedRegularPolygon2D. Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -15882,6 +15961,16 @@ msgid ""
"AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps "
"to perform antialiasing."
msgstr ""
+"Dessine un polygone coloré avec un nombre donné de points, qu'il soit "
+"convexe ou concave. Contrairement à [method draw_polygon], une seule couleur "
+"doit être spécifiée pour tout le polygone.\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les polygones semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -15898,6 +15987,19 @@ msgid ""
"perform antialiasing. 2D batching is also still supported with those "
"antialiased lines."
msgstr ""
+"Dessine une ligne d'un point 2D à un autre, avec une couleur et une "
+"épaisseur données. L'anticrénelage peut être activé en option. Voir aussi "
+"[method draw_multiline] et [method draw_polyline].\n"
+"[b]Note :[/b] Le dessin de ligne n'est pas accéléré par lots si "
+"[code]antialiased[/code] est [code]true[/code].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les lignes semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage. L'accélération par lot est "
+"toujours supporté même avec les lignes avec anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -16480,6 +16582,9 @@ msgid ""
"[b]Note:[/b] This property is only used and visible in the editor if [member "
"particles_animation] is [code]true[/code]."
msgstr ""
+"Si [code]true[/code], l'animation des particules boucle.\n"
+"[b]Note :[/b] Cette propriété est uniquement utilisée et visible dans "
+"l'éditeur si [member particles_animation] est [code]true[/code]."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -16488,6 +16593,10 @@ msgid ""
"[b]Note:[/b] This property is only used and visible in the editor if [member "
"particles_animation] is [code]true[/code]."
msgstr ""
+"Le nombre de lignes dans la feuille de textures assigné comme [Texture] pour "
+"un [Particles2D] ou un [CPUParticles2D].\n"
+"[b]Note :[/b] Cette propriété est uniquement utilisée et visible dans "
+"l'éditeur si [member particles_animation] est [code]true[/code]."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -16498,6 +16607,13 @@ msgid ""
"This property (and other [code]particles_anim_*[/code] properties that "
"depend on it) has no effect on other types of nodes."
msgstr ""
+"Si [code]true[/code], cela active les fonctionnalités d'animation basées sur "
+"des feuilles de textures lorsqu'elles sont affectées aux nœuds [Particles2D] "
+"et [CPUParticles2D]. Le [member ParticlesMaterial.anim_speed] ou [member "
+"CPUParticles2D.anim_speed] doit être une valeur positive pour l'animation à "
+"jouer.\n"
+"Cette propriété (et les autres propriétés [code]particles_anim_*[/code] qui "
+"en dépendent) n'a aucun effet sur d'autres types de nœuds."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -16526,6 +16642,13 @@ msgid ""
"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or "
"above), or backgrounds (in layer -1 or below)."
msgstr ""
+"Le calque de dessin du canevas. Les nœuds [CanvasItem] qui sont des enfants "
+"directs ou indirects d'un [CanvasLayer] seront dessinés dans ce calque. Le "
+"calque est un index numérique qui définit l'ordre d'affichage. La scène 2D "
+"par défaut fait le rendu avec l'index 0, donc un [CanvasLayer] avec index -1 "
+"sera dessiné en-dessous, et un avec l'index 1 sera dessiné par dessus. Ceci "
+"est très utile pour les interfaces (dans la calque +1 ou au-dessus,) ou les "
+"arrière-plans (dans un calque -1 ou en dessous)."
#: doc/classes/CanvasLayer.xml
msgid "Canvas layers"
@@ -16915,6 +17038,8 @@ msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is hovered and "
"pressed."
msgstr ""
+"La [StyleBox] à afficher en arrière-plan lorsque la [CheckBox] est survolée "
+"et appuyée."
#: doc/classes/CheckBox.xml doc/classes/CheckButton.xml
msgid "The [StyleBox] to display as a background."
@@ -16941,6 +17066,14 @@ msgid ""
"See also [BaseButton] which contains common properties and methods "
"associated with this node."
msgstr ""
+"CheckButton est un bouton à bascule affiché avec une coche. Il est semblable "
+"à [CheckBox] dans ses fonctionnalités, mais son apparence est différente. "
+"Pour suivre les modèles UX établis, il est recommandé d'utiliser CheckButton "
+"pour les effet [b]immédiat[/b] d'une action. Par exemple, il devrait être "
+"utilisé si le basculement active/désactive un réglage sans nécessiter que "
+"l'utilisateur appuie sur un bouton de confirmation.\n"
+"Voir aussi [BaseButton] qui contient des propriétés et des méthodes communes "
+"associées à ce nœud."
#: doc/classes/CheckButton.xml
msgid "The [CheckButton] text's font color."
@@ -21346,6 +21479,10 @@ msgid ""
"expand size flags. Use with [member size_flags_horizontal] and [member "
"size_flags_vertical]."
msgstr ""
+"Précise au [Container] parent de centrer le nœud en son milieu. Il centre le "
+"contrôle basé sur sont rectangle englobant, donc ça ne fonctionne pas avec "
+"les drapeaux de remplissage ou d'extension. Utilisez avec [membre "
+"size_flags_horizontal] et [membre size_flags_vertical]."
#: doc/classes/Control.xml
msgid ""
@@ -21354,6 +21491,10 @@ msgid ""
"flags. Use with [member size_flags_horizontal] and [member "
"size_flags_vertical]."
msgstr ""
+"Précise au [Container] parent d'aligner le nœud sur la fin, soit en bas, "
+"soit sur bord droit. Il ne fonctionne pas avec les drapeaux de remplissage "
+"ou d'extension. Utilisez avec [membre size_flags_horizontal] et [membre "
+"size_flags_vertical]."
#: doc/classes/Control.xml
msgid ""
@@ -21363,6 +21504,12 @@ msgid ""
"automatically marked as handled, and they will not propagate further to "
"other controls. This also results in blocking signals in other controls."
msgstr ""
+"Le contrôle recevra les événements d'entrée de la souris via [method "
+"gui_input] si vous cliquez dessus. Et le contrôle recevra les signaux "
+"[signal mouse_entered] et [signal mouse_exited]. Ces événements sont "
+"automatiquement marqués comme traités, et ils ne se propagent pas vers les "
+"autres contrôles. Cela permet également de bloquer la propagation de ces "
+"signaux à partir d'autres contrôles."
#: doc/classes/Control.xml
msgid ""
@@ -21375,6 +21522,14 @@ msgid ""
"all, the event will still be handled automatically, so unhandled input will "
"not be fired."
msgstr ""
+"La contrôle recevra les événements d'entrée de la souris via [method "
+"gui_input] si vous cliquez dessus. Et le contrôle recevra les signaux "
+"[signal mouse_entered] et [signal mouse_exited]. Si ce contrôle ne traite "
+"pas l'événement, cet événement sera envoyé au contrôle parent (s'il existe), "
+"et ainsi de suite jusqu'à ce qu'il n'y ait plus de contrôle parent pour le "
+"traiter. Cela permet également aux signaux d'être émis dans d'autres "
+"contrôles. Même si aucun contrôle ne l'a traité, l'événement sera toujours "
+"traité automatiquement, alors les entrées non traitées ne seront pas émises."
#: doc/classes/Control.xml
msgid ""
@@ -21384,24 +21539,35 @@ msgid ""
"receiving these events or firing the signals. Ignored events will not be "
"handled automatically."
msgstr ""
+"Le contrôle ne recevra pas d'événements d'entrée de la souris via [méthode "
+"gui_input]. Le contrôle ne recevra pas non plus les signaux [signal "
+"mouse_entered] et [signal mouse_exited]. Cela ne bloquera pas d'autres "
+"contrôles de recevoir ces événements et n'émettra pas les signaux. Les "
+"événements ignorés ne seront pas traités automatiquement."
#: doc/classes/Control.xml
msgid ""
"The control will grow to the left or top to make up if its minimum size is "
"changed to be greater than its current size on the respective axis."
msgstr ""
+"Le contrôle va croître à gauche ou en haut pour compenser si sa taille "
+"minimale est plus grande que sa taille actuelle selon l'axe correspondant."
#: doc/classes/Control.xml
msgid ""
"The control will grow to the right or bottom to make up if its minimum size "
"is changed to be greater than its current size on the respective axis."
msgstr ""
+"Le contrôle va croître à droite ou en bas pour compenser si sa taille "
+"minimale est plus grande que sa taille actuelle selon l'axe correspondant."
#: doc/classes/Control.xml
msgid ""
"The control will grow in both directions equally to make up if its minimum "
"size is changed to be greater than its current size."
msgstr ""
+"Le contrôle va croître dans les deux directions de façon égale pour "
+"compenser si sa taille minimale est plus grande que sa taille actuelle."
#: doc/classes/Control.xml
msgid ""
@@ -25250,42 +25416,59 @@ msgid ""
"The 3D editor. If this feature is disabled, the 3D editor won't display but "
"3D nodes will still display in the Create New Node dialog."
msgstr ""
+"L'éditeur 3D. Si cette fonctionnalité est désactivée, l'éditeur 3D ne sera "
+"pas affiché mais les nœuds 3D seront toujours affichés dans le dialogue "
+"\"Créer un nouveau nœud\"."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Script tab, which contains the script editor and class reference "
"browser. If this feature is disabled, the Script tab won't display."
msgstr ""
+"L'onglet \"Script\", qui contient l'éditeur de script et le navigateur de "
+"documentation des classes. Si cette fonctionnalité est désactivée, "
+"l'affichage de l'onglet \"Script\" ne sera pas affiché."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The AssetLib tab. If this feature is disabled, the AssetLib tab won't "
"display."
msgstr ""
+"L'onglet AssetLib. Si cette caractéristique est désactivée, l'onglet "
+"AssetLib ne sera pas affiché."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"Scene tree editing. If this feature is disabled, the Scene tree dock will "
"still be visible but will be read-only."
msgstr ""
+"L'éditeur de l'arborescence de la scène. Si cette caractéristique est "
+"désactivée, le dock de l'arborescence de la scène sera toujours visible, "
+"mais ne pourra pas être modifié."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Node dock. If this feature is disabled, signals and groups won't be "
"visible and modifiable from the editor."
msgstr ""
+"Le dock des Nœuds. Si cette caractéristique est désactivée, les signaux et "
+"les groupes ne seront pas affichés ni modifiables dans l'éditeur."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The FileSystem dock. If this feature is disabled, the FileSystem dock won't "
"be visible."
msgstr ""
+"Le dock de système de fichiers. Si cette caractéristique est désactivée, le "
+"dock de système de fichiers ne sera pas visible."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Import dock. If this feature is disabled, the Import dock won't be "
"visible."
msgstr ""
+"Le dock d'importation. Si cette caractéristique est désactivée, le dock "
+"d'importation ne sera pas visible."
#: doc/classes/EditorFeatureProfile.xml doc/classes/SpatialMaterial.xml
msgid "Represents the size of the [enum Feature] enum."
@@ -27196,6 +27379,17 @@ msgid ""
"[code]receiver_func[/code] will still be called, but the preview will be "
"null."
msgstr ""
+"Met la [code]resource[/code] modifiée en attente pour être prévisualisée. "
+"Une fois la prévisualisation prête, la méthode [code]receiver_func[/code] du "
+"[code]receiver[/code] sera appelée. Le [code]receiver_func[/code] doit "
+"prendre les quatre arguments suivants : le chemin (\"path\") [String], la "
+"[Texture] de l'aperçu (\"preview\"), la [Texture] de la vignette "
+"(\"thumbnail_preview\") et les données personnées (\"userdata\") sous forme "
+"de [Variant]. [code]userdata[/code] peut continir n'importe quel type de "
+"données, et sera retourné quand [code]receiver_func[/code] sera appelé.\n"
+"[b]Note :[/b] S'il n'était pas possible de créer la prévisualisation, "
+"[code]receiver_func[/code] sera toujours appelé, mais la prévisualisation "
+"sera \"null\"."
#: doc/classes/EditorResourcePreview.xml
msgid ""
@@ -27209,6 +27403,18 @@ msgid ""
"[code]receiver_func[/code] will still be called, but the preview will be "
"null."
msgstr ""
+"Met le fichier de ressource situé à [code]path[/code] en attente pour être "
+"prévisualisé. Une fois la prévisualisation prête, la méthode "
+"[code]receiver_func[/code] du [code]receiver[/code] sera appelée. Le "
+"[code]receiver_func[/code] doit prendre les quatre arguments suivants : le "
+"chemin (\"path\") [String], la [Texture] de l'aperçu (\"preview\"), la "
+"[Texture] de la vignette (\"thumbnail_preview\") et les données personnées "
+"(\"userdata\") sous forme de [Variant]. [code]userdata[/code] peut continir "
+"n'importe quel type de données, et sera retourné quand [code]receiver_func[/"
+"code] sera appelé.\n"
+"[b]Note :[/b] S'il n'était pas possible de créer la prévisualisation, "
+"[code]receiver_func[/code] sera toujours appelé, mais la prévisualisation "
+"sera \"null\"."
#: doc/classes/EditorResourcePreview.xml
msgid "Removes a custom preview generator."
@@ -27484,10 +27690,19 @@ msgid ""
"[b]Note:[/b] You must set the [member script_owner] for the custom context "
"menu items to work."
msgstr ""
+"Similaire à [EditorResourcePicker], ce nœud [Control] est utilisé dans le "
+"dock d'inspecteur de l'éditeur, mais seulement pour modifier la propriété "
+"[code]script[/code] d'un [Node]. Les options par défaut pour créer de "
+"nouvelles ressources de tous les sous-types possibles sont remplacées par "
+"des boutons dédiés qui ouvrent le dialogue \"Attaché un Script\". Peut être "
+"utilisé avec [EditorInspectorPlugin] pour recréer le même comportement.\n"
+"[b]Note :[/b] Vous devez définir le [member script_owner] pour les éléments "
+"de menu contextuel personnalisés fonctionnent."
#: doc/classes/EditorScriptPicker.xml
msgid "The owner [Node] of the script property that holds the edited resource."
msgstr ""
+"Le [Node] propriétaire de la propriété Script qui a la ressource modifiée."
#: doc/classes/EditorSelection.xml
msgid "Manages the SceneTree selection in the editor."
@@ -27558,6 +27773,28 @@ msgid ""
"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
"the singleton using [method EditorInterface.get_editor_settings]."
msgstr ""
+"L'objet qui détient les paramètres de l'éditeur indépendant du projet. Ces "
+"paramètres sont généralement visibles dans le menu [b]Éditeur > Paramètres "
+"de l'éditeur[/b].\n"
+"Les noms de propriété utilisent des délimiteurs avec des barres obliques (\"/"
+"\") pour distinguer les sections. Les valeurs de réglage peuvent être de "
+"tout type [Variant]. Il est recommandé d'utiliser la casse [code]snake_case[/"
+"code] pour que les paramètres de l'éditeur soient compatibles avec l'éditeur "
+"Godot lui-même.\n"
+"L'accès aux paramètres peut être fait en utilisant les méthodes suivantes :\n"
+"[codeblock]\n"
+"# `settings.set(\"une/propriete\", value)` fonctionne aussi puisque cette "
+"classe surcharge `_set()` en interne.\n"
+"settings.set_setting(\"une/propriete\",value)\n"
+"\n"
+"# `settings.get(\"une/propriete\", value)` fonctionne aussi puisque cette "
+"classe surcharge `_get()` en interne.\n"
+"settings.get_setting(\"une/propriete\")\n"
+"\n"
+"var list_of_settings = settings.get_property_list()\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Cette classe ne devrait être pas instanciée. Accédez plutôt au "
+"singleton [method EditorInterface.get_editor_settings]"
#: doc/classes/EditorSettings.xml
msgid ""
@@ -27580,10 +27817,29 @@ msgid ""
"editor_settings.add_property_info(property_info)\n"
"[/codeblock]"
msgstr ""
+"Ajoute une info de propriété personnalisée à une propriété. Le dictionnaire "
+"doit contenir :\n"
+"- [code]name[/code]: [String] (le nom de la propriété)\n"
+"- [code]type[/code]: [int] (voir [enum Variant.Type])\n"
+"- en option [code]hint[/code]: [int] (voir [enum PropertyHint]) et "
+"[code]hint_string[/code]: [String]\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"editor_settings.set(\"category/property_name\", 0)\n"
+"\n"
+"var property_info = {\n"
+" \"name\": \"category/property_name\",\n"
+" \"type\": TYPE_INT,\n"
+" \"hint\": PROPERTY_HINT_ENUM,\n"
+" \"hint_string\": \"un,deux,trois\"\n"
+"}\n"
+"\n"
+"editor_settings.add_property_info(property_info)\n"
+"[/codeblock]"
#: doc/classes/EditorSettings.xml
msgid "Erases the setting whose name is specified by [code]property[/code]."
-msgstr ""
+msgstr "Efface le réglage nommé [code]property[/code]."
#: doc/classes/EditorSettings.xml
msgid "Returns the list of favorite files and directories for this project."
@@ -27602,12 +27858,17 @@ msgid ""
"subdirectory inside the settings path where project-specific settings are "
"saved."
msgstr ""
+"Retourne le chemin des paramètres spécifiques à ce projet. Les projets ont "
+"tous un sous-dossier unique où les paramètres spécifiques au projet sont "
+"sauvegardés."
#: doc/classes/EditorSettings.xml
msgid ""
"Returns the list of recently visited folders in the file dialog for this "
"project."
msgstr ""
+"Retourne la liste des dossiers récemment visités dans le dialogue des "
+"fichiers de ce projet."
#: doc/classes/EditorSettings.xml
msgid ""
@@ -27622,6 +27883,11 @@ msgid ""
"[code]settings/tmp[/code] - Used for temporary storage of files\n"
"[code]settings/templates[/code] - Where export templates are located"
msgstr ""
+"Retourne le chemin des réglages généraux du moteur. Dans ce chemin, vous "
+"pouvez trouver des chemins standards tels que :\n"
+"[code]settings/tmp[/code] - L'emplacement où sont stockés les fichiers "
+"temporaires\n"
+"[code]settings/templates[/code] - L'emplacement où sont stockés les modèles"
#: doc/classes/EditorSettings.xml
msgid ""
@@ -27991,6 +28257,14 @@ msgid ""
"plug-n-play experience. A custom VCS plugin is supposed to inherit from "
"[EditorVCSInterface] and override these virtual functions."
msgstr ""
+"Définit l'API que l'éditeur utilise pour extraire des informations du VCS "
+"utilisé. La mise en œuvre de cette API est incluse dans les greffons VCS, "
+"qui sont des scripts qui héritent de [EditorVCSInterface] et sont liés (à la "
+"demande) à au singleton de [EditorVCSInterface]. Plutôt qu'accomplir la "
+"tâche elle-même, toutes les fonctions virtuelles énumérées ci-dessous "
+"appellent les fonctions surchargées internes dans les greffons VCS pour "
+"fournir un fonctionnement automatique. Un greffon VCS personnalisé devrait "
+"hériter de [EditorVCSInterface] et surcharger ces fonctions virtuelles."
#: doc/classes/EditorVCSInterface.xml
#, fuzzy
@@ -28165,6 +28439,16 @@ msgid ""
"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
"recorded from the system timezone where the commit was created."
msgstr ""
+"Une fonction d'aide pour créer un [Dictionnaire] des données d'un commit. "
+"[code]msg[/code] est le message de commit. [code]author[/code] est une "
+"simple chaîne intelligible contenant tous les détails de l'auteur, par "
+"exemple son e-mail et le nom comme configurés dans le VCS. [code]id[/code] "
+"est le code de hachage du commit, dans lequel votre VCS peut fournir un "
+"identifiant unique pour chaque commit. [code]unix_timestamp[/code] est "
+"l'horodatage Unix basé sur UTC de la date de création de la commit. "
+"[code]offset_minutes[/code] is le décalage horaire par rapport à UTC, in "
+"minutes, enregistré depuis la zone horaire du système lors de la création du "
+"commit."
#: doc/classes/EditorVCSInterface.xml
msgid ""
@@ -28279,6 +28563,15 @@ msgid ""
"[code]project_managers[/code] - Array of Strings, project manager names\n"
"[code]developers[/code] - Array of Strings, developer names"
msgstr ""
+"Retourne les informations des auteurs du moteur dans un dictionnaire.\n"
+"[code]lead_developers[/code] - Un tableau de String, avec le nom de "
+"développeurs principaux\n"
+"[code]fondateurs[/code] - Un tableau de String, le nom des "
+"fondateurs\n"
+"[code]project_managers[/code] - Un tableau de String, le nom des chefs de "
+"projet\n"
+"[code]developers[/code] - Un tableau de String, le nom de "
+"développeurs"
#: doc/classes/Engine.xml
msgid ""
@@ -28288,6 +28581,11 @@ msgid ""
"[code]copyright[/code], [code]license[/code]} describing subsections of the "
"component"
msgstr ""
+"Retourne un Array d'information sur le copyright dans un dictionnaire.\n"
+"[code]name[/code] - String, le nom du composant\n"
+"[code]parts[/code] - Un table de Dictionary {[code]files[/code], "
+"[code]copyright[/code], [code]license[/code]} décrivant chaque paragraphe de "
+"la licence du composant"
#: doc/classes/Engine.xml
msgid ""
@@ -28297,6 +28595,11 @@ msgid ""
"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
"code], [code]bronze_donors[/code]}"
msgstr ""
+"Retourne un Dictionnaire des Arrays de noms des donateurs.\n"
+"{[code]platinum_sponsors[/code], [code]gold_sponsors[/code], "
+"[code]silver_sponsors[/code], [code]bronze_sponsors[/code], "
+"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
+"code], [code]bronze_donors[/code]}"
#: doc/classes/Engine.xml
msgid ""
@@ -36508,8 +36811,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -43582,7 +43885,7 @@ msgstr "Détermine si le [NavigationMeshInstance] est actif ou non."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -43602,7 +43905,7 @@ msgstr "La ressource [NavigationMesh] à utiliser."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -55594,6 +55897,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -76819,11 +77134,14 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr "Cet activateur arrêtera les nœuds [Particles2D]."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr "Cet activateur arrêtera la fonction _process du parent."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr "Cet activateur arrêtera la fonction _physics_process du parent."
#: doc/classes/VisibilityEnabler2D.xml
@@ -85713,8 +86031,8 @@ msgstr "L'[Environment] du World."
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/gl.po b/doc/translations/gl.po
index f11e8ba6d7..92ad8f3f22 100644
--- a/doc/translations/gl.po
+++ b/doc/translations/gl.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3398,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30125,8 +30131,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36481,7 +36487,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36501,7 +36507,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47289,6 +47295,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66566,11 +66584,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74587,8 +74606,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/hi.po b/doc/translations/hi.po
index d160c87d04..147b3b4099 100644
--- a/doc/translations/hi.po
+++ b/doc/translations/hi.po
@@ -347,7 +347,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3397,6 +3397,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30124,8 +30130,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36480,7 +36486,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36500,7 +36506,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47288,6 +47294,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66565,11 +66583,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74586,8 +74605,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/hu.po b/doc/translations/hu.po
index 7388321bf7..cda670b22d 100644
--- a/doc/translations/hu.po
+++ b/doc/translations/hu.po
@@ -10,12 +10,13 @@
# balintmaci <balintmaci@gmail.com>, 2021.
# Balázs Püspök-Kiss <pkblazsak@gmail.com>, 2021.
# Szevin <kevingeiger25@gmail.com>, 2022.
+# 6Leoo6 <leo.takacs@yahoo.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-01-26 23:53+0000\n"
-"Last-Translator: Szevin <kevingeiger25@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
+"Last-Translator: 6Leoo6 <leo.takacs@yahoo.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/hu/>\n"
"Language: hu\n"
@@ -23,7 +24,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -47,7 +48,7 @@ msgstr "Téma Tulajdonságai"
#: doc/tools/make_rst.py
msgid "Signals"
-msgstr "Jelzések"
+msgstr "jelek"
#: doc/tools/make_rst.py
msgid "Enumerations"
@@ -365,7 +366,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3415,6 +3416,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30142,8 +30149,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36498,7 +36505,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36518,7 +36525,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47306,6 +47313,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66583,11 +66602,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74604,8 +74624,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/id.po b/doc/translations/id.po
index c51e610f3d..da727b40e7 100644
--- a/doc/translations/id.po
+++ b/doc/translations/id.po
@@ -502,7 +502,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3808,6 +3808,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30549,8 +30555,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36925,7 +36931,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36945,7 +36951,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47755,6 +47761,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67040,11 +67058,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75067,8 +75086,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/is.po b/doc/translations/is.po
index 4ef90cac62..ec65de5cfb 100644
--- a/doc/translations/is.po
+++ b/doc/translations/is.po
@@ -347,7 +347,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3397,6 +3397,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30124,8 +30130,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36480,7 +36486,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36500,7 +36506,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47288,6 +47294,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66565,11 +66583,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74586,8 +74605,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/it.po b/doc/translations/it.po
index 6b71c5afb5..f1a35b0de3 100644
--- a/doc/translations/it.po
+++ b/doc/translations/it.po
@@ -515,9 +515,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4390,6 +4391,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -31313,8 +31320,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37738,7 +37745,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37759,7 +37766,7 @@ msgstr "Il singleton [EditorNavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -48613,6 +48620,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -68007,11 +68026,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -76077,8 +76097,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ja.po b/doc/translations/ja.po
index 66474a0f66..8bb3d16322 100644
--- a/doc/translations/ja.po
+++ b/doc/translations/ja.po
@@ -486,9 +486,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4349,6 +4350,15 @@ msgstr ""
"クã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"整数プロパティãŒã€ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã•れ㟠2D レンダー レイヤーを使用ã—ãŸãƒ“ット"
+"マスクã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -33372,8 +33382,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -39880,7 +39890,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -39901,7 +39911,7 @@ msgstr "[NavigationMeshGenerator] シングルトン。"
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -50820,6 +50830,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -70609,12 +70631,16 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
+"アニメーションã¯ç‰©ç†ãƒ•レーム中ã«é€²è¡Œã—ã¾ã™ (ã™ãªã‚ã¡ [method Node."
+"_physics_process])。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
@@ -78744,8 +78770,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ko.po b/doc/translations/ko.po
index 99843f88e0..e3dd797c36 100644
--- a/doc/translations/ko.po
+++ b/doc/translations/ko.po
@@ -488,7 +488,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3568,6 +3568,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30434,8 +30440,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36827,7 +36833,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36847,7 +36853,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47796,6 +47802,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67111,11 +67129,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75153,8 +75172,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/lt.po b/doc/translations/lt.po
index ca881ec842..fc686e4bb2 100644
--- a/doc/translations/lt.po
+++ b/doc/translations/lt.po
@@ -357,7 +357,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3407,6 +3407,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30134,8 +30140,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36490,7 +36496,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36510,7 +36516,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47298,6 +47304,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66575,11 +66593,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74596,8 +74615,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/lv.po b/doc/translations/lv.po
index 7b6380006f..27ebbed1af 100644
--- a/doc/translations/lv.po
+++ b/doc/translations/lv.po
@@ -362,7 +362,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3412,6 +3412,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30142,8 +30148,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36498,7 +36504,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36518,7 +36524,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47306,6 +47312,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66583,11 +66601,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74604,8 +74623,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/mr.po b/doc/translations/mr.po
index c13c395265..caaec0b107 100644
--- a/doc/translations/mr.po
+++ b/doc/translations/mr.po
@@ -345,7 +345,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3395,6 +3395,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30122,8 +30128,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36478,7 +36484,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36498,7 +36504,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47286,6 +47292,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66563,11 +66581,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74584,8 +74603,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/nb.po b/doc/translations/nb.po
index 6f8e94abc8..6bdd8e4b1e 100644
--- a/doc/translations/nb.po
+++ b/doc/translations/nb.po
@@ -357,7 +357,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3407,6 +3407,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30134,8 +30140,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36490,7 +36496,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36510,7 +36516,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47298,6 +47304,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66575,11 +66593,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74596,8 +74615,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ne.po b/doc/translations/ne.po
index a07c777543..d7f2a9f0cb 100644
--- a/doc/translations/ne.po
+++ b/doc/translations/ne.po
@@ -345,7 +345,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3395,6 +3395,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30122,8 +30128,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36478,7 +36484,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36498,7 +36504,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47286,6 +47292,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66563,11 +66581,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74584,8 +74603,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/nl.po b/doc/translations/nl.po
index 54f5a9fd07..71605513cd 100644
--- a/doc/translations/nl.po
+++ b/doc/translations/nl.po
@@ -406,7 +406,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3464,6 +3464,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30194,8 +30200,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36550,7 +36556,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36570,7 +36576,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47358,6 +47364,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66636,11 +66654,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74657,8 +74676,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/pl.po b/doc/translations/pl.po
index ca0992bc0e..6e5324af99 100644
--- a/doc/translations/pl.po
+++ b/doc/translations/pl.po
@@ -500,9 +500,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3891,6 +3892,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30702,8 +30709,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37136,7 +37143,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37157,7 +37164,7 @@ msgstr "Singleton [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -48003,6 +48010,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67346,11 +67365,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75403,8 +75423,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/pt.po b/doc/translations/pt.po
index 159f5eab13..6b214ae81a 100644
--- a/doc/translations/pt.po
+++ b/doc/translations/pt.po
@@ -495,7 +495,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4188,6 +4188,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -31008,8 +31014,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37409,7 +37415,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37429,7 +37435,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -48233,6 +48239,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67560,11 +67578,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75589,8 +75608,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/pt_BR.po b/doc/translations/pt_BR.po
index 012737c532..16779b76ff 100644
--- a/doc/translations/pt_BR.po
+++ b/doc/translations/pt_BR.po
@@ -525,9 +525,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4381,6 +4382,15 @@ msgstr ""
"3D opcionalmente nomeadas."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Indica que uma propriedade integer é uma bitmask usando as camadas de "
+"renderização 2D nomeadas opcionalmente."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -31342,8 +31352,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37776,7 +37786,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37797,7 +37807,7 @@ msgstr "O singleton [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -48650,6 +48660,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -68034,11 +68056,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -76096,8 +76119,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ro.po b/doc/translations/ro.po
index 7e2f0e03dc..dbc5017a08 100644
--- a/doc/translations/ro.po
+++ b/doc/translations/ro.po
@@ -373,7 +373,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3427,6 +3427,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30157,8 +30163,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36513,7 +36519,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36533,7 +36539,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47322,6 +47328,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66599,11 +66617,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74620,8 +74639,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/ru.po b/doc/translations/ru.po
index b398803cf7..ec2940636f 100644
--- a/doc/translations/ru.po
+++ b/doc/translations/ru.po
@@ -533,9 +533,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4486,6 +4487,15 @@ msgstr ""
"иÑпользованием (опционально) именованных 3D-Ñлоев физики."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Указывает, что целочиÑленное ÑвойÑтво ÑвлÑетÑÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¹ маÑкой Ñ "
+"иÑпользованием (опционально) именованных 2D-Ñлоев рендеринга."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -31984,8 +31994,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -38437,7 +38447,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -38458,7 +38468,7 @@ msgstr "Синглтон [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -49443,6 +49453,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -69042,11 +69064,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -77122,8 +77145,8 @@ msgstr "[Environment] мира."
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/sk.po b/doc/translations/sk.po
index 9eae2237dd..20caeea6c2 100644
--- a/doc/translations/sk.po
+++ b/doc/translations/sk.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3398,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30128,8 +30134,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36484,7 +36490,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36504,7 +36510,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47292,6 +47298,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66569,11 +66587,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74590,8 +74609,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/sr_Cyrl.po b/doc/translations/sr_Cyrl.po
index cd2fdbb4f6..4d48a80e07 100644
--- a/doc/translations/sr_Cyrl.po
+++ b/doc/translations/sr_Cyrl.po
@@ -359,7 +359,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3409,6 +3409,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30139,8 +30145,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36495,7 +36501,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36515,7 +36521,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47303,6 +47309,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66580,11 +66598,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74601,8 +74620,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/sv.po b/doc/translations/sv.po
index 9f98544e8c..4836ca862f 100644
--- a/doc/translations/sv.po
+++ b/doc/translations/sv.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3398,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30125,8 +30131,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36481,7 +36487,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36501,7 +36507,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47289,6 +47295,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66566,11 +66584,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74587,8 +74606,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/th.po b/doc/translations/th.po
index c70b6a3425..0bdffafffa 100644
--- a/doc/translations/th.po
+++ b/doc/translations/th.po
@@ -426,7 +426,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3492,6 +3492,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30282,8 +30288,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36669,7 +36675,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36689,7 +36695,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47541,6 +47547,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66846,11 +66864,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74874,8 +74893,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/tl.po b/doc/translations/tl.po
index c07118cb6b..5ced19938d 100644
--- a/doc/translations/tl.po
+++ b/doc/translations/tl.po
@@ -387,7 +387,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3474,6 +3474,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30214,8 +30220,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36594,7 +36600,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36614,7 +36620,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47405,6 +47411,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66691,11 +66709,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74712,8 +74731,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/tr.po b/doc/translations/tr.po
index 51a01cdf40..d7cc5bd8df 100644
--- a/doc/translations/tr.po
+++ b/doc/translations/tr.po
@@ -498,7 +498,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4176,6 +4176,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30962,8 +30968,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37370,7 +37376,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37391,7 +37397,7 @@ msgstr "[NavigationMeshGenerator] tekil nesnesi."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -48226,6 +48232,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67546,11 +67564,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75595,8 +75614,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/uk.po b/doc/translations/uk.po
index c370c6b192..22271dc2ea 100644
--- a/doc/translations/uk.po
+++ b/doc/translations/uk.po
@@ -477,7 +477,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3548,6 +3548,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30324,8 +30330,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36719,7 +36725,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36739,7 +36745,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47564,6 +47570,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66873,11 +66891,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74920,8 +74939,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/vi.po b/doc/translations/vi.po
index 74ac1a139c..b813d4a4a5 100644
--- a/doc/translations/vi.po
+++ b/doc/translations/vi.po
@@ -477,7 +477,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3825,6 +3825,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30622,8 +30628,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -37021,7 +37027,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -37042,7 +37048,7 @@ msgstr "ÄÆ¡n Nhất [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47880,6 +47886,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -67206,11 +67224,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -75261,8 +75280,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index 48df370c61..aed2ffbe21 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -62,8 +62,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-06-13 03:39+0000\n"
-"Last-Translator: Magian <magian1127@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
+"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -71,7 +71,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -516,9 +516,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4246,11 +4247,10 @@ msgid ""
msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½åçš„2D物ç†å±‚。"
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid ""
"Hints that an integer property is a bitmask using the optionally named 2D "
"navigation layers."
-msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½åçš„2D渲染层。"
+msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å或ä¸å…·åçš„ 2D 导航层。"
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -4265,6 +4265,13 @@ msgid ""
msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½åçš„3D物ç†å±‚。"
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å或ä¸å…·åçš„ 2D 导航层。"
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -10670,13 +10677,12 @@ msgstr ""
"如果已ç»å­˜åœ¨ä¸€ä¸ªç»™å®š [code]id[/code] 的点,它的ä½ç½®å’Œæƒé‡å°†è¢«æ›´æ–°ä¸ºç»™å®šå€¼ã€‚"
#: doc/classes/AStar2D.xml
-#, fuzzy
msgid ""
"Returns whether there is a connection/segment between the given points. If "
"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
-"返回两个给定点是å¦é€šè¿‡çº¿æ®µç›´æŽ¥è¿žæŽ¥ã€‚如果 [code]bidirectional[/code] 为 "
+"返回两个给定点之间是å¦å­˜åœ¨è¿žæŽ¥/线段。如果 [code]bidirectional[/code] 为 "
"[code]false[/code],则返回是å¦å¯ä»¥é€šè¿‡æ­¤æ®µä»Ž [code]id[/code] 到 [code]to_id[/"
"code] 进行移动。"
@@ -10948,7 +10954,6 @@ msgid "Captures audio from an audio bus in real-time."
msgstr "ä»ŽéŸ³é¢‘æ€»çº¿ä¸Šå®žæ—¶æ•æ‰éŸ³é¢‘。"
#: doc/classes/AudioEffectCapture.xml
-#, fuzzy
msgid ""
"AudioEffectCapture is an AudioEffect which copies all audio frames from the "
"attached audio effect bus into its internal ring buffer.\n"
@@ -10959,10 +10964,11 @@ msgid ""
"microphone, the format of the samples will be stereo 32-bit floating point "
"PCM."
msgstr ""
-"音频效果æ•获是一ç§éŸ³é¢‘效果,å¯å°†æ‰€é™„音频效果总线的所有音频帧å¤åˆ¶åˆ°å…¶å†…部环缓"
-"冲器中。\n"
-"应用程åºä»£ç åº”使用 [method get_buffer]从该环缓冲器中消耗这些音频帧,并根æ®éœ€"
-"è¦è¿›è¡Œå¤„ç†ï¼Œä¾‹å¦‚从麦克风æ•获数æ®ã€å®žçŽ°åº”ç”¨ç¨‹åºå®šä¹‰çš„æ•ˆæžœæˆ–通过网络传输音频。"
+"AudioEffectCapture æ˜¯ä¸€ç§ AudioEffect,å¯å°†æ‰€é™„音频效果总线的所有音频帧å¤åˆ¶åˆ°"
+"其内部的环形缓冲器中。\n"
+"应用程åºä»£ç åº”使用 [method get_buffer] 从该环形缓冲器中消耗这些音频帧,并根æ®"
+"需è¦è¿›è¡Œå¤„ç†ï¼Œä¾‹å¦‚从麦克风æ•获数æ®ã€å®žçŽ°åº”ç”¨ç¨‹åºå®šä¹‰çš„æ•ˆæžœæˆ–通过网络传输音"
+"频。从麦克风æ•èŽ·éŸ³é¢‘æ•°æ®æ—¶ï¼Œæ ·æœ¬çš„æ ¼å¼ä¸ºç«‹ä½“声 32 使µ®ç‚¹æ•° PCM。"
#: doc/classes/AudioEffectCapture.xml
msgid ""
@@ -23728,9 +23734,8 @@ msgid ""
msgstr "渲染æä¾›ç»™å®ƒçš„[Curve]。简化了绘制曲线和/或ä¿å­˜ä¸ºå›¾åƒæ–‡ä»¶çš„任务。"
#: doc/classes/CurveTexture.xml
-#, fuzzy
msgid "The [Curve] that is rendered onto the texture."
-msgstr "渲染到纹ç†ä¸Šçš„[code]curve[/code]。"
+msgstr "渲染到纹ç†ä¸Šçš„ [Curve]。"
#: doc/classes/CurveTexture.xml
msgid ""
@@ -23738,6 +23743,8 @@ msgid ""
"represent high-frequency data better (such as sudden direction changes), at "
"the cost of increased generation time and memory usage."
msgstr ""
+"纹ç†å®½åº¦ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚较大的值能够更好地表示高频数æ®ï¼ˆä¾‹å¦‚æ–¹å‘çš„çªå˜ï¼‰ï¼Œä½†"
+"ä¼šå¢žåŠ ç”Ÿæˆæ—¶é—´å’Œå†…å­˜å ç”¨ã€‚"
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -24161,6 +24168,8 @@ msgid ""
"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
"[code]true[/code]."
msgstr ""
+"å°† [code]dictionary[/code] 中的元素添加到这个 [Dictionary] 中。默认情况下,ä¸"
+"会å¤åˆ¶é‡å¤çš„é”®ï¼Œé™¤éž [code]overwrite[/code] 为 [code]true[/code]。"
#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
@@ -26779,6 +26788,20 @@ msgid ""
" return state\n"
"[/codeblock]"
msgstr ""
+"覆盖这个方法å¯ç”¨äºŽæä¾›æƒ³è¦ä¿å­˜çš„çŠ¶æ€æ•°æ®ï¼Œç±»ä¼¼è§†å›¾ä½ç½®ã€ç½‘æ ¼è®¾ç½®ã€æŠ˜å æƒ…况"
+"等。会在ä¿å­˜åœºæ™¯ï¼ˆå†æ¬¡æ‰“开时ä¿ç•™çжæ€ï¼‰å’Œåˆ‡æ¢æ ‡ç­¾é¡µï¼ˆåˆ‡å›žæ ‡ç­¾é¡µæ—¶æ¢å¤çжæ€ï¼‰æ—¶"
+"用到。这些数æ®ä¼šè‡ªåЍä¿å­˜åˆ°ç¼–è¾‘å™¨å…ƒæ•°æ®æ–‡ä»¶å¤¹ä¸­å„个场景的 [code]editstate[/"
+"code] 文件中。如果你想è¦ä¸ºæ’ä»¶ä¿å­˜å…¨å±€ï¼ˆä¸Žåœºæ™¯æ— å…³ï¼‰çš„编辑器数æ®ï¼Œä½ å¯ä»¥æ¢æˆ "
+"[method get_window_layout]。\n"
+"请使用 [method set_state] æ¢å¤ä¿å­˜çš„状æ€ã€‚\n"
+"[b]注æ„:[/b]é‡è¦çš„设置应该和项目一起进行æŒä¹…化,ä¸åº”该用这个方法æ¥ä¿å­˜ã€‚\n"
+"[b]注æ„:[/b]ä½ åªæœ‰å…ˆå®žçް [method get_plugin_name]ï¼ŒçŠ¶æ€æ‰èƒ½å¤Ÿè¿›è¡Œæ­£ç¡®çš„ä¿å­˜"
+"å’Œæ¢å¤ã€‚\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -26803,6 +26826,17 @@ msgid ""
" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
"[/codeblock]"
msgstr ""
+"覆盖这个方法å¯ç”¨äºŽæä¾›è¯¥æ’ä»¶çš„ GUI 布局或者任何其他你想è¦ä¿å­˜çš„æ•°æ®ã€‚会在调"
+"用 [method queue_save_layout] ä¿å­˜é¡¹ç›®çš„编辑器布局或者编辑器布局å‘生改å˜ï¼ˆä¾‹"
+"如修改åœé é¢æ¿çš„ä½ç½®ï¼‰æ—¶ç”¨åˆ°ã€‚æ•°æ®ä¼šä¿å­˜åˆ°ç¼–辑器元数æ®ç›®å½•çš„ "
+"[code]editor_layout.cfg[/code] 文件中。\n"
+"请使用 [method set_window_layout] æ¢å¤ä¿å­˜çš„布局。\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -26941,6 +26975,15 @@ msgid ""
" preferred_color = data.get(\"my_color\", Color.white)\n"
"[/codeblock]"
msgstr ""
+"æ¢å¤ç”¨ [method get_state] ä¿å­˜çš„状æ€ã€‚这个方法会在编辑器的当å‰åœºæ™¯æ ‡ç­¾é¡µå‘生"
+"æ”¹å˜æ—¶è°ƒç”¨ã€‚\n"
+"[b]注æ„:[/b]ä½ çš„æ’件必须实现 [method get_plugin_name],å¦åˆ™æ— æ³•被识别,这个"
+"方法也ä¸ä¼šè¢«è°ƒç”¨ã€‚\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -26955,6 +26998,16 @@ msgid ""
"Color.white)\n"
"[/codeblock]"
msgstr ""
+"æ¢å¤ç”¨ [method get_window_layout] ä¿å­˜çš„æ’ä»¶ GUI 布局和数æ®ã€‚编辑器å¯åŠ¨æ—¶ä¼šè°ƒ"
+"用æ¯ä¸€ä¸ªæ’件的这个方法。请使用æä¾›çš„ [code]configuration[/code] 文件读å–ä½ ä¿"
+"存的数æ®ã€‚\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -32816,7 +32869,6 @@ msgid "Gradient-filled texture."
msgstr "æ¸å˜å¡«å……纹ç†ã€‚"
#: doc/classes/GradientTexture.xml
-#, fuzzy
msgid ""
"GradientTexture uses a [Gradient] to fill the texture data. The gradient "
"will be filled from left to right using colors obtained from the gradient. "
@@ -32825,9 +32877,10 @@ msgid ""
"at fixed steps (see [member width]). See also [GradientTexture2D] and "
"[CurveTexture]."
msgstr ""
-"GradientTexture使用[Gradient]æ¥å¡«å……çº¹ç†æ•°æ®ã€‚æ¸å˜å°†ä½¿ç”¨ä»Žä¸­èŽ·å¾—çš„é¢œè‰²ä»Žå·¦åˆ°å³"
-"填充。这æ„味ç€çº¹ç†ä¸ä¸€å®šä»£è¡¨æ¸å˜çš„精确副本,而是以固定的步长从æ¸å˜ä¸­èŽ·å¾—çš„æ ·"
-"本的æ’值,è§[member width]。"
+"GradientTexture 使用 [Gradient] æ¥å¡«å……çº¹ç†æ•°æ®ã€‚æ¸å˜å°†ä½¿ç”¨ä»Žä¸­èŽ·å¾—çš„é¢œè‰²ä»Žå·¦"
+"到å³å¡«å……。这æ„味ç€çº¹ç†ä¸ä¸€å®šä»£è¡¨æ¸å˜çš„精确副本,而是以固定的步长从æ¸å˜ä¸­èŽ·å¾—"
+"的样本的æ’å€¼ï¼ˆè§ [member width])。å¦è¯·å‚阅 [GradientTexture2D] å’Œ "
+"[CurveTexture]。"
#: doc/classes/GradientTexture.xml
msgid "The [Gradient] that will be used to fill the texture."
@@ -32842,7 +32895,6 @@ msgid "Gradient-filled 2D texture."
msgstr "使用æ¸å˜å¡«å……çš„ 2D 纹ç†ã€‚"
#: doc/classes/GradientTexture2D.xml
-#, fuzzy
msgid ""
"The texture uses a [Gradient] to fill the texture data in 2D space. The "
"gradient is filled according to the specified [member fill] and [member "
@@ -32854,8 +32906,8 @@ msgid ""
msgstr ""
"该纹ç†ä½¿ç”¨ [Gradient] æ¸å˜æ¥å¡«å…… 2D ç©ºé—´çº¹ç†æ•°æ®ã€‚æ¸å˜ä¼šæ ¹æ® [member fill] "
"å’Œ [member repeat] 类型,使用从æ¸å˜ä¸­èŽ·å–çš„é¢œè‰²è¿›è¡Œå¡«å……ã€‚è¯¥çº¹ç†æœªå¿…精确表示该"
-"æ¸å˜ï¼Œå¯ä»¥æ˜¯ä»Žè¯¥æ¸å˜ä¸ŠæŒ‰ç…§å›ºå®šæ­¥é•¿è¿›è¡Œé‡‡æ ·åŽå†è¿›è¡Œæ’值(请å‚阅 [member "
-"width] 和 [member height])。"
+"æ¸å˜ï¼Œå¯ä»¥æ˜¯ä»Žè¯¥æ¸å˜ä¸ŠæŒ‰ç…§å›ºå®šæ­¥é•¿è¿›è¡Œé‡‡æ ·åŽå†è¿›è¡Œæ’å€¼ï¼ˆè§ [member width] å’Œ "
+"[member height])。å¦è¯·å‚阅 [GradientTexture] å’Œ [CurveTexture]。"
#: doc/classes/GradientTexture2D.xml
msgid ""
@@ -33789,11 +33841,12 @@ msgstr ""
"[code]pos[/code] 应该使用 GridMap çš„æœ¬åœ°åæ ‡ç©ºé—´ã€‚"
#: modules/gridmap/doc_classes/GridMap.xml
-#, fuzzy
msgid ""
"If [code]true[/code], this GridMap uses cell navmesh resources to create "
"navigation regions."
-msgstr "如果[code]true[/code]ï¼Œæ ¹æ®æµç¨‹ç›¸å…³é€šçŸ¥æ›´æ–°åŠ¨ç”»ã€‚"
+msgstr ""
+"为 [code]true[/code] 时,这个 GridMap 会使用å•å…ƒæ ¼çš„å¯¼èˆªç½‘æ ¼èµ„æºæ¥åˆ›å»ºå¯¼èˆªåœ°"
+"区。"
#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
@@ -33858,7 +33911,7 @@ msgstr "指定的 [MeshLibrary]。"
#: modules/gridmap/doc_classes/GridMap.xml
msgid "The navigation layers the GridMap generates its navigation regions in."
-msgstr ""
+msgstr "GridMap 生æˆå¯¼èˆªåœ°åŒºçš„导航层。"
#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
@@ -36982,7 +37035,6 @@ msgid ""
msgstr "在映射数æ®åº“中添加新的映射æ¡ç›®ï¼ˆSDL2 æ ¼å¼ï¼‰ã€‚å¯é€‰æ›´æ–°å·²è¿žæŽ¥çš„设备。"
#: doc/classes/Input.xml
-#, fuzzy
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
@@ -36993,9 +37045,8 @@ msgid ""
"want precise control over the timing of event handling."
msgstr ""
"将当å‰ç¼“冲区内的所有输入事件å‘é€ç»™æ¸¸æˆå¾ªçŽ¯ã€‚è¿™äº›äº‹ä»¶å¯èƒ½æ˜¯ç”±äºŽç´¯ç§¯è¾“å…¥"
-"([method set_use_accumulated_input]ï¼‰æˆ–æ•æ·è¾“入刷新([member "
-"ProjectSettings.input_devices/buffering/agile_event_flushing])而被缓冲的结"
-"果。\n"
+"([member use_accumulated_input]ï¼‰æˆ–æ•æ·è¾“入刷新([member ProjectSettings."
+"input_devices/buffering/agile_event_flushing])而被缓冲的结果。\n"
"引擎已ç»ä¼šåœ¨å…³é”®çš„æ‰§è¡Œç‚¹æ‰§è¡Œæ­¤æ“作,至少æ¯å¸§ä¸€æ¬¡ã€‚然而,在你想è¦ç²¾ç¡®æŽ§åˆ¶äº‹ä»¶"
"å¤„ç†æ—¶é—´çš„高级情况下,这å¯èƒ½æ˜¯æœ‰ç”¨çš„。"
@@ -37513,12 +37564,10 @@ msgstr ""
"MOUSE_MODE_CONFINED] 时则是é™åˆ¶åœ¨æ¸¸æˆçª—å£å†…。"
#: doc/classes/Input.xml
-#, fuzzy
msgid "Controls the mouse mode. See [enum MouseMode] for more information."
-msgstr "设置鼠标模å¼ã€‚有关更多信æ¯ï¼Œè¯·å‚阅常é‡ã€‚"
+msgstr "控制鼠标模å¼ã€‚详情请å‚阅 [enum MouseMode]。"
#: doc/classes/Input.xml
-#, fuzzy
msgid ""
"If [code]true[/code], similar input events sent by the operating system are "
"accumulated. When input accumulation is enabled, all input events generated "
@@ -37531,9 +37580,9 @@ msgid ""
"while the user is drawing the line to get results that closely follow the "
"actual input."
msgstr ""
-"å¯ç”¨æˆ–ç¦ç”¨æ“作系统å‘é€çš„类似输入事件的累积。当å¯ç”¨è¾“入累积时,在一帧中产生的"
-"所有输入事件将被åˆå¹¶ï¼Œå¹¶åœ¨è¯¥å¸§å®Œæˆæ¸²æŸ“æ—¶å‘出。因此,这é™åˆ¶äº†æ¯ç§’的输入方法调"
-"用次数,使之与渲染FPS相一致。\n"
+"如果为 [code]true[/code],会对æ“作系统å‘é€çš„类似输入事件进行累积。当å¯ç”¨è¾“å…¥"
+"累积时,在一帧中产生的所有输入事件将被åˆå¹¶ï¼Œå¹¶åœ¨è¯¥å¸§å®Œæˆæ¸²æŸ“æ—¶å‘出。因此,这"
+"é™åˆ¶äº†æ¯ç§’的输入方法调用次数,使之与渲染FPS相一致。\n"
"输入累加在默认情况下是å¯ç”¨çš„。它å¯ä»¥è¢«ç¦ç”¨ï¼Œå°†ä»¥å¢žåŠ CPU使用率为代价,获得ç¨å¾®"
"æ›´ç²¾ç¡®åŠæ›´çµæ•的输入。在需è¦è‡ªç”±ç»˜åˆ¶çº¿æ¡çš„åº”ç”¨ä¸­ï¼Œä¸€èˆ¬åº”ç”¨åœ¨ç”¨æˆ·ç»˜åˆ¶çº¿æ¡æ—¶ç¦"
"用输入累加,以获得紧跟实际输入的结果。"
@@ -37925,9 +37974,10 @@ msgstr ""
"被释放。"
#: doc/classes/InputEventJoypadButton.xml
+#, fuzzy
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
"如果控制器支æŒï¼Œåˆ™è¡¨ç¤ºç”¨æˆ·ç”¨æ‰‹æŒ‡åœ¨æŒ‰é’®ä¸Šæ–½åŠ çš„åŽ‹åŠ›ã€‚èŒƒå›´ä»Ž [code]0[/code] 到 "
"[code]1[/code]。"
@@ -38261,7 +38311,6 @@ msgid "Input event type for mouse motion events."
msgstr "鼠标移动事件的输入事件类型。"
#: doc/classes/InputEventMouseMotion.xml
-#, fuzzy
msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
@@ -38276,11 +38325,11 @@ msgstr ""
"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚请å‚阅 [method Node."
"_input]。\n"
"[b]注æ„:[/b]默认情况下,这个事件最多åªèƒ½åœ¨æ¯ä¸€å¸§æ¸²æŸ“中å‘å‡ºä¸€æ¬¡ã€‚å¦‚æžœä½ éœ€è¦æ›´"
-"精确的输入报告,请用 [code]false[/code] 调用 [method Input."
-"set_use_accumulated_input] æ¥ä½¿äº‹ä»¶å°½å¯èƒ½é¢‘ç¹åœ°å‘射。如果你使用 "
-"InputEventMouseMotion æ¥ç”»çº¿ï¼Œè¯·è€ƒè™‘åŒæ—¶å®žçް [url=https://en.wikipedia.org/"
-"wiki/Bresenham%27s_line_algorithm]Bresenham 的线æ¡ç®—法[/url],以é¿å…在用户快"
-"速移动鼠标时出现å¯è§çš„线æ¡ç©ºéš™ã€‚"
+"精确的输入报告,请将 [member Input.use_accumulated_input] 设为 [code]false[/"
+"code],让事件尽å¯èƒ½é¢‘ç¹åœ°å‘射。如果你使用 InputEventMouseMotion æ¥ç”»çº¿ï¼Œè¯·è€ƒ"
+"è™‘åŒæ—¶å®žçް [url=https://en.wikipedia.org/wiki/"
+"Bresenham%27s_line_algorithm]Bresenham 的线æ¡ç®—法[/url],以é¿å…在用户快速移动"
+"鼠标时出现å¯è§çš„线æ¡ç©ºéš™ã€‚"
#: doc/classes/InputEventMouseMotion.xml
msgid "Mouse and input coordinates"
@@ -43555,16 +43604,15 @@ msgid "Node used for displaying a [Mesh] in 2D."
msgstr "用于在2D中显示[Mesh]的节点。"
#: doc/classes/MeshInstance2D.xml
-#, fuzzy
msgid ""
"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
"automatically created from an existing [Sprite] via a tool in the editor "
"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
-"用于在2D中显示[Mesh]的节点。å¯ä»¥é€šè¿‡ç¼–辑器工具æ ä¸Šçš„工具从现有的[Sprite]æž„"
-"建。选择 \"Sprite\",然åŽé€‰æ‹© \"转æ¢ä¸ºMesh2D\",在弹出的窗å£ä¸­é€‰æ‹©è®¾ç½®å¹¶æŒ‰ä¸‹ "
-"\"创建Mesh2D\"。"
+"用于在 2D 中显示 [Mesh] 的节点。å¯ä»¥é€šè¿‡ç¼–辑器工具æ ä¸Šçš„工具从现有的 "
+"[Sprite] 构建。选中 [Sprite] 节点,然åŽåœ¨ 2D 编辑器视区顶部选择[b]ç²¾çµ > 转æ¢"
+"为 MeshInstance2D[/b]。"
#: doc/classes/MeshInstance2D.xml
msgid "The [Mesh] that will be drawn by the [MeshInstance2D]."
@@ -44562,9 +44610,8 @@ msgstr ""
"导航网格之间的交点。如果找到多个交点,则返回最接近线段起点的交点。"
#: doc/classes/Navigation.xml
-#, fuzzy
msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
-msgstr "返回这个代ç†åœ¨ [NavigationServer] 上的 [RID]。"
+msgstr "返回这个导航地图在 [NavigationServer] 上的 [RID]。"
#: doc/classes/Navigation.xml
msgid ""
@@ -44595,6 +44642,8 @@ msgid ""
"A bitfield determining all navigation map layers the navigation can use on a "
"[method Navigation.get_simple_path] path query."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šåœ¨ä½¿ç”¨ [method Navigation.get_simple_path] 进行路径请求时,导航"
+"所能用到的导航地图层。"
#: doc/classes/Navigation.xml
msgid ""
@@ -44608,7 +44657,7 @@ msgstr ""
#: doc/classes/NavigationServer.xml
msgid ""
"Emitted when a navigation map is updated, when a region moves or is modified."
-msgstr ""
+msgstr "当导航地图更新时ã€åœ°åŒºç§»åŠ¨æˆ–è¢«ä¿®æ”¹æ—¶å‘出。"
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
@@ -44656,13 +44705,14 @@ msgid ""
"A bitfield determining all navigation map layers the navigation can use on a "
"[method Navigation2D.get_simple_path] path query."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šåœ¨ä½¿ç”¨ [method Navigation2D.get_simple_path] 进行路径请求时,导"
+"航所能用到的导航地图层。"
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr "访问底层 2D 导航的æœåŠ¡å™¨æŽ¥å£ã€‚"
#: doc/classes/Navigation2DServer.xml
-#, fuzzy
msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
@@ -44699,8 +44749,11 @@ msgstr ""
"å³ç”Ÿæ•ˆçš„。SceneTree 中导航相关的节点对地图ã€åœ°åŒºã€ä»£ç†ä½œå‡ºçš„修改也是如此,通"
"过脚本作出的修改亦然。\n"
"两个地区必须共有一æ¡ç›¸ä¼¼çš„边界(edge)æ‰èƒ½ç›¸è¿žã€‚如果一æ¡è¾¹ç•Œçš„两个顶点"
-"(vertex)与å¦ä¸€æ¡è¾¹ç•Œçš„对应顶点的è·ç¦»å°äºŽ [member Navigation."
-"edge_connection_margin],则认为这两æ¡è¾¹ç•Œç›¸è¿žã€‚\n"
+"(vertex)与å¦ä¸€æ¡è¾¹ç•Œçš„对应顶点的è·ç¦»å°äºŽ [code]edge_connection_margin[/"
+"code],则认为这两æ¡è¾¹ç•Œç›¸è¿žã€‚\n"
+"ä½ å¯ä»¥é€šè¿‡ [method Navigation2DServer.region_set_navigation_layers] 为地区设"
+"置导航层,使用 [method Navigation2DServer.map_get_path] 请求路径时会对导航层"
+"进行检查。这样就能够对 2D 对象å¯ç”¨æˆ–ç¦ç”¨æŸäº›åŒºåŸŸã€‚\n"
"è¦ä½¿ç”¨é˜²æ’žç³»ç»Ÿï¼Œå¯ä»¥ä½¿ç”¨ä»£ç†ã€‚ä½ å¯ä»¥è®¾ç½®ä»£ç†çš„目标速度,æœåŠ¡å™¨å°±ä¼šä½¿ç”¨ä¿®æ­£åŽ"
"的速度触å‘回调。\n"
"[b]注æ„:[/b]防撞系统会忽略地区。直接使用修正åŽçš„速度å¯èƒ½ä¼šå°†ä»£ç†æŽ¨åˆ°å¯å¯¼èˆªåŒº"
@@ -44735,6 +44788,12 @@ msgid ""
"agent_set_callback] again with a [code]null[/code] object as the "
"[code]receiver[/code]."
msgstr ""
+"在 RVO å¤„ç†æœ«å°¾è°ƒç”¨çš„回调。如果手动创建了回调,并且代ç†ä½äºŽå¯¼èˆªåœ°å›¾ä¸Šï¼Œå°±ä¼šä¸º"
+"该代ç†è®¡ç®—é¿éšœï¼Œå¹¶å°†è®¡ç®—出的安全速度 [code]safe_velocity[/code] 通过信å·å‘é€"
+"ç»™ [code]receiver[/code] 对象上å为 [code]method[/code] 的方法。\n"
+"[b]注æ„:[/b]åªè¦ä»£ç†è¿˜åœ¨å¯¼èˆªåœ°å›¾ä¸Šä¸”未被释放,创建的回调就始终会进行处ç†ï¼Œæ— "
+"论 SceneTree 的状æ€å¦‚何。è¦ç¦ç”¨æŸä¸ªä»£ç†çš„回调分å‘ï¼Œè¯·å†æ¬¡ä½¿ç”¨ [method "
+"agent_set_callback],为 [code]receiver[/code] 设置为 [code]null[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Puts the agent in the map."
@@ -44805,9 +44864,8 @@ msgid ""
msgstr "返回所有与请求的导航地图 [code]map[/code] å…³è”的导航代ç†çš„ [RID]。"
#: doc/classes/Navigation2DServer.xml
-#, fuzzy
msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
-msgstr "获å–è¢«è§£æžæ–‡ä»¶ä¸­çš„当å‰è¡Œï¼ˆç›®å‰æœªå®žçŽ°ï¼‰ã€‚"
+msgstr "返回地图å•元格高度。[b]注æ„:[/b]尚未实现。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
@@ -44837,6 +44895,8 @@ msgid ""
"[code]navigation_layers[/code] is a bitmask of all region layers that are "
"allowed to be in the path."
msgstr ""
+"返回从起点到达终点的导航路径。[code]navigation_layers[/code] 是å…许在路径中出"
+"çŽ°çš„æ‰€æœ‰åœ°åŒºå±‚çš„ä½æŽ©ç ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -44853,11 +44913,10 @@ msgid "Sets the map active."
msgstr "设置地图的激活æ€ã€‚"
#: doc/classes/Navigation2DServer.xml
-#, fuzzy
msgid ""
"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
"b] Currently not implemented."
-msgstr "设置用于焊接导航网格多边形的地图å•元格高度。"
+msgstr "设置用于焊接导航网格多边形的地图å•元格高度。[b]注æ„:[/b]尚未实现。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
@@ -44878,6 +44937,8 @@ msgid ""
"index between 0 and the return value of [method "
"region_get_connections_count]."
msgstr ""
+"返回连接门的终点。[code]connection[/code] 是 0 和 [method "
+"region_get_connections_count] 返回值之间的索引å·ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -44885,18 +44946,18 @@ msgid ""
"an index between 0 and the return value of [method "
"region_get_connections_count]."
msgstr ""
+"返回连接门的起点。[code]connection[/code] 是 0 和 [method "
+"region_get_connections_count] 返回值之间的索引å·ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid ""
"Returns how many connections this [code]region[/code] has with other regions "
"in the map."
-msgstr "返回 [code]点[/code]在平é¢ä¸Šçš„æ­£äº¤æŠ•影。"
+msgstr "返回 [code]region[/code] 地区与其他地区在地图上有多少连接。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
-msgstr "å¦‚æžœç»™å®šçš„ä¿¡å· [code]signal[/code] 存在,则返回 [code]true[/code]。"
+msgstr "返回 [code]region[/code] 地区的进入消耗 [code]enter_cost[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -44905,19 +44966,16 @@ msgid ""
msgstr "返回请求的导航地区 [code]region[/code] 所关è”的导航地图的 [RID]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Returns the region's navigation layers."
-msgstr "返回该项的导航网格。"
+msgstr "返回该地区的导航层。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
-msgstr "å¦‚æžœç»™å®šçš„ä¿¡å· [code]signal[/code] 存在,则返回 [code]true[/code]。"
+msgstr "返回 [code]region[/code] 地区的移动消耗 [code]travel_cost[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
-msgstr "为具有给定[code]id[/code]的点设置[code]position[/code]。"
+msgstr "设置 [code]region[/code] 地区的进入消耗 [code]enter_cost[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
@@ -44928,6 +44986,8 @@ msgid ""
"Set the region's navigation layers. This allows selecting regions from a "
"path request (when using [method Navigation2DServer.map_get_path])."
msgstr ""
+"设置该地区的导航层。å¯ç”¨äºŽï¼ˆä½¿ç”¨ [method Navigation2DServer.map_get_path])请"
+"求路径时对地区进行选择。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
@@ -44938,9 +44998,8 @@ msgid "Sets the global transformation for the region."
msgstr "è®¾ç½®è¯¥åœ°åŒºçš„å…¨å±€å˜æ¢ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
-msgstr "为具有给定[code]id[/code]的点设置[code]position[/code]。"
+msgstr "设置 [code]region[/code] 地区的移动消耗 [code]travel_cost[/code]。"
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
@@ -44962,6 +45021,15 @@ msgid ""
"position from this function should be used as the next movement position for "
"the agent's parent Node."
msgstr ""
+"导航中使用的 3D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåЍæ€éšœç¢ç‰©ã€‚躲é¿åЍæ€éšœç¢"
+"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚默认情况下,这个节点会在默认的 [World] 导航地图中进"
+"行注册。如果这个节点是 [Navigation] 节点的å­é¡¹ï¼Œé‚£ä¹ˆå°±ä¼šåœ¨è¿™ä¸ªå¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆª"
+"地图中进行注册,也å¯ä»¥ä½¿ç”¨ [method set_navigation] 函数直接设置导航节点。"
+"[NavigationAgent] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]使用 [method set_target_location] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€"
+"次 [method get_next_location] å‡½æ•°æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个"
+"函数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
@@ -44992,6 +45060,11 @@ msgid ""
"for the agents movement as this function also updates the internal path "
"logic."
msgstr ""
+"返回这个代ç†ä»Žèµ·ç‚¹åˆ°ç»ˆç‚¹çš„当å‰è·¯å¾„ï¼Œä½¿ç”¨å…¨å±€åæ ‡ã€‚该路径åªä¼šåœ¨ç›®æ ‡ä½ç½®å‘生å˜"
+"化,或者代ç†è¦æ±‚釿–°è®¡ç®—路径时更新。路径数组ä¸åº”ç›´æŽ¥ç”¨ä½œç§»åŠ¨è·¯å¾„ï¼Œä»£ç†æœ‰å…¶å†…"
+"部的路径逻辑,手动修改路径数组å¯èƒ½ä¼šé€ æˆç ´å。请在æ¯ä¸€ä¸ªç‰©ç†å¸§ä¸­è°ƒç”¨ä¸€æ¬¡ "
+"[method get_next_location] 获å–该代ç†çš„下一个路径点,这个函数会更新其内部的路"
+"径逻辑。"
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -45015,9 +45088,13 @@ msgid ""
"the navigation map for the NavigationAgent and also update the agent on the "
"NavigationServer."
msgstr ""
+"返回这个 NavigationAgent 节点的导航地图的 [RID]。这个函数返回的始终是在 "
+"NavigationAgent ä¸Šè®¾ç½®çš„åœ°å›¾ï¼Œä¸æ˜¯ NavigationServer ä¸Šçš„æŠ½è±¡ä»£ç†æ‰€ä½¿ç”¨çš„地"
+"图。如果通过 NavigationServer API 修改了代ç†çš„地图,该 NavigationAgent 节点是"
+"ä¸ä¼šæ„ŸçŸ¥åˆ°åœ°å›¾çš„å˜åŒ–的。请使用 [method set_navigation_map] 修改该 "
+"NavigationAgent çš„å¯¼èˆªåœ°å›¾ï¼Œèƒ½å¤ŸåŒæ—¶åœ¨ NavigationServer 上的代ç†ã€‚"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
msgid ""
"Returns the next location in global coordinates that can be moved to, making "
"sure that there are no static objects in the way. If the agent does not have "
@@ -45025,8 +45102,9 @@ msgid ""
"use of this function once every physics frame is required to update the "
"internal path logic of the NavigationAgent."
msgstr ""
-"返回å¯ä»¥ç§»åŠ¨è‡³çš„ [Vector2] 免局忠‡ï¼Œç¡®ä¿ä¸­é€”æ²¡æœ‰é™æ€ç‰©ä½“é˜»æŒ¡ã€‚å¦‚æžœä»£ç†æ²¡æœ‰å¯¼"
-"航路径,则会返回代ç†çˆ¶èŠ‚ç‚¹çš„åŽŸç‚¹ã€‚"
+"返回å¯ä»¥ç§»åŠ¨è‡³çš„ä¸‹ä¸€ä¸ªä½ç½®ï¼Œä½¿ç”¨å…¨å±€å标,确ä¿ä¸­é€”æ²¡æœ‰é™æ€ç‰©ä½“阻挡。如果代ç†"
+"没有导航路径,则会返回代ç†çˆ¶èŠ‚ç‚¹çš„ä½ç½®ã€‚必须在æ¯ä¸ªç‰©ç†å¸§éƒ½è°ƒç”¨ä¸€æ¬¡è¿™ä¸ªå‡½æ•°ï¼Œ"
+"更新 NavigationAgent 内部的路径逻辑。"
#: doc/classes/NavigationAgent.xml
msgid "Returns the [RID] of this agent on the [NavigationServer]."
@@ -45076,6 +45154,8 @@ msgid ""
"Sets the [RID] of the navigation map this NavigationAgent node should use "
"and also updates the [code]agent[/code] on the NavigationServer."
msgstr ""
+"设置这个 NavigationAgent 节点所应使用的导航地图的 [RID]ï¼ŒåŒæ—¶è¿˜ä¼šæ›´æ–° "
+"NavigationServer ä¸Šçš„ä»£ç† [code]agent[/code]。"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
@@ -45101,6 +45181,10 @@ msgid ""
"that the developer baked with appropriate agent radius or height values are "
"required to support different-sized agents."
msgstr ""
+"这个 NavigationAgent 的任何å‘é‡ä½ç½®çš„ Y åæ ‡å€¼éƒ½ä¼šå‡åŽ» NavigationAgent 的高度"
+"åç§»é‡ã€‚NavigationAgent 的高度åç§»é‡ä¸ä¼šå‘生改å˜ï¼Œä¹Ÿä¸ä¼šå½±å“导航网格和寻路结"
+"果。如果其他导航地图使用了带有导航网格的地区,开å‘者使用åˆé€‚的代ç†åŠå¾„或高度"
+"对其进行了烘焙,那么就必须支æŒä¸åŒå¤§å°çš„代ç†ã€‚"
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -45137,6 +45221,8 @@ msgid ""
"belongs to. On path requests the agent will ignore navmeshes without at "
"least one matching layer."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationAgent] 所属的导航地图层。请求路径时,代ç†ä¼šå¿½ç•¥æ²¡"
+"有任何匹é…层的导航网格。"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
@@ -45219,6 +45305,15 @@ msgid ""
"position from this function should be used as the next movement position for "
"the agent's parent Node."
msgstr ""
+"导航中使用的 2D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåЍæ€éšœç¢ç‰©ã€‚躲é¿åЍæ€éšœç¢"
+"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚默认情况下,这个节点会在默认的 [World2D] 导航地图中"
+"进行注册。如果这个节点是 [Navigation2D] 节点的å­é¡¹ï¼Œé‚£ä¹ˆå°±ä¼šåœ¨è¿™ä¸ªå¯¼èˆªèŠ‚ç‚¹çš„"
+"导航地图中进行注册,也å¯ä»¥ä½¿ç”¨ [method set_navigation] 函数直接设置导航节点。"
+"[NavigationAgent2D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]使用 [method set_target_location] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€"
+"次 [method get_next_location] å‡½æ•°æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个"
+"函数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
#: doc/classes/NavigationAgent2D.xml
msgid ""
@@ -45265,6 +45360,8 @@ msgid ""
"belongs to. On path requests the agent will ignore navmeshes without at "
"least one matching layer."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationAgent2D] 所属的导航地图层。请求路径时,代ç†ä¼šå¿½ç•¥"
+"没有任何匹é…层的导航网格。"
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
@@ -45297,11 +45394,11 @@ msgid ""
msgstr "é€šè¿‡æ ¹æ® [Mesh] 设置顶点和索引æ¥åˆå§‹åŒ–导航网格。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"Returns whether the specified [code]bit[/code] of the [member "
"geometry_collision_mask] is set."
-msgstr "返回[member geometry/collision_mask]的指定[code]bit[/code]是å¦è¢«è®¾ç½®ã€‚"
+msgstr ""
+"返回 [member geometry_collision_mask] 上指定的 [code]bit[/code] 是å¦å·²è®¾ç½®ã€‚"
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -45320,17 +45417,16 @@ msgid ""
msgstr "返回包å«ç”¨äºŽåˆ›å»ºå¤šè¾¹å½¢çš„æ‰€æœ‰é¡¶ç‚¹çš„[PoolVector3Array]。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
"code] in the [member geometry_collision_mask]."
msgstr ""
-"如果 [code]value[/code] 为 [code]true[/code],则在 [member geometry/"
-"collision_mask] 中设置指定的 [code]bit[/code]。\n"
-"如果 [code]value[/code] 为 [code]false[/code],则在 [member geometry/"
-"collision_mask] 中清除指定的 [code]bit[/code]。"
+"如果 [code]value[/code] 为 [code]true[/code],则在 [member "
+"geometry_collision_mask] 中设置指定的 [code]bit[/code]。\n"
+"如果 [code]value[/code] 为 [code]false[/code],则在 [member "
+"geometry_collision_mask] 中清除指定的 [code]bit[/code]。"
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -45339,7 +45435,6 @@ msgid ""
msgstr "设置顶点,然åŽä½¿ç”¨ [method add_polygon] 方法创建多边形。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
@@ -45347,24 +45442,22 @@ msgid ""
"multiple of [member cell_height]."
msgstr ""
"地æ¿åˆ°å¤©èбæ¿çš„æœ€å°é«˜åº¦ï¼Œä»ç„¶å…许被认为是å¯è¡Œèµ°çš„地æ¿ã€‚\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell/height] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell_height] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
"multiple of [member cell_height]."
msgstr ""
"被认为ä»å¯ç©¿è¶Šçš„æœ€å°å¢™å£é«˜åº¦ã€‚\n"
-"[b]注æ„:[/b]烘焙时,该值将å‘下èˆå…¥åˆ°æœ€æŽ¥è¿‘çš„ [member cell/height] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,该值将å‘下èˆå…¥åˆ°æœ€æŽ¥è¿‘çš„ [member cell_height] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "The maximum slope that is considered walkable, in degrees."
msgstr "认为å¯è¡Œèµ°çš„æœ€å¤§å¡åº¦ï¼Œå•使˜¯åº¦ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
@@ -45372,7 +45465,7 @@ msgid ""
"multiple of [member cell_size]."
msgstr ""
"侵蚀/缩å°è¿œç¦»éšœç¢ç‰©çš„高度场的å¯è¡Œèµ°åŒºåŸŸè·ç¦»ã€‚\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell/size] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell_size] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "The Y axis cell size to use for fields."
@@ -45396,46 +45489,42 @@ msgid ""
msgstr "简化轮廓的边界边缘应å离原始原始轮廓的最大è·ç¦»ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
"multiple of [member cell_size]."
msgstr ""
"沿网格边界的轮廓的最大å…许长度。\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell/size]çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell_size]çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr "如果为 [code]true[/code],则标记边缘间的跨度为ä¸å¯è¡Œèµ°ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
-"如果为 [code]true[/code],如果它们的最大值在å¯è¡Œèµ°é‚»åŸŸçš„ [member agent/"
-"max_climb] 内,则将ä¸å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºå¯è¡Œèµ°ã€‚"
+"如果为 [code]true[/code],如果它们的最大值在å¯è¡Œèµ°é‚»åŸŸçš„ [member "
+"agent_max_climb] 内,则将ä¸å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºå¯è¡Œèµ°ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"If [code]true[/code], marks walkable spans as not walkable if the clearance "
"above the span is less than [member agent_height]."
msgstr ""
-"如果为 [code]true[/code],如果跨度上方的间隙å°äºŽ [member agent/height],则将"
+"如果为 [code]true[/code],如果跨度上方的间隙å°äºŽ [member agent_height],则将"
"å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºä¸å¯è¡Œèµ°ã€‚"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The physics layers to scan for static colliders.\n"
"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
"用于扫æé™æ€ç¢°æ’žçš„物ç†å±‚。\n"
-"仅在 [member geometry/parsed_geometry_type]是[constant "
+"仅在 [member geometry_parsed_geometry_type] 是 [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] 或 [constant PARSED_GEOMETRY_BOTH] æ—¶æ‰ä½¿"
"用。"
@@ -45452,7 +45541,6 @@ msgid ""
msgstr "烘焙时使用的几何体的æºã€‚å‚阅 [enum SourceGeometryMode]。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"The name of the group to scan for geometry.\n"
"Only used when [member geometry_source_geometry_mode] is [constant "
@@ -45460,7 +45548,7 @@ msgid ""
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
"è¦æ‰«æçš„几何体组的å称。\n"
-"åªæœ‰å½“ [member geometry/source_geometry_mode]是[constant "
+"åªæœ‰å½“ [member geometry_source_geometry_mode] 是 [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] 或 [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT] æ—¶æ‰ä½¿ç”¨ã€‚"
@@ -45529,13 +45617,12 @@ msgstr ""
"将网格实例解æžä¸ºå‡ ä½•体。这包括 [MeshInstance]ã€[CSGShape] å’Œ [GridMap] 节点。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
"the layers specified by [member geometry_collision_mask]."
msgstr ""
-"å°† [StaticBody] 碰撞器解æžä¸ºå‡ ä½•体。碰撞器应ä½äºŽ [member geometry/"
-"collision_mask] 指定的任何层中。"
+"å°† [StaticBody] 碰撞器解æžä¸ºå‡ ä½•体。碰撞器应ä½äºŽ [member "
+"geometry_collision_mask] 指定的任何层中。"
#: doc/classes/NavigationMesh.xml
msgid ""
@@ -45555,21 +45642,19 @@ msgid ""
msgstr "递归扫æ [NavigationMeshInstance] çš„å­èŠ‚ç‚¹ä»¥èŽ·å–几何体。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
"group is specified by [member geometry_source_group_name]."
msgstr ""
-"ä»¥é€’å½’æ–¹å¼æ‰«æç»„中的节点åŠå…¶å­èŠ‚ç‚¹ä»¥èŽ·å–几何图形。该组由 [member geometry/"
-"source_group_name] 指定。"
+"ä»¥é€’å½’æ–¹å¼æ‰«æç»„中的节点åŠå…¶å­èŠ‚ç‚¹ä»¥èŽ·å–几何图形。该组由 [member "
+"geometry_source_group_name] 指定。"
#: doc/classes/NavigationMesh.xml
-#, fuzzy
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
"geometry_source_group_name]."
msgstr ""
-"使用一个组中的节点进行几何è¿ç®—。该组由 [member geometry/source_group_name] 指"
+"使用一个组中的节点进行几何è¿ç®—。该组由 [member geometry_source_group_name] 指"
"定。"
#: doc/classes/NavigationMesh.xml
@@ -45635,7 +45720,6 @@ msgstr ""
"[NavigationMeshInstance] 使用。"
#: doc/classes/NavigationMeshGenerator.xml
-#, fuzzy
msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
@@ -45646,8 +45730,8 @@ msgid ""
msgstr ""
"将导航数æ®çƒ˜ç„™è‡³æä¾›çš„ [code]nav_mesh[/code] 中。解æžçš„æ˜¯æä¾›çš„æ ¹èŠ‚ç‚¹ "
"[code]root_node[/code] çš„å­èŠ‚ç‚¹ï¼Œæˆ–å¯èƒ½åŒ…å«åŽŸå§‹å‡ ä½•ä½“çš„åˆ†ç»„ã€‚è§£æžè¡Œä¸ºå¯ä»¥é€š"
-"过 [NavigationMesh] 的 [member NavigationMesh.geometry/parsed_geometry_type] "
-"和 [member NavigationMesh.geometry/source_geometry_mode] 属性控制。"
+"过 [NavigationMesh] 的 [member NavigationMesh.geometry_parsed_geometry_type] "
+"和 [member NavigationMesh.geometry_source_geometry_mode] 属性控制。"
#: doc/classes/NavigationMeshGenerator.xml
msgid ""
@@ -45678,6 +45762,18 @@ msgid ""
"The cost of traveling distances inside this region can be controlled with "
"the [member travel_cost] multiplier."
msgstr ""
+"[NavigationMesh] 的实例。[Navigation] 节点根æ®å®ƒçš„ [NavigationMesh] èµ„æºæ¥ç¡®"
+"定哪些å¯ä»¥è¿›è¡Œå¯¼èˆªã€å“ªäº›ä¸èƒ½ã€‚\n"
+"默认情况下,这个节点会在默认的 [World] 导航地图中进行注册。如果这个节点是 "
+"[Navigation] 节点的å­é¡¹ï¼Œå°±ä¼šåœ¨è¯¥å¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆªåœ°å›¾ä¸­è¿›è¡Œæ³¨å†Œã€‚\n"
+"如果两个地图共享类似的边界,就å¯ä»¥ç›¸äº’连接。你å¯ä»¥é€šè¿‡ [method "
+"NavigationServer.map_set_edge_connection_margin] 设置两个顶点连接两æ¡è¾¹ç•Œæ‰€éœ€"
+"的最å°è·ç¦»ã€‚\n"
+"[b]注æ„:[/b]将两个地区的导航网格相互é‡å å¹¶ä¸è¶³ä»¥å°†å…¶ç›¸è¿žã€‚它们必须共享类似的"
+"边界。\n"
+"从å¦ä¸€ä¸ªåœ°åŒºè¿›å…¥è¿™ä¸ªåœ°å›¾çš„æ¶ˆè€—å¯ä»¥é€šè¿‡ [member enter_cost] 进行控制。\n"
+"[b]注æ„:[/b]如果起点已ç»ä½äºŽè¿™ä¸ªåœ°åŒºä¹‹ä¸­ï¼Œè¿™ä¸ªå€¼ä¸ä¼šåŠ å…¥åˆ°è·¯å¾„æ¶ˆè€—ä¹‹ä¸­ã€‚\n"
+"在这个地区中移动所需的消耗å¯ä»¥é€šè¿‡ [member travel_cost] 系数进行控制。"
#: doc/classes/NavigationMeshInstance.xml
msgid ""
@@ -45715,11 +45811,14 @@ msgstr "决定该 [NavigationMeshInstance] å·²å¯ç”¨è¿˜æ˜¯å·²ç¦ç”¨ã€‚"
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
+"当从å¦ä¸€ä¸ªå¯¼èˆªåœ°åŒºçš„网格进入这个地区的导航网格进行寻路时,会将进入消耗 "
+"[code]enter_cost[/code] 加入路径长度,从而确定最短路径。"
#: doc/classes/NavigationMeshInstance.xml
msgid ""
@@ -45728,6 +45827,9 @@ msgid ""
"navmeshes without matching layers will be ignored and the navigation map "
"will only proximity merge different navmeshes with matching layers."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationMesh] 所属的导航地图层。使用 [method "
+"NavigationServer.map_get_path] 请求路径时会忽略没有任何匹é…层的导航网格,导航"
+"地图åªä¼šå°†æ‹¥æœ‰åŒ¹é…层的导航网格进行近似åˆå¹¶ã€‚"
#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
@@ -45735,11 +45837,14 @@ msgstr "使用的 [NavigationMesh] 资æºã€‚"
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
+"当在这个地区的导航网格中进行寻路时,会将已移动的è·ç¦»ä¹˜ä¸Šç§»åŠ¨æ¶ˆè€— "
+"[code]travel_cost[/code],从而确定最短路径。"
#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
@@ -45754,7 +45859,6 @@ msgid "3D obstacle used in navigation for collision avoidance."
msgstr "在导航中用于防撞的 3D éšœç¢ç‰©ã€‚"
#: doc/classes/NavigationObstacle.xml
-#, fuzzy
msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
@@ -45765,7 +45869,9 @@ msgid ""
msgstr ""
"导航中用于防撞的 3D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©éšœç¢ç‰©"
"æˆä¸º [Navigation] 节点的å­é¡¹å®žçŽ°ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨ [method set_navigation]。"
-"[NavigationObstacle] 是物ç†å®‰å…¨çš„。"
+"[NavigationObstacle] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]éšœç¢ç‰©åº”ä½œä¸ºå¤„ç†æŒç»­ç§»åŠ¨çš„ç‰©ä½“çš„æœ€åŽæ‰‹æ®µï¼Œæ— æ³•è¿›è¡Œé«˜æ•ˆçš„ï¼ˆé‡æ–°ï¼‰"
+"烘焙。"
#: doc/classes/NavigationObstacle.xml
msgid ""
@@ -45803,7 +45909,6 @@ msgid "2D obstacle used in navigation for collision avoidance."
msgstr "在导航中用于防撞的 2D éšœç¢ç‰©ã€‚"
#: doc/classes/NavigationObstacle2D.xml
-#, fuzzy
msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
@@ -45814,7 +45919,9 @@ msgid ""
msgstr ""
"导航中用于防撞的 2D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©éšœç¢ç‰©"
"æˆä¸º [Navigation2D] 节点的å­é¡¹å®žçŽ°ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨ [method set_navigation]。"
-"[NavigationObstacle2D] 是物ç†å®‰å…¨çš„。"
+"[NavigationObstacle2D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]éšœç¢ç‰©åº”ä½œä¸ºå¤„ç†æŒç»­ç§»åŠ¨çš„ç‰©ä½“çš„æœ€åŽæ‰‹æ®µï¼Œè¿™äº›ç‰©ä½“无法进行高效的"
+"ï¼ˆé‡æ–°ï¼‰çƒ˜ç„™ã€‚"
#: doc/classes/NavigationObstacle2D.xml
msgid ""
@@ -45926,6 +46033,9 @@ msgid ""
"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
"behind the scene)."
msgstr ""
+"返回这个导航多边形的 [NavigationMesh]。这个导航网格å¯ç”¨äºŽä½¿ç”¨ [method "
+"NavigationServer.region_set_navmesh] API 直接更新æŸä¸ªåœ°åŒºçš„导航网格(2D 在底"
+"层使用的是 3D æœåŠ¡å™¨ï¼‰ã€‚"
#: doc/classes/NavigationPolygon.xml
msgid ""
@@ -45969,9 +46079,8 @@ msgstr ""
"make_polygons_from_outlines] æ¥æ›´æ–°å¤šè¾¹å½¢ã€‚"
#: doc/classes/NavigationPolygonInstance.xml
-#, fuzzy
msgid "A region of the 2D navigation map."
-msgstr "烘焙导航网格。"
+msgstr "2D 导航地图上的一个地区。"
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
@@ -45992,6 +46101,18 @@ msgid ""
"The pathfinding cost of traveling distances inside this region can be "
"controlled with the [member travel_cost] multiplier."
msgstr ""
+"导航地图上的地区。[Navigation2DServer] æ ¹æ®å®ƒçš„ [NavigationPolygon] èµ„æºæ¥ç¡®"
+"定哪些å¯ä»¥è¿›è¡Œå¯¼èˆªã€å“ªäº›ä¸èƒ½ã€‚\n"
+"默认情况下,这个节点会在默认的 [World2D] 导航地图中进行注册。如果这个节点是 "
+"[Navigation2D] 节点的å­é¡¹ï¼Œå°±ä¼šåœ¨è¯¥å¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆªåœ°å›¾ä¸­è¿›è¡Œæ³¨å†Œã€‚\n"
+"如果两个地图共享类似的边界,就å¯ä»¥ç›¸äº’连接。你å¯ä»¥é€šè¿‡ [method "
+"Navigation2DServer.map_set_edge_connection_margin] 设置两个顶点连接两æ¡è¾¹ç•Œæ‰€"
+"需的最å°è·ç¦»ã€‚\n"
+"[b]注æ„:[/b]将两个地区的导航网格相互é‡å å¹¶ä¸è¶³ä»¥å°†å…¶ç›¸è¿žã€‚它们必须共享类似的"
+"边界。\n"
+"从å¦ä¸€ä¸ªåœ°åŒºè¿›å…¥è¿™ä¸ªåœ°å›¾çš„寻路消耗å¯ä»¥é€šè¿‡ [member enter_cost] 进行控制。\n"
+"[b]注æ„:[/b]如果起点已ç»ä½äºŽè¿™ä¸ªåœ°åŒºä¹‹ä¸­ï¼Œè¿™ä¸ªå€¼ä¸ä¼šåŠ å…¥åˆ°è·¯å¾„æ¶ˆè€—ä¹‹ä¸­ã€‚\n"
+"在这个地区中移动所需的寻路消耗å¯ä»¥é€šè¿‡ [member travel_cost] 系数进行控制。"
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
@@ -46005,9 +46126,8 @@ msgstr ""
"中与æŸä¸ªç‚¹æœ€æŽ¥è¿‘çš„ [NavigationPolygonInstance]。"
#: doc/classes/NavigationPolygonInstance.xml
-#, fuzzy
msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
-msgstr "决定该 [NavigationMeshInstance] å·²å¯ç”¨è¿˜æ˜¯å·²ç¦ç”¨ã€‚"
+msgstr "决定该 [NavigationPolygonInstance] å·²å¯ç”¨è¿˜æ˜¯å·²ç¦ç”¨ã€‚"
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
@@ -46016,11 +46136,13 @@ msgid ""
"navmeshes without matching layers will be ignored and the navigation map "
"will only proximity merge different navmeshes with matching layers."
msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationPolygon] 所属的导航地图层。使用 [method "
+"Navigation2DServer.map_get_path] 请求路径时会忽略没有任何匹é…层的导航网格,导"
+"航地图åªä¼šå°†æ‹¥æœ‰åŒ¹é…层的导航网格进行近似åˆå¹¶ã€‚"
#: doc/classes/NavigationPolygonInstance.xml
-#, fuzzy
msgid "The [NavigationPolygon] resource to use."
-msgstr "使用的 [NavigationMesh] 资æºã€‚"
+msgstr "使用的 [NavigationPolygon] 资æºã€‚"
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
@@ -46121,6 +46243,8 @@ msgid ""
"Set the region's navigation layers. This allows selecting regions from a "
"path request (when using [method NavigationServer.map_get_path])."
msgstr ""
+"设置该地区的导航层。å¯ä»¥åœ¨ï¼ˆä½¿ç”¨ [method NavigationServer.map_get_path])进行"
+"路径请求时选择地区。"
#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
@@ -48511,6 +48635,10 @@ msgid ""
"changed to negative scales on the Y axis and a rotation of 180 degrees when "
"decomposed."
msgstr ""
+"该节点的缩放。未缩放值:[code](1, 1)[/code]。\n"
+"[b]注æ„:[/b]2D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出负数的 X 缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼ŒX 轴上的负数缩放在分解åŽä¼šå˜ä¸º Y 轴的负数缩放和一次 180 度"
+"的旋转。"
#: doc/classes/Node2D.xml
msgid "Local [Transform2D]."
@@ -51381,6 +51509,15 @@ msgid ""
"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
"[/codeblock]"
msgstr ""
+"将文件或目录移动到系统的回收站。å¦è¯·å‚阅 [method Directory.remove].\n"
+"该方法仅支æŒå…¨å±€è·¯å¾„,所以你å¯èƒ½éœ€è¦ä½¿ç”¨ [method ProjectSettings."
+"globalize_path]。请勿将其用于 [code]res://[/code] 中的文件,因为在导出åŽçš„项"
+"目中是无法正常工作的。\n"
+"[b]注æ„:[/b]如果用户在系统中ç¦ç”¨äº†å›žæ”¶ç«™ï¼Œé‚£ä¹ˆè¯¥æ–‡ä»¶ä¼šè¢«æ°¸ä¹…删除。\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
#: doc/classes/OS.xml
msgid ""
@@ -59222,12 +59359,16 @@ msgid ""
"default, this message is only used in exported projects due to the editor-"
"only override applied to this setting."
msgstr ""
+"å¼•æ“Žå´©æºƒæ—¶ï¼Œåœ¨è°ƒç”¨ç«™å›žæº¯å‰æ˜¾ç¤ºçš„æ¶ˆæ¯ã€‚默认情况下,这个消æ¯åªä¼šåœ¨å¯¼å‡ºåŽçš„项目"
+"中使用,因为编辑器会对这个设置进行覆盖。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Editor-only override for [member debug/settings/crash_handler/message]. Does "
"not affect exported projects in debug or release mode."
msgstr ""
+"仅用于编辑器的 [member debug/settings/crash_handler/message] 覆盖项。ä¸ä¼šå½±å“"
+"用调试或å‘布模å¼å¯¼å‡ºçš„项目。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -59540,6 +59681,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -59838,193 +59991,193 @@ msgstr "触摸事件的默认延迟(å•ä½ä¸ºç§’ï¼‰ã€‚ä»…å½±å“ iOS 设备。"
msgid ""
"Optional name for the 2D navigation layer 1. If left empty, the layer will "
"display as \"Layer 1\"."
-msgstr ""
+msgstr "2D 导航层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 10. If left empty, the layer will "
"display as \"Layer 10\"."
-msgstr ""
+msgstr "2D 导航层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 11. If left empty, the layer will "
"display as \"Layer 11\"."
-msgstr ""
+msgstr "2D 导航层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 12. If left empty, the layer will "
"display as \"Layer 12\"."
-msgstr ""
+msgstr "2D 导航层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 13. If left empty, the layer will "
"display as \"Layer 13\"."
-msgstr ""
+msgstr "2D 导航层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 14. If left empty, the layer will "
"display as \"Layer 14\"."
-msgstr ""
+msgstr "2D 导航层 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 15. If left empty, the layer will "
"display as \"Layer 15\"."
-msgstr ""
+msgstr "2D 导航层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 16. If left empty, the layer will "
"display as \"Layer 16\"."
-msgstr ""
+msgstr "2D 导航层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 17. If left empty, the layer will "
"display as \"Layer 17\"."
-msgstr ""
+msgstr "2D 导航层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 18. If left empty, the layer will "
"display as \"Layer 18\"."
-msgstr ""
+msgstr "2D 导航层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 19. If left empty, the layer will "
"display as \"Layer 19\"."
-msgstr ""
+msgstr "2D 导航层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 2. If left empty, the layer will "
"display as \"Layer 2\"."
-msgstr ""
+msgstr "2D 导航层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 20. If left empty, the layer will "
"display as \"Layer 20\"."
-msgstr ""
+msgstr "2D 导航层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 21. If left empty, the layer will "
"display as \"Layer 21\"."
-msgstr ""
+msgstr "2D 导航层 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 22. If left empty, the layer will "
"display as \"Layer 22\"."
-msgstr ""
+msgstr "2D 导航层 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 23. If left empty, the layer will "
"display as \"Layer 23\"."
-msgstr ""
+msgstr "2D 导航层 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 24. If left empty, the layer will "
"display as \"Layer 24\"."
-msgstr ""
+msgstr "2D 导航层 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 25. If left empty, the layer will "
"display as \"Layer 25\"."
-msgstr ""
+msgstr "2D 导航层 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 26. If left empty, the layer will "
"display as \"Layer 26\"."
-msgstr ""
+msgstr "2D 导航层 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 27. If left empty, the layer will "
"display as \"Layer 27\"."
-msgstr ""
+msgstr "2D 导航层 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 28. If left empty, the layer will "
"display as \"Layer 28\"."
-msgstr ""
+msgstr "2D 导航层 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 29. If left empty, the layer will "
"display as \"Layer 29\"."
-msgstr ""
+msgstr "2D 导航层 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 3. If left empty, the layer will "
"display as \"Layer 3\"."
-msgstr ""
+msgstr "2D 导航层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 30. If left empty, the layer will "
"display as \"Layer 30\"."
-msgstr ""
+msgstr "2D 导航层 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 31. If left empty, the layer will "
"display as \"Layer 31\"."
-msgstr ""
+msgstr "2D 导航层 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 32. If left empty, the layer will "
"display as \"Layer 32\"."
-msgstr ""
+msgstr "2D 导航层 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 4. If left empty, the layer will "
"display as \"Layer 4\"."
-msgstr ""
+msgstr "2D 导航层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 5. If left empty, the layer will "
"display as \"Layer 5\"."
-msgstr ""
+msgstr "2D 导航层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 6. If left empty, the layer will "
"display as \"Layer 6\"."
-msgstr ""
+msgstr "2D 导航层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 7. If left empty, the layer will "
"display as \"Layer 7\"."
-msgstr ""
+msgstr "2D 导航层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 8. If left empty, the layer will "
"display as \"Layer 8\"."
-msgstr ""
+msgstr "2D 导航层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 2D navigation layer 9. If left empty, the layer will "
"display as \"Layer 9\"."
-msgstr ""
+msgstr "2D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
@@ -60238,193 +60391,193 @@ msgstr "2D 渲染层 9 çš„å¯é€‰å称。"
msgid ""
"Optional name for the 3D navigation layer 1. If left empty, the layer will "
"display as \"Layer 1\"."
-msgstr ""
+msgstr "3D 导航层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 10. If left empty, the layer will "
"display as \"Layer 10\"."
-msgstr ""
+msgstr "3D 导航层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 11. If left empty, the layer will "
"display as \"Layer 11\"."
-msgstr ""
+msgstr "3D 导航层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 12. If left empty, the layer will "
"display as \"Layer 12\"."
-msgstr ""
+msgstr "3D 导航层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 13. If left empty, the layer will "
"display as \"Layer 13\"."
-msgstr ""
+msgstr "3D 导航层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 14. If left empty, the layer will "
"display as \"Layer 14\"."
-msgstr ""
+msgstr "3D 导航层 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 15. If left empty, the layer will "
"display as \"Layer 15\"."
-msgstr ""
+msgstr "3D 导航层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 16. If left empty, the layer will "
"display as \"Layer 16\"."
-msgstr ""
+msgstr "3D 导航层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 17. If left empty, the layer will "
"display as \"Layer 17\"."
-msgstr ""
+msgstr "3D 导航层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 18. If left empty, the layer will "
"display as \"Layer 18\"."
-msgstr ""
+msgstr "3D 导航层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 19. If left empty, the layer will "
"display as \"Layer 19\"."
-msgstr ""
+msgstr "3D 导航层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 2. If left empty, the layer will "
"display as \"Layer 2\"."
-msgstr ""
+msgstr "3D 导航层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 20. If left empty, the layer will "
"display as \"Layer 20\"."
-msgstr ""
+msgstr "3D 导航层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 21. If left empty, the layer will "
"display as \"Layer 21\"."
-msgstr ""
+msgstr "3D 导航层 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 22. If left empty, the layer will "
"display as \"Layer 22\"."
-msgstr ""
+msgstr "3D 导航层 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 23. If left empty, the layer will "
"display as \"Layer 23\"."
-msgstr ""
+msgstr "3D 导航层 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 24. If left empty, the layer will "
"display as \"Layer 24\"."
-msgstr ""
+msgstr "3D 导航层 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 25. If left empty, the layer will "
"display as \"Layer 25\"."
-msgstr ""
+msgstr "3D 导航层 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 26. If left empty, the layer will "
"display as \"Layer 26\"."
-msgstr ""
+msgstr "3D 导航层 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 27. If left empty, the layer will "
"display as \"Layer 27\"."
-msgstr ""
+msgstr "3D 导航层 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 28. If left empty, the layer will "
"display as \"Layer 28\"."
-msgstr ""
+msgstr "3D 导航层 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 29. If left empty, the layer will "
"display as \"Layer 29\"."
-msgstr ""
+msgstr "3D 导航层 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 3. If left empty, the layer will "
"display as \"Layer 3\"."
-msgstr ""
+msgstr "3D 导航层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 30. If left empty, the layer will "
"display as \"Layer 30\"."
-msgstr ""
+msgstr "3D 导航层 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 31. If left empty, the layer will "
"display as \"Layer 31\"."
-msgstr ""
+msgstr "3D 导航层 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 32. If left empty, the layer will "
"display as \"Layer 32\"."
-msgstr ""
+msgstr "3D 导航层 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 4. If left empty, the layer will "
"display as \"Layer 4\"."
-msgstr ""
+msgstr "3D 导航层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 5. If left empty, the layer will "
"display as \"Layer 5\"."
-msgstr ""
+msgstr "3D 导航层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 6. If left empty, the layer will "
"display as \"Layer 6\"."
-msgstr ""
+msgstr "3D 导航层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 7. If left empty, the layer will "
"display as \"Layer 7\"."
-msgstr ""
+msgstr "3D 导航层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 8. If left empty, the layer will "
"display as \"Layer 8\"."
-msgstr ""
+msgstr "3D 导航层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
"Optional name for the 3D navigation layer 9. If left empty, the layer will "
"display as \"Layer 9\"."
-msgstr ""
+msgstr "3D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
@@ -60712,42 +60865,54 @@ msgid ""
"map_set_cell_height].\n"
"[b]Note:[/b] Currently not implemented."
msgstr ""
+"2D 导航地图的默认å•å…ƒæ ¼é«˜åº¦ã€‚è§ [method Navigation2DServer."
+"map_set_cell_height]。\n"
+"[b]注æ„:[/b]尚未实现。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default cell size for 2D navigation maps. See [method Navigation2DServer."
"map_set_cell_size]."
msgstr ""
+"2D 导航地图的默认å•元格大å°ã€‚è§ [method Navigation2DServer."
+"map_set_cell_size]。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default edge connection margin for 2D navigation maps. See [method "
"Navigation2DServer.map_set_edge_connection_margin]."
msgstr ""
+"2D 导航地图的默认边界连接边è·ã€‚è§ [method Navigation2DServer."
+"map_set_edge_connection_margin]。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default cell height for 3D navigation maps. See [method NavigationServer."
"map_set_cell_height]."
msgstr ""
+"3D 导航地图的默认å•å…ƒæ ¼é«˜åº¦ã€‚è§ [method NavigationServer."
+"map_set_cell_height]。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default cell size for 3D navigation maps. See [method NavigationServer."
"map_set_cell_size]."
msgstr ""
+"3D 导航地图的默认å•元格大å°ã€‚è§ [method NavigationServer.map_set_cell_size]。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default edge connection margin for 3D navigation maps. See [method "
"NavigationServer.map_set_edge_connection_margin]."
msgstr ""
+"3D 导航地图的默认边界连接边è·ã€‚è§ [method NavigationServer."
+"map_set_edge_connection_margin]。"
#: doc/classes/ProjectSettings.xml
msgid ""
"Default map up vector for 3D navigation maps. See [method NavigationServer."
"map_set_up]."
-msgstr ""
+msgstr "3D 导航地图的默认地图上å‘é‡ã€‚è§ [method NavigationServer.map_set_up]。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -62742,7 +62907,6 @@ msgid "General-purpose 3D proximity detection node."
msgstr "通用的 3D 邻近检测节点。"
#: doc/classes/ProximityGroup.xml
-#, fuzzy
msgid ""
"General-purpose proximity detection node. [ProximityGroup] can be used for "
"[i]approximate[/i] distance checks, which are faster than exact distance "
@@ -65618,24 +65782,20 @@ msgid "Makes text fill width."
msgstr "使文本填充宽度。"
#: doc/classes/RichTextLabel.xml
-#, fuzzy
msgid "Aligns top of the inline image to the top of the text."
-msgstr "ç›’å­çš„高度,从盒å­çš„中心开始测é‡ã€‚"
+msgstr "将内è”图åƒçš„顶部与文本的顶部对é½ã€‚"
#: doc/classes/RichTextLabel.xml
-#, fuzzy
msgid "Aligns center of the inline image to the center of the text."
-msgstr "å°†å­é¡¹ä¸Žå®¹å™¨çš„中心对é½ã€‚"
+msgstr "将内è”图åƒçš„中心与文本的中心对é½ã€‚"
#: doc/classes/RichTextLabel.xml
-#, fuzzy
msgid "Aligns bottom of the inline image to the baseline of the text."
-msgstr "ç›’å­çš„高度,从盒å­çš„中心开始测é‡ã€‚"
+msgstr "将内è”图åƒçš„底部与文本的基线对é½ã€‚"
#: doc/classes/RichTextLabel.xml
-#, fuzzy
msgid "Aligns bottom of the inline image to the bottom of the text."
-msgstr "å°†å­æŽ§ä»¶ä¸Žå®¹å™¨çš„æœ«ç«¯å¯¹é½ï¼Œå³ä¾§æˆ–底部。"
+msgstr "将内è”图åƒçš„底部与文本的底部对é½ã€‚"
#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
@@ -67928,7 +68088,6 @@ msgid "One-shot timer."
msgstr "一次性定时器。"
#: doc/classes/SceneTreeTimer.xml
-#, fuzzy
msgid ""
"A one-shot timer managed by the scene tree, which emits [signal timeout] on "
"completion. See also [method SceneTree.create_timer].\n"
@@ -67953,8 +68112,8 @@ msgstr ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"计时器结æŸã€‚\")\n"
"[/codeblock]\n"
-"时间结æŸåŽï¼Œè¯¥è®¡æ—¶å™¨å°†è¢«è‡ªåŠ¨é‡Šæ”¾ï¼Œæ‰€ä»¥è¯·æ³¨æ„,你所ä¿ç•™çš„任何对它的引用届时都"
-"会失效。"
+"时间结æŸåŽï¼Œå¯¹è¯¥è®¡æ—¶å™¨çš„引用将被自动释放。è¦ä¿ç•™è¯¥è®¡æ—¶å™¨ï¼Œä½ å¯ä»¥ä¿æŒå¯¹å®ƒçš„引"
+"ç”¨ã€‚è§ [Reference]。"
#: doc/classes/SceneTreeTimer.xml
msgid "The time remaining (in seconds)."
@@ -70204,6 +70363,9 @@ msgid ""
"transformation matrices in Godot, the scale values will either be all "
"positive or all negative."
msgstr ""
+"æœ¬åœ°å˜æ¢ä¸­çš„缩放。\n"
+"[b]注æ„:[/b]3D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出正负混åˆçš„缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼Œå¾—到的缩放值è¦ä¹ˆå…¨æ­£ã€è¦ä¹ˆå…¨è´Ÿã€‚"
#: doc/classes/Spatial.xml
msgid "Local space [Transform] of this node, with respect to the parent node."
@@ -77705,9 +77867,8 @@ msgstr ""
"[/codeblock]"
#: doc/classes/TileMap.xml
-#, fuzzy
msgid "If [code]true[/code], this TileMap bakes a navigation region."
-msgstr "为 [code]true[/code] 时存在指定å称的动画。"
+msgstr "如果为 [code]true[/code],这个 TileMap 会烘焙导航地区。"
#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
@@ -77843,7 +78004,7 @@ msgstr "图å—åœ°å›¾çš„æ–¹å‘æ¨¡å¼ã€‚有关å¯èƒ½çš„值,å‚阅[enum Mode]。"
#: doc/classes/TileMap.xml
msgid "The navigation layers the TileMap generates its navigation regions in."
-msgstr ""
+msgstr "TileMap 生æˆå…¶å¯¼èˆªåœ°åŒºçš„导航层。"
#: doc/classes/TileMap.xml
msgid ""
@@ -79205,6 +79366,10 @@ msgid ""
"changed to negative scales on the Y axis and a rotation of 180 degrees when "
"decomposed."
msgstr ""
+"è¿”å›žè¯¥å˜æ¢åœ¨ä½¿ç”¨ç»™å®šçš„ [code]scale[/code] 缩放系统进行矩阵乘法åŽçš„副本。\n"
+"[b]注æ„:[/b]2D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出负数的 X 缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼ŒX 轴上的负数缩放在分解åŽä¼šå˜ä¸º Y 轴的负数缩放和一次 180 度"
+"的旋转。"
#: doc/classes/Transform2D.xml
msgid ""
@@ -83740,23 +83905,26 @@ msgstr "如果[code]true[/code],父级的[method Node._process]å°†è¢«åœæ­¢ã€‚
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will freeze [RigidBody2D] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“[RigidBody2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“ [RigidBody2D] 节点。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [Particles2D] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[Particles2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢ [Particles2D] 节点。"
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„_process函数。"
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„ _process 函数。"
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„_physics_process函数。"
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„ _physics_process 函数。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[AnimatedSprite]节点的动画。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢ [AnimatedSprite] 节点的动画。"
#: doc/classes/VisibilityNotifier.xml doc/classes/VisibilityNotifier2D.xml
msgid "Detects approximately when the node is visible on screen."
@@ -83809,6 +83977,10 @@ msgid ""
"nodes that are far away.\n"
"[b]Note:[/b] This feature will be disabled if set to 0.0."
msgstr ""
+"除了检查节点是å¦åœ¨å±å¹•内或在 [Camera] 的视野内,VisibilityNotifier 还å¯ä»¥åœ¨ä½¿"
+"用é€è§†æŠ•影的 [Camera] 时对节点是å¦åœ¨æŒ‡å®šçš„æœ€å¤§è·ç¦»å†…进行检测。å¯ç”¨äºŽé™åˆ¶è¿œè·"
+"离节点的性能需求。\n"
+"[b]注æ„:[/b]如果设为 0.0 则会ç¦ç”¨è¿™ä¸ªç‰¹æ€§ã€‚"
#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
@@ -89285,6 +89457,11 @@ msgid ""
"compilations when this value is zero for at least two frames in a row.\n"
"Unimplemented in the GLES2 rendering backend, always returns 0."
msgstr ""
+"在该帧中,处于编译状æ€çš„ç€è‰²å™¨æ•°é‡å³°å€¼ã€‚\n"
+"å¯ç”¨äºŽæ£€æŸ¥å±å¹•上当å‰ç€è‰²å™¨çš„异步编译是å¦å®Œæˆã€‚\n"
+"[b]注æ„:[/b]è¦çœŸæ­£ç¡®å®šå®Œæˆï¼Œè¯·åœ¨è¿™ä¸ªå€¼è‡³å°‘连续两帧都为零时æ‰è®¤ä¸ºæ²¡æœ‰å…¶ä»–东西"
+"需è¦ç¼–译。\n"
+"GLES2 渲染åŽç«¯ä¸­å°šæœªå®žçŽ°ï¼Œå§‹ç»ˆè¿”å›ž 0。"
#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
@@ -93271,14 +93448,13 @@ msgid "Class that has everything pertaining to a world."
msgstr "拥有与世界相关的一切的类。"
#: doc/classes/World.xml
-#, fuzzy
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
"scenario, a navigation map and a sound space. Spatial nodes register their "
"resources into the current world."
msgstr ""
-"拥有与世界相关的一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯å’Œå£°éŸ³ç©ºé—´ã€‚ç©ºé—´èŠ‚ç‚¹å°†å…¶èµ„æºæ³¨å†Œ"
-"到当å‰ä¸–界中。"
+"拥有与世界相关的一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯ã€å¯¼èˆªåœ°å›¾å’Œå£°éŸ³ç©ºé—´ã€‚空间节点将"
+"å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰ä¸–界中。"
#: doc/classes/World.xml
msgid ""
@@ -93291,18 +93467,18 @@ msgid "The World's [Environment]."
msgstr "World的[Environment]环境。"
#: doc/classes/World.xml
+#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"如果 World 的 [Environment] 失败或丢失,将使用 World 的 "
"fallback_environment。"
#: doc/classes/World.xml
-#, fuzzy
msgid ""
"The [RID] of this world's navigation map. Used by the [NavigationServer]."
-msgstr "返回这个代ç†åœ¨ [NavigationServer] 上的 [RID]。"
+msgstr "这个世界的导航地图的 [RID]。会被 [NavigationServer] 使用。"
#: doc/classes/World.xml
msgid "The World's visual scenario."
@@ -93317,14 +93493,13 @@ msgid "Class that has everything pertaining to a 2D world."
msgstr "拥有与 2D 世界有关的所有内容的类。"
#: doc/classes/World2D.xml
-#, fuzzy
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
"visual scenario, a navigation map and a sound space. 2D nodes register their "
"resources into the current 2D world."
msgstr ""
-"拥有与 2D 世界有关一切的类。一个物ç†ç©ºé—´ã€ä¸€ä¸ªå¯è§†åŒ–场景和一个声音空间。2D 节"
-"ç‚¹å°†å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰çš„ 2D 世界中。"
+"拥有与 2D 世界有关一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯ã€å¯¼èˆªåœ°å›¾å’Œå£°éŸ³ç©ºé—´ã€‚2D 节点将"
+"å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰çš„ 2D 世界中。"
#: doc/classes/World2D.xml
msgid ""
@@ -93342,10 +93517,9 @@ msgstr ""
"问仅é™äºŽä¸»çº¿ç¨‹ä¸­çš„ [code]_physics_process(delta)[/code]。"
#: doc/classes/World2D.xml
-#, fuzzy
msgid ""
"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
-msgstr "返回这个代ç†åœ¨ [Navigation2DServer] 上的 [RID]。"
+msgstr "这个世界的导航地图的 [RID]。会被 [Navigation2DServer] 使用。"
#: doc/classes/World2D.xml
msgid ""
diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po
index 9422f78dba..ba40f5ee74 100644
--- a/doc/translations/zh_TW.po
+++ b/doc/translations/zh_TW.po
@@ -428,7 +428,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3506,6 +3506,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -30282,8 +30288,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -36676,7 +36682,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding enters this regions navmesh from another regions navmesh "
+"When pathfinding enters this region's navmesh from another regions navmesh "
"the [code]enter_cost[/code] value is added to the path distance for "
"determining the shortest path."
msgstr ""
@@ -36696,7 +36702,7 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
#: doc/classes/NavigationPolygonInstance.xml
msgid ""
-"When pathfinding moves inside this regions navmesh the traveled distances "
+"When pathfinding moves inside this region's navmesh the traveled distances "
"are multiplied with [code]travel_cost[/code] for determining the shortest "
"path."
msgstr ""
@@ -47519,6 +47525,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -66830,11 +66848,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -74871,8 +74890,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 94ae8ecc8a..33c7b9bf32 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -1923,11 +1923,11 @@ void RasterizerSceneGLES3::render_scene(RID p_render_buffers, const CameraData *
render_data.cam_transform = p_camera_data->main_transform;
render_data.inv_cam_transform = render_data.cam_transform.affine_inverse();
render_data.cam_projection = p_camera_data->main_projection;
- render_data.view_projection[0] = p_camera_data->main_projection;
render_data.cam_orthogonal = p_camera_data->is_orthogonal;
render_data.view_count = p_camera_data->view_count;
for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
+ render_data.view_eye_offset[v] = p_camera_data->view_offset[v].origin;
render_data.view_projection[v] = p_camera_data->view_projection[v];
}
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index 308ef36fa1..4757a3f161 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -100,6 +100,7 @@ struct RenderDataGLES3 {
// For stereo rendering
uint32_t view_count = 1;
+ Vector3 view_eye_offset[RendererSceneRender::MAX_RENDER_VIEWS];
CameraMatrix view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
float z_near = 0.0;
diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp
index deb3047864..a055dca8ad 100644
--- a/editor/import/resource_importer_texture.cpp
+++ b/editor/import/resource_importer_texture.cpp
@@ -65,6 +65,15 @@ void ResourceImporterTexture::_texture_reimport_3d(const Ref<CompressedTexture2D
}
singleton->make_flags[path].flags |= MAKE_3D_FLAG;
+
+ // For small textures, don't use VRAM compression as it decreases quality too much compared to the memory saved.
+ // The minimum size for VRAM compression is defined on each axis.
+ // It is then squared to handle non-square input texture sizes in a more human-readable manner.
+ const float minimum_size = float(GLOBAL_GET("rendering/textures/vram_compression/minimum_size"));
+ if (p_tex->get_width() * p_tex->get_height() >= int(Math::pow(minimum_size, 2.0f) - CMP_EPSILON)) {
+ // Texture is larger than `minimum_size × minimum_size` pixels (if square).
+ singleton->make_flags[path].flags |= MAKE_VRAM_COMPRESS_FLAG;
+ }
}
void ResourceImporterTexture::_texture_reimport_normal(const Ref<CompressedTexture2D> &p_tex) {
@@ -103,7 +112,33 @@ void ResourceImporterTexture::update_imports() {
bool changed = false;
- if (E.value.flags & MAKE_NORMAL_FLAG && int(cf->get_value("params", "compress/normal_map")) == 0) {
+ if (E.value.flags & MAKE_3D_FLAG && bool(cf->get_value("params", "detect_3d/compress_to"))) {
+ if (E.value.flags & MAKE_VRAM_COMPRESS_FLAG) {
+ // Texture is large enough to benefit from VRAM compression.
+ const int compress_to = cf->get_value("params", "detect_3d/compress_to");
+ String compress_string;
+ if (compress_to == 1) {
+ cf->set_value("params", "compress/mode", COMPRESS_VRAM_COMPRESSED);
+ compress_string = "VRAM Compressed (S3TC/ETC/BPTC)";
+ } else if (compress_to == 2) {
+ cf->set_value("params", "compress/mode", COMPRESS_BASIS_UNIVERSAL);
+ compress_string = "Basis Universal";
+ }
+ print_line(vformat(TTR("%s: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to %s."), String(E.key), compress_string));
+ } else {
+ print_line(vformat(TTR("%s: Small texture detected as used in 3D. Enabling mipmap generation but not VRAM compression."), String(E.key)));
+ }
+
+ cf->set_value("params", "mipmaps/generate", true);
+ cf->set_value("params", "detect_3d/compress_to", 0);
+
+ changed = true;
+ }
+
+ if (E.value.flags & MAKE_NORMAL_FLAG && int(cf->get_value("params", "compress/normal_map")) == 0 && int(cf->get_value("params", "compress/mode")) != COMPRESS_LOSSLESS) {
+ // Normal map compression is not available for textures with Lossless compression.
+ // This is ignored in the importer, but printing a message about normal map compression
+ // being enabled in this case is misleading.
print_line(vformat(TTR("%s: Texture detected as used as a normal map in 3D. Enabling red-green texture compression to reduce memory usage (blue channel is discarded)."), String(E.key)));
cf->set_value("params", "compress/normal_map", 1);
changed = true;
@@ -116,22 +151,6 @@ void ResourceImporterTexture::update_imports() {
changed = true;
}
- if (E.value.flags & MAKE_3D_FLAG && bool(cf->get_value("params", "detect_3d/compress_to"))) {
- const int compress_to = cf->get_value("params", "detect_3d/compress_to");
- String compress_string;
- cf->set_value("params", "detect_3d/compress_to", 0);
- if (compress_to == 1) {
- cf->set_value("params", "compress/mode", COMPRESS_VRAM_COMPRESSED);
- compress_string = "VRAM Compressed (S3TC/ETC/BPTC)";
- } else if (compress_to == 2) {
- cf->set_value("params", "compress/mode", COMPRESS_BASIS_UNIVERSAL);
- compress_string = "Basis Universal";
- }
- print_line(vformat(TTR("%s: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to %s."), String(E.key), compress_string));
- cf->set_value("params", "mipmaps/generate", true);
- changed = true;
- }
-
if (changed) {
cf->save(src_path);
to_reimport.push_back(E.key);
diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h
index 7def2d4f77..e65c15ae78 100644
--- a/editor/import/resource_importer_texture.h
+++ b/editor/import/resource_importer_texture.h
@@ -54,8 +54,9 @@ public:
protected:
enum {
MAKE_3D_FLAG = 1,
- MAKE_ROUGHNESS_FLAG = 2,
- MAKE_NORMAL_FLAG = 4
+ MAKE_VRAM_COMPRESS_FLAG = 2,
+ MAKE_ROUGHNESS_FLAG = 4,
+ MAKE_NORMAL_FLAG = 8,
};
Mutex mutex;
diff --git a/editor/plugins/animation_library_editor.cpp b/editor/plugins/animation_library_editor.cpp
index ed908e413c..cae33edecb 100644
--- a/editor/plugins/animation_library_editor.cpp
+++ b/editor/plugins/animation_library_editor.cpp
@@ -419,12 +419,12 @@ void AnimationLibraryEditor::_item_renamed() {
}
}
-void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int p_button) {
+void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int p_id, MouseButton p_button) {
if (p_item->get_parent() == tree->get_root()) {
// Library
StringName lib_name = p_item->get_metadata(0);
Ref<AnimationLibrary> al = player->call("get_animation_library", lib_name);
- switch (p_button) {
+ switch (p_id) {
case LIB_BUTTON_ADD: {
add_library_dialog->set_title(TTR("Animation Name:"));
add_library_name->set_text("");
@@ -519,7 +519,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
Ref<AnimationLibrary> al = player->call("get_animation_library", lib_name);
Ref<Animation> anim = al->get_animation(anim_name);
ERR_FAIL_COND(!anim.is_valid());
- switch (p_button) {
+ switch (p_id) {
case ANIM_BUTTON_COPY: {
if (anim->get_name() == "") {
anim->set_name(anim_name); // Keep the name around
diff --git a/editor/plugins/animation_library_editor.h b/editor/plugins/animation_library_editor.h
index 5bd4e8d9e2..bf89508321 100644
--- a/editor/plugins/animation_library_editor.h
+++ b/editor/plugins/animation_library_editor.h
@@ -99,7 +99,7 @@ class AnimationLibraryEditor : public AcceptDialog {
void _load_file(String p_path);
void _item_renamed();
- void _button_pressed(TreeItem *p_item, int p_column, int p_button);
+ void _button_pressed(TreeItem *p_item, int p_column, int p_id, MouseButton p_button);
void _file_popup_selected(int p_id);
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 9f4842a5a1..815d0a2425 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -2412,6 +2412,18 @@ void Node3DEditorViewport::_project_settings_changed() {
const float mesh_lod_threshold = GLOBAL_GET("rendering/mesh_lod/lod_change/threshold_pixels");
viewport->set_mesh_lod_threshold(mesh_lod_threshold);
+
+ const Viewport::Scaling3DMode scaling_3d_mode = Viewport::Scaling3DMode(int(GLOBAL_GET("rendering/scaling_3d/mode")));
+ viewport->set_scaling_3d_mode(scaling_3d_mode);
+
+ const float scaling_3d_scale = GLOBAL_GET("rendering/scaling_3d/scale");
+ viewport->set_scaling_3d_scale(scaling_3d_scale);
+
+ const float fsr_sharpness = GLOBAL_GET("rendering/scaling_3d/fsr_sharpness");
+ viewport->set_fsr_sharpness(fsr_sharpness);
+
+ const float fsr_mipmap_bias = GLOBAL_GET("rendering/scaling_3d/fsr_mipmap_bias");
+ viewport->set_fsr_mipmap_bias(fsr_mipmap_bias);
}
void Node3DEditorViewport::_notification(int p_what) {
diff --git a/editor/translations/af.po b/editor/translations/af.po
index 748147b564..ae83779422 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -669,26 +669,24 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Nodus Naam:"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2853,7 +2851,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakket Suksesvol Geïnstalleer!"
#: editor/editor_export.cpp
@@ -4346,14 +4344,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4478,6 +4468,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Nodus Naam:"
@@ -4506,6 +4500,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index ac2efb5cec..a3fcece225 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -63,12 +63,13 @@
# Mr.k <mineshtine28546271@gmail.com>, 2022.
# ywmaa <ywmaa.personal@gmail.com>, 2022.
# Awab Najim <dev.djvan@gmail.com>, 2022.
+# Abderrahim <abdoudido117@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-06-16 18:57+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: Awab Najim <dev.djvan@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
@@ -78,7 +79,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -266,9 +267,8 @@ msgstr "بيانات"
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Network"
-msgstr "مل٠تعري٠الشبكة Network Profiler"
+msgstr "الشبكة"
#: core/io/file_access_network.cpp
msgid "Remote FS"
@@ -287,23 +287,20 @@ msgid "Blocking Mode Enabled"
msgstr "تمكين وضع الحظر"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "وصل"
+msgstr "إتصال"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
msgstr "حجم قطعة القراءة"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "كائنات مرسومة:"
+msgstr "معر٠الكائن"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "ØªÙØ¹ÙŠÙ„ تقشير البصل"
+msgstr "السماح بÙÙƒ ترميز الكائن"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
@@ -315,19 +312,16 @@ msgid "Network Peer"
msgstr "مل٠تعري٠الشبكة Network Profiler"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "اسم العÙقدة الرئيسة (الجذر)"
+msgstr "العÙقدة الرئيسة (الجذر)"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "وصل"
+msgstr "Ø±ÙØ¶ الإتصالات الجديدة"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "نوع التحوّل"
+msgstr "وضع التحويل"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
@@ -358,9 +352,8 @@ msgid "Blocking Handshake"
msgstr "حظر Ø§Ù„Ù…ØµØ§ÙØ­Ø©"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "تعديل الإتصال:"
+msgstr "الحد الأقصى للاتصالات المعلقة"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -423,14 +416,12 @@ msgid "Max Size (KB)"
msgstr "الحجم الأقصى (كيلو بايت)"
#: core/os/input.cpp
-#, fuzzy
msgid "Mouse Mode"
-msgstr "وضع التحريك"
+msgstr "وضع Ø§Ù„ÙØ£Ø±Ø©"
#: core/os/input.cpp
-#, fuzzy
msgid "Use Accumulated Input"
-msgstr "مسح المدخله"
+msgstr "استخدم المدخلات المتراكمة"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -695,6 +686,11 @@ msgid "Main Run Args"
msgstr "معاملات المشهد الرئيس"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "المسار للمشهد:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "البحث ÙÙŠ امتدادات الملÙ"
@@ -702,18 +698,15 @@ msgstr "البحث ÙÙŠ امتدادات الملÙ"
msgid "Script Templates Search Path"
msgstr "مسار البحث ÙÙŠ قوالب النص البرمجي"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "إدارة الإصدارات (Version Control)"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "التحميل التلقائي عند بدء التشغيل"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "اسم Ø§Ù„Ø¥Ø¶Ø§ÙØ©"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "إدارة الإصدارات (Version Control)"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -807,9 +800,8 @@ msgstr "إنشاء متصادم تراميش قريب"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
+msgstr "استدعاء"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -819,18 +811,17 @@ msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "جودة"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "مرشحات:"
+msgstr "مرشحات"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "شحذ Ø§Ù„ÙƒØ«Ø§ÙØ©"
#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
@@ -846,9 +837,8 @@ msgstr "تصحيح الأخطاء"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "الإعدادات:"
+msgstr "الإعدادات"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -856,14 +846,12 @@ msgid "Profiler"
msgstr "Ù…Ùنشئ Ø§Ù„Ù…Ù„ÙØ§Øª التعريÙية Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "عمل دالة"
+msgstr "أقصى عمل"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "تحديد التعبير"
+msgstr "ضغط"
#: core/project_settings.cpp
#, fuzzy
@@ -876,15 +864,15 @@ msgstr ""
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "مطابقة Ø§Ù„Ù…Ø³Ø§ÙØ§Øª الطويلة"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "ضغط المستوى"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "حجم Ù†Ø§ÙØ°Ø© سجل"
#: core/project_settings.cpp
msgid "Zlib"
@@ -896,20 +884,19 @@ msgstr ""
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "أندرويد"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "وحدات"
#: core/register_core_types.cpp
msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "الاتصالات لدالة:"
+msgstr "Ù†ÙØ° وقت الإتصال"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -924,9 +911,8 @@ msgid "SSL"
msgstr ""
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "القمم:"
+msgstr "الشهادات"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -935,9 +921,8 @@ msgid "Resource"
msgstr "مورد"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "اغلاق المشهد"
+msgstr "مشهد محلي"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -947,22 +932,20 @@ msgid "Path"
msgstr "المسار"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "مصدر"
+msgstr "مصدر الرمز"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "محلي"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "أختبار"
+msgstr "إختبار"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "تقهقر"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -2829,8 +2812,8 @@ msgstr "نسخ مسار العÙقدة"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
-msgstr "تم تتبيث الحزمة بنجاح!"
+msgid "Completed successfully."
+msgstr "اكتمل بنجاح."
#: editor/editor_export.cpp
#, fuzzy
@@ -4341,15 +4324,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "مشهد"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "المسار للمشهد:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4478,6 +4452,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "إدارة الإصدارات (Version Control)"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "إعادة التسمية"
@@ -4506,6 +4484,10 @@ msgstr "تمكين/إيقا٠الوضع الخالي من الإلهاء."
msgid "Add a new scene."
msgstr "Ø¥Ø¶Ø§ÙØ© مشهد جديد."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "مشهد"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "اذهب الي المشهد Ø§Ù„Ù…ÙØªÙˆØ­ مسبقا."
@@ -11265,7 +11247,7 @@ msgstr "القمم:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
-msgstr "FPS: %d (%s جزء من الثانية)"
+msgstr "عدد الإطارات ÙÙŠ الثانية: %d (%s ميلي ثانية)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -19216,15 +19198,13 @@ msgid "Code Signing"
msgstr "الإشاراة"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"'apksigner' could not be found. Please check that the command is available "
"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"تعذر العثور على 'apksigner'.\n"
-"تأكد من ÙØ¶Ù„Ùƒ إن كان الأمر موجوداً ÙÙŠ دليل Ù…Ù„ÙØ§Øª أدوات-بناء الأندرويد Android "
-"SDK build-tools.\n"
-"لم يتم توقيع الناتج %s."
+"تعذر العثور على 'apksigner'. تأكد من ÙØ¶Ù„Ùƒ إن كان الأمر موجوداً ÙÙŠ دليل Ù…Ù„ÙØ§Øª "
+"أدوات-بناء حزمة تطوير الأندرويد Android SDK build-tools. لم يتم توقيع الناتج "
+"%s."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -19239,9 +19219,8 @@ msgid "Could not find keystore, unable to export."
msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not start apksigner executable."
-msgstr "لا يمكن بدء عملية جانبية!"
+msgstr "تعذر بدء تشغيل apksigner ."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
@@ -19274,9 +19253,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "أسم المل٠غير صالح! يتطلب مل٠اندرويد APK أمتداد *.apk لتعمل."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Unsupported export format!"
-msgstr "صيغة تصدير غير مدعومة!\n"
+msgstr "تنسيق تصدير غير مدعوم!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19287,15 +19265,12 @@ msgstr ""
"أعد التحميل من قائمة \"المشروع\"."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"نسخ بناء Android غير متواÙقة:\n"
-"\tقوالب Ù…Ùنصبة: %s\n"
-"\tإصدار غودوت: %s\n"
-"من ÙØ¶Ù„Ùƒ أعد تنصيب قالب بناء الأندرويد Android من قائمة \"المشروع\"."
+"نسخ بناء Android غير متواÙقة: قوالب Ù…Ùنصبة: %s إصدار غودوت: %s. من ÙØ¶Ù„Ùƒ أعد "
+"تنصيب قالب بناء الأندرويد من قائمة 'المشروع'."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19305,9 +19280,8 @@ msgstr ""
"تعذرت كتابة overwrite Ù…Ù„ÙØ§Øª res://android/build/res/*.xml مع اسم المشروع"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files to gradle project."
-msgstr "لم يتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع إلى مشروع gradle\n"
+msgstr "لم يتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع إلى مشروع gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19318,13 +19292,12 @@ msgid "Building Android Project (gradle)"
msgstr "بناء مشروع الأندرويد (gradle)"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"أخÙÙ‚ بناء مشروع الأندرويد، تÙقد Ø§Ù„Ù…ÙØ®Ø±Ø¬Ø§Øª للإطلاع على الخطأ.\n"
-"بصورة بديلة يمكنك زيارة docs.godotengine.org لأجل مستندات البناء للأندرويد."
+"أخÙÙ‚ بناء مشروع الأندرويد، تÙقد Ø§Ù„Ù…ÙØ®Ø±Ø¬Ø§Øª للإطلاع على الخطأ. بصورة بديلة "
+"يمكنك زيارة docs.godotengine.org لأجل مستندات البناء للأندرويد."
#: platform/android/export/export_plugin.cpp
msgid "Moving output"
@@ -19347,22 +19320,18 @@ msgid "Creating APK..."
msgstr "إنشاء المحيط..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find template APK to export: \"%s\"."
-msgstr ""
-"لم يتم إيجاد قالب APK للتصدير:\n"
-"%s"
+msgstr "لم يتم إيجاد قالب APK للتصدير: \"%s\"."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"هنالك مكاتب قوالب تصدير ناقصة بالنسبة للمعمارية المختارة: %s.\n"
-"ابن قالب التصدير متضمناً جميع المكتبات الضرورية، أو أزال اختيار المعماريات "
-"الناقصة من خيارات التصدير المعدّة مسبقاً."
+"هنالك مكاتب قوالب تصدير ناقصة بالنسبة للمعمارية المختارة: %s.ابن قالب "
+"التصدير متضمناً جميع المكتبات الضرورية، أو أزال اختيار المعماريات الناقصة من "
+"خيارات التصدير المعدّة مسبقاً."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -20067,9 +20036,8 @@ msgid "Could not open icon file \"%s\"."
msgstr "لم نتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start xcrun executable."
-msgstr "لا يمكن بدء عملية جانبية!"
+msgstr "تعذر بدء تشغيل xcrun."
#: platform/osx/export/export.cpp
#, fuzzy
@@ -20141,9 +20109,8 @@ msgid "DMG Creation"
msgstr "الاتجاهات"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start hdiutil executable."
-msgstr "لا يمكن بدء عملية جانبية!"
+msgstr "تعذر بدء المل٠التنÙيذي hdiutil."
#: platform/osx/export/export.cpp
msgid "`hdiutil create` failed - file exists."
@@ -20222,9 +20189,8 @@ msgid "ZIP Creation"
msgstr "مشروع"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not open file to read from path \"%s\"."
-msgstr "لم يتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع إلى مشروع gradle\n"
+msgstr "تعذر ÙØªØ­ المل٠للقراءة من المسار \"%s\"."
#: platform/osx/export/export.cpp
#, fuzzy
diff --git a/editor/translations/az.po b/editor/translations/az.po
index 59e1c30354..6e8dfbf1f3 100644
--- a/editor/translations/az.po
+++ b/editor/translations/az.po
@@ -650,24 +650,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2805,7 +2804,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4222,14 +4221,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4346,6 +4337,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4373,6 +4368,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index ee4ccb7044..9370a48a79 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -689,6 +689,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Път на Ñцената:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -696,19 +701,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Контрол на верÑиите"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Контрол на верÑиите"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Име на приÑтавката:"
+msgid "Version Control Plugin Name"
+msgstr "Контрол на верÑиите"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2807,7 +2808,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4261,15 +4262,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Път на Ñцената:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4396,6 +4388,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Контрол на верÑиите"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ПотребителÑко име"
@@ -4423,6 +4419,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "ДобавÑне на нови нова Ñцена."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index e656723205..265a7fb58a 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -688,6 +688,11 @@ msgid "Main Run Args"
msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯à§‡à¦° মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "দৃশà§à¦¯à§‡à¦° পথ:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -695,20 +700,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "সংসà§à¦•রণ:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
+msgid "Version Control Plugin Name"
+msgstr "সংসà§à¦•রণ:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2899,7 +2899,7 @@ msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
#: editor/editor_export.cpp
@@ -4496,15 +4496,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "দৃশà§à¦¯"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "দৃশà§à¦¯à§‡à¦° পথ:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4635,6 +4626,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "সংসà§à¦•রণ:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
@@ -4664,6 +4660,10 @@ msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
msgid "Add a new scene."
msgstr "নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমূহ যোগ করà§à¦¨à¥¤"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "দৃশà§à¦¯"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "পূরà§à¦¬à§‡ খোলা দৃশà§à¦¯à§‡ যান।"
diff --git a/editor/translations/br.po b/editor/translations/br.po
index f528b0af67..3d1ca48f3f 100644
--- a/editor/translations/br.po
+++ b/editor/translations/br.po
@@ -638,24 +638,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2727,7 +2726,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4139,14 +4138,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4262,6 +4253,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4289,6 +4284,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 1cba26c8ac..380a247ac7 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -16,13 +16,14 @@
# Roberto Pérez <djleizar@gmail.com>, 2021.
# Joel Garcia Cascalló <jocsencat@gmail.com>, 2021.
# DFC <damiafluixacanals28@gmail.com>, 2021.
+# Roger VC <rogervilarasau@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-04-03 13:13+0000\n"
-"Last-Translator: roger <616steam@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: Roger VC <rogervilarasau@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
"Language: ca\n"
@@ -30,11 +31,11 @@ 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.12-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Controlador de tauleta"
#: core/bind/core_bind.cpp
msgid "Clipboard"
@@ -46,20 +47,19 @@ msgstr "Escena Actual"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Codi de sortida"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "V-Sync Activat"
+msgstr "Sincronització Vertical habilitada"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync mitjançant Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Suavitzat delta"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode"
@@ -91,13 +91,12 @@ msgid "Window"
msgstr "Finestra"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Borderless"
msgstr "Sense Vores"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Transparència per píxel activada"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Fullscreen"
@@ -105,7 +104,7 @@ msgstr "Pantalla Completa"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximitzat"
#: core/bind/core_bind.cpp
msgid "Minimized"
@@ -114,7 +113,7 @@ msgstr "Minimitzat"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Redimensionable"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
@@ -146,7 +145,7 @@ msgstr "Suggeriment de l'Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Imprimeix missatges d'error"
#: core/bind/core_bind.cpp
msgid "Iterations Per Second"
@@ -184,7 +183,7 @@ msgstr "Resultat"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memòria"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -195,7 +194,7 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Límits"
#: core/command_queue_mt.cpp
msgid "Command Queue"
@@ -203,7 +202,7 @@ msgstr "Cua de Comandes"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Mida de la cua de multiprocés (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -215,7 +214,7 @@ msgstr "Funció"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "Dades"
#: core/io/file_access_network.cpp core/register_core_types.cpp
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
@@ -226,9 +225,8 @@ msgid "Network"
msgstr "Xarxa"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Remot "
+msgstr "FS remot"
#: core/io/file_access_network.cpp
msgid "Page Size"
@@ -240,7 +238,7 @@ msgstr ""
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Mode de bloqueig activat"
#: core/io/http_client.cpp
msgid "Connection"
@@ -261,7 +259,7 @@ msgstr "Activa l'Efecte Paper Ceba"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Rebutja les noves connexions de xarxa"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -287,11 +285,11 @@ msgstr ""
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Mida màxima del buffer d'entrada"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Mida màxima del buffer de sortida"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -303,16 +301,15 @@ msgstr ""
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Matriu de dades"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Editar Connexió:"
+msgstr "Màxim de connexions pendents"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -361,7 +358,7 @@ msgstr "En la crida a '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Llavor"
#: core/math/random_number_generator.cpp
msgid "State"
@@ -369,11 +366,11 @@ msgstr "Estat"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Cua de missatges"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Mida màxima (KB)"
#: core/os/input.cpp
#, fuzzy
@@ -397,7 +394,7 @@ msgstr "Tot"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
msgid "Control"
@@ -405,7 +402,7 @@ msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
#, fuzzy
@@ -425,11 +422,11 @@ msgstr "Explora"
#: core/os/input_event.cpp
msgid "Physical Scancode"
-msgstr ""
+msgstr "Codi d'escaneig físic"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
@@ -449,13 +446,12 @@ msgid "Factor"
msgstr "Factor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ãndex del Botó del ratolí:"
+msgstr "Ãndex de botons"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Doble clic"
#: core/os/input_event.cpp
msgid "Tilt"
@@ -531,9 +527,8 @@ msgid "Instrument"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Nombre de controlador"
+msgstr "Número de controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
@@ -550,9 +545,8 @@ msgid "Config"
msgstr "Configuració"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Configuració del Projecte..."
+msgstr "Anul·lació de la configuració del projecte"
#: core/project_settings.cpp core/resource.cpp
#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
@@ -662,9 +656,12 @@ msgid "Editor"
msgstr "Editor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Arguments de l'Escena Principal:"
+msgstr "Arguments d'execució principal"
+
+#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomenclatura de l'escena"
#: core/project_settings.cpp
msgid "Search In File Extensions"
@@ -674,18 +671,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versions"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de control de versions"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nom del Connector"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Control de Versions"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -884,9 +878,8 @@ msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Connexions al mètode:"
+msgstr "Segons de temps d'espera de connexió"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -1171,9 +1164,8 @@ msgstr "Localització"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Pas de la Rotació:"
+msgstr "Rotació"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
@@ -1181,9 +1173,8 @@ msgid "Value"
msgstr "Valor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Quantitat:"
+msgstr "Quantitat d'arguments"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -1215,14 +1206,12 @@ msgid "Stream"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "òfset de la quadrícula:"
+msgstr "Desplaçament d'inici"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "òfset:"
+msgstr "Desplaçament final"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1346,14 +1335,12 @@ msgid "Remove this track."
msgstr "Treu la Pista."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s):"
-msgstr "Temps (s): "
+msgstr "Temps (s):"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Position:"
-msgstr "Posició"
+msgstr "Posició:"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -1375,9 +1362,8 @@ msgid "Type:"
msgstr "Tipus:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "(Invalid, expected type: %s)"
-msgstr "Plantilla d'exportació no vàlida:"
+msgstr "(No vàlid, tipus esperat: %s)"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -1630,9 +1616,8 @@ msgid "Add Method Track Key"
msgstr "Afegir Clau de Pista de Mètode"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Method not found in object:"
-msgstr "No s'ha trobat el mètode en l'objecte: "
+msgstr "Mètode no trobat a l'objecte:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2450,17 +2435,15 @@ msgid "%s (already exists)"
msgstr "%s (ja existeix)"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-"El contingut del(s) fitxer(s) d'asset \"%s\" - %d entra en conflicte amb el "
-"vostre project:"
+"El contingut del recurs \"%s\" - %d fitxer(s) entra en conflicte amb el "
+"vostre projecte:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
-"Continguts de l'asset \"%s\" - Cap fitxer entra en conflicte amb el vostre "
+"Contingut del recurs \"%s\": no hi ha cap fitxer en conflicte amb el vostre "
"projecte:"
#: editor/editor_asset_installer.cpp
@@ -2477,9 +2460,8 @@ msgid "(and %s more files)"
msgstr "(i %s fitxer(s) més)"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Asset \"%s\" installed successfully!"
-msgstr "El asset \"%s\" s'ha instal·lat exitosament!"
+msgstr "El recurs \"%s\" s'ha instal·lat correctament!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2613,9 +2595,8 @@ msgid "There is no '%s' file."
msgstr "No hi ha cap fitxer '%s'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Layout:"
-msgstr "Desar Disseny"
+msgstr "Disseny:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2738,9 +2719,8 @@ msgid "%s is an invalid path. File does not exist."
msgstr "%s es un camí no vàlid. El fitxer no existeix."
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr "%s es un camí no vàlid. No està en el camí del recurs (res://)."
+msgstr "%s no és un camí vàlid. No a la ruta del recurs (res://)."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -2823,19 +2803,17 @@ msgid "Project export for platform:"
msgstr ""
#: editor/editor_export.cpp
-#, fuzzy
msgid "Completed with errors."
-msgstr "Copia el Camí del Node"
+msgstr "Completat amb errors."
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
-msgstr "Paquet instal·lat amb èxit!"
+msgid "Completed successfully."
+msgstr "Completat amb èxit."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed."
-msgstr "Ha fallat:"
+msgstr "Fallit:"
#: editor/editor_export.cpp
msgid "Storing File:"
@@ -2860,14 +2838,12 @@ msgid "Cannot create file \"%s\"."
msgstr "No s'ha pogut crear el directori."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to export project files."
-msgstr "No s'ha pogut escriure el fitxer"
+msgstr "No s'han pogut exportar els fitxers del projecte."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Can't open file to read from path \"%s\"."
-msgstr "No s'ha pogut escriure en el fitxer:"
+msgstr "No es pot obrir el fitxer per llegir-lo des del camí \"%s\"."
#: editor/editor_export.cpp
#, fuzzy
@@ -2949,9 +2925,8 @@ msgid "Release"
msgstr "alliberat"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Binary Format"
-msgstr "Operador Color."
+msgstr "Format binari"
#: editor/editor_export.cpp
msgid "64 Bits"
@@ -3004,19 +2979,16 @@ msgid "Prepare Template"
msgstr "Administrar Plantilles"
#: editor/editor_export.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "The given export path doesn't exist."
msgstr "El camí d'exportació donat no existeix:"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-#, fuzzy
msgid "Template file not found: \"%s\"."
-msgstr "No s'ha trobat la Plantilla:"
+msgstr "No s'ha trobat el fitxer de plantilla: \"%s\"."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to copy export template."
-msgstr "Plantilla d'exportació no vàlida:"
+msgstr "No s'ha pogut copiar la plantilla d'exportació."
#: editor/editor_export.cpp platform/windows/export/export.cpp
#: platform/x11/export/export.cpp
@@ -3071,9 +3043,8 @@ msgid "Allows to edit scripts using the integrated script editor."
msgstr "Permet editar scripts utilitzant l'editor de scripts integrat."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Provides built-in access to the Asset Library."
-msgstr "Proveeix accés integrat a la Llibreria de Assets."
+msgstr "Proporciona accés integrat a la Biblioteca de Recursos."
#: editor/editor_feature_profile.cpp
msgid "Allows editing the node hierarchy in the Scene dock."
@@ -3319,14 +3290,12 @@ msgid "Save a File"
msgstr "Desa un Fitxer"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "Èxit!"
+msgstr "Accés"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Mode de Reproducció:"
+msgstr "Mode de visualització"
#: editor/editor_file_dialog.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -3344,19 +3313,16 @@ msgid "Mode"
msgstr "Mode d'Escombratge lateral"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Actual:"
+msgstr "Directori actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Perfil Actual:"
+msgstr "Fitxer actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Actual:"
+msgstr "Camí actual"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
@@ -3687,9 +3653,8 @@ msgid "Checked"
msgstr "Element validat"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa en vermell"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -4078,10 +4043,9 @@ msgid "Save changes to '%s' before closing?"
msgstr "Desar els canvis a '%s' abans de tancar?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
-"%s ja no existeix! Si us plau especifiqueu una nova localització de guardat."
+"%s ja no existeix! Si us plau especifiqueu una nova ubicació per desar."
#: editor/editor_node.cpp
msgid ""
@@ -4382,15 +4346,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Camí de l'Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4479,9 +4434,8 @@ msgid "Inspector"
msgstr "Inspector"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Default Property Name Style"
-msgstr "Camí del Projecte:"
+msgstr "Estil de nom de propietat per defecte"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4519,6 +4473,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versions"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Reanomena"
@@ -4547,6 +4505,10 @@ msgstr "Commutar el Mode Lliure de Distraccions."
msgid "Add a new scene."
msgstr "Afegeix una escena nova."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Vés a l'escena oberta anteriorment."
@@ -4903,9 +4865,8 @@ msgid "Update All Changes"
msgstr "Actualitzar quan es canvia"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Changes"
-msgstr "Canvis de Material:"
+msgstr "Actualitza els canvis vitals"
#: editor/editor_node.cpp
msgid "Hide Update Spinner"
@@ -5241,9 +5202,8 @@ msgid "Size:"
msgstr "Mida:"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "Page:"
-msgstr "Pàgina: "
+msgstr "Pàgina:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5330,9 +5290,8 @@ msgid "Extend Script"
msgstr "Estendre l'script"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Nom de l'script:"
+msgstr "Propietari de l'script"
#: editor/editor_run_native.cpp
#, fuzzy
@@ -5510,14 +5469,12 @@ msgid "Directories"
msgstr "Direccions"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Camí del Projecte:"
+msgstr "Escaneja automàticament la ruta del projecte"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Camí del Projecte:"
+msgstr "Camí del projecte per defecte"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5539,9 +5496,8 @@ msgid "File Dialog"
msgstr "Diàleg XForm"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Miniatura..."
+msgstr "Mida de la miniatura"
#: editor/editor_settings.cpp
msgid "Docks"
@@ -5623,14 +5579,12 @@ msgid "Convert Indent On Save"
msgstr "Converteix la Sagnia en Espais"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa pestanyes"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa espais"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
@@ -5666,9 +5620,8 @@ msgid "Appearance"
msgstr ""
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Línia:"
+msgstr "Mostra els números de línia"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5814,9 +5767,8 @@ msgid "Add Type Hints"
msgstr "Tipus"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Utilitzar Cometes Simples"
+msgstr "Utilitza cometes simples"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5840,9 +5792,8 @@ msgid "Grid Map"
msgstr "Mapa de Graella"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance"
-msgstr "Trieu la distància:"
+msgstr "Trieu la distància"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -5895,14 +5846,12 @@ msgid "Shape"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Primary Grid Steps"
-msgstr "Pas de la Quadrícula:"
+msgstr "Passos de la quadrícula primària"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid Size"
-msgstr "Pas de la Quadrícula:"
+msgstr "Mida de la quadrícula"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
@@ -6087,7 +6036,7 @@ msgstr "Elimina Elements de Classe"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Bone Selected Color"
-msgstr "Perfil Actual:"
+msgstr "Color seleccionat de l'os"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
@@ -6098,9 +6047,8 @@ msgid "Bone Outline Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "Mida del Contorn:"
+msgstr "Mida del contorn de l'os"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
@@ -6194,9 +6142,8 @@ msgid "Auto Save"
msgstr "Auto Tall"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Desar l'escena abans de executar-la..."
+msgstr "Desa abans d'executar-lo"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6205,9 +6152,8 @@ msgstr "Vista Frontal"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Remot "
+msgstr "Amfitrió remot"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -6241,9 +6187,8 @@ msgstr "Gestor del Projecte"
#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "Reanomenant directori:"
+msgstr "Ordre d'ordenació"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Symbol Color"
@@ -6275,16 +6220,14 @@ msgid "Comment Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "Emmagatzemant Fitxer:"
+msgstr "Color de la cadena"
#: editor/editor_settings.cpp platform/javascript/export/export.cpp
#: platform/uwp/export/export.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Background Color"
-msgstr "Color de fons no vàlid."
+msgstr "Color de fons"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -6314,14 +6257,12 @@ msgid "Text Color"
msgstr "Planta Següent"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "Línia:"
+msgstr "Color del número de línia"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Safe Line Number Color"
-msgstr "Línia:"
+msgstr "Color del número de línia segura"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Caret Color"
@@ -6447,9 +6388,8 @@ msgid "%s Error"
msgstr "Error"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open the folder containing these templates."
-msgstr "Obrir la carpeta que conte aquestes plantilles."
+msgstr "Obriu la carpeta que conté aquestes plantilles."
#: editor/export_template_manager.cpp
msgid "Uninstall these templates."
@@ -6466,9 +6406,8 @@ msgid "Retrieving the mirror list..."
msgstr "S'estan buscant rèpliques..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Starting the download..."
-msgstr "Començant la descarrega..."
+msgstr "S'està iniciant la baixada..."
#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
@@ -6497,18 +6436,16 @@ msgid "Request failed."
msgstr "Ha fallat la sol·licitud."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Request ended up in a redirect loop."
-msgstr "La sol·licitud a acabat en un bucle de redirecció."
+msgstr "La sol·licitud ha acabat en un bucle de redirecció."
#: editor/export_template_manager.cpp
msgid "Request failed:"
msgstr "La Sol·licitud ha fallat:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download complete; extracting templates..."
-msgstr "Descarrega completa; extraient plantilles..."
+msgstr "S'ha completat la baixada; s'estan extraient les plantilles..."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -6535,7 +6472,6 @@ msgstr ""
"informeu d'aquest problema!"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Best available mirror"
msgstr "Millor mirall disponible"
@@ -6661,9 +6597,8 @@ msgid "Uninstall"
msgstr "Desinstal·lar"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall templates for the current version."
-msgstr "Valor inicial per al comptador."
+msgstr "Desinstal·la les plantilles de la versió actual."
#: editor/export_template_manager.cpp
msgid "Download from:"
@@ -6703,9 +6638,8 @@ msgid "Install from File"
msgstr "Instal·lar des d'un Fitxer"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install templates from a local file."
-msgstr "Instal·lar plantilles des d'un fitxer local."
+msgstr "Instal·la plantilles des d'un fitxer local."
#: editor/export_template_manager.cpp editor/find_in_files.cpp
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
@@ -7178,9 +7112,8 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
#: scene/gui/control.cpp
-#, fuzzy
msgid "Filter"
-msgstr "Filtres:"
+msgstr "Filtre"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp
@@ -7207,17 +7140,15 @@ msgstr "Auto Tall"
#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Horizontal"
-msgstr "Horitzontal:"
+msgstr "Horitzontal"
#: editor/import/resource_importer_layered_texture.cpp
#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Vertical"
-msgstr "Vertical:"
+msgstr "Vertical"
#: editor/import/resource_importer_obj.cpp
#, fuzzy
@@ -7297,9 +7228,8 @@ msgid "Root Type"
msgstr "Tipus de Membre"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Root Name"
-msgstr "Remot "
+msgstr "Nom de l'arrel"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7312,18 +7242,16 @@ msgid "Custom Script"
msgstr "Talla els Nodes"
#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Storage"
-msgstr "Emmagatzemant Fitxer:"
+msgstr "Emmagatzematge"
#: editor/import/resource_importer_scene.cpp
msgid "Use Legacy Names"
msgstr ""
#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Materials"
-msgstr "Canvis de Material:"
+msgstr "Materials"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7400,14 +7328,12 @@ msgid "Enabled"
msgstr "Activar"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Max Linear Error"
-msgstr "Error Lineal Max.:"
+msgstr "Error lineal màxim"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Max Angular Error"
-msgstr "Error Angular Max.:"
+msgstr "Error angular màxim"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7427,9 +7353,8 @@ msgstr "Talls d'Animació"
#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
#: scene/3d/particles.cpp scene/resources/environment.cpp
-#, fuzzy
msgid "Amount"
-msgstr "Quantitat:"
+msgstr "Quantitat"
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -7445,9 +7370,8 @@ msgid "Generating Lightmaps"
msgstr "S'estan generant els Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh:"
-msgstr "S'està generant per a la Malla: "
+msgstr "S'està generant per malla:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7543,9 +7467,8 @@ msgid "Normal Map Invert Y"
msgstr "Escala aleatòria:"
#: editor/import/resource_importer_texture.cpp
-#, fuzzy
msgid "Size Limit"
-msgstr "Mida: "
+msgstr "Límit de mida"
#: editor/import/resource_importer_texture.cpp
msgid "Detect 3D"
@@ -7563,14 +7486,12 @@ msgid ""
msgstr ""
#: editor/import/resource_importer_texture_atlas.cpp
-#, fuzzy
msgid "Atlas File"
-msgstr "Mida del Contorn:"
+msgstr "Fitxer Atles"
#: editor/import/resource_importer_texture_atlas.cpp
-#, fuzzy
msgid "Import Mode"
-msgstr "Mode d'Exportació:"
+msgstr "Mode d'importació"
#: editor/import/resource_importer_texture_atlas.cpp
#, fuzzy
@@ -7582,9 +7503,8 @@ msgid "Trim Alpha Border From Region"
msgstr ""
#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-#, fuzzy
msgid "Force"
-msgstr "Malla d'Origen:"
+msgstr "Força"
#: editor/import/resource_importer_wav.cpp
msgid "8 Bit"
@@ -7705,9 +7625,8 @@ msgid "Failed to load resource."
msgstr "No s'ha pogut carregar el recurs."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Property Name Style"
-msgstr "Nom del Projecte:"
+msgstr "Estil del nom de la propietat"
#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
msgid "Raw"
@@ -8059,9 +7978,8 @@ msgid "Blend:"
msgstr "Mescla:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Parameter Changed:"
-msgstr "Paràmetre Canviat:"
+msgstr "Paràmetre canviat:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -8139,14 +8057,12 @@ msgstr ""
"que no es poden recuperar els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Anim Clips"
-msgstr "Talls d'Animació"
+msgstr "Clips d'animació"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Audio Clips"
-msgstr "Talls d'Àudio"
+msgstr "Clips d'àudio"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Functions"
@@ -8474,9 +8390,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Definiu l'animació final. Això és útil per a sub-transicions."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition:"
-msgstr "Transició: "
+msgstr "Transició:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8743,9 +8658,8 @@ msgid "Download Error"
msgstr "Error en la Baixada"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "Perfils Disponibles:"
+msgstr "URL disponibles"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -8808,9 +8722,8 @@ msgid "All"
msgstr "Tot"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Search templates, projects, and demos"
-msgstr "Buscar plantilles, projectes i demos."
+msgstr "Cerca plantilles, projectes i demostracions"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Search assets (excluding templates, projects, and demos)"
@@ -9858,9 +9771,8 @@ msgstr ""
#: editor/plugins/item_list_editor_plugin.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Separator"
-msgstr "Separació:"
+msgstr "Separador"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
@@ -9951,9 +9863,8 @@ msgid "No mesh to debug."
msgstr "Cap malla per depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Mesh has no UV in layer %d."
-msgstr "El model no té UVs en aquesta capa."
+msgstr "La malla no té UV a la capa %d."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -10293,9 +10204,8 @@ msgid "Volume"
msgstr "Volum"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source:"
-msgstr "Font d'Emissió: "
+msgstr "Font d'emissió:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10709,9 +10619,8 @@ msgid "Room Generate Points"
msgstr "Recompte de punts generats"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Generate Points"
-msgstr "Recompte de punts generats"
+msgstr "Generar punts"
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
@@ -11028,9 +10937,8 @@ msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Color de fons no vàlid."
+msgstr "Color de fons de l'script actual"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -11043,9 +10951,8 @@ msgid "Sort Scripts By"
msgstr "Crea un Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "List Script Names As"
-msgstr "Nom de l'script:"
+msgstr "Llista els noms dels scripts com a"
#: editor/plugins/script_editor_plugin.cpp
msgid "Exec Flags"
@@ -11429,9 +11336,8 @@ msgstr "Translació"
#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scaling:"
-msgstr "Escala: "
+msgstr "Escalat:"
#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11461,27 +11367,22 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn:"
-msgstr "Objectes Dibuixats:"
+msgstr "Objectes dibuixats:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes:"
-msgstr "Canvis de Material:"
+msgstr "Canvis del Material:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes:"
-msgstr "Canvis de Shader:"
+msgstr "Canvis del Shader:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes:"
-msgstr "Canvis de superfície:"
+msgstr "Canvis de la superfície:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
msgstr "Crides de Dibuix:"
@@ -11996,19 +11897,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Simplification:"
-msgstr "Simplificació: "
+msgstr "Simplificació:"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Shrink (Pixels):"
-msgstr "Redueix (Píxels): "
+msgstr "Redueix (Píxels):"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Grow (Pixels):"
-msgstr "Engrandeix (Píxels): "
+msgstr "Engrandeix (Píxels):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12266,9 +12164,8 @@ msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select by data type:"
-msgstr "Selecciona un Node:"
+msgstr "Seleccioneu per tipus de dades:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items."
@@ -12337,19 +12234,16 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Collapse types."
-msgstr "Col·lapsar tot."
+msgstr "Col·lapsar els tipus."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Expand types."
-msgstr "Expandir tot."
+msgstr "Expandir els tipus."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all Theme items."
-msgstr "Seleccioneu un Fitxer de Plantilla."
+msgstr "Seleccioneu tots els elements del tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12518,9 +12412,8 @@ msgid "Add Type:"
msgstr "Tipus:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item:"
-msgstr "Afegeix un Element:"
+msgstr "Afegeix un element:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12528,9 +12421,8 @@ msgid "Add StyleBox Item"
msgstr "Afegeix tots els Elements"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove Items:"
-msgstr "Elimina Element:"
+msgstr "Suprimeix els elements:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
@@ -12571,9 +12463,8 @@ msgid "Editor Theme"
msgstr "Editar Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select Another Theme Resource:"
-msgstr "Elimina el Recurs:"
+msgstr "Seleccioneu un altre recurs de tema:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12600,9 +12491,8 @@ msgid "Available Node-based types:"
msgstr "Perfils Disponibles:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Type name is empty!"
-msgstr "El nom del fitxer és buit."
+msgstr "El nom del tipus és buit!"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -13051,9 +12941,8 @@ msgid "Priority"
msgstr "Mode Prioritat"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-#, fuzzy
msgid "Z Index"
-msgstr "Ãndex"
+msgstr "Ãndex Z"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Region Mode"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 1e589d1dc3..9c3aea1d27 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -718,6 +718,11 @@ msgid "Main Run Args"
msgstr "Argumenty hlavní scény:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Cesta ke scéně:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -725,19 +730,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Správa verzí"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Verzování (VCS)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Název pluginu:"
+msgid "Version Control Plugin Name"
+msgstr "Správa verzí"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2876,7 +2877,7 @@ msgstr "Kopírovat cestu k uzlu"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "BalíÄek byl úspěšnÄ› nainstalován!"
#: editor/editor_export.cpp
@@ -4398,15 +4399,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scéna"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Cesta ke scéně:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4535,6 +4527,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Správa verzí"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Přejmenovat"
@@ -4563,6 +4559,10 @@ msgstr "Zapnout nerozptylující režim."
msgid "Add a new scene."
msgstr "Přidat novou scénu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scéna"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Přejít na předchozí scénu."
diff --git a/editor/translations/da.po b/editor/translations/da.po
index fb07e70ead..a90d207941 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -683,6 +683,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene Sti:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -690,20 +695,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versionskontrol"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Node Navn:"
+msgid "Version Control Plugin Name"
+msgstr "Versionskontrol"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2890,7 +2890,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakke installeret med succes!"
#: editor/editor_export.cpp
@@ -4449,15 +4449,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene Sti:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4586,6 +4577,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versionskontrol"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Omdøb"
@@ -4613,6 +4609,10 @@ msgstr "Skift distraktions-fri modus."
msgid "Add a new scene."
msgstr "Tilføj en ny scene."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå til den forrige åbnede scene."
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 63031da9ea..795dbd5328 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -706,6 +706,10 @@ msgid "Main Run Args"
msgstr "Laufzeitargumente für Main"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Szenenbenennung"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "In Dateierweiterungen suchen"
@@ -713,18 +717,15 @@ msgstr "In Dateierweiterungen suchen"
msgid "Script Templates Search Path"
msgstr "Suchpfad für Skriptvorlagen"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionsverwaltung"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Autoladen beim Start"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Pluginname"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Versionsverwaltung"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2828,7 +2829,7 @@ msgstr "Dateipfade vervollständigen"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paket wurde erfolgreich installiert!"
#: editor/editor_export.cpp
@@ -4362,14 +4363,6 @@ msgstr ""
"In Datei ‚%s‘ kann nicht geschrieben werden. Die Datei wird bereits "
"verwendet, sie ist gesperrt, oder es ist keine Schreibberechtigung vorhanden."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Szene"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Szenenbenennung"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4484,6 +4477,10 @@ msgid "Default Color Picker Mode"
msgstr "Standard Farbwahlmodus"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionsverwaltung"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nutzername"
@@ -4511,6 +4508,10 @@ msgstr "Ablenkungsfreien Modus umschalten."
msgid "Add a new scene."
msgstr "Eine neue Szene hinzufügen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Szene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gehe zu vorher geöffneter Szene."
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index d3e83bf799..169d40ebd7 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -618,24 +618,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2680,7 +2679,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4086,14 +4085,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4208,6 +4199,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4235,6 +4230,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 10357edf88..a3f5e815e1 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -660,6 +660,10 @@ msgid "Main Run Args"
msgstr "ΟÏίσματα κÏÏιας σκηνής"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Όνομα Σκηνής"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Αναζήτηση στις Επεκτάσεις ΑÏχείων"
@@ -667,18 +671,15 @@ msgstr "Αναζήτηση στις Επεκτάσεις ΑÏχείων"
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Έλεγχος έκδοσης"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "ΣÏστημα Ελέγχου Έκδοσης"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Όνομα ΠÏοσθέτου"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Έλεγχος έκδοσης"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2835,7 +2836,7 @@ msgstr "ΑντιγÏαφή διαδÏομής κόμβου"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
#: editor/editor_export.cpp
@@ -4377,14 +4378,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Σκηνή"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Όνομα Σκηνής"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4502,6 +4495,10 @@ msgid "Default Color Picker Mode"
msgstr "ΠÏοεπιλεγμένη ΛειτουÏγία Επιλογέα ΧÏώματος"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Έλεγχος έκδοσης"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Ψευδώνυμο"
@@ -4529,6 +4526,10 @@ msgstr "Εναλλαγή λειτουÏγίας χωÏίς πεÏισπασμοÏ
msgid "Add a new scene."
msgstr "ΠÏοσθήκη νέας σκηνής."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Σκηνή"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ΕπιστÏοφή στην Ï€Ïοηγουμένως ανοιγμένη σκηνή."
diff --git a/editor/translations/en_Shaw.po b/editor/translations/en_Shaw.po
index 0c77d2c65e..14388e1c66 100644
--- a/editor/translations/en_Shaw.po
+++ b/editor/translations/en_Shaw.po
@@ -630,24 +630,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2702,7 +2701,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4110,14 +4109,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4232,6 +4223,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4259,6 +4254,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 1cc476926f..46e8f898ce 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -691,6 +691,11 @@ msgid "Main Run Args"
msgstr "Parametroj de ĉefa sceno:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scena dosierindiko:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -698,19 +703,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versikontrolo"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versikontrolo"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nomo de kromprogramon:"
+msgid "Version Control Plugin Name"
+msgstr "Versikontrolo"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2846,7 +2847,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakaĵo instalis sukcese!"
#: editor/editor_export.cpp
@@ -4375,15 +4376,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Sceno"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scena dosierindiko:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4512,6 +4504,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versikontrolo"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Renomi"
@@ -4540,6 +4536,10 @@ msgstr "Baskuli sendistran reÄimon."
msgid "Add a new scene."
msgstr "Aldoni novan scenon."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Sceno"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Iri al antaÅ­e malfermitan scenon."
diff --git a/editor/translations/es.po b/editor/translations/es.po
index ca733436b7..d419b78e4b 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -84,8 +84,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-06-08 06:48+0000\n"
-"Last-Translator: David Martínez <goddrinksjava@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -93,7 +93,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -350,7 +350,7 @@ msgstr "Tamaño Máximo del Buffer de Salida"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr "Stream Peer"
+msgstr "Stream de Pares"
#: core/io/stream_peer.cpp
msgid "Big Endian"
@@ -705,6 +705,10 @@ msgid "Main Run Args"
msgstr "Argumentos de la Ejecución Principal"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nombres de Escenas"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Buscar En Extensiones de Archivos"
@@ -712,18 +716,15 @@ msgstr "Buscar En Extensiones de Archivos"
msgid "Script Templates Search Path"
msgstr "Ruta de Búsqueda de Plantillas de Scripts"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versiones"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Cargar automáticamente al inicio"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nombre del Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Control de Versiones"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -915,7 +916,7 @@ msgstr "Tiempo de Espera de Conexión en Segundos"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr "Packet Peer Stream"
+msgstr "Stream de Paquetes de Pares"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
@@ -1088,7 +1089,7 @@ msgstr "Ponderar Muestras"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr "Voxel Cone Tracing"
+msgstr "Trazado de Conos de Vóxeles"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
@@ -1197,9 +1198,8 @@ msgid "Value"
msgstr "Valor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Cuenta"
+msgstr "Conteo de Argumentos"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -1360,19 +1360,16 @@ msgid "Remove this track."
msgstr "Eliminar esta pista."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Time (s):"
-msgstr "Tiempo (s): "
+msgstr "Tiempo (s):"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Position:"
-msgstr "Posición"
+msgstr "Posición:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Rotation:"
-msgstr "Rotación"
+msgstr "Rotación:"
#: editor/animation_track_editor.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -1389,29 +1386,24 @@ msgid "Type:"
msgstr "Tipo:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "(Invalid, expected type: %s)"
-msgstr "Plantilla de exportación inválida:"
+msgstr "(Inválido, tipo esperado: %s)"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Easing:"
-msgstr "Entrada-Salida Suave"
+msgstr "Relajación:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "In-Handle:"
-msgstr "Establecer Manipulador"
+msgstr "In-Handle:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Out-Handle:"
-msgstr "Establecer Manipulador"
+msgstr "Out-Handle:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Stream:"
-msgstr "Stream Peer"
+msgstr "Stream:"
#: editor/animation_track_editor.cpp
#, fuzzy
@@ -1643,9 +1635,8 @@ msgid "Add Method Track Key"
msgstr "Añadir Clave de Pista de Método"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Method not found in object:"
-msgstr "Método no encontrado en el objeto: "
+msgstr "Método no encontrado en el objeto:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2615,9 +2606,8 @@ msgid "There is no '%s' file."
msgstr "No hay ningún archivo `%s'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Layout:"
-msgstr "Layout"
+msgstr "Layout:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2823,19 +2813,17 @@ msgid "Project export for platform:"
msgstr ""
#: editor/editor_export.cpp
-#, fuzzy
msgid "Completed with errors."
-msgstr "Completar Rutas de Archivos"
+msgstr "Completado con errores."
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
-msgstr "¡Paquete instalado con éxito!"
+msgid "Completed successfully."
+msgstr "Completado con éxito."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed."
-msgstr "Fallido:"
+msgstr "Falló."
#: editor/editor_export.cpp
msgid "Storing File:"
@@ -2861,14 +2849,12 @@ msgid "Cannot create file \"%s\"."
msgstr "No se pudo crear la carpeta."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to export project files."
-msgstr "No se pudieron exportar los archivos del proyecto"
+msgstr "Fallo en la exportación de los archivos del proyecto."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Can't open file to read from path \"%s\"."
-msgstr "No se puede abrir el archivo para escribir:"
+msgstr "No se puede abrir el archivo a leer de la ruta \"%s\"."
#: editor/editor_export.cpp
#, fuzzy
@@ -2999,19 +2985,16 @@ msgid "Prepare Template"
msgstr "Administrar Plantillas"
#: editor/editor_export.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "The given export path doesn't exist."
-msgstr "La ruta de exportación especificada no existe:"
+msgstr "La ruta de exportación proporcionada no existe."
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-#, fuzzy
msgid "Template file not found: \"%s\"."
-msgstr "Archivo de plantilla no encontrado:"
+msgstr "Archivo de plantilla no encontrado: \"%s\"."
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to copy export template."
-msgstr "Plantilla de exportación inválida:"
+msgstr "Fallo al copiar la plantilla de exportación."
#: editor/editor_export.cpp platform/windows/export/export.cpp
#: platform/x11/export/export.cpp
@@ -4354,14 +4337,6 @@ msgstr ""
"No se puede escribir en el archivo '%s', archivo en uso, bloqueado o sin "
"permisos."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nombres de Escenas"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4476,6 +4451,10 @@ msgid "Default Color Picker Mode"
msgstr "Modo De Selección De Color Por Defecto"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versiones"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nombre de usuario"
@@ -4503,6 +4482,10 @@ msgstr "Act./Desact. modo sin distracciones."
msgid "Add a new scene."
msgstr "Añadir nueva escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir a la escena abierta previamente."
@@ -5199,9 +5182,8 @@ msgid "Size:"
msgstr "Tamaño:"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "Page:"
-msgstr "Página: "
+msgstr "Página:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5613,7 +5595,7 @@ msgstr "Plegado de Código"
#: editor/editor_settings.cpp
msgid "Word Wrap"
-msgstr ""
+msgstr "Ajuste de Palabras"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
@@ -5621,7 +5603,7 @@ msgstr "Mostrar Guías de Longitud de Línea"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
-msgstr ""
+msgstr "Directriz de longitud de Línea de Columna Flexible"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Hard Column"
@@ -5722,9 +5704,8 @@ msgid "Complete File Paths"
msgstr "Completar Rutas de Archivos"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
msgid "Add Type Hints"
-msgstr "Añadir Tipo"
+msgstr "Añadir Sugerencias de Tipo"
#: editor/editor_settings.cpp
msgid "Use Single Quotes"
@@ -5843,9 +5824,8 @@ msgid "Default Z Far"
msgstr "Z Lejana por Defecto"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr "Número de Hilos de la CPU para Baking de Mapa de Luz"
+msgstr "Número de hilos de la CPU para el Lightmap Baking"
#: editor/editor_settings.cpp
msgid "Navigation Scheme"
@@ -5968,9 +5948,8 @@ msgid "Bone Selected Color"
msgstr "Selección del Color de los Huesos"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone IK Color"
-msgstr "Color IK Hueso"
+msgstr "Color del hueso IK"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
@@ -7257,9 +7236,8 @@ msgid "Generating Lightmaps"
msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh:"
-msgstr "Generando para la Malla: "
+msgstr "Generar para el Mesh:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -8281,9 +8259,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Asignar la animación de fin. Esto es útil para sub-transiciones."
#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
msgid "Transition:"
-msgstr "Transición: "
+msgstr "Transición:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -10061,9 +10038,8 @@ msgid "Volume"
msgstr "Volumen"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source:"
-msgstr "Fuente de Emisión: "
+msgstr "Fuente de Emisión:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -11162,15 +11138,13 @@ msgstr "Mover"
#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scaling:"
-msgstr "Escalado: "
+msgstr "Escala:"
#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translating:"
-msgstr "Trasladar: "
+msgstr "Trasladar:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11714,19 +11688,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Simplification:"
-msgstr "Simplificación: "
+msgstr "Simplificación:"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Shrink (Pixels):"
-msgstr "Encoger (Píxeles): "
+msgstr "Reducción (Píxeles):"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Grow (Pixels):"
-msgstr "Crecer (Pixeles): "
+msgstr "Crecimiento (Píxeles):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -15908,9 +15879,8 @@ msgid "Attach Node Script"
msgstr "Añadir Script de Nodo"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Remote %s:"
-msgstr "Remoto "
+msgstr "Remoto %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16956,9 +16926,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative Singleton desactivado"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
msgid "Libraries:"
-msgstr "Bibliotecas: "
+msgstr "Librerías:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -17849,9 +17818,8 @@ msgstr ""
"trabajo de nodos. Prueba arreglando el nodo."
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid "Node returned an invalid sequence output:"
-msgstr "El nodo devolvió una secuencia de salida incorrecta: "
+msgstr "El nodo ha devuelto una secuencia de salida inválida:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
@@ -17860,9 +17828,8 @@ msgstr ""
"problema!"
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid "Stack overflow with stack depth:"
-msgstr "Desbordamiento de pila en el nivel: "
+msgstr "Desbordamiento de pila con profundidad de pila:"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -18232,18 +18199,16 @@ msgid "for (elem) in (input):"
msgstr "for (elem) in (input):"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Input type not iterable:"
-msgstr "El tipo de entrada no es iterable: "
+msgstr "Tipo de entrada no iterable:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "El iterador ya no es correcto"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Iterator became invalid:"
-msgstr "El iterador ya no es correcto: "
+msgstr "El iterador es inválido:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18405,14 +18370,12 @@ msgid "Operator"
msgstr "Iterador"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Invalid argument of type:"
-msgstr ": Argumento incorrecto de tipo: "
+msgstr "Argumento inválido de tipo:"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Invalid arguments:"
-msgstr ": Argumentos incorrectos: "
+msgstr "Argumentos inválidos:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18424,14 +18387,12 @@ msgid "Var Name"
msgstr "Nombre"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "VariableGet not found in script:"
-msgstr "VariableGet no encontrado en el script: "
+msgstr "VariableGet no encontrada en el script:"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "VariableSet not found in script:"
-msgstr "VariableSet no encontrado en el script: "
+msgstr "VariableSet no encontrada en el script:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -19101,15 +19062,13 @@ msgid "Code Signing"
msgstr "Firma de código DMG"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"'apksigner' could not be found. Please check that the command is available "
"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"No se ha encontrado 'apksigner'.\n"
-"Por favor, compruebe que el comando está disponible en el directorio Android "
-"SDK build-tools.\n"
-"El resultado %s es sin firma."
+"No se ha encontrado el 'apksigner'. Por favor, comprueba que el comando está "
+"disponible en el directorio Android SDK build-tools. El resultado %s es sin "
+"firma."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -19124,9 +19083,8 @@ msgid "Could not find keystore, unable to export."
msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not start apksigner executable."
-msgstr "¡No se pudo comenzar el subproceso!"
+msgstr "No se ha podido iniciar el ejecutable apksigner."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
@@ -19158,9 +19116,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Unsupported export format!"
-msgstr "¡Formato de exportación no compatible!\n"
+msgstr "¡Formato de exportación no compatible!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19172,29 +19129,24 @@ msgstr ""
"'Proyecto'."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"La versión de compilación de Android no coincide:\n"
-" Plantilla instalada: %s\n"
-" Versión de Godot: %s\n"
-"Por favor, reinstala la plantilla de compilación de Android desde el menú "
-"'Proyecto'."
+"La versión de compilación de Android no coincide: Plantilla instalada: %s, "
+"versión de Godot: %s. Reinstala la plantilla de compilación de Android desde "
+"el menú \"Proyecto\"."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"No se puede sobrescribir los archivos res://android/build/res/*.xml con el "
-"nombre del proyecto"
+"mismo nombre del proyecto."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files to gradle project."
-msgstr "No se pueden exportar los archivos del proyecto a un proyecto gradle\n"
+msgstr "No se pueden exportar los archivos del proyecto a un proyecto gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19205,13 +19157,12 @@ msgid "Building Android Project (gradle)"
msgstr "Construir Proyecto Android (gradle)"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"La construcción del proyecto Android falló, comprueba la salida del error.\n"
-"También puedes visitar docs.godotengine.org para consultar la documentación "
+"La compilación del proyecto Android ha fallado, comprueba la salida del "
+"error. También puedes visitar docs.godotengine.org para ver la documentación "
"de compilación de Android."
#: platform/android/export/export_plugin.cpp
@@ -19227,41 +19178,35 @@ msgstr ""
"directorio del proyecto de gradle para ver los resultados."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: \"%s\"."
-msgstr "Paquete no encontrado:% s"
+msgstr "Paquete no encontrado: \"%s\"."
#: platform/android/export/export_plugin.cpp
msgid "Creating APK..."
msgstr "Creando APK..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find template APK to export: \"%s\"."
-msgstr ""
-"No se pudo encontrar la plantilla APK para exportar:\n"
-"%s"
+msgstr "No se pudo encontrar la plantilla APK para exportar: \"%s\"."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"Faltan bibliotecas en la plantilla de exportación para las arquitecturas "
-"seleccionadas: %s.\n"
-"Por favor, construya una plantilla con todas las bibliotecas necesarias, o "
-"desmarque las arquitecturas que faltan en el preajuste de exportación."
+"Faltan librerías en la plantilla de exportación para las arquitecturas "
+"seleccionadas: %s. Por favor, crea una plantilla con todas las librerías "
+"necesarias, o desmarca las arquitecturas que faltan en el preset de "
+"exportación."
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
msgstr "Añadiendo archivos ..."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files."
-msgstr "No se pudieron exportar los archivos del proyecto"
+msgstr "No se han podido exportar los archivos del proyecto."
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -19533,19 +19478,16 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Ejecutar HTML exportado en el navegador predeterminado del sistema."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export: \"%s\"."
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgstr "No se pudo abrir la plantilla para la exportación: \"%s\"."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Invalid export template: \"%s\"."
-msgstr "Plantilla de exportación inválida:"
+msgstr "Plantilla de exportación inválida: \"%s\"."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file: \"%s\"."
-msgstr "No se puede escribir en el archivo:"
+msgstr "No se pudo escribir el archivo: \"%s\"."
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
@@ -19553,9 +19495,8 @@ msgid "Icon Creation"
msgstr "Asignar Margen"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file: \"%s\"."
-msgstr "No se pudo leer el archivo:"
+msgstr "No se pudo leer el archivo: \"%s\"."
#: platform/javascript/export/export.cpp
msgid "PWA"
@@ -19635,19 +19576,16 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read HTML shell: \"%s\"."
-msgstr "No se pudo leer el shell HTML:"
+msgstr "No se ha podido leer el HTML shell: \"%s\"."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not create HTTP server directory: %s."
-msgstr "No se pudo crear el directorio del servidor HTTP:"
+msgstr "No se ha podido crear el directorio del servidor HTTP: %s."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Error starting HTTP server: %d."
-msgstr "Error al iniciar el servidor HTTP:"
+msgstr "Error al iniciar el servidor HTTP: %d."
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19938,19 +19876,16 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not open icon file \"%s\"."
-msgstr "No se pudieron exportar los archivos del proyecto"
+msgstr "No se ha podido abrir el archivo de icono \"%s\"."
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start xcrun executable."
-msgstr "¡No se pudo comenzar el subproceso!"
+msgstr "No se ha podido iniciar el ejecutable xcrun."
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Notarization failed."
-msgstr "Traducciones"
+msgstr "La notarización ha fallado."
#: platform/osx/export/export.cpp
msgid "Notarization request UUID: \"%s\""
@@ -20013,9 +19948,8 @@ msgid "No identity found."
msgstr "No se encontró identidad."
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Cannot sign file %s."
-msgstr "Error guardando el archivo: %s"
+msgstr "No se puede firmar el archivo %s."
#: platform/osx/export/export.cpp
#, fuzzy
@@ -20030,9 +19964,8 @@ msgid "DMG Creation"
msgstr "Direcciones"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start hdiutil executable."
-msgstr "¡No se pudo comenzar el subproceso!"
+msgstr "No se ha podido iniciar el ejecutable hdiutil."
#: platform/osx/export/export.cpp
msgid "`hdiutil create` failed - file exists."
@@ -20047,14 +19980,13 @@ msgid "Creating app bundle"
msgstr "Crear paquete de aplicaciones"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not find template app to export: \"%s\"."
-msgstr "No se pudo encontrar la aplicación de plantilla para exportar:"
+msgstr ""
+"No se ha podido encontrar la plantilla de la aplicación a exportar: \"%s\"."
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Invalid export format."
-msgstr "Plantilla de exportación inválida:"
+msgstr "Formato de exportación inválido."
#: platform/osx/export/export.cpp
msgid ""
@@ -20119,9 +20051,8 @@ msgid "ZIP Creation"
msgstr "Proyecto"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not open file to read from path \"%s\"."
-msgstr "No se pueden exportar los archivos del proyecto a un proyecto gradle\n"
+msgstr "No se pudo abrir el archivo a leer de la ruta \"%s\"."
#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
@@ -20477,9 +20408,8 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Failed to rename temporary file \"%s\"."
-msgstr "No se puede eliminar el archivo temporal:"
+msgstr "Fallo al renombrar el archivo temporal \"%s\"."
#: platform/windows/export/export.cpp
msgid "Identity Type"
@@ -20567,9 +20497,8 @@ msgid "Could not find osslsigncode executable at \"%s\"."
msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid identity type."
-msgstr "Identificador inválido:"
+msgstr "Tipo de identificador inválido."
#: platform/windows/export/export.cpp
#, fuzzy
@@ -20593,9 +20522,8 @@ msgid ""
msgstr ""
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Failed to remove temporary file \"%s\"."
-msgstr "No se puede eliminar el archivo temporal:"
+msgstr "No se ha podido eliminar el archivo temporal \"%s\"."
#: platform/windows/export/export.cpp
msgid ""
@@ -23894,9 +23822,8 @@ msgid "Cast Shadow"
msgstr "Sombra Proyectada"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Extra Cull Margin"
-msgstr "Argumentos extras de llamada:"
+msgstr "Margen de Sacrificio Extra"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -23987,9 +23914,8 @@ msgid "Delay"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Random Delay"
-msgstr "Inclinación al azar:"
+msgstr "Retraso Aleatorio"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -24474,9 +24400,8 @@ msgid "Right Disconnects"
msgstr "Desconectar"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Scroll Offset"
-msgstr "Desplazamiento de Cuadrícula:"
+msgstr "Desplazamiento de Scroll"
#: scene/gui/graph_edit.cpp
msgid "Snap Distance"
@@ -26324,12 +26249,11 @@ msgstr "Fuente Principal"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
msgid "Table H Separation"
-msgstr "Separación:"
+msgstr "Separación de Tabla H"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Table V Separation"
-msgstr "Separación:"
+msgstr "Separación de Tabla V"
#: scene/resources/default_theme/default_theme.cpp
msgid "Margin Left"
@@ -26588,9 +26512,8 @@ msgid "Max Steps"
msgstr "Paso"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade In"
-msgstr "Fundido de entrada (s):"
+msgstr "Fundido de Entrada"
#: scene/resources/environment.cpp
msgid "Fade Out"
@@ -26732,9 +26655,8 @@ msgid "Color Correction"
msgstr "Corrección del Color"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Ascent"
-msgstr "Recientes:"
+msgstr "Aumento"
#: scene/resources/font.cpp
#, fuzzy
@@ -26747,9 +26669,8 @@ msgid "Raw Data"
msgstr "Profundidad"
#: scene/resources/gradient.cpp
-#, fuzzy
msgid "Offsets"
-msgstr "Offset:"
+msgstr "Desplazamientos"
#: scene/resources/height_map_shape.cpp
msgid "Map Width"
@@ -27067,9 +26988,8 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Sampling"
-msgstr "Escalado: "
+msgstr "Muestreo"
#: scene/resources/navigation_mesh.cpp
#, fuzzy
@@ -27677,9 +27597,8 @@ msgstr ""
#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_delay.cpp
#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
msgid "Pan"
-msgstr "Plano:"
+msgstr "Pan"
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
@@ -28297,7 +28216,7 @@ msgstr "Ver Eliminación de Oclusión"
#: servers/visual_server.cpp
msgid "Max Active Spheres"
-msgstr ""
+msgstr "Esferas Activas Máximas"
#: servers/visual_server.cpp
msgid "Max Active Polygons"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 2d5420e663..c79bf0828f 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -671,6 +671,11 @@ msgid "Main Run Args"
msgstr "Argumentos de Escena Principal:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ruta a la Escena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Buscar En Extensiones de Archivos"
@@ -678,18 +683,15 @@ msgstr "Buscar En Extensiones de Archivos"
msgid "Script Templates Search Path"
msgstr "Ruta de Búsqueda de Plantillas de Scripts"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versiones"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de Control de Versiones"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nombre del Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Control de Versiones"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2816,7 +2818,7 @@ msgstr "Copiar Ruta del Nodo"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "El Paquete se instaló exitosamente!"
#: editor/editor_export.cpp
@@ -4360,15 +4362,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ruta a la Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4497,6 +4490,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versiones"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nombre de usuario"
@@ -4524,6 +4521,10 @@ msgstr "Act./Desact. modo sin distracciones."
msgid "Add a new scene."
msgstr "Agregar nueva escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir a la escena abierta previamente."
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 05cf7b9e4d..ca2105aa20 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -669,6 +669,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Stseeni tee:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -676,19 +681,13 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Pistikprogrammi nimi:"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2784,7 +2783,7 @@ msgid "Completed with errors."
msgstr "Kopeeri sõlme tee"
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4265,15 +4264,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Stseen"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Stseeni tee:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4399,6 +4389,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Nimeta ümber"
@@ -4427,6 +4421,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Lisa uus stseen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Stseen"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index 1ea606fe3c..cfbf2945ff 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -639,6 +639,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Eszenaren bidea:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -646,18 +651,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Bertsio kontrola"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Bertsio kontrola"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Bertsio kontrola"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2749,7 +2751,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paketea ondo instalatu da!"
#: editor/editor_export.cpp
@@ -4186,15 +4188,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Eszenaren bidea:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4315,6 +4308,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Bertsio kontrola"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4342,6 +4339,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 4c2b858131..43d79c6ede 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -701,6 +701,10 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr ""
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -708,19 +712,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "مهار نسخه"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "مهار نسخه"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§"
+msgid "Version Control Plugin Name"
+msgstr "مهار نسخه"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2834,7 +2834,7 @@ msgstr "کپی کردن مسیر node"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "بسته با موÙقیت نصب شد!"
#: editor/editor_export.cpp
@@ -4295,14 +4295,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "صحنه"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4430,6 +4422,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "مهار نسخه"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "تغییر نام"
@@ -4458,6 +4454,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Ø§ÙØ²ÙˆØ¯Ù† صحنه جدید."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "صحنه"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index c921bfdb62..7c69731934 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -703,6 +703,11 @@ msgid "Main Run Args"
msgstr "Pääkohtauksen argumentit:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kohtauspolku:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -710,19 +715,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionhallinta"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versionhallintajärjestelmä"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Liitännäisen nimi:"
+msgid "Version Control Plugin Name"
+msgstr "Versionhallinta"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2858,7 +2859,7 @@ msgstr "Kopioi solmun polku"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paketti asennettu onnistuneesti!"
#: editor/editor_export.cpp
@@ -4390,15 +4391,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Kohtaus"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kohtauspolku:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4527,6 +4519,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionhallinta"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Käyttäjänimi"
@@ -4554,6 +4550,10 @@ msgstr "Käytä häiriötöntä tilaa."
msgid "Add a new scene."
msgstr "Lisää uusi kohtaus."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Kohtaus"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Siirry aiemmin avattuun kohtaukseen."
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index 88bb60f942..19cb3febb0 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -630,6 +630,10 @@ msgid "Main Run Args"
msgstr "Pangunahing Args sa Pagtakbo"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr ""
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Maghanap sa mga File Extension"
@@ -637,18 +641,15 @@ msgstr "Maghanap sa mga File Extension"
msgid "Script Templates Search Path"
msgstr "Path ng mga Hahanaping Script Template"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Version Control"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Kusang i-load sa Simula"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Pangalan ng Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Version Control"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2705,7 +2706,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4122,14 +4123,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4247,6 +4240,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Version Control"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4274,6 +4271,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 056d03af56..6b077ba5e4 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -734,6 +734,11 @@ msgid "Main Run Args"
msgstr "Arguments de la scène principale :"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Chemin de la scène :"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -741,18 +746,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Contrôle de version"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Système de contrôle de version"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nom du Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Contrôle de version"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2883,7 +2885,7 @@ msgstr "Copier le chemin du nœud"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paquetage installé avec succès !"
#: editor/editor_export.cpp
@@ -4422,15 +4424,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scène"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Chemin de la scène :"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4558,6 +4551,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Contrôle de version"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nom d'utilisateur"
@@ -4585,6 +4582,10 @@ msgstr "Basculer en mode sans distraction."
msgid "Add a new scene."
msgstr "Ajouter une nouvelle scène."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scène"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Aller à la scène ouverte précédemment."
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index 7d8a3f9826..884214d851 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -636,24 +636,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2715,7 +2714,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4126,14 +4125,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4250,6 +4241,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ainm nua:"
@@ -4278,6 +4273,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/gl.po b/editor/translations/gl.po
index 991f3be41a..398746ea6a 100644
--- a/editor/translations/gl.po
+++ b/editor/translations/gl.po
@@ -686,6 +686,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ruta da Escena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -693,19 +698,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versións"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Control de Versións"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nome do Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Control de Versións"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2845,7 +2846,7 @@ msgstr "Copiar Ruta do Nodo"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paquete instalado correctamente!"
#: editor/editor_export.cpp
@@ -4387,15 +4388,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ruta da Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4521,6 +4513,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versións"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Renomear"
@@ -4549,6 +4545,10 @@ msgstr "Act./Desact. modo sen distraccións."
msgid "Add a new scene."
msgstr "Engadir unha nova escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir á escena aberta previamente."
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 48fb256d23..78c74fd01b 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -675,6 +675,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "נתיב סצנות:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -682,19 +687,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "בקרת גירס×ות"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "בקרת גירס×ות"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "×©× ×”×ž×¤×¨×§:"
+msgid "Version Control Plugin Name"
+msgstr "בקרת גירס×ות"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2801,7 +2802,7 @@ msgstr "העתקת נתיב המפרק"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "החבילה הותקנה בהצלחה!"
#: editor/editor_export.cpp
@@ -4299,15 +4300,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "סצנה"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "נתיב סצנות:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4435,6 +4427,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "בקרת גירס×ות"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "שינוי ש×"
@@ -4463,6 +4459,10 @@ msgstr "הפעל/בטל מצב ×œ×œ× ×”×¡×—×•×ª דעת."
msgid "Add a new scene."
msgstr "הוספת סצנה חדשה."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "סצנה"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "מעבר לסצנה הקודמת."
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index 0d90bddc82..2486887cac 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -658,6 +658,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "दृशà¥à¤¯ पथ:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -665,19 +670,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "पà¥à¤²à¤—इनà¥à¤¸"
+msgid "Version Control Plugin Name"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2798,7 +2799,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "पैकेज सफलतापूरà¥à¤µà¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤!"
#: editor/editor_export.cpp
@@ -4305,15 +4306,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "दृशà¥à¤¯"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "दृशà¥à¤¯ पथ:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4438,6 +4430,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "नाम बदली"
@@ -4466,6 +4462,10 @@ msgstr "वà¥à¤¯à¤¾à¤•à¥à¤²à¤¤à¤¾ मà¥à¤•à¥à¤¤ मोड टॉगल।"
msgid "Add a new scene."
msgstr "à¤à¤• नया दृशà¥à¤¯ जोड़ें।"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "दृशà¥à¤¯"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "पहले खोले गठदृशà¥à¤¯ में जाà¤à¤‚।"
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index 1c7dca2872..c9a87722f5 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -654,26 +654,24 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Naziv ÄŒvora(node):"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2762,7 +2760,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paket uspješno instaliran!"
#: editor/editor_export.cpp
@@ -4192,14 +4190,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4320,6 +4310,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Preimenuj zvuÄnu sabirnicu"
@@ -4348,6 +4342,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index ac0a5d2667..5ee85051da 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -23,13 +23,14 @@
# balintmaci <balintmaci@gmail.com>, 2021.
# Balázs Püspök-Kiss <pkblazsak@gmail.com>, 2021.
# Mr.Catfood <sipos22@msn.com>, 2022.
+# 6Leoo6 <leo.takacs@yahoo.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-06-03 02:51+0000\n"
-"Last-Translator: Mr.Catfood <sipos22@msn.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: 6Leoo6 <leo.takacs@yahoo.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hu/>\n"
"Language: hu\n"
@@ -37,7 +38,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -366,7 +367,7 @@ msgstr "Érvénytelen bemenet %i (nem átadott) a kifejezésben"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self nem használható, mert a példány null (nincs átadva)"
+msgstr "Nem használható self mivel nincs megadva"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -452,9 +453,8 @@ msgid "Pressed"
msgstr "Előre beállított"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Keresés"
+msgstr "beolvasási kód"
#: core/os/input_event.cpp
msgid "Physical Scancode"
@@ -462,7 +462,7 @@ msgstr ""
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
@@ -706,6 +706,11 @@ msgid "Main Run Args"
msgstr "FÅ‘ Jelenet Argumentumok:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene elérési Út:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -713,19 +718,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Verziókezelés"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Verziókezelés"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Bővítmény neve:"
+msgid "Version Control Plugin Name"
+msgstr "Verziókezelés"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2165,7 +2166,7 @@ msgstr "Biztosan eltávolítja az összes kapcsolatot a(z) \"%s\" jelzésről?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
-msgstr "Jelzések"
+msgstr "jelek"
#: editor/connections_dialog.cpp
msgid "Filter signals"
@@ -2866,7 +2867,7 @@ msgstr "Node Útvonal Másolása"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "A csomag telepítése sikeres volt!"
#: editor/editor_export.cpp
@@ -4417,15 +4418,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Jelenet"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene elérési Út:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4552,6 +4544,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Verziókezelés"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ãtnevezés"
@@ -4580,6 +4576,10 @@ msgstr "Zavarmentes mód váltása."
msgid "Add a new scene."
msgstr "Hozzáad egy új jelenetet."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Jelenet"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ugrás az előzőleg megnyitott jelenetre."
@@ -5898,7 +5898,7 @@ msgstr "Pont"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr ""
+msgstr "Alakzat"
#: editor/editor_settings.cpp
#, fuzzy
@@ -7157,7 +7157,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp
msgid "sRGB"
-msgstr ""
+msgstr "sRGB"
#: editor/import/resource_importer_layered_texture.cpp
#, fuzzy
@@ -13339,7 +13339,7 @@ msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Passphrase"
-msgstr ""
+msgstr "SSH Passphrase"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
@@ -16787,9 +16787,8 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
#: scene/3d/collision_polygon.cpp
-#, fuzzy
msgid "Polygon"
-msgstr "Sokszögek"
+msgstr "Sokszög"
#: modules/csg/csg_shape.cpp
msgid "Spin Degrees"
@@ -18222,7 +18221,7 @@ msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
msgid "While"
-msgstr ""
+msgstr "Amíg"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
@@ -18551,7 +18550,7 @@ msgstr ""
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Yield"
-msgstr ""
+msgstr "hozam"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Wait"
diff --git a/editor/translations/id.po b/editor/translations/id.po
index c16217217b..4788d2a7c2 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -666,6 +666,10 @@ msgid "Main Run Args"
msgstr "Jalan Utama Argumen"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Penamaan Skena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Cari dalam Ekstensi File"
@@ -673,18 +677,15 @@ msgstr "Cari dalam Ekstensi File"
msgid "Script Templates Search Path"
msgstr "Jalur Pencarian Template Skrip"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrol Versi"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Muat Otomatis Saat Memulai"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nama Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Kontrol Versi"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2797,7 +2798,7 @@ msgstr "Salin Lokasi Node"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paket Sukses Terpasang!"
#: editor/editor_export.cpp
@@ -4330,14 +4331,6 @@ msgstr ""
"Tidak dapat menulis ke file '%s', file sedang digunakan, terkunci atau tidak "
"memiliki izin."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Penamaan Skena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4466,6 +4459,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrol Versi"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ubah Nama"
@@ -4494,6 +4491,10 @@ msgstr "Toggle mode tanpa gangguan."
msgid "Add a new scene."
msgstr "Tambah skena baru."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pergi ke skena yang sebelumnya dibuka."
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 9119f1fc50..ea3301ce7f 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -647,24 +647,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2763,7 +2762,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4187,14 +4186,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4315,6 +4306,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Endurnefning Anim track"
@@ -4343,6 +4338,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 9406ec6484..c529c06241 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -73,7 +73,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-06-16 18:57+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: Mirko <miknsop@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
@@ -82,7 +82,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -693,6 +693,10 @@ msgid "Main Run Args"
msgstr "Parametri Principali Eseguiti"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nome Scena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Cerca nelle Estensioni dei File"
@@ -700,18 +704,15 @@ msgstr "Cerca nelle Estensioni dei File"
msgid "Script Templates Search Path"
msgstr "Percorso di Ricerca dei Template di Script"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controllo della versione"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Autocaricamento all'Avvio"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome dell'estensione"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controllo della versione"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2808,23 +2809,24 @@ msgid "Choose"
msgstr "Scegli"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Project export for platform:"
-msgstr ""
+msgstr "Esportazione del progetto per la piattaforma:"
#: editor/editor_export.cpp
#, fuzzy
msgid "Completed with errors."
-msgstr "Percorsi Completi dei File"
+msgstr "Completato con errori."
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
-msgstr "Pacchetto installato con successo!"
+msgid "Completed successfully."
+msgstr "Completato con successo."
#: editor/editor_export.cpp
#, fuzzy
msgid "Failed."
-msgstr "Fallito:"
+msgstr "Fallito."
#: editor/editor_export.cpp
msgid "Storing File:"
@@ -2841,7 +2843,7 @@ msgstr "Impacchettando"
#: editor/editor_export.cpp
#, fuzzy
msgid "Save PCK"
-msgstr "Salva come"
+msgstr "Salva PCK"
#: editor/editor_export.cpp
#, fuzzy
@@ -2861,7 +2863,7 @@ msgstr "Impossibile aprire il file in scrittura:"
#: editor/editor_export.cpp
#, fuzzy
msgid "Save ZIP"
-msgstr "Salva come"
+msgstr "Salva ZIP"
#: editor/editor_export.cpp
msgid ""
@@ -4345,14 +4347,6 @@ msgid ""
msgstr ""
"Impossibile scrivere sul file '%s', file in uso, bloccato o mancano permessi."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nome Scena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4467,6 +4461,10 @@ msgid "Default Color Picker Mode"
msgstr "Modalità di Scelta Colore Predefinita"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controllo della versione"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome Utente"
@@ -4494,6 +4492,10 @@ msgstr "Commuta la modalità senza distrazioni."
msgid "Add a new scene."
msgstr "Aggiungi una nuova scena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Va alla scena precedentemente aperta."
@@ -18032,8 +18034,9 @@ msgid "if (cond) is:"
msgstr "if (cond) is:"
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "While"
-msgstr ""
+msgstr "While"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
@@ -18345,8 +18348,9 @@ msgid "Search VisualScript"
msgstr "Ricerca VisualScript"
#: modules/visual_script/visual_script_yield_nodes.cpp
+#, fuzzy
msgid "Yield"
-msgstr ""
+msgstr "Yield"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Wait"
@@ -18371,17 +18375,17 @@ msgstr "Tempo Di Attesa"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitSignal"
-msgstr "Segnale"
+msgstr "WaitSignal"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitNodeSignal"
-msgstr "Segnale"
+msgstr "WaitNodeSignal"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitInstanceSignal"
-msgstr "Istanza"
+msgstr "WaitInstanceSignal"
#: modules/webrtc/webrtc_data_channel.cpp
#, fuzzy
@@ -18921,7 +18925,7 @@ msgstr "Non è stato possibile trovare keystore, impossible esportare."
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid "Could not start apksigner executable."
-msgstr "Impossibile avviare il sottoprocesso!"
+msgstr "Non è stato possibile avviare l'eseguibile apksigner."
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
@@ -18954,9 +18958,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome file non valido! L'APK Android richiede l'estensione *.apk."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Unsupported export format!"
-msgstr "Formato d'esportazione non supportato!\n"
+msgstr "Formato d'esportazione non supportato!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18973,10 +18976,9 @@ msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"Versione build di Android non coerente:\n"
-" Template installato: %s\n"
-" Versione Godot: %s\n"
-"Per favore, reinstalla il build template di Android dal menu \"Progetto\"."
+"Versione build di Android non coerente: Template installato: %s, Versione "
+"Godot: %s. Per favore, reinstalla il build template di Android dal menu "
+"\"Progetto\"."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -18989,7 +18991,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid "Could not export project files to gradle project."
-msgstr "Impossibile esportare i file del progetto in un progetto gradle\n"
+msgstr "Impossibile esportare i file del progetto in un progetto gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19034,9 +19036,7 @@ msgstr "Creazione APK..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid "Could not find template APK to export: \"%s\"."
-msgstr ""
-"Impossibile trovare il template APK per l'esportazione:\n"
-"%s"
+msgstr "Impossibile trovare il template APK per l'esportazione: \"%s\"."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19754,7 +19754,7 @@ msgstr "Impossibile esportare i file del progetto"
#: platform/osx/export/export.cpp
#, fuzzy
msgid "Could not start xcrun executable."
-msgstr "Impossibile avviare il sottoprocesso!"
+msgstr "Impossibile avviare l'eseguibile xcrun."
#: platform/osx/export/export.cpp
#, fuzzy
@@ -19828,7 +19828,7 @@ msgstr "Direzione"
#: platform/osx/export/export.cpp
#, fuzzy
msgid "Could not start hdiutil executable."
-msgstr "Impossibile avviare il sottoprocesso!"
+msgstr "Impossibile avviare l'eseguibile hdiutil."
#: platform/osx/export/export.cpp
msgid "`hdiutil create` failed - file exists."
@@ -19909,7 +19909,7 @@ msgstr "Proiezione"
#: platform/osx/export/export.cpp
#, fuzzy
msgid "Could not open file to read from path \"%s\"."
-msgstr "Impossibile esportare i file del progetto in un progetto gradle\n"
+msgstr "Impossibile aprire il file da leggere dal percorso \"%s\"."
#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
@@ -20226,7 +20226,7 @@ msgstr "UWP"
#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "Signtool"
-msgstr "Segnale"
+msgstr "Signtool"
#: platform/uwp/export/export.cpp
msgid "Debug Certificate"
@@ -21026,8 +21026,9 @@ msgstr ""
#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
#: scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
+#, fuzzy
msgid "Damping"
-msgstr ""
+msgstr "Smorzamento"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -21042,8 +21043,9 @@ msgstr "Dividi Curva"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Angle"
-msgstr ""
+msgstr "Angolo"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -21176,8 +21178,9 @@ msgstr ""
#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
+#, fuzzy
msgid "Length"
-msgstr ""
+msgstr "Lunghezza"
#: scene/2d/joints_2d.cpp
#, fuzzy
@@ -21213,8 +21216,9 @@ msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/light.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/sky.cpp
+#, fuzzy
msgid "Energy"
-msgstr ""
+msgstr "Energia"
#: scene/2d/light_2d.cpp
msgid "Z Min"
@@ -21291,8 +21295,9 @@ msgid "Default Color"
msgstr "Predefinito"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
+#, fuzzy
msgid "Fill"
-msgstr ""
+msgstr "Riempimento"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
#, fuzzy
@@ -21343,8 +21348,9 @@ msgid "Antialiased"
msgstr "Inizializza"
#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
+#, fuzzy
msgid "Multimesh"
-msgstr ""
+msgstr "Multimesh"
#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
@@ -21415,8 +21421,9 @@ msgstr ""
"poligono."
#: scene/2d/navigation_polygon.cpp
+#, fuzzy
msgid "Navpoly"
-msgstr ""
+msgstr "Navpoly"
#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
#, fuzzy
@@ -21630,8 +21637,9 @@ msgstr ""
"Modifica invece la dimensione nelle forme di collisione figlie."
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
+#, fuzzy
msgid "Mass"
-msgstr ""
+msgstr "Massa"
#: scene/2d/physics_body_2d.cpp
#, fuzzy
@@ -21682,8 +21690,9 @@ msgid "Damp"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
+#, fuzzy
msgid "Angular"
-msgstr ""
+msgstr "Angolare"
#: scene/2d/physics_body_2d.cpp
msgid "Applied Forces"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index c0b37f1509..1ae3c9cf8c 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -675,6 +675,10 @@ msgid "Main Run Args"
msgstr "メインシーンã®å¼•æ•°:"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "シーンã®å‘½åè¦å‰‡"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "ファイル拡張å­ã§æ¤œç´¢"
@@ -682,18 +686,15 @@ msgstr "ファイル拡張å­ã§æ¤œç´¢"
msgid "Script Templates Search Path"
msgstr "ã‚¹ã‚¯ãƒªãƒ—ãƒˆãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã®æ¤œç´¢ãƒ‘ス"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "起動時ã®è‡ªå‹•読ã¿è¾¼ã¿"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "プラグインå"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2815,7 +2816,7 @@ msgstr "ノードã®ãƒ‘スをコピー"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸï¼"
#: editor/editor_export.cpp
@@ -4329,14 +4330,6 @@ msgstr ""
"ファイル '%s'ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。ファイルãŒä½¿ç”¨ä¸­ã‹ã€ãƒ­ãƒƒã‚¯ã•れã¦ã„ã‚‹ã‹ã€æ¨©é™ãŒ"
"ã‚りã¾ã›ã‚“。"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "シーン"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "シーンã®å‘½åè¦å‰‡"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4456,6 +4449,10 @@ msgid "Default Color Picker Mode"
msgstr "デフォルトã®ã‚«ãƒ©ãƒ¼ãƒ”ッカーモード"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ユーザーå"
@@ -4483,6 +4480,10 @@ msgstr "集中モードを切り替ãˆã‚‹ã€‚"
msgid "Add a new scene."
msgstr "æ–°è¦ã‚·ãƒ¼ãƒ³ã‚’追加ã™ã‚‹ã€‚"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "シーン"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "以å‰ã«é–‹ã„ãŸã‚·ãƒ¼ãƒ³ã«ç§»å‹•ã™ã‚‹ã€‚"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index bd99c1497d..34914a67b6 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -661,24 +661,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2843,7 +2842,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "პáƒáƒ™áƒ”ტი დáƒáƒ§áƒ”ნდრწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით!"
#: editor/editor_export.cpp
@@ -4300,14 +4299,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4428,6 +4419,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლის ცვლილებáƒ"
@@ -4456,6 +4451,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/km.po b/editor/translations/km.po
index 52131ea96a..700f4f483c 100644
--- a/editor/translations/km.po
+++ b/editor/translations/km.po
@@ -624,24 +624,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2691,7 +2690,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4097,14 +4096,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4219,6 +4210,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4246,6 +4241,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index cc27ce3de6..b4a91e0076 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -657,6 +657,10 @@ msgid "Main Run Args"
msgstr "ë©”ì¸ ì‹¤í–‰ ì¸ìž"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "씬 ì´ë¦„ 지정"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "íŒŒì¼ í™•ìž¥ìžë¡œ 찾기"
@@ -664,18 +668,15 @@ msgstr "íŒŒì¼ í™•ìž¥ìžë¡œ 찾기"
msgid "Script Templates Search Path"
msgstr "스í¬ë¦½íЏ 템플릿 검색 경로"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "버전 컨트롤"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "스타트업으로 ìžë™ 로드"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "í”ŒëŸ¬ê·¸ì¸ ì´ë¦„"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "버전 컨트롤"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2753,7 +2754,7 @@ msgstr "íŒŒì¼ ê²½ë¡œ 완성"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "패키지를 성공ì ìœ¼ë¡œ 설치했습니다!"
#: editor/editor_export.cpp
@@ -4252,14 +4253,6 @@ msgid ""
msgstr ""
"íŒŒì¼ '%s'ì— ì“¸ 수 없습니다. 파ì¼ì´ 사용 중ì´ê±°ë‚˜ 잠겨 있거나 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "씬"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "씬 ì´ë¦„ 지정"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4374,6 +4367,10 @@ msgid "Default Color Picker Mode"
msgstr "기본 색 고르기 모드"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "버전 컨트롤"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ì‚¬ìš©ìž ì´ë¦„"
@@ -4401,6 +4398,10 @@ msgstr "집중 모드를 토글합니다."
msgid "Add a new scene."
msgstr "새 ì”¬ì„ ì¶”ê°€í•©ë‹ˆë‹¤."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "씬"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ ì´ë™í•©ë‹ˆë‹¤."
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 15e8da21f8..5f0e9b24ad 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -668,6 +668,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kelias iki Scenos:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -675,20 +680,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versija:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Priedai"
+msgid "Version Control Plugin Name"
+msgstr "Versija:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2800,7 +2800,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4263,15 +4263,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kelias iki Scenos:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4394,6 +4385,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versija:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Naujas pavadinimas:"
@@ -4421,6 +4417,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index 88132bc800..7397c083fa 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -675,6 +675,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ainas ceļš:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -682,19 +687,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versiju Kontrole"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versiju Kontrole"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Spraudņi"
+msgid "Version Control Plugin Name"
+msgstr "Versiju Kontrole"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2813,7 +2814,7 @@ msgstr "Kopēt mezgla ceļu"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakete instalēta sekmīgi!"
#: editor/editor_export.cpp
@@ -4327,15 +4328,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Aina"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ainas ceļš:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4460,6 +4452,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versiju Kontrole"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "PÄrsaukt"
@@ -4488,6 +4484,10 @@ msgstr "PÄrslÄ“gt traucÄ“jumu brÄ«vo režīmu."
msgid "Add a new scene."
msgstr "Pievienot jaunu ainu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Aina"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Iet uz iepriekš atvērto ainu."
diff --git a/editor/translations/mk.po b/editor/translations/mk.po
index 90af441963..e37eadfeaf 100644
--- a/editor/translations/mk.po
+++ b/editor/translations/mk.po
@@ -631,24 +631,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2702,7 +2701,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4113,14 +4112,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4235,6 +4226,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4262,6 +4257,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index 8e5ef57cd8..74ea6168e4 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -635,24 +635,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2711,7 +2710,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4126,14 +4125,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4249,6 +4240,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4276,6 +4271,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index e9ce5ad750..005f8a3177 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -637,24 +637,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2711,7 +2710,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4119,14 +4118,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4243,6 +4234,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4270,6 +4265,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index cb6b65ee49..3ef25ef863 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -633,6 +633,11 @@ msgid "Main Run Args"
msgstr "Jalan Utama Args"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Laluan Adegan:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Cari Dalam Sambungan Fail"
@@ -640,18 +645,15 @@ msgstr "Cari Dalam Sambungan Fail"
msgid "Script Templates Search Path"
msgstr "Laluan Carian Templat Skrip"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kawalan Versi"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Muatkan Automatik Semasa Permulaan"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nama Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Kawalan Versi"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2738,7 +2740,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakej berjaya dipasang!"
#: editor/editor_export.cpp
@@ -4268,15 +4270,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Adegan"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Laluan Adegan:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4404,6 +4397,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kawalan Versi"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Namakan Semula"
@@ -4432,6 +4429,10 @@ msgstr "Togol mod bebas gangguan."
msgid "Add a new scene."
msgstr "Tambah adegan baru."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Adegan"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pergi ke adegan yang dibuka sebelum ini."
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 21a2832614..e5b0dcc26f 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -670,6 +670,11 @@ msgid "Main Run Args"
msgstr "Hovedkjøringsargumenter"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene-Sti:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Søk I Filetternavn"
@@ -677,18 +682,15 @@ msgstr "Søk I Filetternavn"
msgid "Script Templates Search Path"
msgstr "Skriptmaler Søkesti"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versjonskontroll"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Automatisk Lasting Ved Oppstart"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Navn PÃ¥ Programvareutvidelse"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Versjonskontroll"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2869,7 +2871,7 @@ msgstr "Kopier Node-bane"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Vellykket Installering av Pakke!"
#: editor/editor_export.cpp
@@ -4439,15 +4441,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene-Sti:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4577,6 +4570,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versjonskontroll"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Gi nytt navn"
@@ -4605,6 +4602,10 @@ msgstr "Vis/skjul distraksjonsfri modus."
msgid "Add a new scene."
msgstr "Legg til ny scene."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå til forrige åpne scene."
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 4cfc0fa652..6d43002a17 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -749,6 +749,11 @@ msgid "Main Run Args"
msgstr "Startscène argumenten:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scènepad:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -756,19 +761,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versiebeheer"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versiebeheersysteem"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Pluginnaam:"
+msgid "Version Control Plugin Name"
+msgstr "Versiebeheer"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2910,7 +2911,7 @@ msgstr "Knooppad kopiëren"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakket succesvol geïnstalleerd!"
#: editor/editor_export.cpp
@@ -4447,15 +4448,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scène"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scènepad:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4584,6 +4576,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versiebeheer"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Naam wijzigen"
@@ -4612,6 +4608,10 @@ msgstr "Afleidingsvrijemodus omschakelen."
msgid "Add a new scene."
msgstr "Nieuwe scène toevoegen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scène"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ga naar de eerder geopende scène."
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index e89a8b69b4..5960c6933e 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -690,6 +690,11 @@ msgid "Main Run Args"
msgstr "Główne argumenty włączania"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ścieżka sceny:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Wyszukiwanie w rozszerzeniach plików"
@@ -697,18 +702,15 @@ msgstr "Wyszukiwanie w rozszerzeniach plików"
msgid "Script Templates Search Path"
msgstr "Ścieżka wyszukiwania szablonów skryptów"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrola wersji"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Automatyczne ładowanie podczas uruchamiania"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nazwa wtyczki"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Kontrola wersji"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2812,7 +2814,7 @@ msgstr "Skopiuj ścieżkę węzła"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pakiet zainstalowano poprawnie!"
#: editor/editor_export.cpp
@@ -4340,15 +4342,6 @@ msgstr ""
"Nie można zapisać do pliku '%s', plik jest w użyciu, zablokowany lub nie ma "
"wystarczających uprawnień."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ścieżka sceny:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4480,6 +4473,10 @@ msgid "Default Color Picker Mode"
msgstr "Domyślny tryb pipety"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrola wersji"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Użytkownik"
@@ -4507,6 +4504,10 @@ msgstr "Tryb bez rozproszeń."
msgid "Add a new scene."
msgstr "Dodaj nowÄ… scenÄ™."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Wróć do poprzednio otwartej sceny."
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index d01d1dcf33..139d252495 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -665,24 +665,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2794,7 +2793,7 @@ msgid "Completed with errors."
msgstr "Forge yer Node!"
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4257,14 +4256,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4384,6 +4375,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Rename Function"
@@ -4412,6 +4407,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index 510d2515dd..c0af7140fc 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -663,6 +663,10 @@ msgid "Main Run Args"
msgstr "Argumentos da Execução Principal"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomear a Cena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -670,18 +674,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controle de Versões"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de Controlo de Versões"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome do Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controle de Versões"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2814,7 +2815,7 @@ msgstr "Copiar Caminho do Nó"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pacote Instalado com sucesso!"
#: editor/editor_export.cpp
@@ -4336,14 +4337,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nomear a Cena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4470,6 +4463,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controle de Versões"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome de Utilizador"
@@ -4497,6 +4494,10 @@ msgstr "Alternar modo livre de distrações."
msgid "Add a new scene."
msgstr "Adicionar nova cena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir para cena aberta anteriormente."
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 09d0e6c64e..df7e56059b 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -145,7 +145,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2022-06-16 18:57+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: lucas rossy brasil coelho <lucasrossy270@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
@@ -154,7 +154,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -766,6 +766,10 @@ msgid "Main Run Args"
msgstr "Argumentos de Execução Principais"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomeação de Cena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Pesquisar em Extensões de Arquivo"
@@ -773,18 +777,15 @@ msgstr "Pesquisar em Extensões de Arquivo"
msgid "Script Templates Search Path"
msgstr "Caminho de Pesquisa de Modelos de Script"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controle de Versão"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Carregamento Automático na Inicialização"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome do Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controle de Versão"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2892,7 +2893,7 @@ msgstr "Copiar Caminho do Nó"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pacote instalado com sucesso!"
#: editor/editor_export.cpp
@@ -4412,14 +4413,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nomeação de Cena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4543,6 +4536,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controle de Versão"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome do usuário"
@@ -4570,6 +4567,10 @@ msgstr "Alternar modo sem-distrações."
msgid "Add a new scene."
msgstr "Adicionar nova cena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir para cena aberta anteriormente."
@@ -9873,7 +9874,7 @@ msgstr "Criar Contorno"
#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/texture.cpp
msgid "Mesh"
-msgstr "Malha"
+msgstr "Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
@@ -19225,15 +19226,13 @@ msgid "Code Signing"
msgstr "Sinal"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"'apksigner' could not be found. Please check that the command is available "
"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"'apksigner' não foi encontrado.\n"
-"Verifique se o comando está disponível no diretório do Android SDK build-"
-"tools.\n"
-"O %s resultante está sem assinatura."
+"'apksigner' não foi encontrado. Verifique se o comando está disponível no "
+"diretório de ferramentas de compilação do Android SDK. O %s resultante não é "
+"assinado."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -19281,9 +19280,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome de arquivo inválido! Android APK requer a extensão *.apk."
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Unsupported export format!"
-msgstr "Formato de Exportação Não Suportado\n"
+msgstr "Formato de exportação não suportado!"
#: platform/android/export/export_plugin.cpp
msgid ""
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 144032dcff..b6b92325e4 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -673,6 +673,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Calea Scenei:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -680,19 +685,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control versiune"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Control versiune"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nume plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Control versiune"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2830,7 +2831,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Pachet instalat cu succes!"
#: editor/editor_export.cpp
@@ -4360,15 +4361,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scenă"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Calea Scenei:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4497,6 +4489,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control versiune"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Redenumește"
@@ -4525,6 +4521,10 @@ msgstr "Comutează modul fără distrageri."
msgid "Add a new scene."
msgstr "Adaugă o nouă scenă."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scenă"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Mergi la o scenă deschisă anterior."
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index e1d6bd5fbc..b920136351 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -741,6 +741,10 @@ msgid "Main Run Args"
msgstr "ОÑновные аргументы запуÑка"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Именование Ñцен"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "ИÑкать в раÑширениÑÑ… файлов"
@@ -748,18 +752,15 @@ msgstr "ИÑкать в раÑширениÑÑ… файлов"
msgid "Script Templates Search Path"
msgstr "Путь поиÑка шаблонов Ñкриптов"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Контроль верÑий"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Ðвтозагрузка при запуÑке"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Ðазвание плагина"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Контроль верÑий"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2848,7 +2849,7 @@ msgstr "Завершать пути файлов"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Пакет уÑпешно уÑтановлен!"
#: editor/editor_export.cpp
@@ -4364,14 +4365,6 @@ msgstr ""
"Ðевозможно запиÑать в файл «%s», файл иÑпользуетÑÑ, заблокирован или "
"отÑутÑтвуют разрешениÑ."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Именование Ñцен"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4486,6 +4479,10 @@ msgid "Default Color Picker Mode"
msgstr "Режим выбора цвета по умолчанию"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Контроль верÑий"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
@@ -4513,6 +4510,10 @@ msgstr "Переключить режим без отвлечениÑ."
msgid "Add a new scene."
msgstr "Добавить новую Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Перейти к предыдущей открытой Ñцене."
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 3c24ed1f7b..d28d0a4f81 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -640,24 +640,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2741,7 +2740,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4160,14 +4159,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4286,6 +4277,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4313,6 +4308,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index c131bd6515..6615ae93a0 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -693,6 +693,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Cesta Scény:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -700,19 +705,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrola Verzie"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Kontrola Verzie"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Meno Pluginu:"
+msgid "Version Control Plugin Name"
+msgstr "Kontrola Verzie"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2848,7 +2849,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Balík bol úspešne nainštalovaný!"
#: editor/editor_export.cpp
@@ -4376,15 +4377,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scéna"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Cesta Scény:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4512,6 +4504,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrola Verzie"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Premenovať"
@@ -4540,6 +4536,10 @@ msgstr "Prepnúť režim bez rozptyľovania."
msgid "Add a new scene."
msgstr "Pridať novú scénu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scéna"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ÃsÅ¥ do naposledy otvorenej scény."
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index c717fcb4c9..acb24489bd 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -667,6 +667,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Pot Prizora:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -674,20 +679,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "RazliÄica:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "VtiÄniki"
+msgid "Version Control Plugin Name"
+msgstr "RazliÄica:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2882,7 +2882,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paket je UspeÅ¡no NameÅ¡Äen!"
#: editor/editor_export.cpp
@@ -4446,15 +4446,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Prizor"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Pot Prizora:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4583,6 +4574,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "RazliÄica:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Preimenuj"
@@ -4610,6 +4606,10 @@ msgstr "Preklop naÄin pisanja brez motenj."
msgid "Add a new scene."
msgstr "Dodaj nov Prizor."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Prizor"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pojdi na predhodno odprti prizor."
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 452dad01af..c97aac239a 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -669,6 +669,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Rruga Skenës:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -676,20 +681,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versioni:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Emri i Shtojcës:"
+msgid "Version Control Plugin Name"
+msgstr "Versioni:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2819,7 +2819,7 @@ msgstr ""
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paketa u instalua me sukses!"
#: editor/editor_export.cpp
@@ -4386,15 +4386,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Skenë"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Rruga Skenës:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4521,6 +4512,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versioni:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Riemërto"
@@ -4548,6 +4544,10 @@ msgstr "Ndrysho metodën pa shpërqëndrime."
msgid "Add a new scene."
msgstr "Shto një skenë të re."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Skenë"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Shko në skenën e hapur më parë."
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index d4b703a467..55387743e7 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -700,6 +700,11 @@ msgid "Main Run Args"
msgstr "Ðргументи Главне Сцене"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Пут Ñцене:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -707,20 +712,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Version Control"
-msgstr "Верзија:"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "VCS(СиÑтем Контроле Верзије)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Име Прикључка :"
+msgid "Version Control Plugin Name"
+msgstr "Верзија:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2998,7 +2998,7 @@ msgstr "Копирај Путању Чвора"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Пакет је инÑталиран уÑпешно!"
#: editor/editor_export.cpp
@@ -4629,15 +4629,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Пут Ñцене:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4768,6 +4759,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Верзија:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Преименуј"
@@ -4795,6 +4791,10 @@ msgstr "Укљ./ИÑкљ. режим без Ñметње."
msgid "Add a new scene."
msgstr "Додај нову Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Отвори претходну Ñцену."
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 7b1eebf83f..21d94999a2 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -656,24 +656,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2764,7 +2763,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4174,14 +4173,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4301,6 +4292,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Animacija Preimenuj Kanal"
@@ -4329,6 +4324,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index c221b5e7a0..54655bcecf 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -704,6 +704,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scen Filsökväg:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -711,19 +716,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionshantering"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versionshantering"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Plugin Namn:"
+msgid "Version Control Plugin Name"
+msgstr "Versionshantering"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2850,7 +2851,7 @@ msgstr "Kopiera Nod-Sökväg"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paketet installerades!"
#: editor/editor_export.cpp
@@ -4424,15 +4425,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scen"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scen Filsökväg:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4559,6 +4551,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionshantering"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Byt namn"
@@ -4587,6 +4583,10 @@ msgstr "Växla distraktionsfritt läge."
msgid "Add a new scene."
msgstr "Lägg till en ny scen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scen"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå till föregående öppna scen."
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 4d679d390c..7e39aed20c 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -628,24 +628,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2694,7 +2693,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4100,14 +4099,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4222,6 +4213,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4249,6 +4244,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/th.po b/editor/translations/th.po
index a8568f7437..cf482896d4 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -703,6 +703,11 @@ msgid "Main Run Args"
msgstr "ตัวà¹à¸›à¸£à¸‰à¸²à¸à¸«à¸¥à¸±à¸:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ฉาà¸:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -710,19 +715,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "เวอร์ชันคอนโทรล"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "ระบบจัดà¸à¸²à¸£à¸‹à¸­à¸£à¹Œà¸ª (Version Control)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "ชื่อปลั๊à¸à¸­à¸´à¸™:"
+msgid "Version Control Plugin Name"
+msgstr "เวอร์ชันคอนโทรล"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2869,7 +2870,7 @@ msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¹‚หนด"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
#: editor/editor_export.cpp
@@ -4376,15 +4377,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "ฉาà¸"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ฉาà¸:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4513,6 +4505,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "เวอร์ชันคอนโทรล"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "เปลี่ยนชื่อ"
@@ -4541,6 +4537,10 @@ msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
msgid "Add a new scene."
msgstr "เพิ่มฉาà¸à¹ƒà¸«à¸¡à¹ˆ"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "ฉาà¸"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ไปยังฉาà¸à¸—ี่เพิ่งเปิด"
diff --git a/editor/translations/tl.po b/editor/translations/tl.po
index 2ba6909fa2..963d542e6d 100644
--- a/editor/translations/tl.po
+++ b/editor/translations/tl.po
@@ -672,6 +672,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kinalalagyan ng Eksena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -679,19 +684,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Pagmamahala ng Bersyon"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Pagmamahala ng Bersyon"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Pangalan ng Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Pagmamahala ng Bersyon"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2807,7 +2808,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4254,15 +4255,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Eksena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kinalalagyan ng Eksena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4386,6 +4378,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Pagmamahala ng Bersyon"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Inibang Pangalan"
@@ -4414,6 +4410,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Magdagdag ng panibagong eksena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Eksena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Bumalik sa dating binuksang eksena."
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 04e27574ea..ea437aaf30 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -705,6 +705,11 @@ msgid "Main Run Args"
msgstr "Ana Sahne DeÄŸiÅŸtirgenleri:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Sahne Yolu:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Dosya Uzantılarında Ara"
@@ -712,19 +717,15 @@ msgstr "Dosya Uzantılarında Ara"
msgid "Script Templates Search Path"
msgstr "Script Dosyalarını Aramak İçin Dosya Yolu"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Sürüm Kontrol"
-
#: core/project_settings.cpp
#, fuzzy
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr "Başlangıçta Otomatik Yükleme"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Eklenti Adı"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Sürüm Kontrol"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2830,7 +2831,7 @@ msgstr "Düğüm Yolunu Kopyala"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Paket Başarı ile Kuruldu!"
#: editor/editor_export.cpp
@@ -4362,15 +4363,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Sahne"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Sahne Yolu:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4499,6 +4491,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Sürüm Kontrol"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Kullanıcı adı"
@@ -4526,6 +4522,10 @@ msgstr "Dikkat-Dağıtmayan Kipine geç."
msgid "Add a new scene."
msgstr "Yeni bir sahne ekle."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Sahne"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Daha önce açılan sahneye git."
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 4c90b9e989..6d96ccc30b 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -650,6 +650,10 @@ msgid "Main Run Args"
msgstr "Ðргументи оÑновного запуÑку"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Ð†Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñцен"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у файлах"
@@ -657,18 +661,15 @@ msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у файлах"
msgid "Script Templates Search Path"
msgstr "ШлÑÑ… пошуку Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² Ñкриптів"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Ðвтоматично завантажувати під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Ðазва додатка"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2754,7 +2755,7 @@ msgstr "Повні шлÑхи до файлів"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Пакунок уÑпішно вÑтановлено!"
#: editor/editor_export.cpp
@@ -4274,14 +4275,6 @@ msgstr ""
"Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до файла «%s», файл викориÑтовує інша програма, його "
"заблоковано або у Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” відповідних прав доÑтупу до нього."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Ð†Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñцен"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4396,6 +4389,10 @@ msgid "Default Color Picker Mode"
msgstr "Типовий режим піпетки кольорів"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "КориÑтувач"
@@ -4423,6 +4420,10 @@ msgstr "Перемкнути режим без відволіканнÑ."
msgid "Add a new scene."
msgstr "Додати нову Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Перейти до раніше відкритої Ñцени."
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index db5af915dc..79cb7b84e2 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -655,24 +655,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -2759,7 +2758,7 @@ msgid "Completed with errors."
msgstr ""
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4211,14 +4210,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4338,6 +4329,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr ".تمام کا انتخاب"
@@ -4366,6 +4361,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 7e5dd162f7..a16d75a4bc 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -659,6 +659,11 @@ msgid "Main Run Args"
msgstr "Tham số Cảnh chính:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "ÄÆ°á»ng dẫn Cảnh:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -666,18 +671,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr "ÄÆ°á»ng dẫn tìm kiếm bản mẫu kịch bản"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Theo dõi phiên bản"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Tự nạp khi khởi động"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Tên trình cắm"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Theo dõi phiên bản"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2790,7 +2792,7 @@ msgstr "Sao chép đưá»ng dẫn nút"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "Cài đặt gói thành công!"
#: editor/editor_export.cpp
@@ -4275,15 +4277,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cảnh"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "ÄÆ°á»ng dẫn Cảnh:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4406,6 +4399,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Theo dõi phiên bản"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Tên ngưá»i dùng"
@@ -4433,6 +4430,10 @@ msgstr "Bật tắt chế độ tập trung."
msgid "Add a new scene."
msgstr "Thêm cảnh mới."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cảnh"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Trở vỠcảnh đã mở trước đó."
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 336418ef35..ea23349421 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -89,7 +89,7 @@ msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2022-06-12 13:19+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -98,7 +98,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.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -434,14 +434,12 @@ msgid "Max Size (KB)"
msgstr "最大大å°ï¼ˆKB)"
#: core/os/input.cpp
-#, fuzzy
msgid "Mouse Mode"
-msgstr "移动模å¼"
+msgstr "鼠标模å¼"
#: core/os/input.cpp
-#, fuzzy
msgid "Use Accumulated Input"
-msgstr "删除输入"
+msgstr "使用累积输入"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -706,6 +704,10 @@ msgid "Main Run Args"
msgstr "主è¿è¡Œå‚æ•°"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "场景命å"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "æœç´¢æ–‡ä»¶æ‰©å±•å"
@@ -713,18 +715,15 @@ msgstr "æœç´¢æ–‡ä»¶æ‰©å±•å"
msgid "Script Templates Search Path"
msgstr "è„šæœ¬æ¨¡æ¿æœç´¢è·¯å¾„"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "版本控制"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "å¯åŠ¨æ—¶è‡ªåŠ¨åŠ è½½"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "æ’ä»¶å"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "版本控制"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2228,7 +2227,7 @@ msgstr "打开"
#: editor/dependency_editor.cpp
msgid "Owners of: %s (Total: %d)"
-msgstr ""
+msgstr "%s 的所有者(总计:%d)"
#: editor/dependency_editor.cpp
msgid ""
@@ -2782,22 +2781,20 @@ msgstr "选择"
#: editor/editor_export.cpp
msgid "Project export for platform:"
-msgstr ""
+msgstr "针对平å°å¯¼å‡ºé¡¹ç›®ï¼š"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Completed with errors."
-msgstr "补全文件路径"
+msgstr "已完æˆï¼Œå­˜åœ¨é”™è¯¯ã€‚"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
-msgstr "软件包安装æˆåŠŸï¼"
+msgid "Completed successfully."
+msgstr "æˆåŠŸå®Œæˆã€‚"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed."
-msgstr "失败:"
+msgstr "失败。"
#: editor/editor_export.cpp
msgid "Storing File:"
@@ -2812,29 +2809,24 @@ msgid "Packing"
msgstr "打包中"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Save PCK"
-msgstr "å¦å­˜ä¸º"
+msgstr "ä¿å­˜ PCK"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Cannot create file \"%s\"."
-msgstr "无法创建文件夹。"
+msgstr "无法创建文件“%sâ€ã€‚"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to export project files."
-msgstr "无法导出项目文件"
+msgstr "导出项目文件失败。"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Can't open file to read from path \"%s\"."
-msgstr "无法以å¯å†™æ¨¡å¼æ‰“开文件:"
+msgstr "无法打开ä½äºŽâ€œ%sâ€çš„æ–‡ä»¶ç”¨äºŽè¯»å–。"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Save ZIP"
-msgstr "å¦å­˜ä¸º"
+msgstr "ä¿å­˜ ZIP"
#: editor/editor_export.cpp
msgid ""
@@ -2946,30 +2938,25 @@ msgid "Custom release template not found."
msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布模æ¿ã€‚"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Prepare Template"
-msgstr "ç®¡ç†æ¨¡æ¿"
+msgstr "准备模æ¿"
#: editor/editor_export.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "The given export path doesn't exist."
-msgstr "指定导出路径ä¸å­˜åœ¨ï¼š"
+msgstr "给定的导出路径ä¸å­˜åœ¨ã€‚"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-#, fuzzy
msgid "Template file not found: \"%s\"."
-msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶ï¼š"
+msgstr "æ¨¡æ¿æ–‡ä»¶ä¸å­˜åœ¨ï¼šâ€œ%sâ€ã€‚"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Failed to copy export template."
-msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
+msgstr "å¤åˆ¶å¯¼å‡ºæ¨¡æ¿å¤±è´¥ã€‚"
#: editor/editor_export.cpp platform/windows/export/export.cpp
#: platform/x11/export/export.cpp
-#, fuzzy
msgid "PCK Embedding"
-msgstr "å¡«å……"
+msgstr "PCK 内嵌"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -4251,14 +4238,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr "无法写入文件“%sâ€ï¼Œæ–‡ä»¶è¢«å ç”¨ã€å·²é”å®šã€æˆ–æƒé™ä¸è¶³ã€‚"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "场景"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "场景命å"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4373,6 +4352,10 @@ msgid "Default Color Picker Mode"
msgstr "默认å–色器模å¼"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "版本控制"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "用户å"
@@ -4400,6 +4383,10 @@ msgstr "切æ¢ä¸“注模å¼ã€‚"
msgid "Add a new scene."
msgstr "添加新场景。"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "场景"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "转到上一个打开的场景。"
@@ -5164,9 +5151,8 @@ msgstr ""
"请在导出èœå•ä¸­æ·»åŠ å¯æ‰§è¡Œé¢„è®¾ï¼Œæˆ–å°†å·²æœ‰é¢„è®¾è®¾ä¸ºå¯æ‰§è¡Œã€‚"
#: editor/editor_run_native.cpp
-#, fuzzy
msgid "Project Run"
-msgstr "项目"
+msgstr "项目è¿è¡Œ"
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -7083,12 +7069,15 @@ msgid ""
"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
"texture compression to reduce memory usage (blue channel is discarded)."
msgstr ""
+"%s:检测到纹ç†è¢«ç”¨äºŽ 3D 法线贴图。正在å¯ç”¨çº¢ç»¿çº¹ç†åŽ‹ç¼©ï¼Œé™ä½Žå†…存使用(è“通é“"
+"被丢弃)。"
#: editor/import/resource_importer_texture.cpp
msgid ""
"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
"generation and VRAM texture compression."
msgstr ""
+"%s:检测到纹ç†è¢«ç”¨äºŽ 3D。正在å¯ç”¨è¿‡æ»¤ã€é‡å¤ã€Mipmap 生æˆå’Œ VRAM 纹ç†åŽ‹ç¼©ã€‚"
#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
@@ -11363,9 +11352,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "无效的几何体,无法使用网格替æ¢ã€‚"
#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
msgid "Convert to MeshInstance2D"
-msgstr "转æ¢ä¸º Mesh2D"
+msgstr "转æ¢ä¸º MeshInstance2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -13933,9 +13921,8 @@ msgid "Export templates for this platform are missing:"
msgstr "该平å°çš„导出模æ¿ç¼ºå¤±ï¼š"
#: editor/project_export.cpp
-#, fuzzy
msgid "Project Export"
-msgstr "项目创始人"
+msgstr "项目导出"
#: editor/project_export.cpp
msgid "Manage Export Templates"
@@ -16834,17 +16821,15 @@ msgid "Mask"
msgstr "é®ç½©"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#, fuzzy
msgid "Bake Navigation"
-msgstr "导航"
+msgstr "烘焙导航"
#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
#: scene/3d/navigation_mesh_instance.cpp
-#, fuzzy
msgid "Navigation Layers"
-msgstr "导航体验"
+msgstr "导航层"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -18385,19 +18370,16 @@ msgstr "“Target Sdkâ€ç‰ˆæœ¬å¿…须大于等于“Min Sdkâ€ç‰ˆæœ¬ã€‚"
#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Code Signing"
-msgstr "正在对 DMG 进行代ç ç­¾å"
+msgstr "代ç ç­¾å"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"'apksigner' could not be found. Please check that the command is available "
"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"无法找到“apksignerâ€ã€‚\n"
-"请检查 Android SDK çš„ build-tools ç›®å½•ä¸­æ˜¯å¦æœ‰æ­¤å‘½ä»¤ã€‚\n"
-"生æˆçš„ %s 未签å。"
+"无法找到“apksignerâ€ã€‚请检查 Android SDK çš„ build-tools ç›®å½•ä¸­æ˜¯å¦æœ‰æ­¤å‘½ä»¤ã€‚生"
+"æˆçš„ %s 未签å。"
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -18412,9 +18394,8 @@ msgid "Could not find keystore, unable to export."
msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not start apksigner executable."
-msgstr "无法å¯åЍå­è¿›ç¨‹ï¼"
+msgstr "无法å¯åЍ apksigner 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
@@ -18445,9 +18426,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "无效文件åï¼Android APK 必须有 *.apk 扩展。"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Unsupported export format!"
-msgstr "䏿”¯æŒçš„导出格å¼ï¼\n"
+msgstr "䏿”¯æŒçš„导出格å¼ï¼"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18457,26 +18437,21 @@ msgstr ""
"å°è¯•ä»Žè‡ªå®šä¹‰æž„å»ºçš„æ¨¡æ¿æž„建,但是ä¸å­˜åœ¨å…¶ç‰ˆæœ¬ä¿¡æ¯ã€‚请从“项目â€èœå•䏭釿–°å®‰è£…。"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"Android 构建版本ä¸åŒ¹é…:\n"
-" 安装的模æ¿ï¼š%s\n"
-" Godot 版本:%s\n"
-"请从“项目â€èœå•䏭釿–°å®‰è£… Android 构建模æ¿ã€‚"
+"Android 构建版本ä¸åŒ¹é…:安装的模æ¿ï¼š%s,Godot 版本:%s。请从“项目â€èœå•䏭釿–°"
+"安装 Android 构建模æ¿ã€‚"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Unable to overwrite res://android/build/res/*.xml files with project name."
-msgstr "无法使用项目å称覆盖 res://android/build/res/*.xml 文件"
+msgstr "无法使用项目å称覆盖 res://android/build/res/*.xml 文件。"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files to gradle project."
-msgstr "无法将项目文件导出至 gradle 项目\n"
+msgstr "无法将项目文件导出至 gradle 项目。"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18487,13 +18462,12 @@ msgid "Building Android Project (gradle)"
msgstr "构建 Android 项目 (Gradle)"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"Android 项目构建失败,请检查输出中显示的错误。\n"
-"也å¯ä»¥è®¿é—® docs.godotengine.org 查看 Android 构建文档。"
+"Android 项目构建失败,请检查输出中显示的错误。也å¯ä»¥è®¿é—® docs.godotengine."
+"org 查看 Android 构建文档。"
#: platform/android/export/export_plugin.cpp
msgid "Moving output"
@@ -18506,39 +18480,33 @@ msgid ""
msgstr "无法å¤åˆ¶ä¸Žæ›´å导出文件,请在 Gradle 项目文件夹内确认输出。"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Package not found: \"%s\"."
-msgstr "包ä¸å­˜åœ¨ï¼š%s"
+msgstr "包ä¸å­˜åœ¨ï¼šâ€œ%sâ€ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Creating APK..."
msgstr "正在创建 APK……"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not find template APK to export: \"%s\"."
-msgstr ""
-"找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ APK:\n"
-"%s"
+msgstr "找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ APK:“%sâ€ã€‚"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid ""
"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"导出模æ¿ç¼ºå¤±æ‰€é€‰æž¶æž„的库:%s。\n"
-"请使用全部所需的库构建模æ¿ï¼Œæˆ–è€…åœ¨å¯¼å‡ºé¢„è®¾ä¸­å–æ¶ˆå¯¹ç¼ºå¤±æž¶æž„的选择。"
+"导出模æ¿ç¼ºå¤±æ‰€é€‰æž¶æž„的库:%s。请使用全部所需的库构建模æ¿ï¼Œæˆ–者在导出预设中å–"
+"消对缺失架构的选择。"
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
msgstr "正在添加文件……"
#: platform/android/export/export_plugin.cpp
-#, fuzzy
msgid "Could not export project files."
-msgstr "无法导出项目文件"
+msgstr "无法导出项目文件。"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -18763,14 +18731,12 @@ msgstr "自定义背景色"
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Prepare Templates"
-msgstr "ç®¡ç†æ¨¡æ¿"
+msgstr "准备模æ¿"
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "Export template not found."
-msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布模æ¿ã€‚"
+msgstr "找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ã€‚"
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
@@ -18793,33 +18759,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr "使用默认æµè§ˆå™¨æ‰“开导出的 HTML 文件。"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export: \"%s\"."
-msgstr "无法打开导出模æ¿ï¼š"
+msgstr "无法打开导出模æ¿ï¼šâ€œ%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Invalid export template: \"%s\"."
-msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
+msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼šâ€œ%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file: \"%s\"."
-msgstr "无法写入文件:"
+msgstr "无法写入文件:“%sâ€ã€‚"
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "Icon Creation"
-msgstr "图标边è·"
+msgstr "图标创建"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file: \"%s\"."
-msgstr "æ— æ³•è¯»å–æ–‡ä»¶ï¼š"
+msgstr "æ— æ³•è¯»å–æ–‡ä»¶ï¼šâ€œ%sâ€ã€‚"
#: platform/javascript/export/export.cpp
msgid "PWA"
-msgstr ""
+msgstr "PWA"
#: platform/javascript/export/export.cpp
msgid "Variant"
@@ -18890,19 +18851,16 @@ msgid "Icon 512 X 512"
msgstr "图标 512×512"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read HTML shell: \"%s\"."
-msgstr "æ— æ³•è¯»å– HTML 壳:"
+msgstr "æ— æ³•è¯»å– HTML 壳:“%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not create HTTP server directory: %s."
-msgstr "无法创建 HTTP æœåŠ¡å™¨ç›®å½•ï¼š"
+msgstr "无法创建 HTTP æœåŠ¡å™¨ç›®å½•ï¼š%s。"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Error starting HTTP server: %d."
-msgstr "å¯åЍ HTTP æœåŠ¡å™¨æ—¶å‡ºé”™ï¼š"
+msgstr "å¯åЍ HTTP æœåŠ¡å™¨æ—¶å‡ºé”™ï¼š%d。"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19166,30 +19124,26 @@ msgid "Apple Team ID"
msgstr "Apple 团队 ID"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not open icon file \"%s\"."
-msgstr "无法导出项目文件"
+msgstr "无法打开图标文件“%sâ€ã€‚"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start xcrun executable."
-msgstr "无法å¯åЍå­è¿›ç¨‹ï¼"
+msgstr "无法å¯åЍ xcrun 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Notarization failed."
-msgstr "å…¬è¯"
+msgstr "å…¬è¯å¤±è´¥ã€‚"
#: platform/osx/export/export.cpp
msgid "Notarization request UUID: \"%s\""
-msgstr ""
+msgstr "å…¬è¯è¯·æ±‚ UUID:“%sâ€"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid ""
"The notarization process generally takes less than an hour. When the process "
"is completed, you'll receive an email."
-msgstr "注æ„:公è¯è¿‡ç¨‹é€šå¸¸å°‘äºŽä¸€ä¸ªå°æ—¶ã€‚过程结æŸåŽï¼Œä½ ä¼šæ”¶åˆ°ä¸€å°é‚®ä»¶ã€‚"
+msgstr "å…¬è¯è¿‡ç¨‹é€šå¸¸å°‘äºŽä¸€ä¸ªå°æ—¶ã€‚过程结æŸåŽï¼Œä½ ä¼šæ”¶åˆ°ä¸€å°é‚®ä»¶ã€‚"
#: platform/osx/export/export.cpp
msgid ""
@@ -19204,75 +19158,67 @@ msgid ""
msgstr "è¿è¡Œä»¥ä¸‹å‘½ä»¤å°†å…¬è¯ç¥¨è¯è£…订到导出的应用中(å¯é€‰ï¼‰ï¼š"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
-msgstr "时间戳è¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå°†è¢«ç¦ç”¨ï¼"
+msgstr "添加时间戳与 Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå·²è¢«ç¦ç”¨ï¼"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid ""
"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
-msgstr "加固è¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå°†è¢«ç¦ç”¨ï¼"
+msgstr "加固è¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå·²è¢«ç¦ç”¨ï¼"
#: platform/osx/export/export.cpp
msgid "Built-in CodeSign failed with error \"%s\"."
-msgstr ""
+msgstr "内置 CodeSign 失败,错误为“%sâ€ã€‚"
#: platform/osx/export/export.cpp
msgid "Built-in CodeSign require regex module."
-msgstr ""
+msgstr "内置 CodeSign éœ€è¦ regex 模å—。"
#: platform/osx/export/export.cpp
msgid ""
"Could not start codesign executable, make sure Xcode command line tools are "
"installed."
-msgstr ""
+msgstr "无法å¯åЍ codesign 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·ç¡®ä¿å·²å®‰è£… Xcode 命令行工具。"
#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "没有找到身份。"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Cannot sign file %s."
-msgstr "ä¿å­˜æ–‡ä»¶æ—¶å‡ºé”™ï¼š%s"
+msgstr "æ— æ³•ç­¾åæ–‡ä»¶ %s。"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
-msgstr "该æ“ä½œç³»ç»Ÿä¸Šä¸æ”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„项目å¯èƒ½æŸåï¼"
+msgstr "䏿”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„“%sâ€å¯èƒ½æŸåï¼"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "DMG Creation"
-msgstr "æ–¹å‘"
+msgstr "DMG 创建"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not start hdiutil executable."
-msgstr "无法å¯åЍå­è¿›ç¨‹ï¼"
+msgstr "无法å¯åЍ hdiutil 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/osx/export/export.cpp
msgid "`hdiutil create` failed - file exists."
-msgstr ""
+msgstr "`hdiutil create` 失败 - 文件已存在。"
#: platform/osx/export/export.cpp
msgid "`hdiutil create` failed."
-msgstr ""
+msgstr "`hdiutil create` 失败。"
#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "正在创建应用æ†ç»‘包"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not find template app to export: \"%s\"."
-msgstr "无法找到导出的模æ¿åº”用:"
+msgstr "无法找到导出的模æ¿åº”用:“%sâ€ã€‚"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Invalid export format."
-msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
+msgstr "å¯¼å‡ºæ ¼å¼æ— æ•ˆã€‚"
#: platform/osx/export/export.cpp
msgid ""
@@ -19281,11 +19227,10 @@ msgid ""
msgstr "该æ“ä½œç³»ç»Ÿä¸Šä¸æ”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„项目å¯èƒ½æŸåï¼"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid ""
"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
-msgstr "未找到请求的二进制模æ¿â€œ%sâ€ã€‚你的模æ¿å½’档中å¯èƒ½ç¼ºå¤±è¯¥æ–‡ä»¶ã€‚"
+msgstr "未找到请求的模æ¿äºŒè¿›åˆ¶æ–‡ä»¶â€œ%sâ€ã€‚你的模æ¿å½’档中å¯èƒ½ç¼ºå¤±è¯¥æ–‡ä»¶ã€‚"
#: platform/osx/export/export.cpp
msgid "Making PKG"
@@ -19324,14 +19269,12 @@ msgid "Sending archive for notarization"
msgstr "正在å‘é€å½’档进行公è¯"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "ZIP Creation"
-msgstr "投影"
+msgstr "ZIP 创建"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not open file to read from path \"%s\"."
-msgstr "无法将项目文件导出至 gradle 项目\n"
+msgstr "无法打开ä½äºŽâ€œ%sâ€çš„æ–‡ä»¶è¿›è¡Œè¯»å–。"
#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
@@ -19638,9 +19581,8 @@ msgid "Debug Algorithm"
msgstr "调试算法"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Failed to rename temporary file \"%s\"."
-msgstr "无法移除临时文件:"
+msgstr "é‡å‘½å临时文件“%sâ€å¤±è´¥ã€‚"
#: platform/windows/export/export.cpp
msgid "Identity Type"
@@ -19683,74 +19625,68 @@ msgid "Trademarks"
msgstr "商标"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Resources Modification"
-msgstr "推é€é€šçŸ¥"
+msgstr "资æºä¿®æ”¹"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Could not find rcedit executable at \"%s\"."
-msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
+msgstr "无法在“%sâ€æ‰¾åˆ° rcedit 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Could not find wine executable at \"%s\"."
-msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
+msgstr "无法在“%sâ€æ‰¾åˆ° wine 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid ""
"Could not start rcedit executable, configure rcedit path in the Editor "
"Settings (Export > Windows > Rcedit)."
msgstr ""
-"必须在编辑器设置中é…ç½® rcedit 工具(Export > Windows > Rcedit)æ‰èƒ½ä¿®æ”¹å›¾æ ‡æˆ–"
-"åº”ç”¨ä¿¡æ¯æ•°æ®ã€‚"
+"无法å¯åЍ rcedit 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·åœ¨ç¼–辑器设置中é…ç½® rcedit 路径(导出 > Windows "
+"> Rcedit)。"
#: platform/windows/export/export.cpp
msgid ""
"rcedit failed to modify executable:\n"
"%s"
msgstr ""
+"rcedit ä¿®æ”¹å¯æ‰§è¡Œæ–‡ä»¶å¤±è´¥ï¼š\n"
+"%s"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Could not find signtool executable at \"%s\"."
-msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
+msgstr "无法在“%sâ€æ‰¾åˆ° signtool 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Could not find osslsigncode executable at \"%s\"."
-msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
+msgstr "无法在“%sâ€æ‰¾åˆ° osslsigncode 坿‰§è¡Œæ–‡ä»¶ã€‚"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid identity type."
-msgstr "身份类型"
+msgstr "身份类型无效。"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid timestamp server."
-msgstr "å称无效。"
+msgstr "时间戳æœåŠ¡å™¨æ— æ•ˆã€‚"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid ""
"Could not start signtool executable, configure signtool path in the Editor "
"Settings (Export > Windows > Signtool)."
msgstr ""
-"必须在编辑器设置中é…ç½® rcedit 工具(Export > Windows > Rcedit)æ‰èƒ½ä¿®æ”¹å›¾æ ‡æˆ–"
-"åº”ç”¨ä¿¡æ¯æ•°æ®ã€‚"
+"无法å¯åЍ signtool 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·åœ¨ç¼–辑器设置中é…ç½® signtool 路径(导出 > "
+"Windows > Signtool)。"
#: platform/windows/export/export.cpp
msgid ""
"Signtool failed to sign executable:\n"
"%s"
msgstr ""
+"Signtool ç­¾å坿‰§è¡Œæ–‡ä»¶å¤±è´¥ï¼š\n"
+"%s"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Failed to remove temporary file \"%s\"."
-msgstr "无法移除临时文件:"
+msgstr "移除临时文件“%sâ€å¤±è´¥ã€‚"
#: platform/windows/export/export.cpp
msgid ""
@@ -19774,20 +19710,19 @@ msgstr "产å“版本无效:"
#: platform/windows/export/export.cpp
msgid "Windows executables cannot be >= 4 GiB."
-msgstr ""
+msgstr "Windows 坿‰§è¡Œæ–‡ä»¶ä¸èƒ½ >= 4GiB。"
#: platform/windows/export/export.cpp platform/x11/export/export.cpp
-#, fuzzy
msgid "Failed to open executable file \"%s\"."
-msgstr "坿‰§è¡Œæ–‡ä»¶æ— æ•ˆã€‚"
+msgstr "æ‰“å¼€å¯æ‰§è¡Œæ–‡ä»¶â€œ%sâ€å¤±è´¥ã€‚"
#: platform/windows/export/export.cpp platform/x11/export/export.cpp
msgid "Executable file header corrupted."
-msgstr ""
+msgstr "坿‰§è¡Œæ–‡ä»¶å¤´å·²æŸå。"
#: platform/windows/export/export.cpp platform/x11/export/export.cpp
msgid "Executable \"pck\" section not found."
-msgstr ""
+msgstr "坿‰§è¡Œæ–‡ä»¶â€œpckâ€åŒºæœªæ‰¾åˆ°ã€‚"
#: platform/windows/export/export.cpp
msgid "Windows"
@@ -19807,7 +19742,7 @@ msgstr "Wine"
#: platform/x11/export/export.cpp
msgid "32-bit executables cannot have embedded data >= 4 GiB."
-msgstr ""
+msgstr "32 ä½å¯æ‰§è¡Œæ–‡ä»¶æ— æ³•内嵌 >= 4 GiB 的数æ®ã€‚"
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
@@ -20684,14 +20619,12 @@ msgid "Navpoly"
msgstr "导航多边形"
#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
-#, fuzzy
msgid "Enter Cost"
-msgstr "底部居中"
+msgstr "进入消耗"
#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
-#, fuzzy
msgid "Travel Cost"
-msgstr "行程"
+msgstr "移动消耗"
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
@@ -24162,14 +24095,12 @@ msgid "3D Physics"
msgstr "3D 物ç†"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "2D Navigation"
-msgstr "导航"
+msgstr "2D 导航"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "3D Navigation"
-msgstr "导航"
+msgstr "3D 导航"
#: scene/register_scene_types.cpp
msgid "Use hiDPI"
@@ -25455,14 +25386,12 @@ msgid "Visible Instance Count"
msgstr "å¯è§å®žä¾‹æ•°"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Sampling"
-msgstr "缩放:"
+msgstr "采样"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Partition Type"
-msgstr "采样分区类型"
+msgstr "分区类型"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25477,12 +25406,10 @@ msgid "Source Group Name"
msgstr "æ¥æºåˆ†ç»„åç§°"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Cells"
msgstr "å•元格"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Agents"
msgstr "代ç†"
@@ -25495,16 +25422,14 @@ msgid "Max Slope"
msgstr "最大斜å¡"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Regions"
-msgstr "区域"
+msgstr "地区"
#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr "åˆå¹¶å¤§å°"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Edges"
msgstr "边界"
@@ -25517,7 +25442,6 @@ msgid "Verts Per Poly"
msgstr "æ¯å¤šè¾¹å½¢é¡¶ç‚¹æ•°"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Details"
msgstr "细节"
@@ -25538,9 +25462,8 @@ msgid "Ledge Spans"
msgstr "凸å°èŒƒå›´"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Walkable Low Height Spans"
-msgstr "过滤å¯è¡Œèµ°ä½Žé«˜åº¦èŒƒå›´"
+msgstr "å¯è¡Œèµ°ä½Žé«˜åº¦èŒƒå›´"
#: scene/resources/occluder_shape.cpp
msgid "Spheres"
@@ -25897,9 +25820,8 @@ msgid "Scenario"
msgstr "场景"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Navigation Map"
-msgstr "导航"
+msgstr "导航地图"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
@@ -25918,24 +25840,20 @@ msgid "Default Angular Damp"
msgstr "默认角度阻尼"
#: scene/resources/world.cpp
-#, fuzzy
msgid "Default Map Up"
-msgstr "默认浮点数步长"
+msgstr "默认地图上方"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Default Cell Size"
-msgstr "å•元格大å°"
+msgstr "默认å•元格大å°"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Default Cell Height"
-msgstr "å•元格高度"
+msgstr "默认å•元格高度"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Default Edge Connection Margin"
-msgstr "边界连接边è·"
+msgstr "默认边界连接边è·"
#: scene/resources/world_2d.cpp
msgid "Canvas"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 898b29af95..01c72c6ee1 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -676,6 +676,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "場景路徑:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -683,20 +688,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "版本:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "æ’件列表:"
+msgid "Version Control Plugin Name"
+msgstr "版本:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2885,7 +2885,7 @@ msgid "Completed with errors."
msgstr "複製路徑"
#: editor/editor_export.cpp
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr ""
#: editor/editor_export.cpp
@@ -4408,15 +4408,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "場景"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "場景路徑:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4544,6 +4535,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "版本:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "釿–°å‘½å"
@@ -4573,6 +4569,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "新增軌迹"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "場景"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Go to previously opened scene."
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index eb229cb9fa..be888529cc 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -689,6 +689,11 @@ msgstr "主執行引數"
#: core/project_settings.cpp
#, fuzzy
+msgid "Scene Naming"
+msgstr "場景路徑:"
+
+#: core/project_settings.cpp
+#, fuzzy
msgid "Search In File Extensions"
msgstr "ä»¥å‰¯æª”åæœå°‹"
@@ -696,18 +701,15 @@ msgstr "ä»¥å‰¯æª”åæœå°‹"
msgid "Script Templates Search Path"
msgstr "è…³æœ¬æ¨£æ¿æœå°‹è·¯å¾‘"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "版本控制"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "啟動時自動載入"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "外掛å稱"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "版本控制"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -2827,7 +2829,7 @@ msgstr "複製節點路徑"
#: editor/editor_export.cpp
#, fuzzy
-msgid "Completed sucessfully."
+msgid "Completed successfully."
msgstr "å¥—ä»¶å®‰è£æˆåŠŸï¼"
#: editor/editor_export.cpp
@@ -4315,15 +4317,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr "無法寫入檔案'%s',該檔案正被使用ã€éŽ–å®šæˆ–å› æ¬Šé™ä¸è¶³ã€‚"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "場景"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "場景路徑:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4454,6 +4447,10 @@ msgid "Default Color Picker Mode"
msgstr "é è¨­é¡è‰²æŒ‘é¸å™¨æ¨¡å¼"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "版本控制"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "釿–°å‘½å"
@@ -4482,6 +4479,10 @@ msgstr "切æ›ï¼å–消專注模å¼ã€‚"
msgid "Add a new scene."
msgstr "新增場景。"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "場景"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "跳至上一個開啟的場景。"
diff --git a/misc/scripts/codespell.sh b/misc/scripts/codespell.sh
index f99c5d22b2..f99c5d22b2 100644..100755
--- a/misc/scripts/codespell.sh
+++ b/misc/scripts/codespell.sh
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index 64258ee8d3..617db883f8 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -62,7 +62,7 @@ GDScriptNativeClass::GDScriptNativeClass(const StringName &p_name) {
bool GDScriptNativeClass::_get(const StringName &p_name, Variant &r_ret) const {
bool ok;
- int v = ClassDB::get_integer_constant(name, p_name, &ok);
+ int64_t v = ClassDB::get_integer_constant(name, p_name, &ok);
if (ok) {
r_ret = v;
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h
index 80f187a375..0057962d5e 100644
--- a/modules/gdscript/gdscript.h
+++ b/modules/gdscript/gdscript.h
@@ -368,7 +368,7 @@ public:
if (_debug_call_stack_pos >= _debug_max_call_stack) {
//stack overflow
- _debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+ _debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
EngineDebugger::get_script_debugger()->debug(this);
return;
}
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index a070d319f3..42b02ce3b9 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -2900,7 +2900,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
return;
}
bool valid = false;
- int int_constant = ClassDB::get_integer_constant(native, name, &valid);
+ int64_t int_constant = ClassDB::get_integer_constant(native, name, &valid);
if (valid) {
p_identifier->is_constant = true;
p_identifier->reduced_value = int_constant;
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index b2cce9d8ee..25454030b1 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -312,7 +312,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
// Class C++ integer constant.
if (nc) {
bool success = false;
- int constant = ClassDB::get_integer_constant(nc->get_name(), identifier, &success);
+ int64_t constant = ClassDB::get_integer_constant(nc->get_name(), identifier, &success);
if (success) {
return codegen.add_constant(constant);
}
diff --git a/modules/mono/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp
index 3afde1e8d3..c4547b4323 100644
--- a/modules/mono/class_db_api_json.cpp
+++ b/modules/mono/class_db_api_json.cpp
@@ -124,7 +124,7 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
List<StringName> snames;
- for (const KeyValue<StringName, int> &F : t->constant_map) {
+ for (const KeyValue<StringName, int64_t> &F : t->constant_map) {
snames.push_back(F.key);
}
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index 960d2fe27c..9d3d481068 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -954,7 +954,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
}
}
- p_output.append(MEMBER_BEGIN "public const int ");
+ p_output.append(MEMBER_BEGIN "public const long ");
p_output.append(iconstant.proxy_name);
p_output.append(" = ");
p_output.append(itos(iconstant.value));
@@ -992,6 +992,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
p_output.append("\n" INDENT1 "public enum ");
p_output.append(enum_proxy_name);
+ p_output.append(" : long");
p_output.append("\n" INDENT1 OPEN_BLOCK);
const ConstantInterface &last = ienum.constants.back()->get();
@@ -1417,7 +1418,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
}
}
- output.append(MEMBER_BEGIN "public const int ");
+ output.append(MEMBER_BEGIN "public const long ");
output.append(iconstant.proxy_name);
output.append(" = ");
output.append(itos(iconstant.value));
@@ -1435,6 +1436,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.append(MEMBER_BEGIN "public enum ");
output.append(ienum.cname.operator String());
+ output.append(" : long");
output.append(MEMBER_BEGIN OPEN_BLOCK);
const ConstantInterface &last = ienum.constants.back()->get();
@@ -3088,7 +3090,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
const List<StringName> &enum_constants = E.value;
for (const StringName &constant_cname : enum_constants) {
String constant_name = constant_cname.operator String();
- int *value = class_info->constant_map.getptr(constant_cname);
+ int64_t *value = class_info->constant_map.getptr(constant_cname);
ERR_FAIL_NULL_V(value, false);
constants.erase(constant_name);
@@ -3123,7 +3125,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
}
for (const String &constant_name : constants) {
- int *value = class_info->constant_map.getptr(StringName(constant_name));
+ int64_t *value = class_info->constant_map.getptr(StringName(constant_name));
ERR_FAIL_NULL_V(value, false);
ConstantInterface iconstant(constant_name, snake_to_pascal_case(constant_name, true), *value);
@@ -3666,7 +3668,7 @@ void BindingsGenerator::_populate_global_constants() {
}
}
- int constant_value = CoreConstants::get_global_constant_value(i);
+ int64_t constant_value = CoreConstants::get_global_constant_value(i);
StringName enum_name = CoreConstants::get_global_constant_enum(i);
ConstantInterface iconstant(constant_name, snake_to_pascal_case(constant_name, true), constant_value);
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index f0ba2b18e4..70c4f12146 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -45,12 +45,12 @@ class BindingsGenerator {
struct ConstantInterface {
String name;
String proxy_name;
- int value = 0;
+ int64_t value = 0;
const DocData::ConstantDoc *const_doc;
ConstantInterface() {}
- ConstantInterface(const String &p_name, const String &p_proxy_name, int p_value) {
+ ConstantInterface(const String &p_name, const String &p_proxy_name, int64_t p_value) {
name = p_name;
proxy_name = p_proxy_name;
value = p_value;
diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp
index e6975611d2..64b68b70af 100644
--- a/modules/mono/utils/string_utils.cpp
+++ b/modules/mono/utils/string_utils.cpp
@@ -145,7 +145,7 @@ bool is_csharp_keyword(const String &p_name) {
p_name == "do" || p_name == "double" || p_name == "else" || p_name == "enum" ||
p_name == "event" || p_name == "explicit" || p_name == "extern" || p_name == "false" ||
p_name == "finally" || p_name == "fixed" || p_name == "float" || p_name == "for" ||
- p_name == "forech" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
+ p_name == "foreach" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
p_name == "in" || p_name == "int" || p_name == "interface" || p_name == "internal" ||
p_name == "is" || p_name == "lock" || p_name == "long" || p_name == "namespace" ||
p_name == "new" || p_name == "null" || p_name == "object" || p_name == "operator" ||
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 30b64d0a7b..c4fafb6676 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -1582,7 +1582,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
if (!found) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- error_str = RTR("Found sequence bit but not the node in the stack, report bug!");
+ error_str = RTR("Found sequence bit but not the node in the stack (please report).");
error = true;
break;
}
@@ -1594,7 +1594,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// Check for stack overflow.
if (flow_stack_pos + 1 >= flow_max) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- error_str = RTR("Stack overflow with stack depth:") + " " + itos(output);
+ error_str = vformat(RTR("Stack overflow (stack size: %s). Check for infinite recursion in your script."), output);
error = true;
break;
}
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index 0f3b8de3fc..c2e4d0e597 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -522,7 +522,7 @@ public:
if (_debug_call_stack_pos >= _debug_max_call_stack) {
// Stack overflow.
- _debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+ _debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
EngineDebugger::get_script_debugger()->debug(this);
return;
}
@@ -545,7 +545,7 @@ public:
}
if (_debug_call_stack_pos == 0) {
- _debug_error = "Stack Underflow (Engine Bug)";
+ _debug_error = "Stack underflow (engine bug), please report.";
EngineDebugger::get_script_debugger()->debug(this);
return;
}
diff --git a/platform/linuxbsd/key_mapping_x11.cpp b/platform/linuxbsd/key_mapping_x11.cpp
index afe965e038..047ee74671 100644
--- a/platform/linuxbsd/key_mapping_x11.cpp
+++ b/platform/linuxbsd/key_mapping_x11.cpp
@@ -135,6 +135,25 @@ static _XTranslatePair _xkeysym_to_keycode[] = {
{ XK_F14, Key::F14 },
{ XK_F15, Key::F15 },
{ XK_F16, Key::F16 },
+ { XK_F17, Key::F17 },
+ { XK_F18, Key::F18 },
+ { XK_F19, Key::F19 },
+ { XK_F20, Key::F20 },
+ { XK_F21, Key::F21 },
+ { XK_F22, Key::F22 },
+ { XK_F23, Key::F23 },
+ { XK_F24, Key::F24 },
+ { XK_F25, Key::F25 },
+ { XK_F26, Key::F26 },
+ { XK_F27, Key::F27 },
+ { XK_F28, Key::F28 },
+ { XK_F29, Key::F29 },
+ { XK_F30, Key::F30 },
+ { XK_F31, Key::F31 },
+ { XK_F32, Key::F32 },
+ { XK_F33, Key::F33 },
+ { XK_F34, Key::F34 },
+ { XK_F35, Key::F35 },
// media keys
{ XF86XK_Back, Key::BACK },
@@ -294,6 +313,29 @@ static _TranslatePair _scancode_to_keycode[] = {
{ Key::SUPER_L, 0x85 },
{ Key::SUPER_R, 0x86 },
{ Key::MENU, 0x87 },
+ { Key::F13, 0xBF },
+ { Key::F14, 0xC0 },
+ { Key::F15, 0xC1 },
+ { Key::F16, 0xC2 },
+ { Key::F17, 0xC3 },
+ { Key::F18, 0xC4 },
+ { Key::F19, 0xC5 },
+ { Key::F20, 0xC6 },
+ { Key::F21, 0xC7 },
+ { Key::F22, 0xC8 },
+ { Key::F23, 0xC9 },
+ { Key::F24, 0xCA },
+ { Key::F25, 0xCB },
+ { Key::F26, 0xCC },
+ { Key::F27, 0xCD },
+ { Key::F28, 0xCE },
+ { Key::F29, 0xCF },
+ { Key::F30, 0xD0 },
+ { Key::F31, 0xD1 },
+ { Key::F32, 0xD2 },
+ { Key::F33, 0xD3 },
+ { Key::F34, 0xD4 },
+ { Key::F35, 0xD5 },
{ Key::UNKNOWN, 0 }
};
diff --git a/platform/osx/key_mapping_osx.mm b/platform/osx/key_mapping_osx.mm
index bfec45de58..0bf6bc7d1c 100644
--- a/platform/osx/key_mapping_osx.mm
+++ b/platform/osx/key_mapping_osx.mm
@@ -130,7 +130,7 @@ static const Key _osx_to_godot_table[128] = {
/* 3d */ Key::ALT,
/* 3e */ Key::CTRL,
/* 3f */ Key::UNKNOWN, /* Function */
- /* 40 */ Key::UNKNOWN, /* F17 */
+ /* 40 */ Key::F17,
/* 41 */ Key::KP_PERIOD,
/* 42 */ Key::UNKNOWN,
/* 43 */ Key::KP_MULTIPLY,
@@ -145,8 +145,8 @@ static const Key _osx_to_godot_table[128] = {
/* 4c */ Key::KP_ENTER,
/* 4d */ Key::UNKNOWN,
/* 4e */ Key::KP_SUBTRACT,
- /* 4f */ Key::UNKNOWN, /* F18 */
- /* 50 */ Key::UNKNOWN, /* F19 */
+ /* 4f */ Key::F18,
+ /* 50 */ Key::F19,
/* 51 */ Key::EQUAL, /* KeypadEqual */
/* 52 */ Key::KP_0,
/* 53 */ Key::KP_1,
@@ -156,7 +156,7 @@ static const Key _osx_to_godot_table[128] = {
/* 57 */ Key::KP_5,
/* 58 */ Key::KP_6,
/* 59 */ Key::KP_7,
- /* 5a */ Key::UNKNOWN, /* F20 */
+ /* 5a */ Key::F20,
/* 5b */ Key::KP_8,
/* 5c */ Key::KP_9,
/* 5d */ Key::YEN, /* JIS Yen */
@@ -366,7 +366,26 @@ static const _KeyCodeText _native_keycodes[] = {
{Key::F13 ,NSF13FunctionKey},
{Key::F14 ,NSF14FunctionKey},
{Key::F15 ,NSF15FunctionKey},
- {Key::F16 ,NSF16FunctionKey}, //* ... NSF35FunctionKey */
+ {Key::F16 ,NSF16FunctionKey},
+ {Key::F17 ,NSF17FunctionKey},
+ {Key::F18 ,NSF18FunctionKey},
+ {Key::F19 ,NSF19FunctionKey},
+ {Key::F20 ,NSF20FunctionKey},
+ {Key::F21 ,NSF21FunctionKey},
+ {Key::F22 ,NSF22FunctionKey},
+ {Key::F23 ,NSF23FunctionKey},
+ {Key::F24 ,NSF24FunctionKey},
+ {Key::F25 ,NSF25FunctionKey},
+ {Key::F26 ,NSF26FunctionKey},
+ {Key::F27 ,NSF27FunctionKey},
+ {Key::F28 ,NSF28FunctionKey},
+ {Key::F29 ,NSF29FunctionKey},
+ {Key::F30 ,NSF30FunctionKey},
+ {Key::F31 ,NSF31FunctionKey},
+ {Key::F32 ,NSF32FunctionKey},
+ {Key::F33 ,NSF33FunctionKey},
+ {Key::F34 ,NSF34FunctionKey},
+ {Key::F35 ,NSF35FunctionKey},
{Key::MENU ,NSMenuFunctionKey},
{Key::HELP ,NSHelpFunctionKey},
{Key::STOP ,NSStopFunctionKey},
diff --git a/platform/windows/key_mapping_windows.cpp b/platform/windows/key_mapping_windows.cpp
index e32dc0d1a6..2d8d68a575 100644
--- a/platform/windows/key_mapping_windows.cpp
+++ b/platform/windows/key_mapping_windows.cpp
@@ -179,7 +179,14 @@ static _WinTranslatePair _vk_to_keycode[] = {
{ Key::F14, VK_F14 }, // (0x7D)
{ Key::F15, VK_F15 }, // (0x7E)
{ Key::F16, VK_F16 }, // (0x7F)
- // We have no mappings for F17-F24. (0x80-87)
+ { Key::F17, VK_F17 }, // (0x80)
+ { Key::F18, VK_F18 }, // (0x81)
+ { Key::F19, VK_F19 }, // (0x82)
+ { Key::F20, VK_F20 }, // (0x83)
+ { Key::F21, VK_F21 }, // (0x84)
+ { Key::F22, VK_F22 }, // (0x85)
+ { Key::F23, VK_F23 }, // (0x86)
+ { Key::F24, VK_F24 }, // (0x87)
// 0x88-8F are reserved for UI navigation.
{ Key::NUMLOCK, VK_NUMLOCK }, // (0x90)
{ Key::SCROLLLOCK, VK_SCROLL }, // (0x91)
@@ -409,6 +416,14 @@ static _WinTranslatePair _scancode_to_keycode[] = {
{ Key::F14, 0x65 },
{ Key::F15, 0x66 },
{ Key::F16, 0x67 },
+ { Key::F17, 0x68 },
+ { Key::F18, 0x69 },
+ { Key::F19, 0x6A },
+ { Key::F20, 0x6B },
+ { Key::F21, 0x6C },
+ { Key::F22, 0x6D },
+ { Key::F23, 0x6E },
+ { Key::F24, 0x76 },
{ Key::UNKNOWN, 0 }
};
diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp
index e7f1740f0b..eaab58c4ae 100644
--- a/scene/2d/audio_stream_player_2d.cpp
+++ b/scene/2d/audio_stream_player_2d.cpp
@@ -30,6 +30,7 @@
#include "audio_stream_player_2d.h"
+#include "core/config/project_settings.h"
#include "scene/2d/area_2d.h"
#include "scene/2d/audio_listener_2d.h"
#include "scene/main/window.h"
@@ -186,7 +187,14 @@ void AudioStreamPlayer2D::_update_panning() {
float multiplier = Math::pow(1.0f - dist / max_distance, attenuation);
multiplier *= Math::db2linear(volume_db); //also apply player volume!
- float pan = CLAMP((relative_to_listener.x + screen_size.x * 0.5) / screen_size.x, 0.0, 1.0);
+ float pan = relative_to_listener.x / screen_size.x;
+ // Don't let the panning effect extend (too far) beyond the screen.
+ pan = CLAMP(pan, -1, 1);
+
+ // Bake in a constant factor here to allow the project setting defaults for 2d and 3d to be normalized to 1.0.
+ pan *= panning_strength * cached_global_panning_strength * 0.5f;
+
+ pan = CLAMP(pan + 0.5, 0.0, 1.0);
float l = 1.0 - pan;
float r = pan;
@@ -391,6 +399,15 @@ int AudioStreamPlayer2D::get_max_polyphony() const {
return max_polyphony;
}
+void AudioStreamPlayer2D::set_panning_strength(float p_panning_strength) {
+ ERR_FAIL_COND_MSG(p_panning_strength < 0, "Panning strength must be a positive number.");
+ panning_strength = p_panning_strength;
+}
+
+float AudioStreamPlayer2D::get_panning_strength() const {
+ return panning_strength;
+}
+
void AudioStreamPlayer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stream", "stream"), &AudioStreamPlayer2D::set_stream);
ClassDB::bind_method(D_METHOD("get_stream"), &AudioStreamPlayer2D::get_stream);
@@ -432,6 +449,9 @@ void AudioStreamPlayer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_max_polyphony", "max_polyphony"), &AudioStreamPlayer2D::set_max_polyphony);
ClassDB::bind_method(D_METHOD("get_max_polyphony"), &AudioStreamPlayer2D::get_max_polyphony);
+ ClassDB::bind_method(D_METHOD("set_panning_strength", "panning_strength"), &AudioStreamPlayer2D::set_panning_strength);
+ ClassDB::bind_method(D_METHOD("get_panning_strength"), &AudioStreamPlayer2D::get_panning_strength);
+
ClassDB::bind_method(D_METHOD("get_stream_playback"), &AudioStreamPlayer2D::get_stream_playback);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), "set_stream", "get_stream");
@@ -443,6 +463,7 @@ void AudioStreamPlayer2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "1,4096,1,or_greater,exp,suffix:px"), "set_max_distance", "get_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "attenuation", PROPERTY_HINT_EXP_EASING, "attenuation"), "set_attenuation", "get_attenuation");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_polyphony", PROPERTY_HINT_NONE, ""), "set_max_polyphony", "get_max_polyphony");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "panning_strength", PROPERTY_HINT_RANGE, "0,3,0.01,or_greater"), "set_panning_strength", "get_panning_strength");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
ADD_PROPERTY(PropertyInfo(Variant::INT, "area_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_area_mask", "get_area_mask");
@@ -451,6 +472,7 @@ void AudioStreamPlayer2D::_bind_methods() {
AudioStreamPlayer2D::AudioStreamPlayer2D() {
AudioServer::get_singleton()->connect("bus_layout_changed", callable_mp(this, &AudioStreamPlayer2D::_bus_layout_changed));
+ cached_global_panning_strength = ProjectSettings::get_singleton()->get("audio/general/2d_panning_strength");
}
AudioStreamPlayer2D::~AudioStreamPlayer2D() {
diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h
index 73b09e432f..a22782fe44 100644
--- a/scene/2d/audio_stream_player_2d.h
+++ b/scene/2d/audio_stream_player_2d.h
@@ -81,6 +81,9 @@ private:
float max_distance = 2000.0;
float attenuation = 1.0;
+ float panning_strength = 1.0f;
+ float cached_global_panning_strength = 1.0f;
+
protected:
void _validate_property(PropertyInfo &property) const override;
void _notification(int p_what);
@@ -123,6 +126,9 @@ public:
void set_max_polyphony(int p_max_polyphony);
int get_max_polyphony() const;
+ void set_panning_strength(float p_panning_strength);
+ float get_panning_strength() const;
+
Ref<AudioStreamPlayback> get_stream_playback();
AudioStreamPlayer2D();
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp
index f9cf70a586..913003c7e6 100644
--- a/scene/2d/cpu_particles_2d.cpp
+++ b/scene/2d/cpu_particles_2d.cpp
@@ -1362,7 +1362,7 @@ void CPUParticles2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("convert_from_particles", "particles"), &CPUParticles2D::convert_from_particles);
ADD_GROUP("Emission Shape", "emission_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "emission_shape", PROPERTY_HINT_ENUM, "Point,Sphere,Sphere Surface,Box,Points,Directed Points", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_emission_shape", "get_emission_shape");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "emission_shape", PROPERTY_HINT_ENUM, "Point,Sphere,Sphere Surface,Rectangle,Points,Directed Points", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_emission_shape", "get_emission_shape");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_sphere_radius", PROPERTY_HINT_RANGE, "0.01,128,0.01,suffix:px"), "set_emission_sphere_radius", "get_emission_sphere_radius");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "emission_rect_extents", PROPERTY_HINT_NONE, "suffix:px"), "set_emission_rect_extents", "get_emission_rect_extents");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "emission_points"), "set_emission_points", "get_emission_points");
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index 7c1fb3779f..824ea0407e 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -30,6 +30,7 @@
#include "audio_stream_player_3d.h"
+#include "core/config/project_settings.h"
#include "scene/3d/area_3d.h"
#include "scene/3d/audio_listener_3d.h"
#include "scene/3d/camera_3d.h"
@@ -462,9 +463,10 @@ Vector<AudioFrame> AudioStreamPlayer3D::_update_panning() {
for (Ref<AudioStreamPlayback> &playback : stream_playbacks) {
AudioServer::get_singleton()->set_playback_highshelf_params(playback, linear_attenuation, attenuation_filter_cutoff_hz);
}
- //TODO: The lower the second parameter (tightness) the more the sound will "enclose" the listener (more undirected / playing from
- // speakers not facing the source) - this could be made distance dependent.
- _calc_output_vol(local_pos.normalized(), 4.0, output_volume_vector);
+ // Bake in a constant factor here to allow the project setting defaults for 2d and 3d to be normalized to 1.0.
+ float tightness = cached_global_panning_strength * 2.0f;
+ tightness *= panning_strength;
+ _calc_output_vol(local_pos.normalized(), tightness, output_volume_vector);
for (unsigned int k = 0; k < 4; k++) {
output_volume_vector.write[k] = multiplier * output_volume_vector[k];
@@ -792,6 +794,15 @@ int AudioStreamPlayer3D::get_max_polyphony() const {
return max_polyphony;
}
+void AudioStreamPlayer3D::set_panning_strength(float p_panning_strength) {
+ ERR_FAIL_COND_MSG(p_panning_strength < 0, "Panning strength must be a positive number.");
+ panning_strength = p_panning_strength;
+}
+
+float AudioStreamPlayer3D::get_panning_strength() const {
+ return panning_strength;
+}
+
void AudioStreamPlayer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stream", "stream"), &AudioStreamPlayer3D::set_stream);
ClassDB::bind_method(D_METHOD("get_stream"), &AudioStreamPlayer3D::get_stream);
@@ -857,6 +868,9 @@ void AudioStreamPlayer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_max_polyphony", "max_polyphony"), &AudioStreamPlayer3D::set_max_polyphony);
ClassDB::bind_method(D_METHOD("get_max_polyphony"), &AudioStreamPlayer3D::get_max_polyphony);
+ ClassDB::bind_method(D_METHOD("set_panning_strength", "panning_strength"), &AudioStreamPlayer3D::set_panning_strength);
+ ClassDB::bind_method(D_METHOD("get_panning_strength"), &AudioStreamPlayer3D::get_panning_strength);
+
ClassDB::bind_method(D_METHOD("get_stream_playback"), &AudioStreamPlayer3D::get_stream_playback);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), "set_stream", "get_stream");
@@ -870,6 +884,7 @@ void AudioStreamPlayer3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stream_paused", PROPERTY_HINT_NONE, ""), "set_stream_paused", "get_stream_paused");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,or_greater,suffix:m"), "set_max_distance", "get_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_polyphony", PROPERTY_HINT_NONE, ""), "set_max_polyphony", "get_max_polyphony");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "panning_strength", PROPERTY_HINT_RANGE, "0,3,0.01,or_greater"), "set_panning_strength", "get_panning_strength");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
ADD_PROPERTY(PropertyInfo(Variant::INT, "area_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_area_mask", "get_area_mask");
ADD_GROUP("Emission Angle", "emission_angle");
@@ -898,6 +913,7 @@ AudioStreamPlayer3D::AudioStreamPlayer3D() {
velocity_tracker.instantiate();
AudioServer::get_singleton()->connect("bus_layout_changed", callable_mp(this, &AudioStreamPlayer3D::_bus_layout_changed));
set_disable_scale(true);
+ cached_global_panning_strength = ProjectSettings::get_singleton()->get("audio/general/3d_panning_strength");
}
AudioStreamPlayer3D::~AudioStreamPlayer3D() {
diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h
index bc47a8de93..85ece6d8d5 100644
--- a/scene/3d/audio_stream_player_3d.h
+++ b/scene/3d/audio_stream_player_3d.h
@@ -116,6 +116,9 @@ private:
float _get_attenuation_db(float p_distance) const;
+ float panning_strength = 1.0f;
+ float cached_global_panning_strength = 1.0f;
+
protected:
void _validate_property(PropertyInfo &property) const override;
void _notification(int p_what);
@@ -182,6 +185,9 @@ public:
void set_stream_paused(bool p_pause);
bool get_stream_paused() const;
+ void set_panning_strength(float p_panning_strength);
+ float get_panning_strength() const;
+
Ref<AudioStreamPlayback> get_stream_playback();
AudioStreamPlayer3D();
diff --git a/scene/3d/light_3d.cpp b/scene/3d/light_3d.cpp
index d80c10d63a..28614d7cae 100644
--- a/scene/3d/light_3d.cpp
+++ b/scene/3d/light_3d.cpp
@@ -281,7 +281,7 @@ void Light3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_indirect_energy", PROPERTY_HINT_RANGE, "0,16,0.001,or_greater"), "set_param", "get_param", PARAM_INDIRECT_ENERGY);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_projector", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_projector", "get_projector");
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_size", PROPERTY_HINT_RANGE, "0,1,0.001,or_greater,suffix:m"), "set_param", "get_param", PARAM_SIZE);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_angular_distance", PROPERTY_HINT_RANGE, "0,90,0.01,radians"), "set_param", "get_param", PARAM_SIZE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_angular_distance", PROPERTY_HINT_RANGE, "0,90,0.01,degrees"), "set_param", "get_param", PARAM_SIZE);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "light_negative"), "set_negative", "is_negative");
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_specular", PROPERTY_HINT_RANGE, "0,16,0.001,or_greater"), "set_param", "get_param", PARAM_SPECULAR);
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_bake_mode", PROPERTY_HINT_ENUM, "Disabled,Static (VoxelGI/SDFGI/LightmapGI),Dynamic (VoxelGI/SDFGI only)"), "set_bake_mode", "get_bake_mode");
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index ba2029788e..fbd5f31dd5 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -326,13 +326,11 @@ void Skeleton3D::_notification(int p_what) {
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
// This is active only if the skeleton animates the physical bones
// and the state of the bone is not active.
- if (Engine::get_singleton()->is_editor_hint()) {
- if (animate_physical_bones) {
- for (int i = 0; i < bones.size(); i += 1) {
- if (bones[i].physical_bone) {
- if (bones[i].physical_bone->is_simulating_physics() == false) {
- bones[i].physical_bone->reset_to_rest_position();
- }
+ if (animate_physical_bones) {
+ for (int i = 0; i < bones.size(); i += 1) {
+ if (bones[i].physical_bone) {
+ if (bones[i].physical_bone->is_simulating_physics() == false) {
+ bones[i].physical_bone->reset_to_rest_position();
}
}
}
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 8edfaa5853..5d471c9e84 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -1909,7 +1909,7 @@ NodePath AnimationPlayer::get_root() const {
void AnimationPlayer::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
String pf = p_function;
- if (p_idx == 0 && (p_function == "play" || p_function == "play_backwards" || p_function == "remove_animation" || p_function == "has_animation" || p_function == "queue")) {
+ if (p_idx == 0 && (p_function == "play" || p_function == "play_backwards" || p_function == "has_animation" || p_function == "queue")) {
List<StringName> al;
get_animation_list(&al);
for (const StringName &name : al) {
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index d34e8db093..136285c4dc 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -919,7 +919,6 @@ void AnimationTree::_process_graph(double p_delta) {
state.valid = true;
state.invalid_reasons = "";
state.animation_states.clear(); //will need to be re-created
- state.valid = true;
state.player = player;
state.last_pass = process_pass;
state.tree = this;
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index 1d697a2176..11c2a495ad 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -111,31 +111,19 @@ Size2i Window::get_real_size() const {
void Window::set_max_size(const Size2i &p_max_size) {
max_size = p_max_size;
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
- }
_update_window_size();
}
Size2i Window::get_max_size() const {
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- max_size = DisplayServer::get_singleton()->window_get_max_size(window_id);
- }
return max_size;
}
void Window::set_min_size(const Size2i &p_min_size) {
min_size = p_min_size;
- if (!wrap_controls && window_id != DisplayServer::INVALID_WINDOW_ID) {
- DisplayServer::get_singleton()->window_set_min_size(min_size, window_id);
- }
_update_window_size();
}
Size2i Window::get_min_size() const {
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- min_size = DisplayServer::get_singleton()->window_get_min_size(window_id);
- }
return min_size;
}
@@ -621,6 +609,7 @@ void Window::_update_window_size() {
} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
DisplayServer::get_singleton()->window_set_size(size, window_id);
DisplayServer::get_singleton()->window_set_min_size(size_limit, window_id);
+ DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
}
//update the viewport
diff --git a/scene/resources/scene_replication_config.cpp b/scene/resources/scene_replication_config.cpp
index 4aea04bf87..6789f9f7d5 100644
--- a/scene/resources/scene_replication_config.cpp
+++ b/scene/resources/scene_replication_config.cpp
@@ -52,11 +52,19 @@ bool SceneReplicationConfig::_set(const StringName &p_name, const Variant &p_val
ReplicationProperty &prop = properties[idx];
if (what == "sync") {
prop.sync = p_value;
- sync_props.push_back(prop.name);
+ if (prop.sync) {
+ sync_props.push_back(prop.name);
+ } else {
+ sync_props.erase(prop.name);
+ }
return true;
} else if (what == "spawn") {
prop.spawn = p_value;
- spawn_props.push_back(prop.name);
+ if (prop.spawn) {
+ spawn_props.push_back(prop.name);
+ } else {
+ spawn_props.erase(prop.name);
+ }
return true;
}
}
diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp
index d68522e5b9..a6553e1431 100644
--- a/servers/audio/effects/audio_effect_record.cpp
+++ b/servers/audio/effects/audio_effect_record.cpp
@@ -71,8 +71,6 @@ bool AudioEffectRecordInstance::process_silence() const {
}
void AudioEffectRecordInstance::_io_thread_process() {
- thread_active = true;
-
while (is_recording) {
//Check: The current recording has been requested to stop
if (!base->recording_active) {
@@ -86,8 +84,6 @@ void AudioEffectRecordInstance::_io_thread_process() {
OS::get_singleton()->delay_usec(500);
}
}
-
- thread_active = false;
}
void AudioEffectRecordInstance::_io_store_buffer() {
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 305484d1cb..8a6247e27a 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -48,7 +48,6 @@ class AudioEffectRecordInstance : public AudioEffectInstance {
bool is_recording;
Thread io_thread;
- bool thread_active = false;
Vector<AudioFrame> ring_buffer;
Vector<float> recording_data;
diff --git a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
index 2d3998bd90..d390614e53 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
@@ -692,6 +692,11 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
projection = correction * p_render_data->view_projection[v];
RendererStorageRD::store_camera(projection, scene_state.ubo.projection_matrix_view[v]);
RendererStorageRD::store_camera(projection.inverse(), scene_state.ubo.inv_projection_matrix_view[v]);
+
+ scene_state.ubo.eye_offset[v][0] = p_render_data->view_eye_offset[v].x;
+ scene_state.ubo.eye_offset[v][1] = p_render_data->view_eye_offset[v].y;
+ scene_state.ubo.eye_offset[v][2] = p_render_data->view_eye_offset[v].z;
+ scene_state.ubo.eye_offset[v][3] = 0.0;
}
scene_state.ubo.taa_jitter[0] = p_render_data->taa_jitter.x;
diff --git a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
index 6ad42bf0ec..97f39164a4 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
@@ -237,6 +237,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
float projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
float inv_projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
+ float eye_offset[RendererSceneRender::MAX_RENDER_VIEWS][4];
float viewport_size[2];
float screen_pixel_size[2];
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
index b2e0af06cd..eae5685dd1 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -1542,6 +1542,11 @@ void RenderForwardMobile::_setup_environment(const RenderDataRD *p_render_data,
projection = correction * p_render_data->view_projection[v];
RendererStorageRD::store_camera(projection, scene_state.ubo.projection_matrix_view[v]);
RendererStorageRD::store_camera(projection.inverse(), scene_state.ubo.inv_projection_matrix_view[v]);
+
+ scene_state.ubo.eye_offset[v][0] = p_render_data->view_eye_offset[v].x;
+ scene_state.ubo.eye_offset[v][1] = p_render_data->view_eye_offset[v].y;
+ scene_state.ubo.eye_offset[v][2] = p_render_data->view_eye_offset[v].z;
+ scene_state.ubo.eye_offset[v][3] = 0.0;
}
scene_state.ubo.z_far = p_render_data->z_far;
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
index fc6f32ecb0..1b2df0ab9f 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
@@ -260,6 +260,7 @@ protected:
float projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
float inv_projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
+ float eye_offset[RendererSceneRender::MAX_RENDER_VIEWS][4];
float viewport_size[2];
float screen_pixel_size[2];
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index ef959bc3c6..a50a05d905 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -5115,12 +5115,12 @@ void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData
// Our first camera is used by default
render_data.cam_transform = p_camera_data->main_transform;
render_data.cam_projection = p_camera_data->main_projection;
- render_data.view_projection[0] = p_camera_data->main_projection;
render_data.cam_orthogonal = p_camera_data->is_orthogonal;
render_data.taa_jitter = p_camera_data->taa_jitter;
render_data.view_count = p_camera_data->view_count;
for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
+ render_data.view_eye_offset[v] = p_camera_data->view_offset[v].origin;
render_data.view_projection[v] = p_camera_data->view_projection[v];
}
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.h b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
index 1b1df6469e..a90c165d83 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
@@ -58,6 +58,7 @@ struct RenderDataRD {
// For stereo rendering
uint32_t view_count = 1;
+ Vector3 view_eye_offset[RendererSceneRender::MAX_RENDER_VIEWS];
CameraMatrix view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
Transform3D prev_cam_transform;
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
index 92c4fc3d67..b992e948c3 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
@@ -634,7 +634,11 @@ void fragment_shader(in SceneData scene_data) {
//lay out everything, whatever is unused is optimized away anyway
vec3 vertex = vertex_interp;
+#ifdef USE_MULTIVIEW
+ vec3 view = -normalize(vertex_interp - scene_data.eye_offset[ViewIndex].xyz);
+#else
vec3 view = -normalize(vertex_interp);
+#endif
vec3 albedo = vec3(1.0);
vec3 backlight = vec3(0.0);
vec4 transmittance_color = vec4(0.0, 0.0, 0.0, 1.0);
@@ -1191,7 +1195,7 @@ void fragment_shader(in SceneData scene_data) {
if (sc_use_forward_gi && bool(instances.data[instance_index].flags & INSTANCE_FLAGS_USE_VOXEL_GI)) { // process voxel_gi_instances
uint index1 = instances.data[instance_index].gi_offset & 0xFFFF;
- vec3 ref_vec = normalize(reflect(normalize(vertex), normal));
+ vec3 ref_vec = normalize(reflect(-view, normal));
//find arbitrary tangent and bitangent, then build a matrix
vec3 v0 = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
vec3 tangent = normalize(cross(v0, normal));
@@ -1309,7 +1313,7 @@ void fragment_shader(in SceneData scene_data) {
#else
vec3 bent_normal = normal;
#endif
- reflection_process(reflection_index, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
+ reflection_process(reflection_index, view, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
}
}
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
index b700e21543..32ea83397a 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
@@ -180,6 +180,7 @@ struct SceneData {
// only used for multiview
mat4 projection_matrix_view[MAX_VIEWS];
mat4 inv_projection_matrix_view[MAX_VIEWS];
+ vec4 eye_offset[MAX_VIEWS];
vec2 viewport_size;
vec2 screen_pixel_size;
@@ -250,7 +251,7 @@ struct SceneData {
bool pancake_shadows;
vec2 taa_jitter;
- uvec2 pad;
+ uvec2 pad2;
};
layout(set = 1, binding = 0, std140) uniform SceneDataBlock {
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
index 5a308bbd02..c92b29b14a 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
@@ -869,7 +869,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v
diffuse_light, specular_light);
}
-void reflection_process(uint ref_index, vec3 vertex, vec3 normal, float roughness, vec3 ambient_light, vec3 specular_light, inout vec4 ambient_accum, inout vec4 reflection_accum) {
+void reflection_process(uint ref_index, vec3 view, vec3 vertex, vec3 normal, float roughness, vec3 ambient_light, vec3 specular_light, inout vec4 ambient_accum, inout vec4 reflection_accum) {
vec3 box_extents = reflections.data[ref_index].box_extents;
vec3 local_pos = (reflections.data[ref_index].local_matrix * vec4(vertex, 1.0)).xyz;
@@ -877,7 +877,7 @@ void reflection_process(uint ref_index, vec3 vertex, vec3 normal, float roughnes
return;
}
- vec3 ref_vec = normalize(reflect(vertex, normal));
+ vec3 ref_vec = normalize(reflect(-view, normal));
vec3 inner_pos = abs(local_pos / box_extents);
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
index e15ebbfc91..cd94908c31 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
@@ -586,7 +586,11 @@ void main() {
//lay out everything, whatever is unused is optimized away anyway
vec3 vertex = vertex_interp;
+#ifdef USE_MULTIVIEW
+ vec3 view = -normalize(vertex_interp - scene_data.eye_offset[ViewIndex].xyz);
+#else
vec3 view = -normalize(vertex_interp);
+#endif
vec3 albedo = vec3(1.0);
vec3 backlight = vec3(0.0);
vec4 transmittance_color = vec4(0.0);
@@ -1051,7 +1055,7 @@ void main() {
#else
vec3 bent_normal = normal;
#endif
- reflection_process(reflection_index, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
+ reflection_process(reflection_index, view, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
}
if (reflection_accum.a > 0.0) {
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
index dd14a15837..7413d8730a 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
@@ -134,6 +134,7 @@ struct SceneData {
// only used for multiview
highp mat4 projection_matrix_view[MAX_VIEWS];
highp mat4 inv_projection_matrix_view[MAX_VIEWS];
+ highp vec4 eye_offset[MAX_VIEWS];
highp vec2 viewport_size;
highp vec2 screen_pixel_size;
diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp
index 26ab8b659e..9b407043fc 100644
--- a/servers/rendering_server.cpp
+++ b/servers/rendering_server.cpp
@@ -2934,10 +2934,10 @@ void RenderingServer::init() {
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/screen_space_roughness_limiter/amount", PropertyInfo(Variant::FLOAT, "rendering/anti_aliasing/screen_space_roughness_limiter/amount", PROPERTY_HINT_RANGE, "0.01,4.0,0.01"));
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/screen_space_roughness_limiter/limit", PropertyInfo(Variant::FLOAT, "rendering/anti_aliasing/screen_space_roughness_limiter/limit", PROPERTY_HINT_RANGE, "0.01,1.0,0.01"));
- GLOBAL_DEF_RST("rendering/scaling_3d/mode", 0);
- GLOBAL_DEF_RST("rendering/scaling_3d/scale", 1.0);
- GLOBAL_DEF_RST("rendering/scaling_3d/fsr_sharpness", 0.2f);
- GLOBAL_DEF_RST("rendering/scaling_3d/fsr_mipmap_bias", 0.0f);
+ GLOBAL_DEF("rendering/scaling_3d/mode", 0);
+ GLOBAL_DEF("rendering/scaling_3d/scale", 1.0);
+ GLOBAL_DEF("rendering/scaling_3d/fsr_sharpness", 0.2f);
+ GLOBAL_DEF("rendering/scaling_3d/fsr_mipmap_bias", 0.0f);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/scaling_3d/mode",
PropertyInfo(Variant::INT,
"rendering/scaling_3d/mode",
diff --git a/tests/core/object/test_class_db.h b/tests/core/object/test_class_db.h
index 8aaca69d13..7ea9e16ff1 100644
--- a/tests/core/object/test_class_db.h
+++ b/tests/core/object/test_class_db.h
@@ -46,7 +46,7 @@ struct TypeReference {
struct ConstantData {
String name;
- int value = 0;
+ int64_t value = 0;
};
struct EnumData {
@@ -743,7 +743,7 @@ void add_exposed_classes(Context &r_context) {
TEST_FAIL_COND(String(constant_name).find("::") != -1,
"Enum constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", String(enum_.name), ".", String(constant_name), "'.");
- int *value = class_info->constant_map.getptr(constant_name);
+ int64_t *value = class_info->constant_map.getptr(constant_name);
TEST_FAIL_COND(!value, "Missing enum constant value: '",
String(class_name), ".", String(enum_.name), ".", String(constant_name), "'.");
constants.erase(constant_name);
@@ -765,7 +765,7 @@ void add_exposed_classes(Context &r_context) {
TEST_FAIL_COND(constant_name.find("::") != -1,
"Constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", constant_name, "'.");
- int *value = class_info->constant_map.getptr(StringName(E));
+ int64_t *value = class_info->constant_map.getptr(StringName(E));
TEST_FAIL_COND(!value, "Missing constant value: '", String(class_name), ".", String(constant_name), "'.");
ConstantData constant;
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 3b6932b3e1..7d5c80f61f 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -62,7 +62,7 @@ Files extracted from upstream source:
## doctest
- Upstream: https://github.com/onqtam/doctest
-- Version: 2.4.8 (7b9885133108ae301ddd16e2651320f54cafeba7, 2022)
+- Version: 2.4.9 (b7c21ec5ceeadb4951b00396fc1e4642dd347e5f, 2022)
- License: MIT
Files extracted from upstream source:
diff --git a/thirdparty/doctest/doctest.h b/thirdparty/doctest/doctest.h
index d25f526827..aa2724c738 100644
--- a/thirdparty/doctest/doctest.h
+++ b/thirdparty/doctest/doctest.h
@@ -48,7 +48,7 @@
#define DOCTEST_VERSION_MAJOR 2
#define DOCTEST_VERSION_MINOR 4
-#define DOCTEST_VERSION_PATCH 8
+#define DOCTEST_VERSION_PATCH 9
// util we need here
#define DOCTEST_TOSTR_IMPL(x) #x
@@ -68,6 +68,12 @@
// ideas for the version stuff are taken from here: https://github.com/cxxstuff/cxx_detect
+#ifdef _MSC_VER
+#define DOCTEST_CPLUSPLUS _MSVC_LANG
+#else
+#define DOCTEST_CPLUSPLUS __cplusplus
+#endif
+
#define DOCTEST_COMPILER(MAJOR, MINOR, PATCH) ((MAJOR)*10000000 + (MINOR)*100000 + (PATCH))
// GCC/Clang and GCC/MSVC are mutually exclusive, but Clang/MSVC are not because of clang-cl...
@@ -153,7 +159,6 @@
DOCTEST_CLANG_SUPPRESS_WARNING("-Wweak-vtables") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wpadded") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wmissing-prototypes") \
- DOCTEST_CLANG_SUPPRESS_WARNING("-Wunused-local-typedef") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wc++98-compat") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic") \
\
@@ -164,7 +169,6 @@
DOCTEST_GCC_SUPPRESS_WARNING("-Wstrict-overflow") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wstrict-aliasing") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wmissing-declarations") \
- DOCTEST_GCC_SUPPRESS_WARNING("-Wunused-local-typedefs") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wuseless-cast") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wnoexcept") \
\
@@ -231,7 +235,8 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
DOCTEST_MSVC_SUPPRESS_WARNING(4623) /* default constructor was implicitly deleted */ \
DOCTEST_MSVC_SUPPRESS_WARNING(5039) /* pointer to pot. throwing function passed to extern C */ \
DOCTEST_MSVC_SUPPRESS_WARNING(5045) /* Spectre mitigation for memory load */ \
- DOCTEST_MSVC_SUPPRESS_WARNING(5105) /* macro producing 'defined' has undefined behavior */
+ DOCTEST_MSVC_SUPPRESS_WARNING(5105) /* macro producing 'defined' has undefined behavior */ \
+ DOCTEST_MSVC_SUPPRESS_WARNING(4738) /* storing float result in memory, loss of performance */
#define DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END DOCTEST_MSVC_SUPPRESS_WARNING_POP
@@ -266,7 +271,7 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#endif // DOCTEST_CONFIG_NO_WINDOWS_SEH
#if !defined(_WIN32) && !defined(__QNX__) && !defined(DOCTEST_CONFIG_POSIX_SIGNALS) && \
- !defined(__EMSCRIPTEN__)
+ !defined(__EMSCRIPTEN__) && !defined(__wasi__)
#define DOCTEST_CONFIG_POSIX_SIGNALS
#endif // _WIN32
#if defined(DOCTEST_CONFIG_NO_POSIX_SIGNALS) && defined(DOCTEST_CONFIG_POSIX_SIGNALS)
@@ -274,7 +279,8 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#endif // DOCTEST_CONFIG_NO_POSIX_SIGNALS
#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
-#if !defined(__cpp_exceptions) && !defined(__EXCEPTIONS) && !defined(_CPPUNWIND)
+#if !defined(__cpp_exceptions) && !defined(__EXCEPTIONS) && !defined(_CPPUNWIND) \
+ || defined(__wasi__)
#define DOCTEST_CONFIG_NO_EXCEPTIONS
#endif // no exceptions
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
@@ -289,6 +295,10 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS && !DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
+#ifdef __wasi__
+#define DOCTEST_CONFIG_NO_MULTITHREADING
+#endif
+
#if defined(DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN) && !defined(DOCTEST_CONFIG_IMPLEMENT)
#define DOCTEST_CONFIG_IMPLEMENT
#endif // DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
@@ -316,6 +326,16 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_INTERFACE
#endif // DOCTEST_CONFIG_IMPLEMENTATION_IN_DLL
+// needed for extern template instantiations
+// see https://github.com/fmtlib/fmt/issues/2228
+#if DOCTEST_MSVC
+#define DOCTEST_INTERFACE_DECL
+#define DOCTEST_INTERFACE_DEF DOCTEST_INTERFACE
+#else // DOCTEST_MSVC
+#define DOCTEST_INTERFACE_DECL DOCTEST_INTERFACE
+#define DOCTEST_INTERFACE_DEF
+#endif // DOCTEST_MSVC
+
#define DOCTEST_EMPTY
#if DOCTEST_MSVC
@@ -351,8 +371,10 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#ifndef DOCTEST_CONSTEXPR
#if DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
#define DOCTEST_CONSTEXPR const
+#define DOCTEST_CONSTEXPR_FUNC inline
#else // DOCTEST_MSVC
#define DOCTEST_CONSTEXPR constexpr
+#define DOCTEST_CONSTEXPR_FUNC constexpr
#endif // DOCTEST_MSVC
#endif // DOCTEST_CONSTEXPR
@@ -360,6 +382,17 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
// == FEATURE DETECTION END ========================================================================
// =================================================================================================
+#define DOCTEST_DECLARE_INTERFACE(name) \
+ virtual ~name(); \
+ name() = default; \
+ name(const name&) = delete; \
+ name(name&&) = delete; \
+ name& operator=(const name&) = delete; \
+ name& operator=(name&&) = delete;
+
+#define DOCTEST_DEFINE_INTERFACE(name) \
+ name::~name() = default;
+
// internal macros for string concatenation and anonymous variable name generation
#define DOCTEST_CAT_IMPL(s1, s2) s1##s2
#define DOCTEST_CAT(s1, s2) DOCTEST_CAT_IMPL(s1, s2)
@@ -382,17 +415,19 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_PLATFORM_IPHONE
#elif defined(_WIN32)
#define DOCTEST_PLATFORM_WINDOWS
+#elif defined(__wasi__)
+#define DOCTEST_PLATFORM_WASI
#else // DOCTEST_PLATFORM
#define DOCTEST_PLATFORM_LINUX
#endif // DOCTEST_PLATFORM
namespace doctest { namespace detail {
- static DOCTEST_CONSTEXPR int consume(const int*, int) { return 0; }
+ static DOCTEST_CONSTEXPR int consume(const int*, int) noexcept { return 0; }
}}
-#define DOCTEST_GLOBAL_NO_WARNINGS(var, ...) \
- DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wglobal-constructors") \
- static const int var = doctest::detail::consume(&var, __VA_ARGS__); \
+#define DOCTEST_GLOBAL_NO_WARNINGS(var, ...) \
+ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wglobal-constructors") \
+ static const int var = doctest::detail::consume(&var, __VA_ARGS__); \
DOCTEST_CLANG_SUPPRESS_WARNING_POP
#ifndef DOCTEST_BREAK_INTO_DEBUGGER
@@ -400,16 +435,19 @@ namespace doctest { namespace detail {
#ifdef DOCTEST_PLATFORM_LINUX
#if defined(__GNUC__) && (defined(__i386) || defined(__x86_64))
// Break at the location of the failing check if possible
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT(hicpp-no-assembler)
#else
#include <signal.h>
#define DOCTEST_BREAK_INTO_DEBUGGER() raise(SIGTRAP)
#endif
#elif defined(DOCTEST_PLATFORM_MAC)
#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) || defined(__i386)
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT(hicpp-no-assembler)
+#elif defined(__ppc__) || defined(__ppc64__)
+// https://www.cocoawithlove.com/2008/03/break-into-debugger.html
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n": : : "memory","r0","r3","r4") // NOLINT(hicpp-no-assembler)
#else
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); // NOLINT(hicpp-no-assembler)
#endif
#elif DOCTEST_MSVC
#define DOCTEST_BREAK_INTO_DEBUGGER() __debugbreak()
@@ -425,7 +463,9 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
// this is kept here for backwards compatibility since the config option was changed
#ifdef DOCTEST_CONFIG_USE_IOSFWD
+#ifndef DOCTEST_CONFIG_USE_STD_HEADERS
#define DOCTEST_CONFIG_USE_STD_HEADERS
+#endif
#endif // DOCTEST_CONFIG_USE_IOSFWD
// for clang - always include ciso646 (which drags some std stuff) because
@@ -436,7 +476,9 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
#if DOCTEST_CLANG
#include <ciso646>
#ifdef _LIBCPP_VERSION
+#ifndef DOCTEST_CONFIG_USE_STD_HEADERS
#define DOCTEST_CONFIG_USE_STD_HEADERS
+#endif
#endif // _LIBCPP_VERSION
#endif // clang
@@ -444,26 +486,32 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
#ifndef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#define DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
#include <cstddef>
#include <ostream>
#include <istream>
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END
#else // DOCTEST_CONFIG_USE_STD_HEADERS
// Forward declaring 'X' in namespace std is not permitted by the C++ Standard.
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4643)
-namespace std { // NOLINT (cert-dcl58-cpp)
-typedef decltype(nullptr) nullptr_t;
+namespace std { // NOLINT(cert-dcl58-cpp)
+typedef decltype(nullptr) nullptr_t; // NOLINT(modernize-use-using)
+typedef decltype(sizeof(void*)) size_t; // NOLINT(modernize-use-using)
template <class charT>
struct char_traits;
template <>
struct char_traits<char>;
template <class charT, class traits>
-class basic_ostream;
-typedef basic_ostream<char, char_traits<char>> ostream;
+class basic_ostream; // NOLINT(fuchsia-virtual-inheritance)
+typedef basic_ostream<char, char_traits<char>> ostream; // NOLINT(modernize-use-using)
+template<class traits>
+// NOLINTNEXTLINE
+basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char*);
template <class charT, class traits>
class basic_istream;
-typedef basic_istream<char, char_traits<char>> istream;
+typedef basic_istream<char, char_traits<char>> istream; // NOLINT(modernize-use-using)
template <class... Types>
class tuple;
#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
@@ -486,8 +534,14 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
namespace doctest {
+using std::size_t;
+
DOCTEST_INTERFACE extern bool is_running_in_test;
+#ifndef DOCTEST_CONFIG_STRING_SIZE_TYPE
+#define DOCTEST_CONFIG_STRING_SIZE_TYPE unsigned
+#endif
+
// A 24 byte string class (can be as small as 17 for x64 and 13 for x86) that can hold strings with length
// of up to 23 chars on the stack before going on the heap - the last byte of the buffer is used for:
// - "is small" bit - the highest bit - if "0" then it is small - otherwise its "1" (128)
@@ -500,7 +554,6 @@ DOCTEST_INTERFACE extern bool is_running_in_test;
// TODO:
// - optimizations - like not deleting memory unnecessarily in operator= and etc.
// - resize/reserve/clear
-// - substr
// - replace
// - back/front
// - iterator stuff
@@ -510,64 +563,80 @@ DOCTEST_INTERFACE extern bool is_running_in_test;
// - relational operators as free functions - taking const char* as one of the params
class DOCTEST_INTERFACE String
{
- static const unsigned len = 24; //!OCLINT avoid private static members
- static const unsigned last = len - 1; //!OCLINT avoid private static members
+public:
+ using size_type = DOCTEST_CONFIG_STRING_SIZE_TYPE;
+
+private:
+ static DOCTEST_CONSTEXPR size_type len = 24; //!OCLINT avoid private static members
+ static DOCTEST_CONSTEXPR size_type last = len - 1; //!OCLINT avoid private static members
struct view // len should be more than sizeof(view) - because of the final byte for flags
{
char* ptr;
- unsigned size;
- unsigned capacity;
+ size_type size;
+ size_type capacity;
};
union
{
- char buf[len];
+ char buf[len]; // NOLINT(*-avoid-c-arrays)
view data;
};
- char* allocate(unsigned sz);
+ char* allocate(size_type sz);
- bool isOnStack() const { return (buf[last] & 128) == 0; }
- void setOnHeap();
- void setLast(unsigned in = last);
+ bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
+ void setOnHeap() noexcept;
+ void setLast(size_type in = last) noexcept;
+ void setSize(size_type sz) noexcept;
void copy(const String& other);
public:
- String();
+ static DOCTEST_CONSTEXPR size_type npos = static_cast<size_type>(-1);
+
+ String() noexcept;
~String();
// cppcheck-suppress noExplicitConstructor
String(const char* in);
- String(const char* in, unsigned in_size);
+ String(const char* in, size_type in_size);
- String(std::istream& in, unsigned in_size);
+ String(std::istream& in, size_type in_size);
String(const String& other);
String& operator=(const String& other);
String& operator+=(const String& other);
- String(String&& other);
- String& operator=(String&& other);
+ String(String&& other) noexcept;
+ String& operator=(String&& other) noexcept;
- char operator[](unsigned i) const;
- char& operator[](unsigned i);
+ char operator[](size_type i) const;
+ char& operator[](size_type i);
// the only functions I'm willing to leave in the interface - available for inlining
const char* c_str() const { return const_cast<String*>(this)->c_str(); } // NOLINT
char* c_str() {
- if(isOnStack())
+ if (isOnStack()) {
return reinterpret_cast<char*>(buf);
+ }
return data.ptr;
}
- unsigned size() const;
- unsigned capacity() const;
+ size_type size() const;
+ size_type capacity() const;
+
+ String substr(size_type pos, size_type cnt = npos) &&;
+ String substr(size_type pos, size_type cnt = npos) const &;
+
+ size_type find(char ch, size_type pos = 0) const;
+ size_type rfind(char ch, size_type pos = npos) const;
int compare(const char* other, bool no_case = false) const;
int compare(const String& other, bool no_case = false) const;
+
+friend DOCTEST_INTERFACE std::ostream& operator<<(std::ostream& s, const String& in);
};
DOCTEST_INTERFACE String operator+(const String& lhs, const String& rhs);
@@ -579,7 +648,21 @@ DOCTEST_INTERFACE bool operator>(const String& lhs, const String& rhs);
DOCTEST_INTERFACE bool operator<=(const String& lhs, const String& rhs);
DOCTEST_INTERFACE bool operator>=(const String& lhs, const String& rhs);
-DOCTEST_INTERFACE std::ostream& operator<<(std::ostream& s, const String& in);
+class DOCTEST_INTERFACE Contains {
+public:
+ explicit Contains(const String& string);
+
+ bool checkWith(const String& other) const;
+
+ String string;
+};
+
+DOCTEST_INTERFACE String toString(const Contains& in);
+
+DOCTEST_INTERFACE bool operator==(const String& lhs, const Contains& rhs);
+DOCTEST_INTERFACE bool operator==(const Contains& lhs, const String& rhs);
+DOCTEST_INTERFACE bool operator!=(const String& lhs, const Contains& rhs);
+DOCTEST_INTERFACE bool operator!=(const Contains& lhs, const String& rhs);
namespace Color {
enum Enum
@@ -652,7 +735,7 @@ namespace assertType {
DT_WARN_THROWS_WITH = is_throws_with | is_warn,
DT_CHECK_THROWS_WITH = is_throws_with | is_check,
DT_REQUIRE_THROWS_WITH = is_throws_with | is_require,
-
+
DT_WARN_THROWS_WITH_AS = is_throws_with | is_throws_as | is_warn,
DT_CHECK_THROWS_WITH_AS = is_throws_with | is_throws_as | is_check,
DT_REQUIRE_THROWS_WITH_AS = is_throws_with | is_throws_as | is_require,
@@ -733,9 +816,27 @@ struct DOCTEST_INTERFACE AssertData
String m_decomp;
// for specific exception-related asserts
- bool m_threw_as;
- const char* m_exception_type;
- const char* m_exception_string;
+ bool m_threw_as;
+ const char* m_exception_type;
+
+ class DOCTEST_INTERFACE StringContains {
+ private:
+ Contains content;
+ bool isContains;
+
+ public:
+ StringContains(const String& str) : content(str), isContains(false) { }
+ StringContains(Contains cntn) : content(static_cast<Contains&&>(cntn)), isContains(true) { }
+
+ bool check(const String& str) { return isContains ? (content == str) : (content.string == str); }
+
+ operator const String&() const { return content.string; }
+
+ const char* c_str() const { return content.string.c_str(); }
+ } m_exception_string;
+
+ AssertData(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const StringContains& exception_string);
};
struct DOCTEST_INTERFACE MessageData
@@ -752,13 +853,13 @@ struct DOCTEST_INTERFACE SubcaseSignature
const char* m_file;
int m_line;
+ bool operator==(const SubcaseSignature& other) const;
bool operator<(const SubcaseSignature& other) const;
};
struct DOCTEST_INTERFACE IContextScope
{
- IContextScope();
- virtual ~IContextScope();
+ DOCTEST_DECLARE_INTERFACE(IContextScope)
virtual void stringify(std::ostream*) const = 0;
};
@@ -815,200 +916,184 @@ struct ContextOptions //!OCLINT too many fields
};
namespace detail {
- template <bool CONDITION, typename TYPE = void>
- struct enable_if
- {};
+ namespace types {
+#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
+ using namespace std;
+#else
+ template <bool COND, typename T = void>
+ struct enable_if { };
+
+ template <typename T>
+ struct enable_if<true, T> { using type = T; };
- template <typename TYPE>
- struct enable_if<true, TYPE>
- { typedef TYPE type; };
+ struct true_type { static DOCTEST_CONSTEXPR bool value = true; };
+ struct false_type { static DOCTEST_CONSTEXPR bool value = false; };
- // clang-format off
- template<class T> struct remove_reference { typedef T type; };
- template<class T> struct remove_reference<T&> { typedef T type; };
- template<class T> struct remove_reference<T&&> { typedef T type; };
+ template <typename T> struct remove_reference { using type = T; };
+ template <typename T> struct remove_reference<T&> { using type = T; };
+ template <typename T> struct remove_reference<T&&> { using type = T; };
- template<typename T, typename U = T&&> U declval(int);
+ template <typename T> struct is_rvalue_reference : false_type { };
+ template <typename T> struct is_rvalue_reference<T&&> : true_type { };
- template<typename T> T declval(long);
+ template<typename T> struct remove_const { using type = T; };
+ template <typename T> struct remove_const<const T> { using type = T; };
- template<typename T> auto declval() DOCTEST_NOEXCEPT -> decltype(declval<T>(0)) ;
+ // Compiler intrinsics
+ template <typename T> struct is_enum { static DOCTEST_CONSTEXPR bool value = __is_enum(T); };
+ template <typename T> struct underlying_type { using type = __underlying_type(T); };
- template<class T> struct is_lvalue_reference { const static bool value=false; };
- template<class T> struct is_lvalue_reference<T&> { const static bool value=true; };
+ template <typename T> struct is_pointer : false_type { };
+ template <typename T> struct is_pointer<T*> : true_type { };
+
+ template <typename T> struct is_array : false_type { };
+ // NOLINTNEXTLINE(*-avoid-c-arrays)
+ template <typename T, size_t SIZE> struct is_array<T[SIZE]> : true_type { };
+#endif
+ }
- template<class T> struct is_rvalue_reference { const static bool value=false; };
- template<class T> struct is_rvalue_reference<T&&> { const static bool value=true; };
+ // <utility>
+ template <typename T>
+ T&& declval();
template <class T>
- inline T&& forward(typename remove_reference<T>::type& t) DOCTEST_NOEXCEPT
- {
+ DOCTEST_CONSTEXPR_FUNC T&& forward(typename types::remove_reference<T>::type& t) DOCTEST_NOEXCEPT {
return static_cast<T&&>(t);
}
template <class T>
- inline T&& forward(typename remove_reference<T>::type&& t) DOCTEST_NOEXCEPT
- {
- static_assert(!is_lvalue_reference<T>::value,
- "Can not forward an rvalue as an lvalue.");
+ DOCTEST_CONSTEXPR_FUNC T&& forward(typename types::remove_reference<T>::type&& t) DOCTEST_NOEXCEPT {
return static_cast<T&&>(t);
}
- template<class T> struct remove_const { typedef T type; };
- template<class T> struct remove_const<const T> { typedef T type; };
-#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
- template<class T> struct is_enum : public std::is_enum<T> {};
- template<class T> struct underlying_type : public std::underlying_type<T> {};
-#else
- // Use compiler intrinsics
- template<class T> struct is_enum { DOCTEST_CONSTEXPR static bool value = __is_enum(T); };
- template<class T> struct underlying_type { typedef __underlying_type(T) type; };
-#endif
- // clang-format on
+ template <typename T>
+ struct deferred_false : types::false_type { };
+
+// MSVS 2015 :(
+#if defined(_MSC_VER) && _MSC_VER <= 1900
+ template <typename T, typename = void>
+ struct has_global_insertion_operator : types::false_type { };
template <typename T>
- struct deferred_false
- // cppcheck-suppress unusedStructMember
- { static const bool value = false; };
-
- namespace has_insertion_operator_impl {
- std::ostream &os();
- template<class T>
- DOCTEST_REF_WRAP(T) val();
-
- template<class, class = void>
- struct check {
- static DOCTEST_CONSTEXPR bool value = false;
- };
+ struct has_global_insertion_operator<T, decltype(::operator<<(declval<std::ostream&>(), declval<const T&>()), void())> : types::true_type { };
- template<class T>
- struct check<T, decltype(os() << val<T>(), void())> {
- static DOCTEST_CONSTEXPR bool value = true;
- };
- } // namespace has_insertion_operator_impl
+ template <typename T, typename = void>
+ struct has_insertion_operator { static DOCTEST_CONSTEXPR bool value = has_global_insertion_operator<T>::value; };
+
+ template <typename T, bool global>
+ struct insert_hack;
+
+ template <typename T>
+ struct insert_hack<T, true> {
+ static void insert(std::ostream& os, const T& t) { ::operator<<(os, t); }
+ };
- template<class T>
- using has_insertion_operator = has_insertion_operator_impl::check<const T>;
+ template <typename T>
+ struct insert_hack<T, false> {
+ static void insert(std::ostream& os, const T& t) { operator<<(os, t); }
+ };
+
+ template <typename T>
+ using insert_hack_t = insert_hack<T, has_global_insertion_operator<T>::value>;
+#else
+ template <typename T, typename = void>
+ struct has_insertion_operator : types::false_type { };
+#endif
+
+template <typename T>
+struct has_insertion_operator<T, decltype(operator<<(declval<std::ostream&>(), declval<const T&>()), void())> : types::true_type { };
DOCTEST_INTERFACE std::ostream* tlssPush();
DOCTEST_INTERFACE String tlssPop();
-
template <bool C>
- struct StringMakerBase
- {
+ struct StringMakerBase {
template <typename T>
static String convert(const DOCTEST_REF_WRAP(T)) {
+#ifdef DOCTEST_CONFIG_REQUIRE_STRINGIFICATION_FOR_ALL_USED_TYPES
+ static_assert(deferred_false<T>::value, "No stringification detected for type T. See string conversion manual");
+#endif
return "{?}";
}
};
- // Vector<int> and various type other than pointer or array.
- template<typename T>
- struct filldata
- {
- static void fill(std::ostream* stream, const T &in) {
- *stream << in;
- }
- };
-
- template<typename T,unsigned long N>
- struct filldata<T[N]>
- {
- static void fill(std::ostream* stream, const T (&in)[N]) {
- for (unsigned long i = 0; i < N; i++) {
- *stream << in[i];
- }
- }
- };
-
- // Specialized since we don't want the terminating null byte!
- template<unsigned long N>
- struct filldata<const char[N]>
- {
- static void fill(std::ostream* stream, const char(&in)[N]) {
- *stream << in;
- }
- };
+ template <typename T>
+ struct filldata;
- template<typename T>
+ template <typename T>
void filloss(std::ostream* stream, const T& in) {
filldata<T>::fill(stream, in);
}
- template<typename T,unsigned long N>
- void filloss(std::ostream* stream, const T (&in)[N]) {
+ template <typename T, size_t N>
+ void filloss(std::ostream* stream, const T (&in)[N]) { // NOLINT(*-avoid-c-arrays)
// T[N], T(&)[N], T(&&)[N] have same behaviour.
// Hence remove reference.
- filldata<typename remove_reference<decltype(in)>::type>::fill(stream, in);
+ filloss<typename types::remove_reference<decltype(in)>::type>(stream, in);
+ }
+
+ template <typename T>
+ String toStream(const T& in) {
+ std::ostream* stream = tlssPush();
+ filloss(stream, in);
+ return tlssPop();
}
template <>
- struct StringMakerBase<true>
- {
+ struct StringMakerBase<true> {
template <typename T>
static String convert(const DOCTEST_REF_WRAP(T) in) {
- /* When parameter "in" is a null terminated const char* it works.
- * When parameter "in" is a T arr[N] without '\0' we can fill the
- * stringstream with N objects (T=char).If in is char pointer *
- * without '\0' , it would cause segfault
- * stepping over unaccessible memory.
- */
-
- std::ostream* stream = tlssPush();
- filloss(stream, in);
- return tlssPop();
+ return toStream(in);
}
};
-
- DOCTEST_INTERFACE String rawMemoryToString(const void* object, unsigned size);
-
- template <typename T>
- String rawMemoryToString(const DOCTEST_REF_WRAP(T) object) {
- return rawMemoryToString(&object, sizeof(object));
- }
-
- template <typename T>
- const char* type_to_string() {
- return "<>";
- }
} // namespace detail
template <typename T>
-struct StringMaker : public detail::StringMakerBase<detail::has_insertion_operator<T>::value>
+struct StringMaker : public detail::StringMakerBase<
+ detail::has_insertion_operator<T>::value || detail::types::is_pointer<T>::value || detail::types::is_array<T>::value>
{};
-template <typename T>
-struct StringMaker<T*>
-{
- template <typename U>
- static String convert(U* p) {
- if(p)
- return detail::rawMemoryToString(p);
- return "NULL";
- }
-};
+#ifndef DOCTEST_STRINGIFY
+#ifdef DOCTEST_CONFIG_DOUBLE_STRINGIFY
+#define DOCTEST_STRINGIFY(...) toString(toString(__VA_ARGS__))
+#else
+#define DOCTEST_STRINGIFY(...) toString(__VA_ARGS__)
+#endif
+#endif
-template <typename R, typename C>
-struct StringMaker<R C::*>
-{
- static String convert(R C::*p) {
- if(p)
- return detail::rawMemoryToString(p);
- return "NULL";
- }
-};
+template <typename T>
+String toString() {
+#if DOCTEST_MSVC >= 0 && DOCTEST_CLANG == 0 && DOCTEST_GCC == 0
+ String ret = __FUNCSIG__; // class doctest::String __cdecl doctest::toString<TYPE>(void)
+ String::size_type beginPos = ret.find('<');
+ return ret.substr(beginPos + 1, ret.size() - beginPos - static_cast<String::size_type>(sizeof(">(void)")));
+#else
+ String ret = __PRETTY_FUNCTION__; // doctest::String toString() [with T = TYPE]
+ String::size_type begin = ret.find('=') + 2;
+ return ret.substr(begin, ret.size() - begin - 1);
+#endif
+}
-template <typename T, typename detail::enable_if<!detail::is_enum<T>::value, bool>::type = true>
+template <typename T, typename detail::types::enable_if<!detail::types::is_enum<T>::value, bool>::type = true>
String toString(const DOCTEST_REF_WRAP(T) value) {
return StringMaker<T>::convert(value);
}
#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-DOCTEST_INTERFACE String toString(char* in);
DOCTEST_INTERFACE String toString(const char* in);
#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
+
+#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
+// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
+DOCTEST_INTERFACE String toString(const std::string& in);
+#endif // VS 2019
+
+DOCTEST_INTERFACE String toString(String in);
+
+DOCTEST_INTERFACE String toString(std::nullptr_t);
+
DOCTEST_INTERFACE String toString(bool in);
+
DOCTEST_INTERFACE String toString(float in);
DOCTEST_INTERFACE String toString(double in);
DOCTEST_INTERFACE String toString(double long in);
@@ -1016,40 +1101,85 @@ DOCTEST_INTERFACE String toString(double long in);
DOCTEST_INTERFACE String toString(char in);
DOCTEST_INTERFACE String toString(char signed in);
DOCTEST_INTERFACE String toString(char unsigned in);
-DOCTEST_INTERFACE String toString(int short in);
-DOCTEST_INTERFACE String toString(int short unsigned in);
-DOCTEST_INTERFACE String toString(int in);
-DOCTEST_INTERFACE String toString(int unsigned in);
-DOCTEST_INTERFACE String toString(int long in);
-DOCTEST_INTERFACE String toString(int long unsigned in);
-DOCTEST_INTERFACE String toString(int long long in);
-DOCTEST_INTERFACE String toString(int long long unsigned in);
-DOCTEST_INTERFACE String toString(std::nullptr_t in);
-
-template <typename T, typename detail::enable_if<detail::is_enum<T>::value, bool>::type = true>
+DOCTEST_INTERFACE String toString(short in);
+DOCTEST_INTERFACE String toString(short unsigned in);
+DOCTEST_INTERFACE String toString(signed in);
+DOCTEST_INTERFACE String toString(unsigned in);
+DOCTEST_INTERFACE String toString(long in);
+DOCTEST_INTERFACE String toString(long unsigned in);
+DOCTEST_INTERFACE String toString(long long in);
+DOCTEST_INTERFACE String toString(long long unsigned in);
+
+template <typename T, typename detail::types::enable_if<detail::types::is_enum<T>::value, bool>::type = true>
String toString(const DOCTEST_REF_WRAP(T) value) {
- typedef typename detail::underlying_type<T>::type UT;
- return toString(static_cast<UT>(value));
+ using UT = typename detail::types::underlying_type<T>::type;
+ return (DOCTEST_STRINGIFY(static_cast<UT>(value)));
}
-#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
-// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
-DOCTEST_INTERFACE String toString(const std::string& in);
-#endif // VS 2019
+namespace detail {
+ template <typename T>
+ struct filldata
+ {
+ static void fill(std::ostream* stream, const T& in) {
+#if defined(_MSC_VER) && _MSC_VER <= 1900
+ insert_hack_t<T>::insert(*stream, in);
+#else
+ operator<<(*stream, in);
+#endif
+ }
+ };
+
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4866)
+// NOLINTBEGIN(*-avoid-c-arrays)
+ template <typename T, size_t N>
+ struct filldata<T[N]> {
+ static void fill(std::ostream* stream, const T(&in)[N]) {
+ *stream << "[";
+ for (size_t i = 0; i < N; i++) {
+ if (i != 0) { *stream << ", "; }
+ *stream << (DOCTEST_STRINGIFY(in[i]));
+ }
+ *stream << "]";
+ }
+ };
+// NOLINTEND(*-avoid-c-arrays)
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
-class DOCTEST_INTERFACE Approx
+ // Specialized since we don't want the terminating null byte!
+// NOLINTBEGIN(*-avoid-c-arrays)
+ template <size_t N>
+ struct filldata<const char[N]> {
+ static void fill(std::ostream* stream, const char (&in)[N]) {
+ *stream << String(in, in[N - 1] ? N : N - 1);
+ } // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
+ };
+// NOLINTEND(*-avoid-c-arrays)
+
+ template <>
+ struct filldata<const void*> {
+ static void fill(std::ostream* stream, const void* in);
+ };
+
+ template <typename T>
+ struct filldata<T*> {
+ static void fill(std::ostream* stream, const T* in) {
+ filldata<const void*>::fill(stream, in);
+ }
+ };
+}
+
+struct DOCTEST_INTERFACE Approx
{
-public:
- explicit Approx(double value);
+ Approx(double value);
Approx operator()(double value) const;
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
explicit Approx(const T& value,
- typename detail::enable_if<std::is_constructible<double, T>::value>::type* =
+ typename detail::types::enable_if<std::is_constructible<double, T>::value>::type* =
static_cast<T*>(nullptr)) {
- *this = Approx(static_cast<double>(value));
+ *this = static_cast<double>(value);
}
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
@@ -1057,7 +1187,7 @@ public:
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
- typename detail::enable_if<std::is_constructible<double, T>::value, Approx&>::type epsilon(
+ typename std::enable_if<std::is_constructible<double, T>::value, Approx&>::type epsilon(
const T& newEpsilon) {
m_epsilon = static_cast<double>(newEpsilon);
return *this;
@@ -1068,7 +1198,7 @@ public:
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
- typename detail::enable_if<std::is_constructible<double, T>::value, Approx&>::type scale(
+ typename std::enable_if<std::is_constructible<double, T>::value, Approx&>::type scale(
const T& newScale) {
m_scale = static_cast<double>(newScale);
return *this;
@@ -1089,30 +1219,27 @@ public:
DOCTEST_INTERFACE friend bool operator> (double lhs, const Approx & rhs);
DOCTEST_INTERFACE friend bool operator> (const Approx & lhs, double rhs);
- DOCTEST_INTERFACE friend String toString(const Approx& in);
-
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#define DOCTEST_APPROX_PREFIX \
- template <typename T> friend typename detail::enable_if<std::is_constructible<double, T>::value, bool>::type
+ template <typename T> friend typename std::enable_if<std::is_constructible<double, T>::value, bool>::type
- DOCTEST_APPROX_PREFIX operator==(const T& lhs, const Approx& rhs) { return operator==(double(lhs), rhs); }
+ DOCTEST_APPROX_PREFIX operator==(const T& lhs, const Approx& rhs) { return operator==(static_cast<double>(lhs), rhs); }
DOCTEST_APPROX_PREFIX operator==(const Approx& lhs, const T& rhs) { return operator==(rhs, lhs); }
DOCTEST_APPROX_PREFIX operator!=(const T& lhs, const Approx& rhs) { return !operator==(lhs, rhs); }
DOCTEST_APPROX_PREFIX operator!=(const Approx& lhs, const T& rhs) { return !operator==(rhs, lhs); }
- DOCTEST_APPROX_PREFIX operator<=(const T& lhs, const Approx& rhs) { return double(lhs) < rhs.m_value || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator<=(const Approx& lhs, const T& rhs) { return lhs.m_value < double(rhs) || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator>=(const T& lhs, const Approx& rhs) { return double(lhs) > rhs.m_value || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator>=(const Approx& lhs, const T& rhs) { return lhs.m_value > double(rhs) || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator< (const T& lhs, const Approx& rhs) { return double(lhs) < rhs.m_value && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator< (const Approx& lhs, const T& rhs) { return lhs.m_value < double(rhs) && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator> (const T& lhs, const Approx& rhs) { return double(lhs) > rhs.m_value && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator> (const Approx& lhs, const T& rhs) { return lhs.m_value > double(rhs) && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator<=(const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) < rhs.m_value || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator<=(const Approx& lhs, const T& rhs) { return lhs.m_value < static_cast<double>(rhs) || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator>=(const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) > rhs.m_value || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator>=(const Approx& lhs, const T& rhs) { return lhs.m_value > static_cast<double>(rhs) || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator< (const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) < rhs.m_value && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator< (const Approx& lhs, const T& rhs) { return lhs.m_value < static_cast<double>(rhs) && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator> (const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) > rhs.m_value && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator> (const Approx& lhs, const T& rhs) { return lhs.m_value > static_cast<double>(rhs) && lhs != rhs; }
#undef DOCTEST_APPROX_PREFIX
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
// clang-format on
-private:
double m_epsilon;
double m_scale;
double m_value;
@@ -1122,18 +1249,35 @@ DOCTEST_INTERFACE String toString(const Approx& in);
DOCTEST_INTERFACE const ContextOptions* getContextOptions();
-#if !defined(DOCTEST_CONFIG_DISABLE)
+template <typename F>
+struct DOCTEST_INTERFACE_DECL IsNaN
+{
+ F value; bool flipped;
+ IsNaN(F f, bool flip = false) : value(f), flipped(flip) { }
+ IsNaN<F> operator!() const { return { value, !flipped }; }
+ operator bool() const;
+};
+#ifndef __MINGW32__
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<float>;
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<double>;
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<long double>;
+#endif
+DOCTEST_INTERFACE String toString(IsNaN<float> in);
+DOCTEST_INTERFACE String toString(IsNaN<double> in);
+DOCTEST_INTERFACE String toString(IsNaN<double long> in);
+
+#ifndef DOCTEST_CONFIG_DISABLE
namespace detail {
// clang-format off
#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- template<class T> struct decay_array { typedef T type; };
- template<class T, unsigned N> struct decay_array<T[N]> { typedef T* type; };
- template<class T> struct decay_array<T[]> { typedef T* type; };
+ template<class T> struct decay_array { using type = T; };
+ template<class T, unsigned N> struct decay_array<T[N]> { using type = T*; };
+ template<class T> struct decay_array<T[]> { using type = T*; };
- template<class T> struct not_char_pointer { enum { value = 1 }; };
- template<> struct not_char_pointer<char*> { enum { value = 0 }; };
- template<> struct not_char_pointer<const char*> { enum { value = 0 }; };
+ template<class T> struct not_char_pointer { static DOCTEST_CONSTEXPR value = 1; };
+ template<> struct not_char_pointer<char*> { static DOCTEST_CONSTEXPR value = 0; };
+ template<> struct not_char_pointer<const char*> { static DOCTEST_CONSTEXPR value = 0; };
template<class T> struct can_use_op : public not_char_pointer<typename decay_array<T>::type> {};
#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
@@ -1156,16 +1300,22 @@ namespace detail {
bool m_entered = false;
Subcase(const String& name, const char* file, int line);
+ Subcase(const Subcase&) = delete;
+ Subcase(Subcase&&) = delete;
+ Subcase& operator=(const Subcase&) = delete;
+ Subcase& operator=(Subcase&&) = delete;
~Subcase();
operator bool() const;
+
+ private:
+ bool checkFilters();
};
template <typename L, typename R>
String stringifyBinaryExpr(const DOCTEST_REF_WRAP(L) lhs, const char* op,
const DOCTEST_REF_WRAP(R) rhs) {
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
- return toString(lhs) + op + toString(rhs);
+ return (DOCTEST_STRINGIFY(lhs)) + op + (DOCTEST_STRINGIFY(rhs));
}
#if DOCTEST_CLANG && DOCTEST_CLANG < DOCTEST_COMPILER(3, 6, 0)
@@ -1180,17 +1330,8 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
#define DOCTEST_DO_BINARY_EXPRESSION_COMPARISON(op, op_str, op_macro) \
template <typename R> \
- DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(const R&& rhs) { \
- bool res = op_macro(doctest::detail::forward<const L>(lhs), doctest::detail::forward<const R>(rhs)); \
- if(m_at & assertType::is_false) \
- res = !res; \
- if(!res || doctest::getContextOptions()->success) \
- return Result(res, stringifyBinaryExpr(lhs, op_str, rhs)); \
- return Result(res); \
- } \
- template <typename R ,typename enable_if<!doctest::detail::is_rvalue_reference<R>::value, void >::type* = nullptr> \
- DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(const R& rhs) { \
- bool res = op_macro(doctest::detail::forward<const L>(lhs), rhs); \
+ DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(R&& rhs) { \
+ bool res = op_macro(doctest::detail::forward<const L>(lhs), doctest::detail::forward<R>(rhs)); \
if(m_at & assertType::is_false) \
res = !res; \
if(!res || doctest::getContextOptions()->success) \
@@ -1209,12 +1350,12 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
return *this; \
}
- struct DOCTEST_INTERFACE Result
+ struct DOCTEST_INTERFACE Result // NOLINT(*-member-init)
{
bool m_passed;
String m_decomp;
- Result() = default;
+ Result() = default; // TODO: Why do we need this? (To remove NOLINT)
Result(bool passed, const String& decomposition = String());
// forbidding some expressions based on this table: https://en.cppreference.com/w/cpp/language/operator_precedence
@@ -1271,8 +1412,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
#ifndef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
#define DOCTEST_COMPARISON_RETURN_TYPE bool
#else // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-#define DOCTEST_COMPARISON_RETURN_TYPE typename enable_if<can_use_op<L>::value || can_use_op<R>::value, bool>::type
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
+#define DOCTEST_COMPARISON_RETURN_TYPE typename types::enable_if<can_use_op<L>::value || can_use_op<R>::value, bool>::type
inline bool eq(const char* lhs, const char* rhs) { return String(lhs) == String(rhs); }
inline bool ne(const char* lhs, const char* rhs) { return String(lhs) != String(rhs); }
inline bool lt(const char* lhs, const char* rhs) { return String(lhs) < String(rhs); }
@@ -1320,7 +1460,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
assertType::Enum m_at;
explicit Expression_lhs(L&& in, assertType::Enum at)
- : lhs(doctest::detail::forward<L>(in))
+ : lhs(static_cast<L&&>(in))
, m_at(at) {}
DOCTEST_NOINLINE operator Result() {
@@ -1328,12 +1468,14 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4800) // 'int': forcing value to bool
bool res = static_cast<bool>(lhs);
DOCTEST_MSVC_SUPPRESS_WARNING_POP
- if(m_at & assertType::is_false) //!OCLINT bitwise operator in conditional
+ if(m_at & assertType::is_false) { //!OCLINT bitwise operator in conditional
res = !res;
+ }
- if(!res || getContextOptions()->success)
- return Result(res, toString(lhs));
- return Result(res);
+ if(!res || getContextOptions()->success) {
+ return { res, (DOCTEST_STRINGIFY(lhs)) };
+ }
+ return { res };
}
/* This is required for user-defined conversions from Expression_lhs to L */
@@ -1394,11 +1536,11 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
// https://github.com/catchorg/Catch2/issues/870
// https://github.com/catchorg/Catch2/issues/565
template <typename L>
- Expression_lhs<const L> operator<<(const L &&operand) {
- return Expression_lhs<const L>(doctest::detail::forward<const L>(operand), m_at);
+ Expression_lhs<L> operator<<(L&& operand) {
+ return Expression_lhs<L>(static_cast<L&&>(operand), m_at);
}
- template <typename L,typename enable_if<!doctest::detail::is_rvalue_reference<L>::value,void >::type* = nullptr>
+ template <typename L,typename types::enable_if<!doctest::detail::types::is_rvalue_reference<L>::value,void >::type* = nullptr>
Expression_lhs<const L&> operator<<(const L &operand) {
return Expression_lhs<const L&>(operand, m_at);
}
@@ -1425,25 +1567,28 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
}
};
- typedef void (*funcType)();
+ using funcType = void (*)();
struct DOCTEST_INTERFACE TestCase : public TestCaseData
{
funcType m_test; // a function pointer to the test case
- const char* m_type; // for templated test cases - gets appended to the real name
+ String m_type; // for templated test cases - gets appended to the real name
int m_template_id; // an ID used to distinguish between the different versions of a templated test case
String m_full_name; // contains the name (only for templated test cases!) + the template type
TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite,
- const char* type = "", int template_id = -1);
+ const String& type = String(), int template_id = -1);
TestCase(const TestCase& other);
+ TestCase(TestCase&&) = delete;
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(26434) // hides a non-virtual function
TestCase& operator=(const TestCase& other);
DOCTEST_MSVC_SUPPRESS_WARNING_POP
+ TestCase& operator=(TestCase&&) = delete;
+
TestCase& operator*(const char* in);
template <typename T>
@@ -1453,6 +1598,8 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
}
bool operator<(const TestCase& other) const;
+
+ ~TestCase() = default;
};
// forward declarations of functions used by the macros
@@ -1492,7 +1639,10 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
struct DOCTEST_INTERFACE ResultBuilder : public AssertData
{
ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
- const char* exception_type = "", const char* exception_string = "");
+ const char* exception_type = "", const String& exception_string = "");
+
+ ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const Contains& exception_string);
void setResult(const Result& res);
@@ -1500,8 +1650,9 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_NOINLINE bool binary_assert(const DOCTEST_REF_WRAP(L) lhs,
const DOCTEST_REF_WRAP(R) rhs) {
m_failed = !RelationalComparator<comparison, L, R>()(lhs, rhs);
- if(m_failed || getContextOptions()->success)
+ if (m_failed || getContextOptions()->success) {
m_decomp = stringifyBinaryExpr(lhs, ", ", rhs);
+ }
return !m_failed;
}
@@ -1509,11 +1660,13 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_NOINLINE bool unary_assert(const DOCTEST_REF_WRAP(L) val) {
m_failed = !val;
- if(m_at & assertType::is_false) //!OCLINT bitwise operator in conditional
+ if (m_at & assertType::is_false) { //!OCLINT bitwise operator in conditional
m_failed = !m_failed;
+ }
- if(m_failed || getContextOptions()->success)
- m_decomp = toString(val);
+ if (m_failed || getContextOptions()->success) {
+ m_decomp = (DOCTEST_STRINGIFY(val));
+ }
return !m_failed;
}
@@ -1536,7 +1689,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_INTERFACE void failed_out_of_a_testing_context(const AssertData& ad);
DOCTEST_INTERFACE bool decomp_assert(assertType::Enum at, const char* file, int line,
- const char* expr, Result result);
+ const char* expr, const Result& result);
#define DOCTEST_ASSERT_OUT_OF_TESTS(decomp) \
do { \
@@ -1592,15 +1745,14 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
// IF THE DEBUGGER BREAKS HERE - GO 1 LEVEL UP IN THE CALLSTACK FOR THE FAILING ASSERT
// THIS IS THE EFFECT OF HAVING 'DOCTEST_CONFIG_SUPER_FAST_ASSERTS' DEFINED
// ###################################################################################
- DOCTEST_ASSERT_OUT_OF_TESTS(toString(val));
- DOCTEST_ASSERT_IN_TESTS(toString(val));
+ DOCTEST_ASSERT_OUT_OF_TESTS((DOCTEST_STRINGIFY(val)));
+ DOCTEST_ASSERT_IN_TESTS((DOCTEST_STRINGIFY(val)));
return !failed;
}
struct DOCTEST_INTERFACE IExceptionTranslator
{
- IExceptionTranslator();
- virtual ~IExceptionTranslator();
+ DOCTEST_DECLARE_INTERFACE(IExceptionTranslator)
virtual bool translate(String&) const = 0;
};
@@ -1616,7 +1768,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
try {
throw; // lgtm [cpp/rethrow-no-exception]
// cppcheck-suppress catchExceptionByValue
- } catch(T ex) { // NOLINT
+ } catch(const T& ex) {
res = m_translateFunction(ex); //!OCLINT parameter reassignment
return true;
} catch(...) {} //!OCLINT - empty catch statement
@@ -1631,64 +1783,19 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_INTERFACE void registerExceptionTranslatorImpl(const IExceptionTranslator* et);
- template <bool C>
- struct StringStreamBase
- {
- template <typename T>
- static void convert(std::ostream* s, const T& in) {
- *s << toString(in);
- }
-
- // always treat char* as a string in this context - no matter
- // if DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING is defined
- static void convert(std::ostream* s, const char* in) { *s << String(in); }
- };
-
- template <>
- struct StringStreamBase<true>
- {
- template <typename T>
- static void convert(std::ostream* s, const T& in) {
- *s << in;
- }
- };
+ // ContextScope base class used to allow implementing methods of ContextScope
+ // that don't depend on the template parameter in doctest.cpp.
+ struct DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
+ ContextScopeBase(const ContextScopeBase&) = delete;
- template <typename T>
- struct StringStream : public StringStreamBase<has_insertion_operator<T>::value>
- {};
+ ContextScopeBase& operator=(const ContextScopeBase&) = delete;
+ ContextScopeBase& operator=(ContextScopeBase&&) = delete;
- template <typename T>
- void toStream(std::ostream* s, const T& value) {
- StringStream<T>::convert(s, value);
- }
+ ~ContextScopeBase() override = default;
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- DOCTEST_INTERFACE void toStream(std::ostream* s, char* in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, const char* in);
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- DOCTEST_INTERFACE void toStream(std::ostream* s, bool in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, float in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, double in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, double long in);
-
- DOCTEST_INTERFACE void toStream(std::ostream* s, char in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, char signed in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, char unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int short in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int short unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long long in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long long unsigned in);
-
- // ContextScope base class used to allow implementing methods of ContextScope
- // that don't depend on the template parameter in doctest.cpp.
- class DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
protected:
ContextScopeBase();
- ContextScopeBase(ContextScopeBase&& other);
+ ContextScopeBase(ContextScopeBase&& other) noexcept;
void destroy();
bool need_to_destroy{true};
@@ -1696,12 +1803,17 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
template <typename L> class ContextScope : public ContextScopeBase
{
- const L lambda_;
+ L lambda_;
public:
explicit ContextScope(const L &lambda) : lambda_(lambda) {}
+ explicit ContextScope(L&& lambda) : lambda_(static_cast<L&&>(lambda)) { }
- ContextScope(ContextScope &&other) : ContextScopeBase(static_cast<ContextScopeBase&&>(other)), lambda_(other.lambda_) {}
+ ContextScope(const ContextScope&) = delete;
+ ContextScope(ContextScope&&) noexcept = default;
+
+ ContextScope& operator=(const ContextScope&) = delete;
+ ContextScope& operator=(ContextScope&&) = delete;
void stringify(std::ostream* s) const override { lambda_(s); }
@@ -1718,15 +1830,23 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
bool logged = false;
MessageBuilder(const char* file, int line, assertType::Enum severity);
- MessageBuilder() = delete;
+
+ MessageBuilder(const MessageBuilder&) = delete;
+ MessageBuilder(MessageBuilder&&) = delete;
+
+ MessageBuilder& operator=(const MessageBuilder&) = delete;
+ MessageBuilder& operator=(MessageBuilder&&) = delete;
+
~MessageBuilder();
// the preferred way of chaining parameters for stringification
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4866)
template <typename T>
MessageBuilder& operator,(const T& in) {
- toStream(m_stream, in);
+ *m_stream << (DOCTEST_STRINGIFY(in));
return *this;
}
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
// kept here just for backwards-compatibility - the comma operator should be preferred now
template <typename T>
@@ -1742,7 +1862,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
bool log();
void react();
};
-
+
template <typename L>
ContextScope<L> MakeContextScope(const L &lambda) {
return ContextScope<L>(lambda);
@@ -1795,7 +1915,7 @@ int registerExceptionTranslator(String (*)(T)) {
#endif // DOCTEST_CONFIG_DISABLE
namespace detail {
- typedef void (*assert_handler)(const AssertData&);
+ using assert_handler = void (*)(const AssertData&);
struct ContextState;
} // namespace detail
@@ -1808,7 +1928,13 @@ class DOCTEST_INTERFACE Context
public:
explicit Context(int argc = 0, const char* const* argv = nullptr);
- ~Context();
+ Context(const Context&) = delete;
+ Context(Context&&) = delete;
+
+ Context& operator=(const Context&) = delete;
+ Context& operator=(Context&&) = delete;
+
+ ~Context(); // NOLINT(performance-trivially-destructible)
void applyCommandLine(int argc, const char* const* argv);
@@ -1916,8 +2042,7 @@ struct DOCTEST_INTERFACE IReporter
// or isn't in the execution range (between first and last) (safe to cache a pointer to the input)
virtual void test_case_skipped(const TestCaseData&) = 0;
- // doctest will not be managing the lifetimes of reporters given to it but this would still be nice to have
- virtual ~IReporter();
+ DOCTEST_DECLARE_INTERFACE(IReporter)
// can obtain all currently active contexts and stringify them if one wishes to do so
static int get_num_active_contexts();
@@ -1929,7 +2054,7 @@ struct DOCTEST_INTERFACE IReporter
};
namespace detail {
- typedef IReporter* (*reporterCreatorFunc)(const ContextOptions&);
+ using reporterCreatorFunc = IReporter* (*)(const ContextOptions&);
DOCTEST_INTERFACE void registerReporterImpl(const char* name, int prio, reporterCreatorFunc c, bool isReporter);
@@ -1946,15 +2071,30 @@ int registerReporter(const char* name, int priority, bool isReporter) {
}
} // namespace doctest
+#ifdef DOCTEST_CONFIG_ASSERTS_RETURN_VALUES
+#define DOCTEST_FUNC_EMPTY [] { return false; }()
+#else
+#define DOCTEST_FUNC_EMPTY (void)0
+#endif
+
// if registering is not disabled
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#ifndef DOCTEST_CONFIG_DISABLE
+
+#ifdef DOCTEST_CONFIG_ASSERTS_RETURN_VALUES
+#define DOCTEST_FUNC_SCOPE_BEGIN [&]
+#define DOCTEST_FUNC_SCOPE_END ()
+#define DOCTEST_FUNC_SCOPE_RET(v) return v
+#else
+#define DOCTEST_FUNC_SCOPE_BEGIN do
+#define DOCTEST_FUNC_SCOPE_END while(false)
+#define DOCTEST_FUNC_SCOPE_RET(v) (void)0
+#endif
// common code in asserts - for convenience
#define DOCTEST_ASSERT_LOG_REACT_RETURN(b) \
- if(b.log()) \
- DOCTEST_BREAK_INTO_DEBUGGER(); \
- b.react(); \
- return !b.m_failed
+ if(b.log()) DOCTEST_BREAK_INTO_DEBUGGER(); \
+ b.react(); \
+ DOCTEST_FUNC_SCOPE_RET(!b.m_failed)
#ifdef DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
#define DOCTEST_WRAP_IN_TRY(x) x;
@@ -1976,7 +2116,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// registers the test by initializing a dummy var with a function
#define DOCTEST_REGISTER_FUNCTION(global_prefix, f, decorators) \
- global_prefix DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ global_prefix DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT */ \
doctest::detail::regTest( \
doctest::detail::TestCase( \
f, __FILE__, __LINE__, \
@@ -1984,18 +2124,18 @@ int registerReporter(const char* name, int priority, bool isReporter) {
decorators))
#define DOCTEST_IMPLEMENT_FIXTURE(der, base, func, decorators) \
- namespace { \
+ namespace { /* NOLINT */ \
struct der : public base \
{ \
void f(); \
}; \
- static void func() { \
+ static inline DOCTEST_NOINLINE void func() { \
der v; \
v.f(); \
} \
DOCTEST_REGISTER_FUNCTION(DOCTEST_EMPTY, func, decorators) \
} \
- inline DOCTEST_NOINLINE void der::f()
+ inline DOCTEST_NOINLINE void der::f() // NOLINT(misc-definitions-in-headers)
#define DOCTEST_CREATE_AND_REGISTER_FUNCTION(f, decorators) \
static void f(); \
@@ -2004,7 +2144,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CREATE_AND_REGISTER_FUNCTION_IN_CLASS(f, proxy, decorators) \
static doctest::detail::funcType proxy() { return f; } \
- DOCTEST_REGISTER_FUNCTION(inline, proxy(), decorators) \
+ DOCTEST_REGISTER_FUNCTION(inline, proxy(), decorators) \
static void f()
// for registering tests
@@ -2012,7 +2152,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_CREATE_AND_REGISTER_FUNCTION(DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), decorators)
// for registering tests in classes - requires C++17 for inline variables!
-#if __cplusplus >= 201703L || (DOCTEST_MSVC >= DOCTEST_COMPILER(19, 12, 0) && _MSVC_LANG >= 201703L)
+#if DOCTEST_CPLUSPLUS >= 201703L
#define DOCTEST_TEST_CASE_CLASS(decorators) \
DOCTEST_CREATE_AND_REGISTER_FUNCTION_IN_CLASS(DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), \
DOCTEST_ANONYMOUS(DOCTEST_ANON_PROXY_), \
@@ -2028,22 +2168,21 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), decorators)
// for converting types to strings without the <typeinfo> header and demangling
-#define DOCTEST_TYPE_TO_STRING_IMPL(...) \
- template <> \
- inline const char* type_to_string<__VA_ARGS__>() { \
- return "<" #__VA_ARGS__ ">"; \
- }
-#define DOCTEST_TYPE_TO_STRING(...) \
- namespace doctest { namespace detail { \
- DOCTEST_TYPE_TO_STRING_IMPL(__VA_ARGS__) \
+#define DOCTEST_TYPE_TO_STRING_AS(str, ...) \
+ namespace doctest { \
+ template <> \
+ inline String toString<__VA_ARGS__>() { \
+ return str; \
} \
} \
static_assert(true, "")
+#define DOCTEST_TYPE_TO_STRING(...) DOCTEST_TYPE_TO_STRING_AS(#__VA_ARGS__, __VA_ARGS__)
+
#define DOCTEST_TEST_CASE_TEMPLATE_DEFINE_IMPL(dec, T, iter, func) \
template <typename T> \
static void func(); \
- namespace { \
+ namespace { /* NOLINT */ \
template <typename Tuple> \
struct iter; \
template <typename Type, typename... Rest> \
@@ -2052,7 +2191,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
iter(const char* file, unsigned line, int index) { \
doctest::detail::regTest(doctest::detail::TestCase(func<Type>, file, line, \
doctest_detail_test_suite_ns::getCurrentTestSuite(), \
- doctest::detail::type_to_string<Type>(), \
+ doctest::toString<Type>(), \
int(line) * 1000 + index) \
* dec); \
iter<std::tuple<Rest...>>(file, line, index + 1); \
@@ -2072,7 +2211,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_TMP_))
#define DOCTEST_TEST_CASE_TEMPLATE_INSTANTIATE_IMPL(id, anon, ...) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_CAT(anon, DUMMY), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_CAT(anon, DUMMY), /* NOLINT(cert-err58-cpp, fuchsia-statically-constructed-objects) */ \
doctest::detail::instantiationHelper( \
DOCTEST_CAT(id, ITERATOR)<__VA_ARGS__>(__FILE__, __LINE__, 0)))
@@ -2101,7 +2240,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for grouping tests in test suites by using code blocks
#define DOCTEST_TEST_SUITE_IMPL(decorators, ns_name) \
namespace ns_name { namespace doctest_detail_test_suite_ns { \
- static DOCTEST_NOINLINE doctest::detail::TestSuite& getCurrentTestSuite() { \
+ static DOCTEST_NOINLINE doctest::detail::TestSuite& getCurrentTestSuite() noexcept { \
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4640) \
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wexit-time-destructors") \
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wmissing-field-initializers") \
@@ -2125,20 +2264,20 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for starting a testsuite block
#define DOCTEST_TEST_SUITE_BEGIN(decorators) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT(cert-err58-cpp) */ \
doctest::detail::setTestSuite(doctest::detail::TestSuite() * decorators)) \
static_assert(true, "")
// for ending a testsuite block
#define DOCTEST_TEST_SUITE_END \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT(cert-err58-cpp) */ \
doctest::detail::setTestSuite(doctest::detail::TestSuite() * "")) \
- typedef int DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_)
+ using DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_) = int
// for registering exception translators
#define DOCTEST_REGISTER_EXCEPTION_TRANSLATOR_IMPL(translatorName, signature) \
inline doctest::String translatorName(signature); \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_TRANSLATOR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_TRANSLATOR_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerExceptionTranslator(translatorName)) \
doctest::String translatorName(signature)
@@ -2148,13 +2287,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for registering reporters
#define DOCTEST_REGISTER_REPORTER(name, priority, reporter) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerReporter<reporter>(name, priority, true)) \
static_assert(true, "")
// for registering listeners
#define DOCTEST_REGISTER_LISTENER(name, priority, reporter) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerReporter<reporter>(name, priority, false)) \
static_assert(true, "")
@@ -2177,13 +2316,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CAPTURE(x) DOCTEST_INFO(#x " := ", x)
#define DOCTEST_ADD_AT_IMPL(type, file, line, mb, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
doctest::detail::MessageBuilder mb(file, line, doctest::assertType::type); \
mb * __VA_ARGS__; \
if(mb.log()) \
DOCTEST_BREAK_INTO_DEBUGGER(); \
mb.react(); \
- }()
+ } DOCTEST_FUNC_SCOPE_END
// clang-format off
#define DOCTEST_ADD_MESSAGE_AT(file, line, ...) DOCTEST_ADD_AT_IMPL(is_warn, file, line, DOCTEST_ANONYMOUS(DOCTEST_MESSAGE_), __VA_ARGS__)
@@ -2201,18 +2340,37 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_ASSERT_IMPLEMENT_2(assert_type, ...) \
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Woverloaded-shift-op-parentheses") \
+ /* NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks) */ \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #__VA_ARGS__); \
DOCTEST_WRAP_IN_TRY(DOCTEST_RB.setResult( \
doctest::detail::ExpressionDecomposer(doctest::assertType::assert_type) \
- << __VA_ARGS__)) \
+ << __VA_ARGS__)) /* NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks) */ \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB) \
DOCTEST_CLANG_SUPPRESS_WARNING_POP
#define DOCTEST_ASSERT_IMPLEMENT_1(assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
DOCTEST_ASSERT_IMPLEMENT_2(assert_type, __VA_ARGS__); \
- }()
+ } DOCTEST_FUNC_SCOPE_END // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
+
+#define DOCTEST_BINARY_ASSERT(assert_type, comp, ...) \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
+ doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
+ __LINE__, #__VA_ARGS__); \
+ DOCTEST_WRAP_IN_TRY( \
+ DOCTEST_RB.binary_assert<doctest::detail::binaryAssertComparison::comp>( \
+ __VA_ARGS__)) \
+ DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
+ } DOCTEST_FUNC_SCOPE_END
+
+#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
+ doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
+ __LINE__, #__VA_ARGS__); \
+ DOCTEST_WRAP_IN_TRY(DOCTEST_RB.unary_assert(__VA_ARGS__)) \
+ DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
+ } DOCTEST_FUNC_SCOPE_END
#else // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
@@ -2226,6 +2384,14 @@ int registerReporter(const char* name, int priority, bool isReporter) {
doctest::detail::ExpressionDecomposer(doctest::assertType::assert_type) \
<< __VA_ARGS__) DOCTEST_CLANG_SUPPRESS_WARNING_POP
+#define DOCTEST_BINARY_ASSERT(assert_type, comparison, ...) \
+ doctest::detail::binary_assert<doctest::detail::binaryAssertComparison::comparison>( \
+ doctest::assertType::assert_type, __FILE__, __LINE__, #__VA_ARGS__, __VA_ARGS__)
+
+#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
+ doctest::detail::unary_assert(doctest::assertType::assert_type, __FILE__, __LINE__, \
+ #__VA_ARGS__, __VA_ARGS__)
+
#endif // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
#define DOCTEST_WARN(...) DOCTEST_ASSERT_IMPLEMENT_1(DT_WARN, __VA_ARGS__)
@@ -2236,34 +2402,62 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_REQUIRE_FALSE(...) DOCTEST_ASSERT_IMPLEMENT_1(DT_REQUIRE_FALSE, __VA_ARGS__)
// clang-format off
-#define DOCTEST_WARN_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); }()
-#define DOCTEST_CHECK_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); }()
-#define DOCTEST_REQUIRE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); }()
-#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); }()
-#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); }()
-#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); }()
+#define DOCTEST_WARN_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
// clang-format on
+#define DOCTEST_WARN_EQ(...) DOCTEST_BINARY_ASSERT(DT_WARN_EQ, eq, __VA_ARGS__)
+#define DOCTEST_CHECK_EQ(...) DOCTEST_BINARY_ASSERT(DT_CHECK_EQ, eq, __VA_ARGS__)
+#define DOCTEST_REQUIRE_EQ(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_EQ, eq, __VA_ARGS__)
+#define DOCTEST_WARN_NE(...) DOCTEST_BINARY_ASSERT(DT_WARN_NE, ne, __VA_ARGS__)
+#define DOCTEST_CHECK_NE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_NE, ne, __VA_ARGS__)
+#define DOCTEST_REQUIRE_NE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_NE, ne, __VA_ARGS__)
+#define DOCTEST_WARN_GT(...) DOCTEST_BINARY_ASSERT(DT_WARN_GT, gt, __VA_ARGS__)
+#define DOCTEST_CHECK_GT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GT, gt, __VA_ARGS__)
+#define DOCTEST_REQUIRE_GT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GT, gt, __VA_ARGS__)
+#define DOCTEST_WARN_LT(...) DOCTEST_BINARY_ASSERT(DT_WARN_LT, lt, __VA_ARGS__)
+#define DOCTEST_CHECK_LT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LT, lt, __VA_ARGS__)
+#define DOCTEST_REQUIRE_LT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LT, lt, __VA_ARGS__)
+#define DOCTEST_WARN_GE(...) DOCTEST_BINARY_ASSERT(DT_WARN_GE, ge, __VA_ARGS__)
+#define DOCTEST_CHECK_GE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GE, ge, __VA_ARGS__)
+#define DOCTEST_REQUIRE_GE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GE, ge, __VA_ARGS__)
+#define DOCTEST_WARN_LE(...) DOCTEST_BINARY_ASSERT(DT_WARN_LE, le, __VA_ARGS__)
+#define DOCTEST_CHECK_LE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LE, le, __VA_ARGS__)
+#define DOCTEST_REQUIRE_LE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LE, le, __VA_ARGS__)
+
+#define DOCTEST_WARN_UNARY(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY, __VA_ARGS__)
+#define DOCTEST_CHECK_UNARY(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY, __VA_ARGS__)
+#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY, __VA_ARGS__)
+#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY_FALSE, __VA_ARGS__)
+#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY_FALSE, __VA_ARGS__)
+#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY_FALSE, __VA_ARGS__)
+
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
+
#define DOCTEST_ASSERT_THROWS_AS(expr, assert_type, message, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
if(!doctest::getContextOptions()->no_throw) { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #expr, #__VA_ARGS__, message); \
try { \
DOCTEST_CAST_TO_VOID(expr) \
- } catch(const typename doctest::detail::remove_const< \
- typename doctest::detail::remove_reference<__VA_ARGS__>::type>::type&) { \
+ } catch(const typename doctest::detail::types::remove_const< \
+ typename doctest::detail::types::remove_reference<__VA_ARGS__>::type>::type&) {\
DOCTEST_RB.translateException(); \
DOCTEST_RB.m_threw_as = true; \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- } else { \
- return false; \
+ } else { /* NOLINT(*-else-after-return) */ \
+ DOCTEST_FUNC_SCOPE_RET(false); \
} \
- }()
+ } DOCTEST_FUNC_SCOPE_END
#define DOCTEST_ASSERT_THROWS_WITH(expr, expr_str, assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
if(!doctest::getContextOptions()->no_throw) { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, expr_str, "", __VA_ARGS__); \
@@ -2271,20 +2465,20 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_CAST_TO_VOID(expr) \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- } else { \
- return false; \
+ } else { /* NOLINT(*-else-after-return) */ \
+ DOCTEST_FUNC_SCOPE_RET(false); \
} \
- }()
+ } DOCTEST_FUNC_SCOPE_END
#define DOCTEST_ASSERT_NOTHROW(assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #__VA_ARGS__); \
try { \
DOCTEST_CAST_TO_VOID(__VA_ARGS__) \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
+ } DOCTEST_FUNC_SCOPE_END
// clang-format off
#define DOCTEST_WARN_THROWS(...) DOCTEST_ASSERT_THROWS_WITH((__VA_ARGS__), #__VA_ARGS__, DT_WARN_THROWS, "")
@@ -2307,166 +2501,23 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_CHECK_NOTHROW, __VA_ARGS__)
#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_REQUIRE_NOTHROW, __VA_ARGS__)
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS(expr); }()
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS(expr); }()
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS(expr); }()
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_AS(expr, ex); }()
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_AS(expr, ex); }()
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_AS(expr, ex); }()
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH(expr, with); }()
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH(expr, with); }()
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH(expr, with); }()
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_NOTHROW(expr); }()
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_NOTHROW(expr); }()
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_NOTHROW(expr); }()
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
// clang-format on
-#ifndef DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_BINARY_ASSERT(assert_type, comp, ...) \
- [&] { \
- doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
- __LINE__, #__VA_ARGS__); \
- DOCTEST_WRAP_IN_TRY( \
- DOCTEST_RB.binary_assert<doctest::detail::binaryAssertComparison::comp>( \
- __VA_ARGS__)) \
- DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
-
-#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
- [&] { \
- doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
- __LINE__, #__VA_ARGS__); \
- DOCTEST_WRAP_IN_TRY(DOCTEST_RB.unary_assert(__VA_ARGS__)) \
- DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
-
-#else // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_BINARY_ASSERT(assert_type, comparison, ...) \
- doctest::detail::binary_assert<doctest::detail::binaryAssertComparison::comparison>( \
- doctest::assertType::assert_type, __FILE__, __LINE__, #__VA_ARGS__, __VA_ARGS__)
-
-#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
- doctest::detail::unary_assert(doctest::assertType::assert_type, __FILE__, __LINE__, \
- #__VA_ARGS__, __VA_ARGS__)
-
-#endif // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_WARN_EQ(...) DOCTEST_BINARY_ASSERT(DT_WARN_EQ, eq, __VA_ARGS__)
-#define DOCTEST_CHECK_EQ(...) DOCTEST_BINARY_ASSERT(DT_CHECK_EQ, eq, __VA_ARGS__)
-#define DOCTEST_REQUIRE_EQ(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_EQ, eq, __VA_ARGS__)
-#define DOCTEST_WARN_NE(...) DOCTEST_BINARY_ASSERT(DT_WARN_NE, ne, __VA_ARGS__)
-#define DOCTEST_CHECK_NE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_NE, ne, __VA_ARGS__)
-#define DOCTEST_REQUIRE_NE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_NE, ne, __VA_ARGS__)
-#define DOCTEST_WARN_GT(...) DOCTEST_BINARY_ASSERT(DT_WARN_GT, gt, __VA_ARGS__)
-#define DOCTEST_CHECK_GT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GT, gt, __VA_ARGS__)
-#define DOCTEST_REQUIRE_GT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GT, gt, __VA_ARGS__)
-#define DOCTEST_WARN_LT(...) DOCTEST_BINARY_ASSERT(DT_WARN_LT, lt, __VA_ARGS__)
-#define DOCTEST_CHECK_LT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LT, lt, __VA_ARGS__)
-#define DOCTEST_REQUIRE_LT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LT, lt, __VA_ARGS__)
-#define DOCTEST_WARN_GE(...) DOCTEST_BINARY_ASSERT(DT_WARN_GE, ge, __VA_ARGS__)
-#define DOCTEST_CHECK_GE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GE, ge, __VA_ARGS__)
-#define DOCTEST_REQUIRE_GE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GE, ge, __VA_ARGS__)
-#define DOCTEST_WARN_LE(...) DOCTEST_BINARY_ASSERT(DT_WARN_LE, le, __VA_ARGS__)
-#define DOCTEST_CHECK_LE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LE, le, __VA_ARGS__)
-#define DOCTEST_REQUIRE_LE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LE, le, __VA_ARGS__)
-
-#define DOCTEST_WARN_UNARY(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY, __VA_ARGS__)
-#define DOCTEST_CHECK_UNARY(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY, __VA_ARGS__)
-#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY, __VA_ARGS__)
-#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY_FALSE, __VA_ARGS__)
-#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY_FALSE, __VA_ARGS__)
-#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY_FALSE, __VA_ARGS__)
-
-#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS
-
-#undef DOCTEST_WARN_THROWS
-#undef DOCTEST_CHECK_THROWS
-#undef DOCTEST_REQUIRE_THROWS
-#undef DOCTEST_WARN_THROWS_AS
-#undef DOCTEST_CHECK_THROWS_AS
-#undef DOCTEST_REQUIRE_THROWS_AS
-#undef DOCTEST_WARN_THROWS_WITH
-#undef DOCTEST_CHECK_THROWS_WITH
-#undef DOCTEST_REQUIRE_THROWS_WITH
-#undef DOCTEST_WARN_THROWS_WITH_AS
-#undef DOCTEST_CHECK_THROWS_WITH_AS
-#undef DOCTEST_REQUIRE_THROWS_WITH_AS
-#undef DOCTEST_WARN_NOTHROW
-#undef DOCTEST_CHECK_NOTHROW
-#undef DOCTEST_REQUIRE_NOTHROW
-
-#undef DOCTEST_WARN_THROWS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_MESSAGE
-#undef DOCTEST_WARN_THROWS_AS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_AS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_AS_MESSAGE
-#undef DOCTEST_WARN_THROWS_WITH_MESSAGE
-#undef DOCTEST_CHECK_THROWS_WITH_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_WITH_MESSAGE
-#undef DOCTEST_WARN_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_WARN_NOTHROW_MESSAGE
-#undef DOCTEST_CHECK_NOTHROW_MESSAGE
-#undef DOCTEST_REQUIRE_NOTHROW_MESSAGE
-
-#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
-#define DOCTEST_WARN_THROWS(...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS(...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS(...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW(...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW(...) ([] { return false; })
-
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-
-#else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
-#undef DOCTEST_REQUIRE
-#undef DOCTEST_REQUIRE_FALSE
-#undef DOCTEST_REQUIRE_MESSAGE
-#undef DOCTEST_REQUIRE_FALSE_MESSAGE
-#undef DOCTEST_REQUIRE_EQ
-#undef DOCTEST_REQUIRE_NE
-#undef DOCTEST_REQUIRE_GT
-#undef DOCTEST_REQUIRE_LT
-#undef DOCTEST_REQUIRE_GE
-#undef DOCTEST_REQUIRE_LE
-#undef DOCTEST_REQUIRE_UNARY
-#undef DOCTEST_REQUIRE_UNARY_FALSE
-
-#endif // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
// =================================================================================================
@@ -2476,7 +2527,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#else // DOCTEST_CONFIG_DISABLE
#define DOCTEST_IMPLEMENT_FIXTURE(der, base, func, name) \
- namespace { \
+ namespace /* NOLINT */ { \
template <typename DOCTEST_UNUSED_TEMPLATE_TYPE> \
struct der : public base \
{ void f(); }; \
@@ -2502,8 +2553,8 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), name)
// for converting types to strings without the <typeinfo> header and demangling
+#define DOCTEST_TYPE_TO_STRING_AS(str, ...) static_assert(true, "")
#define DOCTEST_TYPE_TO_STRING(...) static_assert(true, "")
-#define DOCTEST_TYPE_TO_STRING_IMPL(...)
// for typed tests
#define DOCTEST_TEST_CASE_TEMPLATE(name, type, ...) \
@@ -2521,13 +2572,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_SUBCASE(name)
// for a testsuite block
-#define DOCTEST_TEST_SUITE(name) namespace
+#define DOCTEST_TEST_SUITE(name) namespace // NOLINT
// for starting a testsuite block
#define DOCTEST_TEST_SUITE_BEGIN(name) static_assert(true, "")
// for ending a testsuite block
-#define DOCTEST_TEST_SUITE_END typedef int DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_)
+#define DOCTEST_TEST_SUITE_END using DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_) = int
#define DOCTEST_REGISTER_EXCEPTION_TRANSLATOR(signature) \
template <typename DOCTEST_UNUSED_TEMPLATE_TYPE> \
@@ -2545,7 +2596,8 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_FAIL_CHECK(...) (static_cast<void>(0))
#define DOCTEST_FAIL(...) (static_cast<void>(0))
-#ifdef DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
+#if defined(DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED) \
+ && defined(DOCTEST_CONFIG_ASSERTS_RETURN_VALUES)
#define DOCTEST_WARN(...) [&] { return __VA_ARGS__; }()
#define DOCTEST_CHECK(...) [&] { return __VA_ARGS__; }()
@@ -2601,85 +2653,196 @@ namespace detail {
#define DOCTEST_CHECK_UNARY_FALSE(...) [&] { return !(__VA_ARGS__); }()
#define DOCTEST_REQUIRE_UNARY_FALSE(...) [&] { return !(__VA_ARGS__); }()
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#define DOCTEST_WARN_THROWS_WITH(expr, with, ...) [] { static_assert(false, "Exception translation is not available when doctest is disabled."); return false; }()
+#define DOCTEST_CHECK_THROWS_WITH(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+
+#define DOCTEST_WARN_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_CHECK_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_REQUIRE_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_WARN_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_WARN_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_CHECK_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_REQUIRE_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
#else // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
-#define DOCTEST_WARN(...) ([] { return false; })
-#define DOCTEST_CHECK(...) ([] { return false; })
-#define DOCTEST_REQUIRE(...) ([] { return false; })
-#define DOCTEST_WARN_FALSE(...) ([] { return false; })
-#define DOCTEST_CHECK_FALSE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_FALSE(...) ([] { return false; })
-
-#define DOCTEST_WARN_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_CHECK_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) ([] { return false; })
-
-#define DOCTEST_WARN_EQ(...) ([] { return false; })
-#define DOCTEST_CHECK_EQ(...) ([] { return false; })
-#define DOCTEST_REQUIRE_EQ(...) ([] { return false; })
-#define DOCTEST_WARN_NE(...) ([] { return false; })
-#define DOCTEST_CHECK_NE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NE(...) ([] { return false; })
-#define DOCTEST_WARN_GT(...) ([] { return false; })
-#define DOCTEST_CHECK_GT(...) ([] { return false; })
-#define DOCTEST_REQUIRE_GT(...) ([] { return false; })
-#define DOCTEST_WARN_LT(...) ([] { return false; })
-#define DOCTEST_CHECK_LT(...) ([] { return false; })
-#define DOCTEST_REQUIRE_LT(...) ([] { return false; })
-#define DOCTEST_WARN_GE(...) ([] { return false; })
-#define DOCTEST_CHECK_GE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_GE(...) ([] { return false; })
-#define DOCTEST_WARN_LE(...) ([] { return false; })
-#define DOCTEST_CHECK_LE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_LE(...) ([] { return false; })
-
-#define DOCTEST_WARN_UNARY(...) ([] { return false; })
-#define DOCTEST_CHECK_UNARY(...) ([] { return false; })
-#define DOCTEST_REQUIRE_UNARY(...) ([] { return false; })
-#define DOCTEST_WARN_UNARY_FALSE(...) ([] { return false; })
-#define DOCTEST_CHECK_UNARY_FALSE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_UNARY_FALSE(...) ([] { return false; })
+#define DOCTEST_WARN(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_FALSE(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_LE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_LE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_LE(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
-#endif // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
-// TODO: think about if these also need to work properly even when doctest is disabled
-#define DOCTEST_WARN_THROWS(...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS(...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS(...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW(...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW(...) ([] { return false; })
-
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
+#define DOCTEST_WARN_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NOTHROW(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#endif // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
#endif // DOCTEST_CONFIG_DISABLE
+#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+#define DOCTEST_EXCEPTION_EMPTY_FUNC DOCTEST_FUNC_EMPTY
+#else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+#define DOCTEST_EXCEPTION_EMPTY_FUNC [] { static_assert(false, "Exceptions are disabled! " \
+ "Use DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS if you want to compile with exceptions disabled."); return false; }()
+
+#undef DOCTEST_REQUIRE
+#undef DOCTEST_REQUIRE_FALSE
+#undef DOCTEST_REQUIRE_MESSAGE
+#undef DOCTEST_REQUIRE_FALSE_MESSAGE
+#undef DOCTEST_REQUIRE_EQ
+#undef DOCTEST_REQUIRE_NE
+#undef DOCTEST_REQUIRE_GT
+#undef DOCTEST_REQUIRE_LT
+#undef DOCTEST_REQUIRE_GE
+#undef DOCTEST_REQUIRE_LE
+#undef DOCTEST_REQUIRE_UNARY
+#undef DOCTEST_REQUIRE_UNARY_FALSE
+
+#define DOCTEST_REQUIRE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_FALSE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_MESSAGE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_FALSE_MESSAGE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_EQ DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_GT DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_LT DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_GE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_LE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_UNARY DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_UNARY_FALSE DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+
+#define DOCTEST_WARN_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
// clang-format off
// KEPT FOR BACKWARDS COMPATIBILITY - FORWARDING TO THE RIGHT MACROS
#define DOCTEST_FAST_WARN_EQ DOCTEST_WARN_EQ
@@ -2726,11 +2889,12 @@ namespace detail {
// clang-format on
// == SHORT VERSIONS OF THE MACROS
-#if !defined(DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES)
+#ifndef DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES
#define TEST_CASE(name) DOCTEST_TEST_CASE(name)
#define TEST_CASE_CLASS(name) DOCTEST_TEST_CASE_CLASS(name)
#define TEST_CASE_FIXTURE(x, name) DOCTEST_TEST_CASE_FIXTURE(x, name)
+#define TYPE_TO_STRING_AS(str, ...) DOCTEST_TYPE_TO_STRING_AS(str, __VA_ARGS__)
#define TYPE_TO_STRING(...) DOCTEST_TYPE_TO_STRING(__VA_ARGS__)
#define TEST_CASE_TEMPLATE(name, T, ...) DOCTEST_TEST_CASE_TEMPLATE(name, T, __VA_ARGS__)
#define TEST_CASE_TEMPLATE_DEFINE(name, T, id) DOCTEST_TEST_CASE_TEMPLATE_DEFINE(name, T, id)
@@ -2863,33 +3027,11 @@ namespace detail {
#endif // DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#ifndef DOCTEST_CONFIG_DISABLE
// this is here to clear the 'current test suite' for the current translation unit - at the top
DOCTEST_TEST_SUITE_END();
-// add stringification for primitive/fundamental types
-namespace doctest { namespace detail {
- DOCTEST_TYPE_TO_STRING_IMPL(bool)
- DOCTEST_TYPE_TO_STRING_IMPL(float)
- DOCTEST_TYPE_TO_STRING_IMPL(double)
- DOCTEST_TYPE_TO_STRING_IMPL(long double)
- DOCTEST_TYPE_TO_STRING_IMPL(char)
- DOCTEST_TYPE_TO_STRING_IMPL(signed char)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned char)
-#if !DOCTEST_MSVC || defined(_NATIVE_WCHAR_T_DEFINED)
- DOCTEST_TYPE_TO_STRING_IMPL(wchar_t)
-#endif // not MSVC or wchar_t support enabled
- DOCTEST_TYPE_TO_STRING_IMPL(short int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned short int)
- DOCTEST_TYPE_TO_STRING_IMPL(int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned int)
- DOCTEST_TYPE_TO_STRING_IMPL(long int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned long int)
- DOCTEST_TYPE_TO_STRING_IMPL(long long int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned long long int)
-}} // namespace doctest::detail
-
#endif // DOCTEST_CONFIG_DISABLE
DOCTEST_CLANG_SUPPRESS_WARNING_POP
@@ -2981,16 +3123,27 @@ DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
#include <algorithm>
#include <iomanip>
#include <vector>
+#ifndef DOCTEST_CONFIG_NO_MULTITHREADING
#include <atomic>
#include <mutex>
+#define DOCTEST_DECLARE_MUTEX(name) std::mutex name;
+#define DOCTEST_DECLARE_STATIC_MUTEX(name) static DOCTEST_DECLARE_MUTEX(name)
+#define DOCTEST_LOCK_MUTEX(name) std::lock_guard<std::mutex> DOCTEST_ANONYMOUS(DOCTEST_ANON_LOCK_)(name);
+#else // DOCTEST_CONFIG_NO_MULTITHREADING
+#define DOCTEST_DECLARE_MUTEX(name)
+#define DOCTEST_DECLARE_STATIC_MUTEX(name)
+#define DOCTEST_LOCK_MUTEX(name)
+#endif // DOCTEST_CONFIG_NO_MULTITHREADING
#include <set>
#include <map>
+#include <unordered_set>
#include <exception>
#include <stdexcept>
#include <csignal>
#include <cfloat>
#include <cctype>
#include <cstdint>
+#include <string>
#ifdef DOCTEST_PLATFORM_MAC
#include <sys/types.h>
@@ -3045,7 +3198,7 @@ DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END
#endif
#ifndef DOCTEST_THREAD_LOCAL
-#if DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
+#if defined(DOCTEST_CONFIG_NO_MULTITHREADING) || DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
#define DOCTEST_THREAD_LOCAL
#else // DOCTEST_MSVC
#define DOCTEST_THREAD_LOCAL thread_local
@@ -3107,20 +3260,6 @@ namespace {
}
}
- template <typename T>
- String fpToString(T value, int precision) {
- std::ostringstream oss;
- oss << std::setprecision(precision) << std::fixed << value;
- std::string d = oss.str();
- size_t i = d.find_last_not_of('0');
- if(i != std::string::npos && i != d.size() - 1) {
- if(d[i] == '.')
- i++;
- d = d.substr(0, i + 1);
- }
- return d.c_str();
- }
-
struct Endianness
{
enum Arch
@@ -3141,22 +3280,6 @@ namespace {
} // namespace
namespace detail {
- String rawMemoryToString(const void* object, unsigned size) {
- // Reverse order for little endian architectures
- int i = 0, end = static_cast<int>(size), inc = 1;
- if(Endianness::which() == Endianness::Little) {
- i = end - 1;
- end = inc = -1;
- }
-
- unsigned const char* bytes = static_cast<unsigned const char*>(object);
- std::ostream* oss = tlssPush();
- *oss << "0x" << std::setfill('0') << std::hex;
- for(; i != end; i += inc)
- *oss << std::setw(2) << static_cast<unsigned>(bytes[i]);
- return tlssPop();
- }
-
DOCTEST_THREAD_LOCAL class
{
std::vector<std::streampos> stack;
@@ -3194,19 +3317,19 @@ namespace timer_large_integer
{
#if defined(DOCTEST_PLATFORM_WINDOWS)
- typedef ULONGLONG type;
+ using type = ULONGLONG;
#else // DOCTEST_PLATFORM_WINDOWS
- typedef std::uint64_t type;
+ using type = std::uint64_t;
#endif // DOCTEST_PLATFORM_WINDOWS
}
-typedef timer_large_integer::type ticks_t;
+using ticks_t = timer_large_integer::type;
#ifdef DOCTEST_CONFIG_GETCURRENTTICKS
ticks_t getCurrentTicks() { return DOCTEST_CONFIG_GETCURRENTTICKS(); }
#elif defined(DOCTEST_PLATFORM_WINDOWS)
ticks_t getCurrentTicks() {
- static LARGE_INTEGER hz = {0}, hzo = {0};
+ static LARGE_INTEGER hz = { {0} }, hzo = { {0} };
if(!hz.QuadPart) {
QueryPerformanceFrequency(&hz);
QueryPerformanceCounter(&hzo);
@@ -3238,9 +3361,17 @@ typedef timer_large_integer::type ticks_t;
ticks_t m_ticks = 0;
};
-#ifdef DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
+#ifdef DOCTEST_CONFIG_NO_MULTITHREADING
+ template <typename T>
+ using Atomic = T;
+#else // DOCTEST_CONFIG_NO_MULTITHREADING
template <typename T>
- using AtomicOrMultiLaneAtomic = std::atomic<T>;
+ using Atomic = std::atomic<T>;
+#endif // DOCTEST_CONFIG_NO_MULTITHREADING
+
+#if defined(DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS) || defined(DOCTEST_CONFIG_NO_MULTITHREADING)
+ template <typename T>
+ using MultiLaneAtomic = Atomic<T>;
#else // DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
// Provides a multilane implementation of an atomic variable that supports add, sub, load,
// store. Instead of using a single atomic variable, this splits up into multiple ones,
@@ -3257,8 +3388,8 @@ typedef timer_large_integer::type ticks_t;
{
struct CacheLineAlignedAtomic
{
- std::atomic<T> atomic{};
- char padding[DOCTEST_MULTI_LANE_ATOMICS_CACHE_LINE_SIZE - sizeof(std::atomic<T>)];
+ Atomic<T> atomic{};
+ char padding[DOCTEST_MULTI_LANE_ATOMICS_CACHE_LINE_SIZE - sizeof(Atomic<T>)];
};
CacheLineAlignedAtomic m_atomics[DOCTEST_MULTI_LANE_ATOMICS_THREAD_LANES];
@@ -3314,24 +3445,21 @@ typedef timer_large_integer::type ticks_t;
// assigned in a round-robin fashion.
// 3. This tlsLaneIdx is stored in the thread local data, so it is directly available with
// little overhead.
- std::atomic<T>& myAtomic() DOCTEST_NOEXCEPT {
- static std::atomic<size_t> laneCounter;
+ Atomic<T>& myAtomic() DOCTEST_NOEXCEPT {
+ static Atomic<size_t> laneCounter;
DOCTEST_THREAD_LOCAL size_t tlsLaneIdx =
laneCounter++ % DOCTEST_MULTI_LANE_ATOMICS_THREAD_LANES;
return m_atomics[tlsLaneIdx].atomic;
}
};
-
- template <typename T>
- using AtomicOrMultiLaneAtomic = MultiLaneAtomic<T>;
#endif // DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
// this holds both parameters from the command line and runtime data for tests
struct ContextState : ContextOptions, TestRunStats, CurrentTestCaseStats
{
- AtomicOrMultiLaneAtomic<int> numAssertsCurrentTest_atomic;
- AtomicOrMultiLaneAtomic<int> numAssertsFailedCurrentTest_atomic;
+ MultiLaneAtomic<int> numAssertsCurrentTest_atomic;
+ MultiLaneAtomic<int> numAssertsFailedCurrentTest_atomic;
std::vector<std::vector<String>> filters = decltype(filters)(9); // 9 different filters
@@ -3344,11 +3472,12 @@ typedef timer_large_integer::type ticks_t;
std::vector<String> stringifiedContexts; // logging from INFO() due to an exception
// stuff for subcases
- std::vector<SubcaseSignature> subcasesStack;
- std::set<decltype(subcasesStack)> subcasesPassed;
- int subcasesCurrentMaxLevel;
- bool should_reenter;
- std::atomic<bool> shouldLogCurrentException;
+ bool reachedLeaf;
+ std::vector<SubcaseSignature> subcaseStack;
+ std::vector<SubcaseSignature> nextSubcaseStack;
+ std::unordered_set<unsigned long long> fullyTraversedSubcases;
+ size_t currentSubcaseDepth;
+ Atomic<bool> shouldLogCurrentException;
void resetRunData() {
numTestCases = 0;
@@ -3414,7 +3543,7 @@ typedef timer_large_integer::type ticks_t;
#endif // DOCTEST_CONFIG_DISABLE
} // namespace detail
-char* String::allocate(unsigned sz) {
+char* String::allocate(size_type sz) {
if (sz <= last) {
buf[sz] = '\0';
setLast(last - sz);
@@ -3429,8 +3558,12 @@ char* String::allocate(unsigned sz) {
}
}
-void String::setOnHeap() { *reinterpret_cast<unsigned char*>(&buf[last]) = 128; }
-void String::setLast(unsigned in) { buf[last] = char(in); }
+void String::setOnHeap() noexcept { *reinterpret_cast<unsigned char*>(&buf[last]) = 128; }
+void String::setLast(size_type in) noexcept { buf[last] = char(in); }
+void String::setSize(size_type sz) noexcept {
+ if (isOnStack()) { buf[sz] = '\0'; setLast(last - sz); }
+ else { data.ptr[sz] = '\0'; data.size = sz; }
+}
void String::copy(const String& other) {
if(other.isOnStack()) {
@@ -3440,7 +3573,7 @@ void String::copy(const String& other) {
}
}
-String::String() {
+String::String() noexcept {
buf[0] = '\0';
setLast();
}
@@ -3448,17 +3581,16 @@ String::String() {
String::~String() {
if(!isOnStack())
delete[] data.ptr;
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
-}
+} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
String::String(const char* in)
: String(in, strlen(in)) {}
-String::String(const char* in, unsigned in_size) {
+String::String(const char* in, size_type in_size) {
memcpy(allocate(in_size), in, in_size);
}
-String::String(std::istream& in, unsigned in_size) {
+String::String(std::istream& in, size_type in_size) {
in.read(allocate(in_size), in_size);
}
@@ -3476,9 +3608,9 @@ String& String::operator=(const String& other) {
}
String& String::operator+=(const String& other) {
- const unsigned my_old_size = size();
- const unsigned other_size = other.size();
- const unsigned total_size = my_old_size + other_size;
+ const size_type my_old_size = size();
+ const size_type other_size = other.size();
+ const size_type total_size = my_old_size + other_size;
if(isOnStack()) {
if(total_size < len) {
// append to the current stack space
@@ -3525,13 +3657,13 @@ String& String::operator+=(const String& other) {
return *this;
}
-String::String(String&& other) {
+String::String(String&& other) noexcept {
memcpy(buf, other.buf, len);
other.buf[0] = '\0';
other.setLast();
}
-String& String::operator=(String&& other) {
+String& String::operator=(String&& other) noexcept {
if(this != &other) {
if(!isOnStack())
delete[] data.ptr;
@@ -3542,30 +3674,60 @@ String& String::operator=(String&& other) {
return *this;
}
-char String::operator[](unsigned i) const {
- return const_cast<String*>(this)->operator[](i); // NOLINT
+char String::operator[](size_type i) const {
+ return const_cast<String*>(this)->operator[](i);
}
-char& String::operator[](unsigned i) {
+char& String::operator[](size_type i) {
if(isOnStack())
return reinterpret_cast<char*>(buf)[i];
return data.ptr[i];
}
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wmaybe-uninitialized")
-unsigned String::size() const {
+String::size_type String::size() const {
if(isOnStack())
- return last - (unsigned(buf[last]) & 31); // using "last" would work only if "len" is 32
+ return last - (size_type(buf[last]) & 31); // using "last" would work only if "len" is 32
return data.size;
}
DOCTEST_GCC_SUPPRESS_WARNING_POP
-unsigned String::capacity() const {
+String::size_type String::capacity() const {
if(isOnStack())
return len;
return data.capacity;
}
+String String::substr(size_type pos, size_type cnt) && {
+ cnt = std::min(cnt, size() - 1 - pos);
+ char* cptr = c_str();
+ memmove(cptr, cptr + pos, cnt);
+ setSize(cnt);
+ return std::move(*this);
+}
+
+String String::substr(size_type pos, size_type cnt) const & {
+ cnt = std::min(cnt, size() - 1 - pos);
+ return String{ c_str() + pos, cnt };
+}
+
+String::size_type String::find(char ch, size_type pos) const {
+ const char* begin = c_str();
+ const char* end = begin + size();
+ const char* it = begin + pos;
+ for (; it < end && *it != ch; it++);
+ if (it < end) { return static_cast<size_type>(it - begin); }
+ else { return npos; }
+}
+
+String::size_type String::rfind(char ch, size_type pos) const {
+ const char* begin = c_str();
+ const char* it = begin + std::min(pos, size() - 1);
+ for (; it >= begin && *it != ch; it--);
+ if (it >= begin) { return static_cast<size_type>(it - begin); }
+ else { return npos; }
+}
+
int String::compare(const char* other, bool no_case) const {
if(no_case)
return doctest::stricmp(c_str(), other);
@@ -3576,20 +3738,32 @@ int String::compare(const String& other, bool no_case) const {
return compare(other.c_str(), no_case);
}
-// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
String operator+(const String& lhs, const String& rhs) { return String(lhs) += rhs; }
-// clang-format off
bool operator==(const String& lhs, const String& rhs) { return lhs.compare(rhs) == 0; }
bool operator!=(const String& lhs, const String& rhs) { return lhs.compare(rhs) != 0; }
bool operator< (const String& lhs, const String& rhs) { return lhs.compare(rhs) < 0; }
bool operator> (const String& lhs, const String& rhs) { return lhs.compare(rhs) > 0; }
bool operator<=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) < 0 : true; }
bool operator>=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) > 0 : true; }
-// clang-format on
std::ostream& operator<<(std::ostream& s, const String& in) { return s << in.c_str(); }
+Contains::Contains(const String& str) : string(str) { }
+
+bool Contains::checkWith(const String& other) const {
+ return strstr(other.c_str(), string.c_str()) != nullptr;
+}
+
+String toString(const Contains& in) {
+ return "Contains( " + in.string + " )";
+}
+
+bool operator==(const String& lhs, const Contains& rhs) { return rhs.checkWith(lhs); }
+bool operator==(const Contains& lhs, const String& rhs) { return lhs.checkWith(rhs); }
+bool operator!=(const String& lhs, const Contains& rhs) { return !rhs.checkWith(lhs); }
+bool operator!=(const Contains& lhs, const String& rhs) { return !lhs.checkWith(rhs); }
+
namespace {
void color_to_stream(std::ostream&, Color::Enum) DOCTEST_BRANCH_ON_DISABLED({}, ;)
} // namespace
@@ -3603,64 +3777,42 @@ namespace Color {
// clang-format off
const char* assertString(assertType::Enum at) {
- DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4062) // enum 'x' in switch of enum 'y' is not handled
- switch(at) { //!OCLINT missing default in switch statements
- case assertType::DT_WARN : return "WARN";
- case assertType::DT_CHECK : return "CHECK";
- case assertType::DT_REQUIRE : return "REQUIRE";
-
- case assertType::DT_WARN_FALSE : return "WARN_FALSE";
- case assertType::DT_CHECK_FALSE : return "CHECK_FALSE";
- case assertType::DT_REQUIRE_FALSE : return "REQUIRE_FALSE";
-
- case assertType::DT_WARN_THROWS : return "WARN_THROWS";
- case assertType::DT_CHECK_THROWS : return "CHECK_THROWS";
- case assertType::DT_REQUIRE_THROWS : return "REQUIRE_THROWS";
-
- case assertType::DT_WARN_THROWS_AS : return "WARN_THROWS_AS";
- case assertType::DT_CHECK_THROWS_AS : return "CHECK_THROWS_AS";
- case assertType::DT_REQUIRE_THROWS_AS : return "REQUIRE_THROWS_AS";
-
- case assertType::DT_WARN_THROWS_WITH : return "WARN_THROWS_WITH";
- case assertType::DT_CHECK_THROWS_WITH : return "CHECK_THROWS_WITH";
- case assertType::DT_REQUIRE_THROWS_WITH : return "REQUIRE_THROWS_WITH";
-
- case assertType::DT_WARN_THROWS_WITH_AS : return "WARN_THROWS_WITH_AS";
- case assertType::DT_CHECK_THROWS_WITH_AS : return "CHECK_THROWS_WITH_AS";
- case assertType::DT_REQUIRE_THROWS_WITH_AS : return "REQUIRE_THROWS_WITH_AS";
-
- case assertType::DT_WARN_NOTHROW : return "WARN_NOTHROW";
- case assertType::DT_CHECK_NOTHROW : return "CHECK_NOTHROW";
- case assertType::DT_REQUIRE_NOTHROW : return "REQUIRE_NOTHROW";
-
- case assertType::DT_WARN_EQ : return "WARN_EQ";
- case assertType::DT_CHECK_EQ : return "CHECK_EQ";
- case assertType::DT_REQUIRE_EQ : return "REQUIRE_EQ";
- case assertType::DT_WARN_NE : return "WARN_NE";
- case assertType::DT_CHECK_NE : return "CHECK_NE";
- case assertType::DT_REQUIRE_NE : return "REQUIRE_NE";
- case assertType::DT_WARN_GT : return "WARN_GT";
- case assertType::DT_CHECK_GT : return "CHECK_GT";
- case assertType::DT_REQUIRE_GT : return "REQUIRE_GT";
- case assertType::DT_WARN_LT : return "WARN_LT";
- case assertType::DT_CHECK_LT : return "CHECK_LT";
- case assertType::DT_REQUIRE_LT : return "REQUIRE_LT";
- case assertType::DT_WARN_GE : return "WARN_GE";
- case assertType::DT_CHECK_GE : return "CHECK_GE";
- case assertType::DT_REQUIRE_GE : return "REQUIRE_GE";
- case assertType::DT_WARN_LE : return "WARN_LE";
- case assertType::DT_CHECK_LE : return "CHECK_LE";
- case assertType::DT_REQUIRE_LE : return "REQUIRE_LE";
-
- case assertType::DT_WARN_UNARY : return "WARN_UNARY";
- case assertType::DT_CHECK_UNARY : return "CHECK_UNARY";
- case assertType::DT_REQUIRE_UNARY : return "REQUIRE_UNARY";
- case assertType::DT_WARN_UNARY_FALSE : return "WARN_UNARY_FALSE";
- case assertType::DT_CHECK_UNARY_FALSE : return "CHECK_UNARY_FALSE";
- case assertType::DT_REQUIRE_UNARY_FALSE : return "REQUIRE_UNARY_FALSE";
+ DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4061) // enum 'x' in switch of enum 'y' is not explicitely handled
+ #define DOCTEST_GENERATE_ASSERT_TYPE_CASE(assert_type) case assertType::DT_ ## assert_type: return #assert_type
+ #define DOCTEST_GENERATE_ASSERT_TYPE_CASES(assert_type) \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(WARN_ ## assert_type); \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(CHECK_ ## assert_type); \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(REQUIRE_ ## assert_type)
+ switch(at) {
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(WARN);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(CHECK);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(REQUIRE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(FALSE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_AS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_WITH);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_WITH_AS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(NOTHROW);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(EQ);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(NE);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(GT);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(LT);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(GE);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(LE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(UNARY);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(UNARY_FALSE);
+
+ default: DOCTEST_INTERNAL_ERROR("Tried stringifying invalid assert type!");
}
DOCTEST_MSVC_SUPPRESS_WARNING_POP
- return "";
}
// clang-format on
@@ -3694,6 +3846,12 @@ const char* skipPathFromFilename(const char* file) {
DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_GCC_SUPPRESS_WARNING_POP
+bool SubcaseSignature::operator==(const SubcaseSignature& other) const {
+ return m_line == other.m_line
+ && std::strcmp(m_file, other.m_file) == 0
+ && m_name == other.m_name;
+}
+
bool SubcaseSignature::operator<(const SubcaseSignature& other) const {
if(m_line != other.m_line)
return m_line < other.m_line;
@@ -3702,45 +3860,53 @@ bool SubcaseSignature::operator<(const SubcaseSignature& other) const {
return m_name.compare(other.m_name) < 0;
}
-IContextScope::IContextScope() = default;
-IContextScope::~IContextScope() = default;
+DOCTEST_DEFINE_INTERFACE(IContextScope)
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-String toString(char* in) { return toString(static_cast<const char*>(in)); }
-// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
-String toString(const char* in) { return String("\"") + (in ? in : "{null string}") + "\""; }
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-String toString(bool in) { return in ? "true" : "false"; }
-String toString(float in) { return fpToString(in, 5) + "f"; }
-String toString(double in) { return fpToString(in, 10); }
-String toString(double long in) { return fpToString(in, 15); }
-
-#define DOCTEST_TO_STRING_OVERLOAD(type, fmt) \
- String toString(type in) { \
- char buf[64]; \
- std::sprintf(buf, fmt, in); \
- return buf; \
+namespace detail {
+ void filldata<const void*>::fill(std::ostream* stream, const void* in) {
+ if (in) { *stream << in; }
+ else { *stream << "nullptr"; }
}
-DOCTEST_TO_STRING_OVERLOAD(char, "%d")
-DOCTEST_TO_STRING_OVERLOAD(char signed, "%d")
-DOCTEST_TO_STRING_OVERLOAD(char unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int short, "%d")
-DOCTEST_TO_STRING_OVERLOAD(int short unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int, "%d")
-DOCTEST_TO_STRING_OVERLOAD(unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int long, "%ld")
-DOCTEST_TO_STRING_OVERLOAD(int long unsigned, "%lu")
-DOCTEST_TO_STRING_OVERLOAD(int long long, "%lld")
-DOCTEST_TO_STRING_OVERLOAD(int long long unsigned, "%llu")
+ template <typename T>
+ String toStreamLit(T t) {
+ std::ostream* os = tlssPush();
+ os->operator<<(t);
+ return tlssPop();
+ }
+}
-String toString(std::nullptr_t) { return "NULL"; }
+#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
+String toString(const char* in) { return String("\"") + (in ? in : "{null string}") + "\""; }
+#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
String toString(const std::string& in) { return in.c_str(); }
#endif // VS 2019
+String toString(String in) { return in; }
+
+String toString(std::nullptr_t) { return "nullptr"; }
+
+String toString(bool in) { return in ? "true" : "false"; }
+
+String toString(float in) { return toStreamLit(in); }
+String toString(double in) { return toStreamLit(in); }
+String toString(double long in) { return toStreamLit(in); }
+
+String toString(char in) { return toStreamLit(static_cast<signed>(in)); }
+String toString(char signed in) { return toStreamLit(static_cast<signed>(in)); }
+String toString(char unsigned in) { return toStreamLit(static_cast<unsigned>(in)); }
+String toString(short in) { return toStreamLit(in); }
+String toString(short unsigned in) { return toStreamLit(in); }
+String toString(signed in) { return toStreamLit(in); }
+String toString(unsigned in) { return toStreamLit(in); }
+String toString(long in) { return toStreamLit(in); }
+String toString(long unsigned in) { return toStreamLit(in); }
+String toString(long long in) { return toStreamLit(in); }
+String toString(long long unsigned in) { return toStreamLit(in); }
+
Approx::Approx(double value)
: m_epsilon(static_cast<double>(std::numeric_limits<float>::epsilon()) * 100)
, m_scale(1.0)
@@ -3780,11 +3946,25 @@ bool operator>(double lhs, const Approx& rhs) { return lhs > rhs.m_value && lhs
bool operator>(const Approx& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; }
String toString(const Approx& in) {
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
return "Approx( " + doctest::toString(in.m_value) + " )";
}
const ContextOptions* getContextOptions() { return DOCTEST_BRANCH_ON_DISABLED(nullptr, g_cs); }
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4738)
+template <typename F>
+IsNaN<F>::operator bool() const {
+ return std::isnan(value) ^ flipped;
+}
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
+template struct DOCTEST_INTERFACE_DEF IsNaN<float>;
+template struct DOCTEST_INTERFACE_DEF IsNaN<double>;
+template struct DOCTEST_INTERFACE_DEF IsNaN<long double>;
+template <typename F>
+String toString(IsNaN<F> in) { return String(in.flipped ? "! " : "") + "IsNaN( " + doctest::toString(in.value) + " )"; }
+String toString(IsNaN<float> in) { return toString<float>(in); }
+String toString(IsNaN<double> in) { return toString<double>(in); }
+String toString(IsNaN<double long> in) { return toString<double long>(in); }
+
} // namespace doctest
#ifdef DOCTEST_CONFIG_DISABLE
@@ -3800,11 +3980,9 @@ void Context::setOption(const char*, const char*) {}
bool Context::shouldExit() { return false; }
void Context::setAsDefaultForAssertsOutOfTestCases() {}
void Context::setAssertHandler(detail::assert_handler) {}
-void Context::setCout(std::ostream* out) {}
+void Context::setCout(std::ostream*) {}
int Context::run() { return 0; }
-IReporter::~IReporter() = default;
-
int IReporter::get_num_active_contexts() { return 0; }
const IContextScope* const* IReporter::get_active_contexts() { return nullptr; }
int IReporter::get_num_stringified_contexts() { return 0; }
@@ -3837,7 +4015,7 @@ namespace doctest {
namespace {
// the int (priority) is part of the key for automatic sorting - sadly one can register a
// reporter with a duplicate name and a different priority but hopefully that won't happen often :|
- typedef std::map<std::pair<int, String>, reporterCreatorFunc> reporterMap;
+ using reporterMap = std::map<std::pair<int, String>, reporterCreatorFunc>;
reporterMap& getReporters() {
static reporterMap data;
@@ -3869,8 +4047,8 @@ namespace detail {
#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
DOCTEST_NORETURN void throwException() {
g_cs->shouldLogCurrentException = false;
- throw TestFailureException();
- } // NOLINT(cert-err60-cpp)
+ throw TestFailureException(); // NOLINT(hicpp-exception-baseclass)
+ }
#else // DOCTEST_CONFIG_NO_EXCEPTIONS
void throwException() {}
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
@@ -3916,59 +4094,92 @@ namespace {
return !*wild;
}
- //// C string hash function (djb2) - taken from http://www.cse.yorku.ca/~oz/hash.html
- //unsigned hashStr(unsigned const char* str) {
- // unsigned long hash = 5381;
- // char c;
- // while((c = *str++))
- // hash = ((hash << 5) + hash) + c; // hash * 33 + c
- // return hash;
- //}
-
// checks if the name matches any of the filters (and can be configured what to do when empty)
bool matchesAny(const char* name, const std::vector<String>& filters, bool matchEmpty,
- bool caseSensitive) {
- if(filters.empty() && matchEmpty)
+ bool caseSensitive) {
+ if (filters.empty() && matchEmpty)
return true;
- for(auto& curr : filters)
- if(wildcmp(name, curr.c_str(), caseSensitive))
+ for (auto& curr : filters)
+ if (wildcmp(name, curr.c_str(), caseSensitive))
return true;
return false;
}
-} // namespace
-namespace detail {
- Subcase::Subcase(const String& name, const char* file, int line)
- : m_signature({name, file, line}) {
- auto* s = g_cs;
+ unsigned long long hash(unsigned long long a, unsigned long long b) {
+ return (a << 5) + b;
+ }
- // check subcase filters
- if(s->subcasesStack.size() < size_t(s->subcase_filter_levels)) {
- if(!matchesAny(m_signature.m_name.c_str(), s->filters[6], true, s->case_sensitive))
- return;
- if(matchesAny(m_signature.m_name.c_str(), s->filters[7], false, s->case_sensitive))
- return;
- }
-
- // if a Subcase on the same level has already been entered
- if(s->subcasesStack.size() < size_t(s->subcasesCurrentMaxLevel)) {
- s->should_reenter = true;
- return;
- }
+ // C string hash function (djb2) - taken from http://www.cse.yorku.ca/~oz/hash.html
+ unsigned long long hash(const char* str) {
+ unsigned long long hash = 5381;
+ char c;
+ while ((c = *str++))
+ hash = ((hash << 5) + hash) + c; // hash * 33 + c
+ return hash;
+ }
- // push the current signature to the stack so we can check if the
- // current stack + the current new subcase have been traversed
- s->subcasesStack.push_back(m_signature);
- if(s->subcasesPassed.count(s->subcasesStack) != 0) {
- // pop - revert to previous stack since we've already passed this
- s->subcasesStack.pop_back();
- return;
+ unsigned long long hash(const SubcaseSignature& sig) {
+ return hash(hash(hash(sig.m_file), hash(sig.m_name.c_str())), sig.m_line);
+ }
+
+ unsigned long long hash(const std::vector<SubcaseSignature>& sigs, size_t count) {
+ unsigned long long running = 0;
+ auto end = sigs.begin() + count;
+ for (auto it = sigs.begin(); it != end; it++) {
+ running = hash(running, hash(*it));
}
+ return running;
+ }
- s->subcasesCurrentMaxLevel = s->subcasesStack.size();
- m_entered = true;
+ unsigned long long hash(const std::vector<SubcaseSignature>& sigs) {
+ unsigned long long running = 0;
+ for (const SubcaseSignature& sig : sigs) {
+ running = hash(running, hash(sig));
+ }
+ return running;
+ }
+} // namespace
+namespace detail {
+ bool Subcase::checkFilters() {
+ if (g_cs->subcaseStack.size() < size_t(g_cs->subcase_filter_levels)) {
+ if (!matchesAny(m_signature.m_name.c_str(), g_cs->filters[6], true, g_cs->case_sensitive))
+ return true;
+ if (matchesAny(m_signature.m_name.c_str(), g_cs->filters[7], false, g_cs->case_sensitive))
+ return true;
+ }
+ return false;
+ }
- DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ Subcase::Subcase(const String& name, const char* file, int line)
+ : m_signature({name, file, line}) {
+ if (!g_cs->reachedLeaf) {
+ if (g_cs->nextSubcaseStack.size() <= g_cs->subcaseStack.size()
+ || g_cs->nextSubcaseStack[g_cs->subcaseStack.size()] == m_signature) {
+ // Going down.
+ if (checkFilters()) { return; }
+
+ g_cs->subcaseStack.push_back(m_signature);
+ g_cs->currentSubcaseDepth++;
+ m_entered = true;
+ DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ }
+ } else {
+ if (g_cs->subcaseStack[g_cs->currentSubcaseDepth] == m_signature) {
+ // This subcase is reentered via control flow.
+ g_cs->currentSubcaseDepth++;
+ m_entered = true;
+ DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ } else if (g_cs->nextSubcaseStack.size() <= g_cs->currentSubcaseDepth
+ && g_cs->fullyTraversedSubcases.find(hash(hash(g_cs->subcaseStack, g_cs->currentSubcaseDepth), hash(m_signature)))
+ == g_cs->fullyTraversedSubcases.end()) {
+ if (checkFilters()) { return; }
+ // This subcase is part of the one to be executed next.
+ g_cs->nextSubcaseStack.clear();
+ g_cs->nextSubcaseStack.insert(g_cs->nextSubcaseStack.end(),
+ g_cs->subcaseStack.begin(), g_cs->subcaseStack.begin() + g_cs->currentSubcaseDepth);
+ g_cs->nextSubcaseStack.push_back(m_signature);
+ }
+ }
}
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
@@ -3976,25 +4187,33 @@ namespace detail {
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
Subcase::~Subcase() {
- if(m_entered) {
- // only mark the subcase stack as passed if no subcases have been skipped
- if(g_cs->should_reenter == false)
- g_cs->subcasesPassed.insert(g_cs->subcasesStack);
- g_cs->subcasesStack.pop_back();
+ if (m_entered) {
+ g_cs->currentSubcaseDepth--;
+
+ if (!g_cs->reachedLeaf) {
+ // Leaf.
+ g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack));
+ g_cs->nextSubcaseStack.clear();
+ g_cs->reachedLeaf = true;
+ } else if (g_cs->nextSubcaseStack.empty()) {
+ // All children are finished.
+ g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack));
+ }
#if defined(__cpp_lib_uncaught_exceptions) && __cpp_lib_uncaught_exceptions >= 201411L && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200)
if(std::uncaught_exceptions() > 0
#else
if(std::uncaught_exception()
#endif
- && g_cs->shouldLogCurrentException) {
+ && g_cs->shouldLogCurrentException) {
DOCTEST_ITERATE_THROUGH_REPORTERS(
test_case_exception, {"exception thrown in subcase - will translate later "
- "when the whole test case has been exited (cannot "
- "translate while there is an active exception)",
- false});
+ "when the whole test case has been exited (cannot "
+ "translate while there is an active exception)",
+ false});
g_cs->shouldLogCurrentException = false;
}
+
DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_end, DOCTEST_EMPTY);
}
}
@@ -4018,7 +4237,7 @@ namespace detail {
}
TestCase::TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite,
- const char* type, int template_id) {
+ const String& type, int template_id) {
m_file = file;
m_line = line;
m_name = nullptr; // will be later overridden in operator*
@@ -4043,10 +4262,8 @@ namespace detail {
}
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(26434) // hides a non-virtual function
- DOCTEST_MSVC_SUPPRESS_WARNING(26437) // Do not slice
TestCase& TestCase::operator=(const TestCase& other) {
- static_cast<TestCaseData&>(*this) = static_cast<const TestCaseData&>(other);
-
+ TestCaseData::operator=(other);
m_test = other.m_test;
m_type = other.m_type;
m_template_id = other.m_template_id;
@@ -4062,7 +4279,7 @@ namespace detail {
m_name = in;
// make a new name with an appended type for templated test case
if(m_template_id != -1) {
- m_full_name = String(m_name) + m_type;
+ m_full_name = String(m_name) + "<" + m_type + ">";
// redirect the name to point to the newly constructed full name
m_name = m_full_name.c_str();
}
@@ -4304,34 +4521,13 @@ namespace detail {
getExceptionTranslators().push_back(et);
}
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- void toStream(std::ostream* s, char* in) { *s << in; }
- void toStream(std::ostream* s, const char* in) { *s << in; }
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- void toStream(std::ostream* s, bool in) { *s << std::boolalpha << in << std::noboolalpha; }
- void toStream(std::ostream* s, float in) { *s << in; }
- void toStream(std::ostream* s, double in) { *s << in; }
- void toStream(std::ostream* s, double long in) { *s << in; }
-
- void toStream(std::ostream* s, char in) { *s << in; }
- void toStream(std::ostream* s, char signed in) { *s << in; }
- void toStream(std::ostream* s, char unsigned in) { *s << in; }
- void toStream(std::ostream* s, int short in) { *s << in; }
- void toStream(std::ostream* s, int short unsigned in) { *s << in; }
- void toStream(std::ostream* s, int in) { *s << in; }
- void toStream(std::ostream* s, int unsigned in) { *s << in; }
- void toStream(std::ostream* s, int long in) { *s << in; }
- void toStream(std::ostream* s, int long unsigned in) { *s << in; }
- void toStream(std::ostream* s, int long long in) { *s << in; }
- void toStream(std::ostream* s, int long long unsigned in) { *s << in; }
-
DOCTEST_THREAD_LOCAL std::vector<IContextScope*> g_infoContexts; // for logging with INFO()
ContextScopeBase::ContextScopeBase() {
g_infoContexts.push_back(this);
}
- ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) {
+ ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) noexcept {
if (other.need_to_destroy) {
other.destroy();
}
@@ -4401,10 +4597,10 @@ namespace {
static LONG CALLBACK handleException(PEXCEPTION_POINTERS ExceptionInfo) {
// Multiple threads may enter this filter/handler at once. We want the error message to be printed on the
// console just once no matter how many threads have crashed.
- static std::mutex mutex;
+ DOCTEST_DECLARE_STATIC_MUTEX(mutex)
static bool execute = true;
{
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
if(execute) {
bool reported = false;
for(size_t i = 0; i < DOCTEST_COUNTOF(signalDefs); ++i) {
@@ -4577,7 +4773,7 @@ namespace {
sigStack.ss_flags = 0;
sigaltstack(&sigStack, &oldSigStack);
struct sigaction sa = {};
- sa.sa_handler = handleSignal; // NOLINT
+ sa.sa_handler = handleSignal;
sa.sa_flags = SA_ONSTACK;
for(std::size_t i = 0; i < DOCTEST_COUNTOF(signalDefs); ++i) {
sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
@@ -4616,7 +4812,7 @@ namespace {
#define DOCTEST_OUTPUT_DEBUG_STRING(text) ::OutputDebugStringA(text)
#else
// TODO: integration with XCode and other IDEs
-#define DOCTEST_OUTPUT_DEBUG_STRING(text) // NOLINT(clang-diagnostic-unused-macros)
+#define DOCTEST_OUTPUT_DEBUG_STRING(text)
#endif // Platform
void addAssert(assertType::Enum at) {
@@ -4635,8 +4831,8 @@ namespace {
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_exception, {message.c_str(), true});
- while(g_cs->subcasesStack.size()) {
- g_cs->subcasesStack.pop_back();
+ while (g_cs->subcaseStack.size()) {
+ g_cs->subcaseStack.pop_back();
DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_end, DOCTEST_EMPTY);
}
@@ -4648,25 +4844,26 @@ namespace {
}
#endif // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
} // namespace
-namespace detail {
- ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
- const char* exception_type, const char* exception_string) {
- m_test_case = g_cs->currentTest;
- m_at = at;
- m_file = file;
- m_line = line;
- m_expr = expr;
- m_failed = true;
- m_threw = false;
- m_threw_as = false;
- m_exception_type = exception_type;
- m_exception_string = exception_string;
+AssertData::AssertData(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const StringContains& exception_string)
+ : m_test_case(g_cs->currentTest), m_at(at), m_file(file), m_line(line), m_expr(expr),
+ m_failed(true), m_threw(false), m_threw_as(false), m_exception_type(exception_type),
+ m_exception_string(exception_string) {
#if DOCTEST_MSVC
- if(m_expr[0] == ' ') // this happens when variadic macros are disabled under MSVC
- ++m_expr;
+ if (m_expr[0] == ' ') // this happens when variadic macros are disabled under MSVC
+ ++m_expr;
#endif // MSVC
- }
+}
+
+namespace detail {
+ ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const String& exception_string)
+ : AssertData(at, file, line, expr, exception_type, exception_string) { }
+
+ ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const Contains& exception_string)
+ : AssertData(at, file, line, expr, exception_type, exception_string) { }
void ResultBuilder::setResult(const Result& res) {
m_decomp = res.m_decomp;
@@ -4682,11 +4879,11 @@ namespace detail {
if(m_at & assertType::is_throws) { //!OCLINT bitwise operator in conditional
m_failed = !m_threw;
} else if((m_at & assertType::is_throws_as) && (m_at & assertType::is_throws_with)) { //!OCLINT
- m_failed = !m_threw_as || (m_exception != m_exception_string);
+ m_failed = !m_threw_as || !m_exception_string.check(m_exception);
} else if(m_at & assertType::is_throws_as) { //!OCLINT bitwise operator in conditional
m_failed = !m_threw_as;
} else if(m_at & assertType::is_throws_with) { //!OCLINT bitwise operator in conditional
- m_failed = m_exception != m_exception_string;
+ m_failed = !m_exception_string.check(m_exception);
} else if(m_at & assertType::is_nothrow) { //!OCLINT bitwise operator in conditional
m_failed = m_threw;
}
@@ -4721,7 +4918,7 @@ namespace detail {
}
bool decomp_assert(assertType::Enum at, const char* file, int line, const char* expr,
- Result result) {
+ const Result& result) {
bool failed = !result.m_passed;
// ###################################################################################
@@ -4730,7 +4927,6 @@ namespace detail {
// ###################################################################################
DOCTEST_ASSERT_OUT_OF_TESTS(result.m_decomp);
DOCTEST_ASSERT_IN_TESTS(result.m_decomp);
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
return !failed;
}
@@ -4746,8 +4942,7 @@ namespace detail {
tlssPop();
}
- IExceptionTranslator::IExceptionTranslator() = default;
- IExceptionTranslator::~IExceptionTranslator() = default;
+ DOCTEST_DEFINE_INTERFACE(IExceptionTranslator)
bool MessageBuilder::log() {
if (!logged) {
@@ -4858,10 +5053,10 @@ namespace {
void ensureTagClosed();
- private:
-
void writeDeclaration();
+ private:
+
void newlineIfNecessary();
bool m_tagIsOpen = false;
@@ -5050,7 +5245,7 @@ namespace {
XmlWriter::XmlWriter( std::ostream& os ) : m_os( os )
{
- writeDeclaration();
+ // writeDeclaration(); // called explicitly by the reporters that use the writer class - see issue #627
}
XmlWriter::~XmlWriter() {
@@ -5161,8 +5356,8 @@ namespace {
struct XmlReporter : public IReporter
{
- XmlWriter xml;
- std::mutex mutex;
+ XmlWriter xml;
+ DOCTEST_DECLARE_MUTEX(mutex)
// caching pointers/references to objects of these types - safe to do
const ContextOptions& opt;
@@ -5256,6 +5451,8 @@ namespace {
}
void test_run_start() override {
+ xml.writeDeclaration();
+
// remove .exe extension - mainly to have the same output on UNIX and Windows
std::string binary_name = skipPathFromFilename(opt.binary_name.c_str());
#ifdef DOCTEST_PLATFORM_WINDOWS
@@ -5322,7 +5519,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.scopedElement("Exception")
.writeAttribute("crash", e.is_crash)
@@ -5343,7 +5540,7 @@ namespace {
if(!rb.m_failed && !opt.success)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.startElement("Expression")
.writeAttribute("success", !rb.m_failed)
@@ -5359,7 +5556,7 @@ namespace {
if(rb.m_at & assertType::is_throws_as)
xml.scopedElement("ExpectedException").writeText(rb.m_exception_type);
if(rb.m_at & assertType::is_throws_with)
- xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string);
+ xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string.c_str());
if((rb.m_at & assertType::is_normal) && !rb.m_threw)
xml.scopedElement("Expanded").writeText(rb.m_decomp.c_str());
@@ -5369,7 +5566,7 @@ namespace {
}
void log_message(const MessageData& mb) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.startElement("Message")
.writeAttribute("type", failureString(mb.m_severity))
@@ -5405,7 +5602,8 @@ namespace {
} else if((rb.m_at & assertType::is_throws_as) &&
(rb.m_at & assertType::is_throws_with)) { //!OCLINT
s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \""
- << rb.m_exception_string << "\", " << rb.m_exception_type << " ) " << Color::None;
+ << rb.m_exception_string.c_str()
+ << "\", " << rb.m_exception_type << " ) " << Color::None;
if(rb.m_threw) {
if(!rb.m_failed) {
s << "threw as expected!\n";
@@ -5426,7 +5624,8 @@ namespace {
} else if(rb.m_at &
assertType::is_throws_with) { //!OCLINT bitwise operator in conditional
s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \""
- << rb.m_exception_string << "\" ) " << Color::None
+ << rb.m_exception_string.c_str()
+ << "\" ) " << Color::None
<< (rb.m_threw ? (!rb.m_failed ? "threw as expected!" :
"threw a DIFFERENT exception: ") :
"did NOT throw at all!")
@@ -5451,8 +5650,8 @@ namespace {
// - more attributes in tags
struct JUnitReporter : public IReporter
{
- XmlWriter xml;
- std::mutex mutex;
+ XmlWriter xml;
+ DOCTEST_DECLARE_MUTEX(mutex)
Timer timer;
std::vector<String> deepestSubcaseStackNames;
@@ -5548,9 +5747,13 @@ namespace {
// WHAT FOLLOWS ARE OVERRIDES OF THE VIRTUAL METHODS OF THE REPORTER INTERFACE
// =========================================================================================
- void report_query(const QueryData&) override {}
+ void report_query(const QueryData&) override {
+ xml.writeDeclaration();
+ }
- void test_run_start() override {}
+ void test_run_start() override {
+ xml.writeDeclaration();
+ }
void test_run_end(const TestRunStats& p) override {
// remove .exe extension - mainly to have the same output on UNIX and Windows
@@ -5620,7 +5823,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
testCaseData.addError("exception", e.error_string.c_str());
}
@@ -5634,7 +5837,7 @@ namespace {
if(!rb.m_failed) // report only failures & ignore the `success` option
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
std::ostringstream os;
os << skipPathFromFilename(rb.m_file) << (opt.gnu_file_line ? ":" : "(")
@@ -5685,7 +5888,7 @@ namespace {
bool hasLoggedCurrentTestStart;
std::vector<SubcaseSignature> subcasesStack;
size_t currentSubcaseLevel;
- std::mutex mutex;
+ DOCTEST_DECLARE_MUTEX(mutex)
// caching pointers/references to objects of these types - safe to do
const ContextOptions& opt;
@@ -6031,7 +6234,7 @@ namespace {
// log the preamble of the test case only if there is something
// else to print - something other than that an assert has failed
if(opt.duration ||
- (st.failure_flags && st.failure_flags != TestCaseFailureReason::AssertFailure))
+ (st.failure_flags && st.failure_flags != static_cast<int>(TestCaseFailureReason::AssertFailure)))
logTestStart();
if(opt.duration)
@@ -6062,7 +6265,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
if(tc->m_no_output)
return;
@@ -6101,7 +6304,7 @@ namespace {
if((!rb.m_failed && !opt.success) || tc->m_no_output)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
logTestStart();
@@ -6117,7 +6320,7 @@ namespace {
if(tc->m_no_output)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
logTestStart();
@@ -6245,8 +6448,8 @@ namespace {
char character = *current++;
if(seenBackslash) {
seenBackslash = false;
- if(character == ',') {
- s.put(',');
+ if(character == ',' || character == '\\') {
+ s.put(character);
continue;
}
s.put('\\');
@@ -6282,30 +6485,30 @@ namespace {
if(!parseOption(argc, argv, pattern, &parsedValue))
return false;
- if(type == 0) {
+ if(type) {
+ // integer
+ // TODO: change this to use std::stoi or something else! currently it uses undefined behavior - assumes '0' on failed parse...
+ int theInt = std::atoi(parsedValue.c_str());
+ if (theInt != 0) {
+ res = theInt; //!OCLINT parameter reassignment
+ return true;
+ }
+ } else {
// boolean
- const char positive[][5] = {"1", "true", "on", "yes"}; // 5 - strlen("true") + 1
- const char negative[][6] = {"0", "false", "off", "no"}; // 6 - strlen("false") + 1
+ const char positive[][5] = { "1", "true", "on", "yes" }; // 5 - strlen("true") + 1
+ const char negative[][6] = { "0", "false", "off", "no" }; // 6 - strlen("false") + 1
// if the value matches any of the positive/negative possibilities
- for(unsigned i = 0; i < 4; i++) {
- if(parsedValue.compare(positive[i], true) == 0) {
+ for (unsigned i = 0; i < 4; i++) {
+ if (parsedValue.compare(positive[i], true) == 0) {
res = 1; //!OCLINT parameter reassignment
return true;
}
- if(parsedValue.compare(negative[i], true) == 0) {
+ if (parsedValue.compare(negative[i], true) == 0) {
res = 0; //!OCLINT parameter reassignment
return true;
}
}
- } else {
- // integer
- // TODO: change this to use std::stoi or something else! currently it uses undefined behavior - assumes '0' on failed parse...
- int theInt = std::atoi(parsedValue.c_str()); // NOLINT
- if(theInt != 0) {
- res = theInt; //!OCLINT parameter reassignment
- return true;
- }
}
return false;
}
@@ -6473,7 +6676,6 @@ void Context::setOption(const char* option, bool value) {
// allows the user to override procedurally the int options from the command line
void Context::setOption(const char* option, int value) {
setOption(option, toString(value).c_str());
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
}
// allows the user to override procedurally the string options from the command line
@@ -6611,7 +6813,7 @@ int Context::run() {
// random_shuffle implementation
const auto first = &testArray[0];
for(size_t i = testArray.size() - 1; i > 0; --i) {
- int idxToSwap = std::rand() % (i + 1); // NOLINT
+ int idxToSwap = std::rand() % (i + 1);
const auto temp = first[i];
@@ -6698,7 +6900,7 @@ int Context::run() {
p->numAssertsFailedCurrentTest_atomic = 0;
p->numAssertsCurrentTest_atomic = 0;
- p->subcasesPassed.clear();
+ p->fullyTraversedSubcases.clear();
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_start, tc);
@@ -6708,9 +6910,10 @@ int Context::run() {
do {
// reset some of the fields for subcases (except for the set of fully passed ones)
- p->should_reenter = false;
- p->subcasesCurrentMaxLevel = 0;
- p->subcasesStack.clear();
+ p->reachedLeaf = false;
+ // May not be empty if previous subcase exited via exception.
+ p->subcaseStack.clear();
+ p->currentSubcaseDepth = 0;
p->shouldLogCurrentException = true;
@@ -6744,9 +6947,9 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
p->failure_flags |= TestCaseFailureReason::TooManyFailedAsserts;
}
- if(p->should_reenter && run_test)
+ if(!p->nextSubcaseStack.empty() && run_test)
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_reenter, tc);
- if(!p->should_reenter)
+ if(p->nextSubcaseStack.empty())
run_test = false;
} while(run_test);
@@ -6775,7 +6978,7 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
return cleanup_and_return();
}
-IReporter::~IReporter() = default;
+DOCTEST_DEFINE_INTERFACE(IReporter)
int IReporter::get_num_active_contexts() { return detail::g_infoContexts.size(); }
const IContextScope* const* IReporter::get_active_contexts() {