summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/config/project_settings.cpp5
-rw-r--r--core/config/project_settings.h2
-rw-r--r--core/core_constants.cpp237
-rw-r--r--core/core_constants.h5
-rw-r--r--core/input/input.cpp4
-rw-r--r--core/input/input_map.cpp4
-rw-r--r--core/io/resource.cpp19
-rw-r--r--core/math/bvh.h8
-rw-r--r--doc/classes/CodeEdit.xml4
-rw-r--r--doc/classes/CodeHighlighter.xml2
-rw-r--r--doc/classes/Control.xml1
-rw-r--r--doc/classes/DisplayServer.xml3
-rw-r--r--doc/classes/EditorSettings.xml2
-rw-r--r--doc/classes/FileAccess.xml2
-rw-r--r--doc/classes/Light2D.xml2
-rw-r--r--doc/classes/MenuBar.xml2
-rw-r--r--doc/classes/Node2D.xml1
-rw-r--r--doc/classes/Node3D.xml1
-rw-r--r--doc/classes/PackedByteArray.xml4
-rw-r--r--doc/classes/ProjectSettings.xml3
-rw-r--r--doc/classes/StyleBoxFlat.xml2
-rw-r--r--doc/classes/StyleBoxTexture.xml2
-rw-r--r--doc/classes/TextServer.xml2
-rw-r--r--doc/classes/Time.xml2
-rw-r--r--doc/translations/es.po930
-rw-r--r--doc/translations/fr.po425
-rw-r--r--doc/translations/zh_CN.po27209
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp5
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp20
-rw-r--r--drivers/gles3/rasterizer_gles3.h4
-rw-r--r--drivers/gles3/shaders/sky.glsl10
-rw-r--r--drivers/gles3/storage/material_storage.cpp3
-rw-r--r--editor/editor_build_profile.cpp5
-rw-r--r--editor/editor_file_dialog.cpp5
-rw-r--r--editor/editor_inspector.cpp3
-rw-r--r--editor/editor_node.cpp11
-rw-r--r--editor/editor_paths.cpp2
-rw-r--r--editor/editor_settings.cpp15
-rw-r--r--editor/editor_settings.h1
-rw-r--r--editor/inspector_dock.cpp2
-rw-r--r--editor/plugins/script_editor_plugin.cpp1
-rw-r--r--editor/plugins/script_text_editor.cpp1
-rw-r--r--editor/plugins/tiles/atlas_merging_dialog.cpp4
-rw-r--r--editor/project_manager.cpp14
-rw-r--r--editor/translations/editor/ar.po302
-rw-r--r--editor/translations/editor/bg.po719
-rw-r--r--editor/translations/editor/ca.po12
-rw-r--r--editor/translations/editor/cs.po302
-rw-r--r--editor/translations/editor/de.po5102
-rw-r--r--editor/translations/editor/el.po15
-rw-r--r--editor/translations/editor/eo.po23
-rw-r--r--editor/translations/editor/es.po830
-rw-r--r--editor/translations/editor/es_AR.po18
-rw-r--r--editor/translations/editor/fi.po18
-rw-r--r--editor/translations/editor/fr.po426
-rw-r--r--editor/translations/editor/gl.po9
-rw-r--r--editor/translations/editor/he.po15
-rw-r--r--editor/translations/editor/hu.po9
-rw-r--r--editor/translations/editor/id.po18
-rw-r--r--editor/translations/editor/it.po5430
-rw-r--r--editor/translations/editor/ja.po263
-rw-r--r--editor/translations/editor/ko.po18
-rw-r--r--editor/translations/editor/lv.po15
-rw-r--r--editor/translations/editor/ms.po12
-rw-r--r--editor/translations/editor/nb.po9
-rw-r--r--editor/translations/editor/nl.po242
-rw-r--r--editor/translations/editor/pl.po985
-rw-r--r--editor/translations/editor/pt.po99
-rw-r--r--editor/translations/editor/pt_BR.po1298
-rw-r--r--editor/translations/editor/ro.po12
-rw-r--r--editor/translations/editor/ru.po1104
-rw-r--r--editor/translations/editor/sk.po9
-rw-r--r--editor/translations/editor/sv.po21
-rw-r--r--editor/translations/editor/th.po28
-rw-r--r--editor/translations/editor/tr.po86
-rw-r--r--editor/translations/editor/uk.po157
-rw-r--r--editor/translations/editor/vi.po15
-rw-r--r--editor/translations/editor/zh_CN.po401
-rw-r--r--editor/translations/editor/zh_TW.po649
-rw-r--r--editor/translations/properties/de.po281
-rw-r--r--editor/translations/properties/es.po317
-rw-r--r--editor/translations/properties/fr.po156
-rw-r--r--editor/translations/properties/it.po198
-rw-r--r--editor/translations/properties/ja.po96
-rw-r--r--editor/translations/properties/ko.po72
-rw-r--r--editor/translations/properties/pl.po248
-rw-r--r--editor/translations/properties/pt.po93
-rw-r--r--editor/translations/properties/pt_BR.po106
-rw-r--r--editor/translations/properties/ru.po120
-rw-r--r--editor/translations/properties/uk.po130
-rw-r--r--editor/translations/properties/zh_CN.po1201
-rw-r--r--editor/translations/properties/zh_TW.po101
-rw-r--r--modules/gdscript/doc_classes/@GDScript.xml7
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp221
-rw-r--r--modules/gdscript/gdscript_analyzer.h3
-rw-r--r--modules/gdscript/gdscript_byte_codegen.cpp50
-rw-r--r--modules/gdscript/gdscript_byte_codegen.h3
-rw-r--r--modules/gdscript/gdscript_codegen.h3
-rw-r--r--modules/gdscript/gdscript_compiler.cpp60
-rw-r--r--modules/gdscript/gdscript_disassembler.cpp49
-rw-r--r--modules/gdscript/gdscript_editor.cpp53
-rw-r--r--modules/gdscript/gdscript_function.h16
-rw-r--r--modules/gdscript/gdscript_parser.cpp33
-rw-r--r--modules/gdscript/gdscript_parser.h19
-rw-r--r--modules/gdscript/gdscript_utility_functions.cpp77
-rw-r--r--modules/gdscript/gdscript_vm.cpp134
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_bad_value.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_assign_with_wrong_enum_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_init_with_wrong_enum_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_function_parameter_wrong_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_function_return_wrong_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_outer_with_wrong_enum_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_with_wrong_enum_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_init_with_wrong_enum_type.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_native_bad_value.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_preload_unnamed_assign_to_named.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/enum_unnamed_assign_to_named.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/errors/preload_enum_error.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/global_enums.gd30
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/global_enums.out9
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/type_test_usage.gd127
-rw-r--r--modules/gdscript/tests/scripts/analyzer/features/type_test_usage.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_enum.out2
-rw-r--r--modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_int.out2
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd16
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/const_class_reference.out1
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd2
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.gd27
-rw-r--r--modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.out3
-rw-r--r--modules/gltf/doc_classes/GLTFNode.xml2
-rw-r--r--modules/gltf/editor/editor_scene_importer_fbx.cpp2
-rw-r--r--modules/gltf/structures/gltf_node.cpp11
-rw-r--r--modules/gltf/structures/gltf_node.h3
-rw-r--r--modules/mono/csharp_script.cpp1
-rw-r--r--modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml5
-rw-r--r--modules/multiplayer/multiplayer_synchronizer.cpp1
-rw-r--r--modules/multiplayer/scene_replication_interface.cpp1
-rw-r--r--platform/linuxbsd/tts_linux.cpp135
-rw-r--r--platform/linuxbsd/tts_linux.h8
-rw-r--r--platform/macos/display_server_macos.mm2
-rw-r--r--scene/3d/soft_body_3d.cpp14
-rw-r--r--scene/3d/soft_body_3d.h2
-rw-r--r--scene/gui/code_edit.cpp2
-rw-r--r--servers/physics_3d/godot_body_pair_3d.cpp80
-rw-r--r--servers/rendering/renderer_compositor.cpp4
-rw-r--r--servers/rendering/renderer_compositor.h2
-rw-r--r--servers/rendering/renderer_rd/effects/copy_effects.cpp4
-rw-r--r--servers/rendering/renderer_rd/effects/tone_mapper.cpp2
-rw-r--r--servers/rendering/renderer_rd/effects/vrs.cpp2
-rw-r--r--servers/rendering/renderer_rd/environment/sky.cpp4
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp4
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp4
-rw-r--r--servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp5
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.h3
-rw-r--r--servers/rendering/renderer_rd/storage_rd/particles_storage.cpp10
-rw-r--r--servers/rendering/renderer_viewport.cpp2
-rw-r--r--servers/rendering/shader_language.cpp19
-rw-r--r--servers/rendering/shader_language.h2
-rw-r--r--tests/core/test_time.h4
159 files changed, 47298 insertions, 4794 deletions
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index f0de22f2ef..56e9057a2a 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -656,6 +656,7 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
Compression::gzip_level = GLOBAL_GET("compression/formats/gzip/compression_level");
+ project_loaded = err == OK;
return err;
}
@@ -1106,6 +1107,10 @@ bool ProjectSettings::is_using_datapack() const {
return using_datapack;
}
+bool ProjectSettings::is_project_loaded() const {
+ return project_loaded;
+}
+
bool ProjectSettings::_property_can_revert(const StringName &p_name) const {
if (!props.has(p_name)) {
return false;
diff --git a/core/config/project_settings.h b/core/config/project_settings.h
index 50cb274831..a0249ef267 100644
--- a/core/config/project_settings.h
+++ b/core/config/project_settings.h
@@ -95,6 +95,7 @@ protected:
String resource_path;
HashMap<StringName, PropertyInfo> custom_prop_info;
bool using_datapack = false;
+ bool project_loaded = false;
List<String> input_presets;
HashSet<String> custom_features;
@@ -190,6 +191,7 @@ public:
Variant get_setting_with_override(const StringName &p_name) const;
bool is_using_datapack() const;
+ bool is_project_loaded() const;
bool has_custom_feature(const String &p_feature) const;
diff --git a/core/core_constants.cpp b/core/core_constants.cpp
index b1f56539e5..d88dda6609 100644
--- a/core/core_constants.cpp
+++ b/core/core_constants.cpp
@@ -33,14 +33,15 @@
#include "core/input/input_event.h"
#include "core/object/class_db.h"
#include "core/os/keyboard.h"
+#include "core/templates/hash_set.h"
#include "core/variant/variant.h"
struct _CoreConstant {
#ifdef DEBUG_METHODS_ENABLED
- StringName enum_name;
bool ignore_value_in_docs = false;
bool is_bitfield = false;
#endif
+ StringName enum_name;
const char *name = nullptr;
int64_t value = 0;
@@ -48,14 +49,15 @@ struct _CoreConstant {
#ifdef DEBUG_METHODS_ENABLED
_CoreConstant(const StringName &p_enum_name, const char *p_name, int64_t p_value, bool p_ignore_value_in_docs = false, bool p_is_bitfield = false) :
- enum_name(p_enum_name),
ignore_value_in_docs(p_ignore_value_in_docs),
is_bitfield(p_is_bitfield),
+ enum_name(p_enum_name),
name(p_name),
value(p_value) {
}
#else
- _CoreConstant(const char *p_name, int64_t p_value) :
+ _CoreConstant(const StringName &p_enum_name, const char *p_name, int64_t p_value) :
+ enum_name(p_enum_name),
name(p_name),
value(p_value) {
}
@@ -63,84 +65,190 @@ struct _CoreConstant {
};
static Vector<_CoreConstant> _global_constants;
+static HashMap<StringName, int> _global_constants_map;
+static HashMap<StringName, Vector<_CoreConstant>> _global_enums;
#ifdef DEBUG_METHODS_ENABLED
-#define BIND_CORE_CONSTANT(m_constant) \
- _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant));
+#define BIND_CORE_CONSTANT(m_constant) \
+ _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1;
-#define BIND_CORE_ENUM_CONSTANT(m_constant) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_constant, #m_constant), #m_constant, m_constant));
+#define BIND_CORE_ENUM_CONSTANT(m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_FLAG(m_constant) \
- _global_constants.push_back(_CoreConstant(__constant_get_bitfield_name(m_constant, #m_constant), #m_constant, m_constant, false, true));
+#define BIND_CORE_BITFIELD_FLAG(m_constant) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant, false, true)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
// 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, (int64_t)m_enum::m_member));
+#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_CLASS_FLAG(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_bitfield_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int64_t)m_enum::m_member, false, true));
+#define BIND_CORE_BITFIELD_CLASS_FLAG(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member, false, true)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#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, (int64_t)m_enum::m_member));
+#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_name); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_name, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_bitfield_name(m_enum::m_member, #m_name), #m_name, (int64_t)m_enum::m_member, false, true));
+#define BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(m_enum, m_name, m_member) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_enum::m_member, #m_name); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_name, (int64_t)m_enum::m_member, false, true)); \
+ _global_constants_map[#m_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#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, (int64_t)m_enum::m_member, true));
+#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member, true)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#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));
+#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, m_custom_name, m_constant)); \
+ _global_constants_map[m_custom_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_CONSTANT_NO_VAL(m_constant) \
- _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant, true));
+#define BIND_CORE_CONSTANT_NO_VAL(m_constant) \
+ _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant, true)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1;
-#define BIND_CORE_ENUM_CONSTANT_NO_VAL(m_constant) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_constant, #m_constant), #m_constant, m_constant, true));
+#define BIND_CORE_ENUM_CONSTANT_NO_VAL(m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant, true)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_ENUM_CONSTANT_CUSTOM_NO_VAL(m_custom_name, m_constant) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_constant, #m_constant), m_custom_name, m_constant, true));
+#define BIND_CORE_ENUM_CONSTANT_CUSTOM_NO_VAL(m_custom_name, m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, m_custom_name, m_constant, true)); \
+ _global_constants_map[m_custom_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
#else
-#define BIND_CORE_CONSTANT(m_constant) \
- _global_constants.push_back(_CoreConstant(#m_constant, m_constant));
+#define BIND_CORE_CONSTANT(m_constant) \
+ _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1;
-#define BIND_CORE_ENUM_CONSTANT(m_constant) \
- _global_constants.push_back(_CoreConstant(#m_constant, m_constant));
+#define BIND_CORE_ENUM_CONSTANT(m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_FLAG(m_constant) \
- _global_constants.push_back(_CoreConstant(#m_constant, m_constant));
+#define BIND_CORE_BITFIELD_FLAG(m_constant) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
// 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, (int64_t)m_enum::m_member));
+#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_CLASS_FLAG(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
+#define BIND_CORE_BITFIELD_CLASS_FLAG(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(#m_name, (int64_t)m_enum::m_member));
+#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_name); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_name, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(#m_name, (int64_t)m_enum::m_member));
+#define BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(m_enum, m_name, m_member) \
+ { \
+ StringName enum_name = __constant_get_bitfield_name(m_enum::m_member, #m_name); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_name, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
+#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_prefix "_" #m_member, (int64_t)m_enum::m_member)); \
+ _global_constants_map[#m_prefix "_" #m_member] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
- _global_constants.push_back(_CoreConstant(m_custom_name, m_constant));
+#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, m_custom_name, m_constant)); \
+ _global_constants_map[m_custom_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_CONSTANT_NO_VAL(m_constant) \
- _global_constants.push_back(_CoreConstant(#m_constant, m_constant));
+#define BIND_CORE_CONSTANT_NO_VAL(m_constant) \
+ _global_constants.push_back(_CoreConstant(StringName(), #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1;
-#define BIND_CORE_ENUM_CONSTANT_NO_VAL(m_constant) \
- _global_constants.push_back(_CoreConstant(#m_constant, m_constant));
+#define BIND_CORE_ENUM_CONSTANT_NO_VAL(m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, #m_constant, m_constant)); \
+ _global_constants_map[#m_constant] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
-#define BIND_CORE_ENUM_CONSTANT_CUSTOM_NO_VAL(m_custom_name, m_constant) \
- _global_constants.push_back(_CoreConstant(m_custom_name, m_constant));
+#define BIND_CORE_ENUM_CONSTANT_CUSTOM_NO_VAL(m_custom_name, m_constant) \
+ { \
+ StringName enum_name = __constant_get_enum_name(m_constant, #m_constant); \
+ _global_constants.push_back(_CoreConstant(enum_name, m_custom_name, m_constant)); \
+ _global_constants_map[m_custom_name] = _global_constants.size() - 1; \
+ _global_enums[enum_name].push_back((_global_constants.ptr())[_global_constants.size() - 1]); \
+ }
#endif
@@ -690,11 +798,11 @@ int CoreConstants::get_global_constant_count() {
return _global_constants.size();
}
-#ifdef DEBUG_METHODS_ENABLED
StringName CoreConstants::get_global_constant_enum(int p_idx) {
return _global_constants[p_idx].enum_name;
}
+#ifdef DEBUG_METHODS_ENABLED
bool CoreConstants::is_global_constant_bitfield(int p_idx) {
return _global_constants[p_idx].is_bitfield;
}
@@ -703,10 +811,6 @@ bool CoreConstants::get_ignore_value_in_docs(int p_idx) {
return _global_constants[p_idx].ignore_value_in_docs;
}
#else
-StringName CoreConstants::get_global_constant_enum(int p_idx) {
- return StringName();
-}
-
bool CoreConstants::is_global_constant_bitfield(int p_idx) {
return false;
}
@@ -723,3 +827,24 @@ const char *CoreConstants::get_global_constant_name(int p_idx) {
int64_t CoreConstants::get_global_constant_value(int p_idx) {
return _global_constants[p_idx].value;
}
+
+bool CoreConstants::is_global_constant(const StringName &p_name) {
+ return _global_constants_map.has(p_name);
+}
+
+int CoreConstants::get_global_constant_index(const StringName &p_name) {
+ ERR_FAIL_COND_V_MSG(!_global_constants_map.has(p_name), -1, "Trying to get index of non-existing constant.");
+ return _global_constants_map[p_name];
+}
+
+bool CoreConstants::is_global_enum(const StringName &p_enum) {
+ return _global_enums.has(p_enum);
+}
+
+void CoreConstants::get_enum_values(StringName p_enum, HashMap<StringName, int64_t> *p_values) {
+ ERR_FAIL_NULL_MSG(p_values, "Trying to get enum values with null map.");
+ ERR_FAIL_COND_MSG(!_global_enums.has(p_enum), "Trying to get values of non-existing enum.");
+ for (const _CoreConstant &constant : _global_enums[p_enum]) {
+ (*p_values)[constant.name] = constant.value;
+ }
+}
diff --git a/core/core_constants.h b/core/core_constants.h
index 5a5cd4394c..51842490c8 100644
--- a/core/core_constants.h
+++ b/core/core_constants.h
@@ -32,6 +32,7 @@
#define CORE_CONSTANTS_H
#include "core/string/string_name.h"
+#include "core/templates/hash_set.h"
class CoreConstants {
public:
@@ -41,6 +42,10 @@ public:
static bool get_ignore_value_in_docs(int p_idx);
static const char *get_global_constant_name(int p_idx);
static int64_t get_global_constant_value(int p_idx);
+ static bool is_global_constant(const StringName &p_name);
+ static int get_global_constant_index(const StringName &p_name);
+ static bool is_global_enum(const StringName &p_enum);
+ static void get_enum_values(StringName p_enum, HashMap<StringName, int64_t> *p_values);
};
#endif // CORE_CONSTANTS_H
diff --git a/core/input/input.cpp b/core/input/input.cpp
index b2164b8e76..e74523e059 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -352,8 +352,8 @@ float Input::get_axis(const StringName &p_negative_action, const StringName &p_p
Vector2 Input::get_vector(const StringName &p_negative_x, const StringName &p_positive_x, const StringName &p_negative_y, const StringName &p_positive_y, float p_deadzone) const {
Vector2 vector = Vector2(
- get_action_strength(p_positive_x) - get_action_strength(p_negative_x),
- get_action_strength(p_positive_y) - get_action_strength(p_negative_y));
+ get_action_raw_strength(p_positive_x) - get_action_raw_strength(p_negative_x),
+ get_action_raw_strength(p_positive_y) - get_action_raw_strength(p_negative_y));
if (p_deadzone < 0.0f) {
// If the deadzone isn't specified, get it from the average of the actions.
diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp
index b2e6b57eb6..910778324c 100644
--- a/core/input/input_map.cpp
+++ b/core/input/input_map.cpp
@@ -669,6 +669,10 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
default_builtin_cache.insert("ui_text_select_word_under_caret", inputs);
inputs = List<Ref<InputEvent>>();
+ inputs.push_back(InputEventKey::create_reference(Key::G | KeyModifierMask::CTRL | KeyModifierMask::META));
+ default_builtin_cache.insert("ui_text_select_word_under_caret.macos", inputs);
+
+ inputs = List<Ref<InputEvent>>();
inputs.push_back(InputEventKey::create_reference(Key::D | KeyModifierMask::CMD_OR_CTRL));
default_builtin_cache.insert("ui_text_add_selection_for_next_occurrence", inputs);
diff --git a/core/io/resource.cpp b/core/io/resource.cpp
index 4abcbffb61..6b8ec8d5f6 100644
--- a/core/io/resource.cpp
+++ b/core/io/resource.cpp
@@ -542,9 +542,26 @@ Ref<Resource> ResourceCache::get_ref(const String &p_path) {
void ResourceCache::get_cached_resources(List<Ref<Resource>> *p_resources) {
lock.lock();
+
+ LocalVector<String> to_remove;
+
for (KeyValue<String, Resource *> &E : resources) {
- p_resources->push_back(Ref<Resource>(E.value));
+ Ref<Resource> ref = Ref<Resource>(E.value);
+
+ if (!ref.is_valid()) {
+ // This resource is in the process of being deleted, ignore its existence
+ E.value->path_cache = String();
+ to_remove.push_back(E.key);
+ continue;
+ }
+
+ p_resources->push_back(ref);
+ }
+
+ for (const String &E : to_remove) {
+ resources.erase(E);
}
+
lock.unlock();
}
diff --git a/core/math/bvh.h b/core/math/bvh.h
index ea8289607e..8fbbd8e7fd 100644
--- a/core/math/bvh.h
+++ b/core/math/bvh.h
@@ -55,7 +55,7 @@
#include "core/os/mutex.h"
#define BVHTREE_CLASS BVH_Tree<T, NUM_TREES, 2, MAX_ITEMS, USER_PAIR_TEST_FUNCTION, USER_CULL_TEST_FUNCTION, USE_PAIRS, BOUNDS, POINT>
-#define BVH_LOCKED_FUNCTION BVHLockedFunction(&_mutex, BVH_THREAD_SAFE &&_thread_safe);
+#define BVH_LOCKED_FUNCTION BVHLockedFunction _lock_guard(&_mutex, BVH_THREAD_SAFE &&_thread_safe);
template <class T, int NUM_TREES = 1, bool USE_PAIRS = false, int MAX_ITEMS = 32, class USER_PAIR_TEST_FUNCTION = BVH_DummyPairTestFunction<T>, class USER_CULL_TEST_FUNCTION = BVH_DummyCullTestFunction<T>, class BOUNDS = AABB, class POINT = Vector3, bool BVH_THREAD_SAFE = true>
class BVH_Manager {
@@ -779,11 +779,7 @@ private:
// will be compiled out if not set in template
if (p_thread_safe) {
_mutex = p_mutex;
-
- if (!_mutex->try_lock()) {
- WARN_PRINT("Info : multithread BVH access detected (benign)");
- _mutex->lock();
- }
+ _mutex->lock();
} else {
_mutex = nullptr;
diff --git a/doc/classes/CodeEdit.xml b/doc/classes/CodeEdit.xml
index 1bc214aea7..65a6668f43 100644
--- a/doc/classes/CodeEdit.xml
+++ b/doc/classes/CodeEdit.xml
@@ -62,7 +62,7 @@
<description>
Adds a comment delimiter.
Both the start and end keys must be symbols. Only the start key has to be unique.
- Line only denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
+ [param line_only] denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
</description>
</method>
<method name="add_string_delimiter">
@@ -73,7 +73,7 @@
<description>
Adds a string delimiter.
Both the start and end keys must be symbols. Only the start key has to be unique.
- Line only denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
+ [param line_only] denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
</description>
</method>
<method name="can_fold_line" qualifiers="const">
diff --git a/doc/classes/CodeHighlighter.xml b/doc/classes/CodeHighlighter.xml
index fd1f595fc6..eedd4c1769 100644
--- a/doc/classes/CodeHighlighter.xml
+++ b/doc/classes/CodeHighlighter.xml
@@ -18,7 +18,7 @@
<description>
Adds a color region such as comments or strings.
Both the start and end keys must be symbols. Only the start key has to be unique.
- Line only denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
+ [param line_only] denotes if the region should continue until the end of the line or carry over on to the next line. If the end key is blank this is automatically set to [code]true[/code].
</description>
</method>
<method name="add_keyword_color">
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index f45ddf2738..5693876194 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -1001,6 +1001,7 @@
</member>
<member name="rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0">
The node's rotation around its pivot, in radians. See [member pivot_offset] to change the pivot's position.
+ [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees].
</member>
<member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees">
Helper property to access [member rotation] in degrees instead of radians.
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index 122db7e668..5f25bd8925 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -991,6 +991,7 @@
- [code]name[/code] is voice name.
- [code]id[/code] is voice identifier.
- [code]language[/code] is language code in [code]lang_Variant[/code] format. [code]lang[/code] part is a 2 or 3-letter code based on the ISO-639 standard, in lowercase. And [code]Variant[/code] part is an engine dependent string describing country, region or/and dialect.
+ Note that Godot depends on system libraries for text-to-speech functionality. These libraries are installed by default on Windows and MacOS, but not on all Linux distributions. If they are not present, this method will return an empty list. This applies to both Godot users on Linux, as well as end-users on Linux running Godot games that use text-to-speech.
[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), macOS, and Windows.
</description>
</method>
@@ -1677,7 +1678,7 @@
Minimized window mode, i.e. [Window] is not visible and available on window manager's window list. Normally happens when the minimize button is pressed.
</constant>
<constant name="WINDOW_MODE_MAXIMIZED" value="2" enum="WindowMode">
- Maximized window mode, i.e. [Window] will occupy whole screen area except task bar and still display its borders. Normally happens when the minimize button is pressed.
+ Maximized window mode, i.e. [Window] will occupy whole screen area except task bar and still display its borders. Normally happens when the maximize button is pressed.
</constant>
<constant name="WINDOW_MODE_FULLSCREEN" value="3" enum="WindowMode">
Full screen mode with full multi-window support.
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 1bf8cbf175..70ea69a336 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -196,7 +196,7 @@
The thumbnail size to use in the FileSystem dock (in pixels). See also [member filesystem/file_dialog/thumbnail_size].
</member>
<member name="docks/property_editor/auto_refresh_interval" type="float" setter="" getter="">
- The refresh interval to use for the Inspector dock's properties. The effect of this setting is mainly noticeable when adjusting gizmos in the 2D/3D editor and looking at the inspector at the same time. Lower values make the inspector more often, but take up more CPU time.
+ The refresh interval to use for the Inspector dock's properties. The effect of this setting is mainly noticeable when adjusting gizmos in the 2D/3D editor and looking at the inspector at the same time. Lower values make the inspector refresh more often, but take up more CPU time.
</member>
<member name="docks/property_editor/subresource_hue_tint" type="float" setter="" getter="">
The tint intensity to use for the subresources background in the Inspector dock. The tint is used to distinguish between different subresources in the inspector. Higher values result in a more noticeable background color difference.
diff --git a/doc/classes/FileAccess.xml b/doc/classes/FileAccess.xml
index 526f7c22e6..c85bde681f 100644
--- a/doc/classes/FileAccess.xml
+++ b/doc/classes/FileAccess.xml
@@ -55,7 +55,7 @@
<method name="close">
<return type="void" />
<description>
- Closes the currently opened file and prevents subsequent read/write operations. Use flush to persist the data to disk without closing the file.
+ Closes the currently opened file and prevents subsequent read/write operations. Use [method flush] to persist the data to disk without closing the file.
[b]Note:[/b] [FileAccess] will automatically close when it's freed, which happens when it goes out of scope or when it gets assigned with [code]null[/code]. In C# the reference must be disposed after we are done using it, this can be done with the [code]using[/code] statement or calling the [code]Dispose[/code] method directly.
</description>
</method>
diff --git a/doc/classes/Light2D.xml b/doc/classes/Light2D.xml
index 9f1b1af60d..4481131f81 100644
--- a/doc/classes/Light2D.xml
+++ b/doc/classes/Light2D.xml
@@ -80,7 +80,7 @@
Percentage closer filtering (5 samples) applies to the shadow map. This is slower compared to hard shadow rendering. See [member shadow_filter].
</constant>
<constant name="SHADOW_FILTER_PCF13" value="2" enum="ShadowFilter">
- Percentage closer filtering (13 samples) applies to the shadow map. This is the slowest shadow filtereing mode, and should be used sparingly. See [member shadow_filter].
+ Percentage closer filtering (13 samples) applies to the shadow map. This is the slowest shadow filtering mode, and should be used sparingly. See [member shadow_filter].
</constant>
<constant name="BLEND_MODE_ADD" value="0" enum="BlendMode">
Adds the value of pixels corresponding to the Light2D to the values of pixels under it. This is the common behavior of a light.
diff --git a/doc/classes/MenuBar.xml b/doc/classes/MenuBar.xml
index 79876e56a3..fac5eae98c 100644
--- a/doc/classes/MenuBar.xml
+++ b/doc/classes/MenuBar.xml
@@ -4,7 +4,7 @@
A horizontal menu bar, which displays [PopupMenu]s or system global menu.
</brief_description>
<description>
- New items can be created by adding [PopupMenu] nodes to his node.
+ New items can be created by adding [PopupMenu] nodes to this node.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index 9d224f09b1..3b2c52c5bf 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -116,6 +116,7 @@
</member>
<member name="rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0">
Rotation in radians, relative to the node's parent.
+ [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees].
</member>
<member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees">
Helper property to access [member rotation] in degrees instead of radians.
diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml
index c199c1aae6..61e5c44251 100644
--- a/doc/classes/Node3D.xml
+++ b/doc/classes/Node3D.xml
@@ -289,6 +289,7 @@
<member name="rotation" type="Vector3" setter="set_rotation" getter="get_rotation" default="Vector3(0, 0, 0)">
Rotation part of the local transformation in radians, specified in terms of Euler angles. The angles construct a rotaton in the order specified by the [member rotation_order] property.
[b]Note:[/b] In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful.
+ [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees].
</member>
<member name="rotation_degrees" type="Vector3" setter="set_rotation_degrees" getter="get_rotation_degrees">
Helper property to access [member rotation] in degrees instead of radians.
diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml
index ccf012f82c..c079a70ae5 100644
--- a/doc/classes/PackedByteArray.xml
+++ b/doc/classes/PackedByteArray.xml
@@ -229,7 +229,7 @@
<param index="0" name="byte_offset" type="int" />
<param index="1" name="value" type="int" />
<description>
- Encodes a 32-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 2 bytes of space, starting at the offset.
+ Encodes a 32-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 4 bytes of space, starting at the offset.
</description>
</method>
<method name="encode_s64">
@@ -237,7 +237,7 @@
<param index="0" name="byte_offset" type="int" />
<param index="1" name="value" type="int" />
<description>
- Encodes a 64-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 2 bytes of space, starting at the offset.
+ Encodes a 64-bit signed integer number as bytes at the index of [param byte_offset] bytes. The array must have at least 8 bytes of space, starting at the offset.
</description>
</method>
<method name="encode_s8">
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 3177780a26..5f6a679b30 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -1112,6 +1112,9 @@
If no selection is currently active, selects the word currently under the caret in text fields. If a selection is currently active, deselects the current selection.
[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified.
</member>
+ <member name="input/ui_text_select_word_under_caret.macos" type="Dictionary" setter="" getter="">
+ macOS specific override for the shortcut to select the word currently under the caret.
+ </member>
<member name="input/ui_text_submit" type="Dictionary" setter="" getter="">
Default [InputEventAction] to submit a text field.
[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified.
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index d6900f935c..6bcc3c5ea6 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -94,7 +94,7 @@
<return type="void" />
<param index="0" name="size" type="float" />
<description>
- Sets the expand margin to [param size] pixels for all margins.
+ Sets the expand margin to [param size] pixels for all sides.
</description>
</method>
</methods>
diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml
index f2f6e59a9e..6a29bf38db 100644
--- a/doc/classes/StyleBoxTexture.xml
+++ b/doc/classes/StyleBoxTexture.xml
@@ -35,7 +35,7 @@
<return type="void" />
<param index="0" name="size" type="float" />
<description>
- Sets the expand margin to [param size] pixels for all margins.
+ Sets the expand margin to [param size] pixels for all sides.
</description>
</method>
<method name="set_texture_margin">
diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml
index 711fb89217..ad37cf5c86 100644
--- a/doc/classes/TextServer.xml
+++ b/doc/classes/TextServer.xml
@@ -12,7 +12,7 @@
<method name="create_font">
<return type="RID" />
<description>
- Creates new, empty font cache entry resource. To free the resulting resourec, use [method free_rid] method.
+ Creates new, empty font cache entry resource. To free the resulting resource, use [method free_rid] method.
</description>
</method>
<method name="create_shaped_text">
diff --git a/doc/classes/Time.xml b/doc/classes/Time.xml
index 1abe017a4d..ca2a6bec36 100644
--- a/doc/classes/Time.xml
+++ b/doc/classes/Time.xml
@@ -64,7 +64,7 @@
<return type="Dictionary" />
<param index="0" name="unix_time_val" type="int" />
<description>
- Converts the given Unix timestamp to a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], and [code]weekday[/code].
+ Converts the given Unix timestamp to a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code].
The returned Dictionary's values will be the same as the [method get_datetime_dict_from_system] if the Unix timestamp is the current time, with the exception of Daylight Savings Time as it cannot be determined from the epoch.
</description>
</method>
diff --git a/doc/translations/es.po b/doc/translations/es.po
index 66093519c4..9970d15c1c 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -1,6 +1,6 @@
# Spanish translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+# Copyright (c) 2014-present Godot Engine contributors.
+# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
# This file is distributed under the same license as the Godot source code.
#
# 44pes Games <44pes.games@gmail.com>, 2020.
@@ -43,12 +43,13 @@
# Alan Arrecis <alan.arrecis@gmail.com>, 2023.
# Fernando Sacó <saco.fernando@gmail.com>, 2023.
# Damien Monasterios <monasterio13septiembre@gmail.com>, 2023.
+# andres gallegos <andresgg.prog@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Damien Monasterios <monasterio13septiembre@gmail.com>\n"
+"PO-Revision-Date: 2023-02-18 04:11+0000\n"
+"Last-Translator: andres gallegos <andresgg.prog@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/es/>\n"
"Language: es\n"
@@ -163,37 +164,10 @@ msgstr ""
msgid "Built-in GDScript functions."
msgstr "Funciones GDScript integradas."
-msgid ""
-"A list of GDScript-specific utility functions accessed in any script.\n"
-"For the list of the global functions and constants see [@GlobalScope]."
-msgstr ""
-"Una lista de funciones de utilidad de script específico GD accedidas en "
-"cualquier script.\n"
-"Para la lista de funciones globales y constantes ver [@GlobalScope]."
-
msgid "GDScript exports"
msgstr "Exportaciones de Scripts GD"
msgid ""
-"Returns a [Color] constructed from red ([param r8]), green ([param g8]), "
-"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each "
-"divided by [code]255.0[/code] for their final value.\n"
-"[codeblock]\n"
-"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0)\n"
-"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n"
-"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n"
-"[/codeblock]"
-msgstr ""
-"Devuelve un [Color] construido desde rojo ([param r8]), verde ([param "
-"g8]), azul ([param b8]), y opcionalmente alfa ([param a8]) valores "
-"enteros, cada uno dividido por [code]255.0[/code] por su valor final.\n"
-"[codeblock]\n"
-"var red = Color8(255, 0, 0) # Igual que Color(1, 0, 0)\n"
-"var dark_blue = Color8(0, 0, 51) # Igual que Color(0, 0, 0.2).\n"
-"var my_color = Color8(306, 255, 0, 102) # Igual que Color(1.2, 1, 0, 0.4).\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -878,9 +852,6 @@ msgstr "Tecla modificar máscara."
msgid "Shift key mask."
msgstr "Tecla desplazamiento de la máscara."
-msgid "Ctrl key mask."
-msgstr "Tecla Control máscara."
-
msgid "Keypad key mask."
msgstr "Tecla máscara keypad."
@@ -890,12 +861,6 @@ msgstr "Tecla máscara intercambio grupo."
msgid "Middle mouse button."
msgstr "Botón central del ratón."
-msgid "Mouse wheel up."
-msgstr "Rueda de ratón arriba."
-
-msgid "Mouse wheel down."
-msgstr "Rueda de ratón abajo."
-
msgid "Mouse wheel left button (only present on some mice)."
msgstr ""
"Botón izquierdo de la rueda del ratón (sólo presente en algunos ratones)."
@@ -1409,9 +1374,6 @@ msgstr ""
msgid "Proxy texture for simple frame-based animations."
msgstr "Textura de conexión para animaciones simples basadas en fotogramas."
-msgid "Sets the currently visible frame of the texture."
-msgstr "Establece el fotograma actualmente visible de la textura."
-
msgid ""
"Number of frames to use in the animation. While you can create the frames "
"independently with [method set_frame_texture], you need to set this value "
@@ -1941,22 +1903,6 @@ msgstr "La conexion ya existe."
msgid "Plays an animation once in [AnimationNodeBlendTree]."
msgstr "Reproduce una animacion una vez en [AnimationNodeBlendTree]."
-msgid ""
-"A resource to add to an [AnimationNodeBlendTree]. This node will execute a "
-"sub-animation and return once it finishes. Blend times for fading in and out "
-"can be customized, as well as filters."
-msgstr ""
-"Un recurso para añadir a un [AnimationNodeBlendTree]. Este nodo ejecutara "
-"una subanimacion y devolvera cuando termine. Mezcla de tiempos para "
-"desvanecer y aparecer pueden ser personalizados, incluido filtros."
-
-msgid ""
-"If [code]true[/code], the sub-animation will restart automatically after "
-"finishing."
-msgstr ""
-"Si [code]true[/code], las subanimaciones se reiniciaran automaticamente "
-"despues de acabar."
-
msgid "The delay after which the automatic restart is triggered, in seconds."
msgstr "El retardo con el cual un reinicio automatico es lanzado, en segundos."
@@ -2038,10 +1984,6 @@ msgstr ""
msgid "Playback control for [AnimationNodeStateMachine]."
msgstr "Control de reproduccion para el [AnimationNodeStateMachine]."
-msgid "Returns the currently playing animation state."
-msgstr ""
-"Devuelve el estado de la animacion que se esta reproduciendo actualmente."
-
msgid ""
"Returns the current travel path as computed internally by the A* algorithm."
msgstr ""
@@ -2104,15 +2046,6 @@ msgid "A generic animation transition node for [AnimationTree]."
msgstr "Un nodo de transicion generica para [AnimationTree]."
msgid ""
-"Simple state machine for cases which don't require a more advanced "
-"[AnimationNodeStateMachine]. Animations can be connected to the inputs and "
-"transition times can be specified."
-msgstr ""
-"Simple estado de maquina para casos que no requieren un "
-"[AnimationNodeStateMachine]. Las animaciones pueden ser conectadas a las "
-"salidas y tiempos de transicion pueden ser especificados."
-
-msgid ""
"Cross-fading time (in seconds) between each animation connected to the "
"inputs."
msgstr ""
@@ -2491,13 +2424,6 @@ msgid "Returns the next available point ID with no point associated to it."
msgstr ""
"Devuelve el punto de Ide proximo disponible con ningun punto asociado a el."
-msgid ""
-"Returns the capacity of the structure backing the points, useful in "
-"conjunction with [code]reserve_space[/code]."
-msgstr ""
-"Devuelve la capacidad de la estructura que respalda los puntos, usado junto "
-"con [code]reserve_space[/code]."
-
msgid "Returns the number of points currently in the points pool."
msgstr "Devuelve el numero de puntos actualmente en el grupo(pool) de puntos."
@@ -2515,6 +2441,13 @@ msgstr ""
"Deshabilita o habilita el punto especificado para el buscador de rutas. Util "
"para crear obstaculos temporales."
+msgid ""
+"Returns the capacity of the structure backing the points, useful in "
+"conjunction with [code]reserve_space[/code]."
+msgstr ""
+"Devuelve la capacidad de la estructura que respalda los puntos, usado junto "
+"con [code]reserve_space[/code]."
+
msgid "Stores information about the audio buses."
msgstr "Almacena informacion sobre los buses de audio."
@@ -3718,9 +3651,6 @@ msgstr ""
"Si [code]true[/code], el objeto se renderiza con el mismo tamaño "
"independientemente de la distancia."
-msgid "Grows object vertices in the direction of their normals."
-msgstr "Crecen los vértices de los objetos en la dirección de sus normales."
-
msgid ""
"A high value makes the material appear more like a metal. Non-metals use "
"their albedo as the diffuse color and add diffuse to the specular "
@@ -3769,9 +3699,6 @@ msgstr ""
"Si [code]true[/code], la prueba de profundidad está desactivada y el objeto "
"se dibujará en orden de renderización."
-msgid "If [code]true[/code], normal mapping is enabled."
-msgstr "Si [code]true[/code], se habilita el mapeado normal."
-
msgid "The strength of the normal map's effect."
msgstr "La fuerza del efecto del mapa normal."
@@ -4017,9 +3944,6 @@ msgstr "El color del objeto se resta del fondo."
msgid "The color of the object is multiplied by the background."
msgstr "El color del objeto se multiplica por el fondo."
-msgid "No culling is performed."
-msgstr "No se realiza ningún descarte."
-
msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh."
msgstr ""
"Ponga [code]ALBEDO[/code] en el color por vértice especificado en la malla."
@@ -4100,9 +4024,6 @@ msgid "Toon blob which changes size based on roughness."
msgstr ""
"La mancha de un dibujo que cambia de tamaño en función de la rugosidad."
-msgid "No specular blob."
-msgstr "No hay manchas especulares."
-
msgid "Billboard mode is disabled."
msgstr "Modo Billboard esta desactivado."
@@ -4141,30 +4062,6 @@ msgstr ""
"Suavemente se desvanece el objeto en base a la distancia de cada píxel de la "
"cámara usando el canal alfa."
-msgid ""
-"Smoothly fades the object out based on each pixel's distance from the camera "
-"using a dither approach. Dithering discards pixels based on a set pattern to "
-"smoothly fade without enabling transparency. On certain hardware this can be "
-"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
-msgstr ""
-"Suavemente desvanece el objeto en base a la distancia de cada píxel de la "
-"cámara usando un enfoque de titubeo. Los píxeles descartados siguen un "
-"patrón establecido para desvanecerse suavemente sin permitir la "
-"transparencia. En cierto hardware esto puede ser más rápido que [constant "
-"DISTANCE_FADE_PIXEL_ALPHA]."
-
-msgid ""
-"Smoothly fades the object out based on the object's distance from the camera "
-"using a dither approach. Dithering discards pixels based on a set pattern to "
-"smoothly fade without enabling transparency. On certain hardware this can be "
-"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
-msgstr ""
-"Suavemente desvanece el objeto en base a la distancia de cada píxel de la "
-"cámara usando un enfoque de titubeo. Los píxeles descartados siguen un "
-"patrón establecido para desvanecerse suavemente sin permitir la "
-"transparencia. En cierto hardware esto puede ser más rápido que [constant "
-"DISTANCE_FADE_PIXEL_ALPHA]."
-
msgid "3×3 matrix datatype."
msgstr "Tipo de datos de matriz 3×3."
@@ -4751,13 +4648,6 @@ msgstr ""
"[MultiMeshInstance2D] para la documentación relacionada."
msgid ""
-"Sets a custom transform for drawing via components. Anything drawn "
-"afterwards will be transformed by this."
-msgstr ""
-"Establece una transformación personalizada para el dibujo a través de los "
-"componentes. Todo lo que se dibuje después será transformado por esto."
-
-msgid ""
"Sets a custom transform for drawing via matrix. Anything drawn afterwards "
"will be transformed by this."
msgstr ""
@@ -4958,11 +4848,6 @@ msgstr ""
"El nodo personalizado [Viewport] asignado al [CanvasLayer]. Si [code]null[/"
"code], utiliza en su lugar la vista por defecto."
-msgid "Layer index for draw order. Lower values are drawn first."
-msgstr ""
-"Ãndice de capas para el orden de dibujado. Los valores más bajos se dibujan "
-"primero."
-
msgid "The layer's base offset."
msgstr "El desplazamiento de la capa base."
@@ -8325,17 +8210,6 @@ msgstr ""
"es 1). Efectivo sólo si [code]adjustment_enabled[/code] es [code]true[/code]."
msgid ""
-"If [code]true[/code], enables the [code]adjustment_*[/code] properties "
-"provided by this resource. If [code]false[/code], modifications to the "
-"[code]adjustment_*[/code] properties will have no effect on the rendered "
-"scene."
-msgstr ""
-"Si [code]true[/code], activa las propiedades [code]adjustment_*[/code] "
-"proporcionadas por este recurso. Si [code]false[/code], las modificaciones "
-"de las propiedades de [code]adjustment_*[/code] no tendrán ningún efecto en "
-"la escena renderizada."
-
-msgid ""
"The global color saturation value of the rendered scene (default value is "
"1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]."
msgstr ""
@@ -11538,13 +11412,6 @@ msgstr ""
"puede ser asignado a una acción de entrada."
msgid ""
-"Returns [code]true[/code] if this input event is an echo event (only for "
-"events of type [InputEventKey])."
-msgstr ""
-"Devuelve [code]true[/code] si este evento de entrada es un evento de eco "
-"(sólo para eventos del tipo [InputEventKey])."
-
-msgid ""
"The event's device ID.\n"
"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated "
"mouse input from a touchscreen. This can be used to distinguish emulated "
@@ -12333,13 +12200,6 @@ msgstr ""
"El valor energético de Light2D. Cuanto mayor sea el valor, más fuerte es la "
"luz."
-msgid ""
-"The layer mask. Only objects with a matching mask will be affected by the "
-"Light2D."
-msgstr ""
-"La máscara de la capa. Sólo los objetos con una máscara adecuada se verán "
-"afectados por Light2D."
-
msgid "Maximum layer value of objects that are affected by the Light2D."
msgstr "Valor máximo de la capa de los objetos afectados por Light2D."
@@ -12365,13 +12225,6 @@ msgstr ""
"Tipo de filtro de sombra. Ver [enum ShadowFilter] para los posibles valores."
msgid ""
-"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders "
-"with a matching light mask will cast shadows."
-msgstr ""
-"La máscara de sombra. Se usa con [LightOccluder2D] para proyectar sombras. "
-"Sólo los oclusores con una máscara de luz pueden proyectar sombras."
-
-msgid ""
"Adds the value of pixels corresponding to the Light2D to the values of "
"pixels under it. This is the common behavior of a light."
msgstr ""
@@ -14242,20 +14095,15 @@ msgid "Omnidirectional light, such as a light bulb or a candle."
msgstr "Luz omnidireccional, como una bombilla o una vela."
msgid ""
-"The light's attenuation (drop-off) curve. A number of presets are available "
-"in the [b]Inspector[/b] by right-clicking the curve."
-msgstr ""
-"La curva de atenuación de la luz. En el [b]Inspector[/b] se puede acceder a "
-"una serie de preajustes haciendo clic con el botón derecho del ratón en la "
-"curva."
-
-msgid ""
"Shadows are rendered to a dual-paraboloid texture. Faster than [constant "
"SHADOW_CUBE], but lower-quality."
msgstr ""
"Las sombras se convierten en una textura de doble paraboloide. Más rápido "
"que [constant SHADOW_CUBE], pero de menor calidad."
+msgid "Add an action set."
+msgstr "Añadir un conjunto de acciones."
+
msgid "Optimized translation."
msgstr "Traducción optimizada."
@@ -15157,366 +15005,6 @@ msgid "Server interface for low-level 2D physics access."
msgstr "Interfaz de servidor para acceso a la física 2D de bajo nivel."
msgid ""
-"Adds a shape to the area, along with a transform matrix. Shapes are usually "
-"referenced by their index, so you should track which shape has a given index."
-msgstr ""
-"Añade una forma a la zona, junto con una matriz de transformación. Las "
-"formas suelen estar referenciadas por su índice, por lo que se debe rastrear "
-"qué forma tiene un índice determinado."
-
-msgid ""
-"Assigns the area to a descendant of [Object], so it can exist in the node "
-"tree."
-msgstr ""
-"Asigna el área a un descendiente de [Object], para que pueda existir en el "
-"árbol de nodos."
-
-msgid ""
-"Removes all shapes from an area. It does not delete the shapes, so they can "
-"be reassigned later."
-msgstr ""
-"Elimina todas las formas de un área. No elimina las formas, por lo que "
-"pueden ser reasignadas más tarde."
-
-msgid "Gets the instance ID of the object the area is assigned to."
-msgstr "Obtiene el ID de la instancia del objeto al que está asignada el área."
-
-msgid ""
-"Returns an area parameter value. See [enum AreaParameter] for a list of "
-"available parameters."
-msgstr ""
-"Devuelve un valor de parámetro de área. Véase [enum AreaParameter] para una "
-"lista de parámetros disponibles."
-
-msgid "Returns the [RID] of the nth shape of an area."
-msgstr "Devuelve el [RID] de la forma enésima de un área."
-
-msgid "Returns the number of shapes assigned to an area."
-msgstr "Devuelve el número de formas asignadas a un área."
-
-msgid "Returns the transform matrix of a shape within an area."
-msgstr "Devuelve la matriz de transformación de una forma dentro de un área."
-
-msgid "Returns the space assigned to the area."
-msgstr "Devuelve el espacio asignado a la zona."
-
-msgid "Returns the transform matrix for an area."
-msgstr "Devuelve la matriz de transformación de un área."
-
-msgid ""
-"Removes a shape from an area. It does not delete the shape, so it can be "
-"reassigned later."
-msgstr ""
-"Elimina una forma de un área. No borra la forma, por lo que puede ser "
-"reasignada más tarde."
-
-msgid "Assigns the area to one or many physics layers."
-msgstr "Asigna el área a una o varias capas de la física."
-
-msgid "Sets which physics layers the area will monitor."
-msgstr "Establece qué capas de la física monitoreará el área."
-
-msgid ""
-"Sets the function to call when any body/area enters or exits the area. This "
-"callback will be called for any object interacting with the area, and takes "
-"five parameters:\n"
-"1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on "
-"whether the object entered or exited the area.\n"
-"2: [RID] of the object that entered/exited the area.\n"
-"3: Instance ID of the object that entered/exited the area.\n"
-"4: The shape index of the object that entered/exited the area.\n"
-"5: The shape index of the area where the object entered/exited."
-msgstr ""
-"Establece la función de llamar cuando cualquier cuerpo/área entra o sale del "
-"área. Esta llamada será llamada para cualquier objeto que interactúe con el "
-"área, y toma cinco parámetros:\n"
-"1: [constant AREA_BODY_ADDED] o [constant AREA_BODY_REMOVED], dependiendo de "
-"si el objeto entró o salió del área.\n"
-"2: [RID] del objeto que entró/salió del área.\n"
-"3: ID del objeto que entró/salió del área.\n"
-"4: El índice de forma del objeto que entró/salió del área.\n"
-"5: El índice de forma del área donde el objeto entró/salió del área."
-
-msgid ""
-"Sets the value for an area parameter. See [enum AreaParameter] for a list of "
-"available parameters."
-msgstr ""
-"Establece el valor de un parámetro de área. Véase [enum AreaParameter] para "
-"una lista de parámetros disponibles."
-
-msgid ""
-"Substitutes a given area shape by another. The old shape is selected by its "
-"index, the new one by its [RID]."
-msgstr ""
-"Sustituye una forma de área dada por otra. La forma antigua es seleccionada "
-"por su índice, la nueva por su [RID]."
-
-msgid "Disables a given shape in an area."
-msgstr "Deshabilita una forma determinada en un área."
-
-msgid "Sets the transform matrix for an area shape."
-msgstr "Establece la matriz de transformación para la forma de un área."
-
-msgid "Assigns a space to the area."
-msgstr "Asigna un espacio a la zona."
-
-msgid "Sets the transform matrix for an area."
-msgstr "Establece la matriz de transformación para un área."
-
-msgid "Adds a body to the list of bodies exempt from collisions."
-msgstr "Añade un cuerpo a la lista de cuerpos exentos de colisiones."
-
-msgid ""
-"Adds a shape to the body, along with a transform matrix. Shapes are usually "
-"referenced by their index, so you should track which shape has a given index."
-msgstr ""
-"Añade una forma al cuerpo, junto con una matriz de transformación. Las "
-"formas suelen estar referenciadas por su índice, así que debes rastrear qué "
-"forma tiene un índice determinado."
-
-msgid "Removes all shapes from a body."
-msgstr "Elimina todas las formas de un cuerpo."
-
-msgid "Creates a physics body."
-msgstr "Crea un cuerpo físico."
-
-msgid "Returns the physics layer or layers a body belongs to."
-msgstr "Devuelve la capa o capas físicas a las que pertenece un cuerpo."
-
-msgid "Returns the physics layer or layers a body can collide with."
-msgstr ""
-"Devuelve la capa física o las capas con las que un cuerpo puede colisionar."
-
-msgid "Returns the continuous collision detection mode."
-msgstr "Devuelve el modo de detección de colisión continua."
-
-msgid ""
-"Returns the maximum contacts that can be reported. See [method "
-"body_set_max_contacts_reported]."
-msgstr ""
-"Devuelve el máximo de contactos que se pueden reportar. Ver [method "
-"body_set_max_contacts_reported]."
-
-msgid "Returns the body mode."
-msgstr "Devuelve el modo de cuerpo."
-
-msgid ""
-"Returns the value of a body parameter. See [enum BodyParameter] for a list "
-"of available parameters."
-msgstr ""
-"Devuelve el valor de un parámetro corporal. Véase [enum BodyParameter] para "
-"una lista de parámetros disponibles."
-
-msgid "Returns the [RID] of the nth shape of a body."
-msgstr "Devuelve el [RID] de la enésima forma de un cuerpo."
-
-msgid "Returns the number of shapes assigned to a body."
-msgstr "Devuelve el número de formas asignadas a un cuerpo."
-
-msgid "Returns the transform matrix of a body shape."
-msgstr "Devuelve la matriz de transformación de una forma corporal."
-
-msgid "Returns the [RID] of the space assigned to a body."
-msgstr "Devuelve el [RID] del espacio asignado a un cuerpo."
-
-msgid "Returns a body state."
-msgstr "Devuelve un estado corporal."
-
-msgid ""
-"Returns whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"Devuelve si un cuerpo utiliza una función de retrollamada para calcular su "
-"propia física (ver [method body_set_force_integration_callback])."
-
-msgid "Removes a body from the list of bodies exempt from collisions."
-msgstr "Elimina un cuerpo de la lista de cuerpos exentos de colisiones."
-
-msgid ""
-"Removes a shape from a body. The shape is not deleted, so it can be reused "
-"afterwards."
-msgstr ""
-"Quita una forma de un cuerpo. La forma no se borra, por lo que puede ser "
-"reutilizada después."
-
-msgid ""
-"Sets an axis velocity. The velocity in the given vector axis will be set as "
-"the given vector length. This is useful for jumping behavior."
-msgstr ""
-"Establece una velocidad del eje. La velocidad en el eje vectorial dado se "
-"fijará como la longitud del vector dado. Esto es útil para el comportamiento "
-"de salto."
-
-msgid "Sets the physics layer or layers a body belongs to."
-msgstr "Establece la capa o capas físicas a las que pertenece un cuerpo."
-
-msgid "Sets the physics layer or layers a body can collide with."
-msgstr ""
-"Establece la capa física o las capas con las que un cuerpo puede colisionar."
-
-msgid ""
-"Sets the continuous collision detection mode using one of the [enum CCDMode] "
-"constants.\n"
-"Continuous collision detection tries to predict where a moving body will "
-"collide, instead of moving it and correcting its movement if it collided."
-msgstr ""
-"Establece el modo de detección de colisión continua usando una de las "
-"constantes [enum CCDMode].\n"
-"La detección de colisión continua trata de predecir dónde colisionará un "
-"cuerpo en movimiento, en lugar de moverlo y corregir su movimiento si "
-"colisionara."
-
-msgid "Sets the body mode using one of the [enum BodyMode] constants."
-msgstr ""
-"Establece el modo corporal usando una de las constantes de [enum BodyMode]."
-
-msgid ""
-"Sets whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"Establece si un cuerpo utiliza una función de llamada de retorno para "
-"calcular su propia física (ver [method body_set_force_integration_callback])."
-
-msgid ""
-"Sets a body parameter. See [enum BodyParameter] for a list of available "
-"parameters."
-msgstr ""
-"Establece un parámetro corporal. Véase [enum BodyParameter] para una lista "
-"de parámetros disponibles."
-
-msgid ""
-"Substitutes a given body shape by another. The old shape is selected by its "
-"index, the new one by its [RID]."
-msgstr ""
-"Sustituye una forma corporal dada por otra. La forma antigua es seleccionada "
-"por su índice, la nueva por su [RID]."
-
-msgid "Sets the transform matrix for a body shape."
-msgstr "Establece la matriz de transformación para una forma corporal."
-
-msgid "Assigns a space to the body (see [method space_create])."
-msgstr "Asigna un espacio al cuerpo (ver [method space_create])."
-
-msgid ""
-"Returns information about the current state of the 2D physics engine. See "
-"[enum ProcessInfo] for a list of available states."
-msgstr ""
-"Devuelve información sobre el estado actual del motor de física 2D. Ver "
-"[enum ProcessInfo] para una lista de los estados disponibles."
-
-msgid "Returns the value of a joint parameter."
-msgstr "Devuelve el valor de un parámetro de una articulación."
-
-msgid "Returns a joint's type (see [enum JointType])."
-msgstr "Devuelve el tipo de articulación (véase [enum JointType])."
-
-msgid ""
-"Sets a joint parameter. See [enum JointParam] for a list of available "
-"parameters."
-msgstr ""
-"Establece un parámetro de una articulación. Véase [enum JointParam] para una "
-"lista de parámetros disponibles."
-
-msgid "Activates or deactivates the 2D physics engine."
-msgstr "Activa o desactiva el motor de física 2D."
-
-msgid "Returns the shape data."
-msgstr "Devuelve los datos de la forma."
-
-msgid "Returns a shape's type (see [enum ShapeType])."
-msgstr "Devuelve el tipo de una forma (ver [enum ShapeType])."
-
-msgid ""
-"Sets the shape data that defines its shape and size. The data to be passed "
-"depends on the kind of shape created [method shape_get_type]."
-msgstr ""
-"Establece los datos de forma que definen su forma y tamaño. Los datos que se "
-"pasarán dependen del tipo de forma creada [method shape_get_type]."
-
-msgid ""
-"Creates a space. A space is a collection of parameters for the physics "
-"engine that can be assigned to an area or a body. It can be assigned to an "
-"area with [method area_set_space], or to a body with [method body_set_space]."
-msgstr ""
-"Crea un espacio. Un espacio es una colección de parámetros para el motor de "
-"la física que puede ser asignado a un área o a un cuerpo. Puede ser asignado "
-"a un área con [method area_set_space], o a un cuerpo con [method "
-"body_set_space]."
-
-msgid "Returns the value of a space parameter."
-msgstr "Devuelve el valor de un parámetro espacial."
-
-msgid "Returns whether the space is active."
-msgstr "Devuelve si el espacio está activo."
-
-msgid ""
-"Marks a space as active. It will not have an effect, unless it is assigned "
-"to an area or body."
-msgstr ""
-"Marca un espacio como activo. No tendrá efecto, a menos que se asigne a un "
-"área o cuerpo."
-
-msgid ""
-"Sets the value for a space parameter. See [enum SpaceParameter] for a list "
-"of available parameters."
-msgstr ""
-"Establece el valor de un parámetro espacial. Véase [enum SpaceParameter] "
-"para una lista de parámetros disponibles."
-
-msgid ""
-"Constant to set/get the maximum distance a pair of bodies has to move before "
-"their collision status has to be recalculated."
-msgstr ""
-"Constante para fijar/obtener la máxima distancia que un par de cuerpos tiene "
-"que moverse antes de que su estado de colisión tenga que ser recalculado."
-
-msgid ""
-"Constant to set/get the maximum distance a shape can penetrate another shape "
-"before it is considered a collision."
-msgstr ""
-"Constante para fijar/obtener la máxima distancia que una forma puede "
-"penetrar en otra forma antes de que se considere una colisión."
-
-msgid ""
-"Constant to set/get the threshold linear velocity of activity. A body marked "
-"as potentially inactive for both linear and angular velocity will be put to "
-"sleep after the time given."
-msgstr ""
-"Constante para fijar/obtener el umbral de velocidad lineal de actividad. Un "
-"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal "
-"como para la angular será puesto a dormir después del tiempo dado."
-
-msgid ""
-"Constant to set/get the threshold angular velocity of activity. A body "
-"marked as potentially inactive for both linear and angular velocity will be "
-"put to sleep after the time given."
-msgstr ""
-"Constante para fijar/obtener el umbral de velocidad angular de actividad. Un "
-"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal "
-"como para la angular será puesto a dormir después del tiempo dado."
-
-msgid ""
-"Constant to set/get the maximum time of activity. A body marked as "
-"potentially inactive for both linear and angular velocity will be put to "
-"sleep after this time."
-msgstr ""
-"Constante para fijar/obtener el tiempo máximo de actividad. Un cuerpo "
-"marcado como potencialmente inactivo tanto para la velocidad lineal como "
-"para la angular será puesto a dormir después de este tiempo."
-
-msgid ""
-"Constant to set/get the default solver bias for all physics constraints. A "
-"solver bias is a factor controlling how much two objects \"rebound\", after "
-"violating a constraint, to avoid leaving them in that state because of "
-"numerical imprecision."
-msgstr ""
-"Constante para establecer/obtener el sesgo del solucionador por defecto para "
-"todas las restricciones de la física. Un sesgo del solucionador es un factor "
-"que controla cuánto \"rebotan\" dos objetos, después de violar una "
-"restricción, para evitar dejarlos en ese estado debido a la imprecisión "
-"numérica."
-
-msgid ""
"This is the constant for creating circle shapes. A circle shape only has a "
"radius. It can be used for intersections and inside/outside checks."
msgstr ""
@@ -15543,20 +15031,6 @@ msgstr ""
"controles internos y externos."
msgid ""
-"This is the constant for creating convex polygon shapes. A polygon is "
-"defined by a list of points. It can be used for intersections and inside/"
-"outside checks. Unlike the [member CollisionPolygon2D.polygon] property, "
-"polygons modified with [method shape_set_data] do not verify that the points "
-"supplied form is a convex polygon."
-msgstr ""
-"Esta es la constante para crear formas poligonales convexas. Un polígono se "
-"define por una lista de puntos. Puede ser usado para intersecciones y "
-"controles internos/externos. A diferencia de la propiedad [member "
-"CollisionPolygon2D.polygon], los polígonos modificados con [method "
-"shape_set_data] no verifican que la forma de los puntos suministrados es un "
-"polígono convexo."
-
-msgid ""
"This is the constant for creating concave polygon shapes. A polygon is "
"defined by a list of points. It can be used for intersections checks, but "
"not for inside/outside checks."
@@ -15572,24 +15046,6 @@ msgstr ""
"Esta constante es utilizada internamente por el motor. Cualquier intento de "
"crear este tipo de forma resulta en un error."
-msgid "Constant to set/get gravity strength in an area."
-msgstr "Constante para fijar/obtener la fuerza de gravedad en un área."
-
-msgid "Constant to set/get gravity vector/center in an area."
-msgstr "Constante para fijar/obtener el vector/centro de gravedad en un área."
-
-msgid ""
-"Constant to set/get whether the gravity vector of an area is a direction, or "
-"a center point."
-msgstr ""
-"Constante para establecer/obtener si el vector de gravedad de un área es una "
-"dirección, o un punto central."
-
-msgid "Constant to set/get the priority (order of processing) of an area."
-msgstr ""
-"Constante para establecer/obtener la prioridad (orden de procesamiento) de "
-"un área."
-
msgid ""
"This area does not affect gravity/damp. These are generally areas that exist "
"only to detect collisions, and objects entering or exiting them."
@@ -15629,22 +15085,6 @@ msgstr ""
"Esta área reemplaza cualquier gravedad/amortiguación calculada hasta ahora, "
"pero sigue calculando el resto de las áreas, hasta la predeterminada."
-msgid "Constant to set/get a body's bounce factor."
-msgstr "Constante para fijar/obtener el factor de rebote de un cuerpo."
-
-msgid "Constant to set/get a body's friction."
-msgstr "Constante para fijar/obtener la fricción de un cuerpo."
-
-msgid "Constant to set/get a body's mass."
-msgstr "Constante para fijar/obtener la masa de un cuerpo."
-
-msgid "Constant to set/get a body's inertia."
-msgstr "Constante para fijar/obtener la inercia de un cuerpo."
-
-msgid "Constant to set/get a body's gravity multiplier."
-msgstr ""
-"Constante para fijar/obtener el multiplicador de gravedad de un cuerpo."
-
msgid "Represents the size of the [enum BodyParameter] enum."
msgstr "Representa el tamaño del enum [enum BodyParameter]."
@@ -15676,37 +15116,6 @@ msgid "Constant to create damped spring joints."
msgstr "Constante para crear juntas de resorte amortiguadas."
msgid ""
-"Sets the resting length of the spring joint. The joint will always try to go "
-"to back this length when pulled apart."
-msgstr ""
-"Establece la longitud de reposo de la articulación del resorte. La "
-"articulación siempre intentará volver a esta longitud cuando se separe."
-
-msgid ""
-"Sets the stiffness of the spring joint. The joint applies a force equal to "
-"the stiffness times the distance from its resting length."
-msgstr ""
-"Establece la rigidez de la articulación del resorte. La articulación aplica "
-"una fuerza igual a la rigidez por la distancia de su longitud en reposo."
-
-msgid ""
-"Sets the damping ratio of the spring joint. A value of 0 indicates an "
-"undamped spring, while 1 causes the system to reach equilibrium as fast as "
-"possible (critical damping)."
-msgstr ""
-"Establece la relación de amortiguación de la articulación del resorte. Un "
-"valor de 0 indica un resorte no amortiguado, mientras que 1 hace que el "
-"sistema alcance el equilibrio lo más rápido posible (amortiguación crítica)."
-
-msgid ""
-"Disables continuous collision detection. This is the fastest way to detect "
-"body collisions, but can miss small, fast-moving objects."
-msgstr ""
-"Desactiva la detección de colisión continua. Es la forma más rápida de "
-"detectar colisiones corporales, pero puede pasar por alto pequeños objetos "
-"de movimiento rápido."
-
-msgid ""
"Enables continuous collision detection by raycasting. It is faster than "
"shapecasting, but less precise."
msgstr ""
@@ -15750,12 +15159,86 @@ msgid "Server interface for low-level physics access."
msgstr "Interfaz de servidor para acceso a la física de bajo nivel."
msgid ""
+"Adds a shape to the area, along with a transform matrix. Shapes are usually "
+"referenced by their index, so you should track which shape has a given index."
+msgstr ""
+"Añade una forma a la zona, junto con una matriz de transformación. Las "
+"formas suelen estar referenciadas por su índice, por lo que se debe rastrear "
+"qué forma tiene un índice determinado."
+
+msgid ""
+"Assigns the area to a descendant of [Object], so it can exist in the node "
+"tree."
+msgstr ""
+"Asigna el área a un descendiente de [Object], para que pueda existir en el "
+"árbol de nodos."
+
+msgid ""
+"Removes all shapes from an area. It does not delete the shapes, so they can "
+"be reassigned later."
+msgstr ""
+"Elimina todas las formas de un área. No elimina las formas, por lo que "
+"pueden ser reasignadas más tarde."
+
+msgid "Gets the instance ID of the object the area is assigned to."
+msgstr "Obtiene el ID de la instancia del objeto al que está asignada el área."
+
+msgid ""
"Returns an area parameter value. A list of available parameters is on the "
"[enum AreaParameter] constants."
msgstr ""
"Devuelve un valor de parámetro de área. Una lista de los parámetros "
"disponibles se encuentra en las constantes [enum AreaParameter]."
+msgid "Returns the [RID] of the nth shape of an area."
+msgstr "Devuelve el [RID] de la forma enésima de un área."
+
+msgid "Returns the number of shapes assigned to an area."
+msgstr "Devuelve el número de formas asignadas a un área."
+
+msgid "Returns the transform matrix of a shape within an area."
+msgstr "Devuelve la matriz de transformación de una forma dentro de un área."
+
+msgid "Returns the space assigned to the area."
+msgstr "Devuelve el espacio asignado a la zona."
+
+msgid "Returns the transform matrix for an area."
+msgstr "Devuelve la matriz de transformación de un área."
+
+msgid ""
+"Removes a shape from an area. It does not delete the shape, so it can be "
+"reassigned later."
+msgstr ""
+"Elimina una forma de un área. No borra la forma, por lo que puede ser "
+"reasignada más tarde."
+
+msgid "Assigns the area to one or many physics layers."
+msgstr "Asigna el área a una o varias capas de la física."
+
+msgid "Sets which physics layers the area will monitor."
+msgstr "Establece qué capas de la física monitoreará el área."
+
+msgid ""
+"Sets the function to call when any body/area enters or exits the area. This "
+"callback will be called for any object interacting with the area, and takes "
+"five parameters:\n"
+"1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on "
+"whether the object entered or exited the area.\n"
+"2: [RID] of the object that entered/exited the area.\n"
+"3: Instance ID of the object that entered/exited the area.\n"
+"4: The shape index of the object that entered/exited the area.\n"
+"5: The shape index of the area where the object entered/exited."
+msgstr ""
+"Establece la función de llamar cuando cualquier cuerpo/área entra o sale del "
+"área. Esta llamada será llamada para cualquier objeto que interactúe con el "
+"área, y toma cinco parámetros:\n"
+"1: [constant AREA_BODY_ADDED] o [constant AREA_BODY_REMOVED], dependiendo de "
+"si el objeto entró o salió del área.\n"
+"2: [RID] del objeto que entró/salió del área.\n"
+"3: ID del objeto que entró/salió del área.\n"
+"4: El índice de forma del objeto que entró/salió del área.\n"
+"5: El índice de forma del área donde el objeto entró/salió del área."
+
msgid ""
"Sets the value for an area parameter. A list of available parameters is on "
"the [enum AreaParameter] constants."
@@ -15767,18 +15250,87 @@ msgid "Sets object pickable with rays."
msgstr "Establece un objeto que se puede recoger con los rayos."
msgid ""
+"Substitutes a given area shape by another. The old shape is selected by its "
+"index, the new one by its [RID]."
+msgstr ""
+"Sustituye una forma de área dada por otra. La forma antigua es seleccionada "
+"por su índice, la nueva por su [RID]."
+
+msgid "Sets the transform matrix for an area shape."
+msgstr "Establece la matriz de transformación para la forma de un área."
+
+msgid "Assigns a space to the area."
+msgstr "Asigna un espacio a la zona."
+
+msgid "Sets the transform matrix for an area."
+msgstr "Establece la matriz de transformación para un área."
+
+msgid "Adds a body to the list of bodies exempt from collisions."
+msgstr "Añade un cuerpo a la lista de cuerpos exentos de colisiones."
+
+msgid ""
+"Adds a shape to the body, along with a transform matrix. Shapes are usually "
+"referenced by their index, so you should track which shape has a given index."
+msgstr ""
+"Añade una forma al cuerpo, junto con una matriz de transformación. Las "
+"formas suelen estar referenciadas por su índice, así que debes rastrear qué "
+"forma tiene un índice determinado."
+
+msgid "Removes all shapes from a body."
+msgstr "Elimina todas las formas de un cuerpo."
+
+msgid "Returns the physics layer or layers a body belongs to."
+msgstr "Devuelve la capa o capas físicas a las que pertenece un cuerpo."
+
+msgid "Returns the physics layer or layers a body can collide with."
+msgstr ""
+"Devuelve la capa física o las capas con las que un cuerpo puede colisionar."
+
+msgid ""
+"Returns the maximum contacts that can be reported. See [method "
+"body_set_max_contacts_reported]."
+msgstr ""
+"Devuelve el máximo de contactos que se pueden reportar. Ver [method "
+"body_set_max_contacts_reported]."
+
+msgid "Returns the body mode."
+msgstr "Devuelve el modo de cuerpo."
+
+msgid ""
"Returns the value of a body parameter. A list of available parameters is on "
"the [enum BodyParameter] constants."
msgstr ""
"Devuelve el valor de un parámetro corporal. Una lista de parámetros "
"disponibles se encuentra en las constantes [enum BodyParameter]."
+msgid "Returns the [RID] of the nth shape of a body."
+msgstr "Devuelve el [RID] de la enésima forma de un cuerpo."
+
+msgid "Returns the number of shapes assigned to a body."
+msgstr "Devuelve el número de formas asignadas a un cuerpo."
+
+msgid "Returns the transform matrix of a body shape."
+msgstr "Devuelve la matriz de transformación de una forma corporal."
+
+msgid "Returns the [RID] of the space assigned to a body."
+msgstr "Devuelve el [RID] del espacio asignado a un cuerpo."
+
+msgid "Returns a body state."
+msgstr "Devuelve un estado corporal."
+
msgid ""
"If [code]true[/code], the continuous collision detection mode is enabled."
msgstr ""
"Si [code]true[/code], se activa el modo de detección de colisión continua."
msgid ""
+"Returns whether a body uses a callback function to calculate its own physics "
+"(see [method body_set_force_integration_callback])."
+msgstr ""
+"Devuelve si un cuerpo utiliza una función de retrollamada para calcular su "
+"propia física (ver [method body_set_force_integration_callback])."
+
+msgid ""
"Removes a body from the list of bodies exempt from collisions.\n"
"Continuous collision detection tries to predict where a moving body will "
"collide, instead of moving it and correcting its movement if it collided."
@@ -15789,6 +15341,28 @@ msgstr ""
"colisionara."
msgid ""
+"Removes a shape from a body. The shape is not deleted, so it can be reused "
+"afterwards."
+msgstr ""
+"Quita una forma de un cuerpo. La forma no se borra, por lo que puede ser "
+"reutilizada después."
+
+msgid ""
+"Sets an axis velocity. The velocity in the given vector axis will be set as "
+"the given vector length. This is useful for jumping behavior."
+msgstr ""
+"Establece una velocidad del eje. La velocidad en el eje vectorial dado se "
+"fijará como la longitud del vector dado. Esto es útil para el comportamiento "
+"de salto."
+
+msgid "Sets the physics layer or layers a body belongs to."
+msgstr "Establece la capa o capas físicas a las que pertenece un cuerpo."
+
+msgid "Sets the physics layer or layers a body can collide with."
+msgstr ""
+"Establece la capa física o las capas con las que un cuerpo puede colisionar."
+
+msgid ""
"If [code]true[/code], the continuous collision detection mode is enabled.\n"
"Continuous collision detection tries to predict where a moving body will "
"collide, instead of moving it and correcting its movement if it collided."
@@ -15804,12 +15378,32 @@ msgstr ""
"BodyMode]."
msgid ""
+"Sets whether a body uses a callback function to calculate its own physics "
+"(see [method body_set_force_integration_callback])."
+msgstr ""
+"Establece si un cuerpo utiliza una función de llamada de retorno para "
+"calcular su propia física (ver [method body_set_force_integration_callback])."
+
+msgid ""
"Sets a body parameter. A list of available parameters is on the [enum "
"BodyParameter] constants."
msgstr ""
"Establece un parámetro corporal. Una lista de parámetros disponibles se "
"encuentra en las constantes [enum BodyParameter]."
+msgid ""
+"Substitutes a given body shape by another. The old shape is selected by its "
+"index, the new one by its [RID]."
+msgstr ""
+"Sustituye una forma corporal dada por otra. La forma antigua es seleccionada "
+"por su índice, la nueva por su [RID]."
+
+msgid "Sets the transform matrix for a body shape."
+msgstr "Establece la matriz de transformación para una forma corporal."
+
+msgid "Assigns a space to the body (see [method space_create])."
+msgstr "Asigna un espacio al cuerpo (ver [method space_create])."
+
msgid "Sets a body state (see [enum BodyState] constants)."
msgstr ""
"Obtiene un parámetro cone_twist_joint (ver las constantes [enum "
@@ -15902,15 +15496,48 @@ msgstr ""
msgid "Activates or deactivates the 3D physics engine."
msgstr "Activa o desactiva el motor de física 3D."
+msgid "Returns the shape data."
+msgstr "Devuelve los datos de la forma."
+
msgid "Returns the type of shape (see [enum ShapeType] constants)."
msgstr "Devuelve el tipo de forma (ver las constantes [enum ShapeType])."
+msgid ""
+"Sets the shape data that defines its shape and size. The data to be passed "
+"depends on the kind of shape created [method shape_get_type]."
+msgstr ""
+"Establece los datos de forma que definen su forma y tamaño. Los datos que se "
+"pasarán dependen del tipo de forma creada [method shape_get_type]."
+
msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)."
msgstr ""
"Obtiene un parámetro slider_joint (ver las constantes [enum "
"SliderJointParam])."
msgid ""
+"Creates a space. A space is a collection of parameters for the physics "
+"engine that can be assigned to an area or a body. It can be assigned to an "
+"area with [method area_set_space], or to a body with [method body_set_space]."
+msgstr ""
+"Crea un espacio. Un espacio es una colección de parámetros para el motor de "
+"la física que puede ser asignado a un área o a un cuerpo. Puede ser asignado "
+"a un área con [method area_set_space], o a un cuerpo con [method "
+"body_set_space]."
+
+msgid "Returns the value of a space parameter."
+msgstr "Devuelve el valor de un parámetro espacial."
+
+msgid "Returns whether the space is active."
+msgstr "Devuelve si el espacio está activo."
+
+msgid ""
+"Marks a space as active. It will not have an effect, unless it is assigned "
+"to an area or body."
+msgstr ""
+"Marca un espacio como activo. No tendrá efecto, a menos que se asigne a un "
+"área o cuerpo."
+
+msgid ""
"Sets the value for a space parameter. A list of available parameters is on "
"the [enum SpaceParameter] constants."
msgstr ""
@@ -16096,6 +15723,81 @@ msgstr ""
"este factor de tolerancia al error define cuánto se ralentiza la corrección. "
"Cuanto más bajo, más lento."
+msgid "Constant to set/get gravity strength in an area."
+msgstr "Constante para fijar/obtener la fuerza de gravedad en un área."
+
+msgid "Constant to set/get gravity vector/center in an area."
+msgstr "Constante para fijar/obtener el vector/centro de gravedad en un área."
+
+msgid ""
+"Constant to set/get whether the gravity vector of an area is a direction, or "
+"a center point."
+msgstr ""
+"Constante para establecer/obtener si el vector de gravedad de un área es una "
+"dirección, o un punto central."
+
+msgid "Constant to set/get the priority (order of processing) of an area."
+msgstr ""
+"Constante para establecer/obtener la prioridad (orden de procesamiento) de "
+"un área."
+
+msgid "Constant to set/get a body's bounce factor."
+msgstr "Constante para fijar/obtener el factor de rebote de un cuerpo."
+
+msgid "Constant to set/get a body's friction."
+msgstr "Constante para fijar/obtener la fricción de un cuerpo."
+
+msgid "Constant to set/get a body's mass."
+msgstr "Constante para fijar/obtener la masa de un cuerpo."
+
+msgid "Constant to set/get a body's inertia."
+msgstr "Constante para fijar/obtener la inercia de un cuerpo."
+
+msgid "Constant to set/get a body's gravity multiplier."
+msgstr ""
+"Constante para fijar/obtener el multiplicador de gravedad de un cuerpo."
+
+msgid ""
+"Constant to set/get the maximum distance a pair of bodies has to move before "
+"their collision status has to be recalculated."
+msgstr ""
+"Constante para fijar/obtener la máxima distancia que un par de cuerpos tiene "
+"que moverse antes de que su estado de colisión tenga que ser recalculado."
+
+msgid ""
+"Constant to set/get the maximum distance a shape can penetrate another shape "
+"before it is considered a collision."
+msgstr ""
+"Constante para fijar/obtener la máxima distancia que una forma puede "
+"penetrar en otra forma antes de que se considere una colisión."
+
+msgid ""
+"Constant to set/get the threshold linear velocity of activity. A body marked "
+"as potentially inactive for both linear and angular velocity will be put to "
+"sleep after the time given."
+msgstr ""
+"Constante para fijar/obtener el umbral de velocidad lineal de actividad. Un "
+"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal "
+"como para la angular será puesto a dormir después del tiempo dado."
+
+msgid ""
+"Constant to set/get the threshold angular velocity of activity. A body "
+"marked as potentially inactive for both linear and angular velocity will be "
+"put to sleep after the time given."
+msgstr ""
+"Constante para fijar/obtener el umbral de velocidad angular de actividad. Un "
+"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal "
+"como para la angular será puesto a dormir después del tiempo dado."
+
+msgid ""
+"Constant to set/get the maximum time of activity. A body marked as "
+"potentially inactive for both linear and angular velocity will be put to "
+"sleep after this time."
+msgstr ""
+"Constante para fijar/obtener el tiempo máximo de actividad. Un cuerpo "
+"marcado como potencialmente inactivo tanto para la velocidad lineal como "
+"para la angular será puesto a dormir después de este tiempo."
+
msgid "Parameters to be sent to a 2D shape physics query."
msgstr "Parámetros a enviar a una consulta de física de forma 2D."
@@ -18664,14 +18366,6 @@ msgstr ""
"etiquetas. Esto es lo mismo que añadir una etiqueta [code]i[/code] si no "
"está actualmente en una etiqueta [code]b[/code]."
-msgid ""
-"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
-"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
-msgstr ""
-"Añade una etiqueta [code]meta[/code] a la pila de etiquetas. Similar al "
-"BBCode [code][url=algo]{text}[/url][/code], pero soporta tipos de metadatos "
-"que no son [String]."
-
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr ""
"Añade una etiqueta [code]font[/code] con una fuente monoespacio a la pila de "
@@ -19567,12 +19261,6 @@ msgstr "El arrastrador dividido nunca es visible y su espacio se colapsó."
msgid "A spotlight, such as a reflector spotlight or a lantern."
msgstr "Un foco, como un reflector o una linterna."
-msgid "The spotlight's angular attenuation curve."
-msgstr "La curva de atenuación angular del foco."
-
-msgid "The spotlight's light energy attenuation curve."
-msgstr "La curva de atenuación de la energía de la luz del foco."
-
msgid "A helper node, mostly used in 3rd person cameras."
msgstr "Un nodo de ayuda, usado principalmente en cámaras de tercera persona."
@@ -23748,7 +23436,7 @@ msgid "Base-2 logarithm."
msgstr "Logarítmo en base 2."
msgid "Converts a quantity in degrees to radians."
-msgstr "Convierte un valor de grados a radianes."
+msgstr "Convierte una cantidad en grados a radianes."
msgid "Finds the nearest integer to the parameter."
msgstr "Encuentra el entero más cercano al parámetro."
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index eef490fe13..ecc6959914 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -1,6 +1,6 @@
# French translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+# Copyright (c) 2014-present Godot Engine contributors.
+# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
# This file is distributed under the same license as the Godot source code.
#
# Rémi Verschelde <remi@godotengine.org>, 2020, 2021.
@@ -61,13 +61,14 @@
# Landry Simo <landrysimo99@gmail.com>, 2022.
# Alexis Coudert <coudert.alex@gmail.com>, 2022.
# Callim Ethee <callimethee@gmail.com>, 2023.
+# Thalya Gauvrit <skar0ps.dev@gmail.com>, 2023.
msgid ""
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: 2023-01-01 02:51+0000\n"
-"Last-Translator: Callim Ethee <callimethee@gmail.com>\n"
+"PO-Revision-Date: 2023-02-13 23:42+0000\n"
+"Last-Translator: Thalya Gauvrit <skar0ps.dev@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
"Language: fr\n"
@@ -75,7 +76,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.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
msgid "Description"
msgstr "Description"
@@ -89,6 +90,9 @@ msgstr "Propriétés"
msgid "Methods"
msgstr "Méthodes"
+msgid "Operators"
+msgstr "Opérateurs"
+
msgid "Theme Properties"
msgstr "Propriétés du thème"
@@ -171,6 +175,93 @@ msgid "Built-in GDScript functions."
msgstr "Fonctions intégrées à GDScript."
msgid ""
+"Returns an array of dictionaries representing the current call stack. See "
+"also [method print_stack].\n"
+"[codeblock]\n"
+"func _ready():\n"
+" foo()\n"
+"\n"
+"func foo():\n"
+" bar()\n"
+"\n"
+"func bar():\n"
+" print(get_stack())\n"
+"[/codeblock]\n"
+"Starting from [code]_ready()[/code], [code]bar()[/code] would print:\n"
+"[codeblock]\n"
+"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, "
+"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This function only works if the running instance is connected "
+"to a debugging server (i.e. an editor instance). [method get_stack] will not "
+"work in projects exported in release mode, or in projects exported in debug "
+"mode if not connected to a debugging server.\n"
+"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing "
+"so will return an empty array."
+msgstr ""
+"Renvoie un tableau de dictionnaires représentant la pile d'appels courante. "
+"Voir aussi [method print_stack].\n"
+"[codeblock]\n"
+"func _ready() :\n"
+" foo()\n"
+"\n"
+"func foo() :\n"
+" bar()\n"
+"\n"
+"func bar() :\n"
+" print(get_stack())\n"
+"[/codeblock]\n"
+"En partant de [code]_ready()[/code], [code]bar()[/code] imprimerait :\n"
+"[codeblock]\n"
+"[{fonction:bar, ligne:12, source:res://script.gd}, {fonction:foo, ligne:9, "
+"source:res://script.gd}, {fonction:_ready, ligne:6, source:res://script."
+"gd}]\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Cette fonction ne fonctionne que si l'instance en cours "
+"d'exécution est connectée à un serveur de débogage (c'est-à-dire une "
+"instance d'éditeur). La [method get_stack] ne fonctionnera pas dans les "
+"projets exportés en mode release, ou dans les projets exportés en mode debug "
+"s'ils ne sont pas connectés à un serveur de débogage.\n"
+"[b]Note(bis) :[/b] L'appel de cette fonction depuis un [Thread] n'est pas "
+"pris en charge. Cela renverra un tableau vide."
+
+msgid ""
+"Returns the passed [param instance] converted to a Dictionary. Can be useful "
+"for serializing.\n"
+"[b]Note:[/b] Cannot be used to serialize objects with built-in scripts "
+"attached or objects allocated within built-in scripts.\n"
+"[codeblock]\n"
+"var foo = \"bar\"\n"
+"func _ready():\n"
+" var d = inst_to_dict(self)\n"
+" print(d.keys())\n"
+" print(d.values())\n"
+"[/codeblock]\n"
+"Prints out:\n"
+"[codeblock]\n"
+"[@subpath, @path, foo]\n"
+"[, res://test.gd, bar]\n"
+"[/codeblock]"
+msgstr ""
+"Renvoie le [param instance] passé converti en un dictionnaire. Utile pour la "
+"sérialisation.\n"
+"[b]Remarque :[/b] Ne peut pas être utilisé pour sérialiser des objets "
+"auxquels sont attachés des scripts intégrés ou des objets alloués dans des "
+"scripts intégrés.\n"
+"[codeblock]\n"
+"var foo = \"bar\"\n"
+"func _ready() :\n"
+" var d = inst_to_dict(self)\n"
+" print(d.keys())\n"
+" print(d.values())\n"
+"[/codeblock]\n"
+"Résultat :\n"
+"[codeblock]\n"
+"[@subpath, @path, foo]\n"
+"[, res://test.gd, bar]\n"
+"[/codeblock]"
+
+msgid ""
"The circle constant, the circumference of the unit circle in radians. This "
"is equivalent to [code]PI * 2[/code], or 360 degrees in rotations."
msgstr ""
@@ -769,9 +860,6 @@ msgstr "Masque de touche de modification."
msgid "Shift key mask."
msgstr "Masque de la touche Shift."
-msgid "Ctrl key mask."
-msgstr "Masque de la touche Ctrl."
-
msgid "Keypad key mask."
msgstr "Masque des touches du clavier."
@@ -781,12 +869,6 @@ msgstr "Masque de l'interrupteur groupe."
msgid "Middle mouse button."
msgstr "Bouton du milieu de la souris."
-msgid "Mouse wheel up."
-msgstr "Molette de la souris vers le haut."
-
-msgid "Mouse wheel down."
-msgstr "Molette de la souris vers le bas."
-
msgid "Mouse wheel left button (only present on some mice)."
msgstr ""
"Bouton gauche de la molette de la souris (présent uniquement sur certaines "
@@ -1491,9 +1573,6 @@ msgstr "L'animation des sprites 2D (et aussi 3D)"
msgid "Proxy texture for simple frame-based animations."
msgstr "Texture procuration pour des animations simples basés sur les trames."
-msgid "Sets the currently visible frame of the texture."
-msgstr "Définit le trame présentement visible de l'animation."
-
msgid ""
"Number of frames to use in the animation. While you can create the frames "
"independently with [method set_frame_texture], you need to set this value "
@@ -2076,21 +2155,6 @@ msgstr "La connexion spécifiée existe déjà."
msgid "Plays an animation once in [AnimationNodeBlendTree]."
msgstr "Joue une animation une fois dans [AnimationNodeBlendTree]."
-msgid ""
-"A resource to add to an [AnimationNodeBlendTree]. This node will execute a "
-"sub-animation and return once it finishes. Blend times for fading in and out "
-"can be customized, as well as filters."
-msgstr ""
-"Une ressource à ajouter à un [AnimationNodeBlendTree]. Ce nœud exécutera une "
-"sous-animation et retournera quand il aura fini. Les temps de foudu entrant "
-"et sortant peuvent être personnalisés, ainsi que les filtres."
-
-msgid ""
-"If [code]true[/code], the sub-animation will restart automatically after "
-"finishing."
-msgstr ""
-"Si [code]true[/code], la sous-animation redémarrera automatiquement à la fin."
-
msgid "The delay after which the automatic restart is triggered, in seconds."
msgstr ""
"Le délai après lequel le redémarrage automatique est déclenché, en secondes."
@@ -2173,9 +2237,6 @@ msgstr ""
msgid "Playback control for [AnimationNodeStateMachine]."
msgstr "Contrôle de la lecture des [AnimationNodeStateMachine]."
-msgid "Returns the currently playing animation state."
-msgstr "Retourne l'actuel état d'animation joué."
-
msgid "Returns the playback position within the current animation state."
msgstr "Retourne la position de lecture pour l'état actuel de l'animation."
@@ -2241,15 +2302,6 @@ msgid "A generic animation transition node for [AnimationTree]."
msgstr "Une nœud d'animation de transition générique pour [AnimationTree]."
msgid ""
-"Simple state machine for cases which don't require a more advanced "
-"[AnimationNodeStateMachine]. Animations can be connected to the inputs and "
-"transition times can be specified."
-msgstr ""
-"Une simple machine à états pour les cas qui n'exigent pas une "
-"[AnimationNodeStateMachine] plus avancée. Les animations peuvent être "
-"connectées aux entrées et les temps de transition peuvent être spécifiés."
-
-msgid ""
"[AnimationPlayer] caches animated nodes. It may not notice if a node "
"disappears; [method clear_caches] forces it to update the cache again."
msgstr ""
@@ -2390,9 +2442,6 @@ msgstr ""
"Les animations devront être mises à jour manuellement (voir [method "
"advance])."
-msgid "2D area for detection and physics and audio influence."
-msgstr "Une aire 2D pour la détection et les influences physiques et audio."
-
msgid "Using Area2D"
msgstr "Utiliser les Area2D"
@@ -2458,9 +2507,6 @@ msgstr ""
msgid "This area does not affect gravity/damping."
msgstr "Cette aire n'influe pas sur la gravité/amortissement."
-msgid "3D area for detection and physics and audio influence."
-msgstr "Une aire 3D pour la détection et les influences physiques et audio."
-
msgid "GUI in 3D Demo"
msgstr "Démo des interfaces en 3D"
@@ -2833,13 +2879,6 @@ msgstr ""
"Retourne l'identifiant du point disponible suivant avec aucun point lui "
"étant associé."
-msgid ""
-"Returns the capacity of the structure backing the points, useful in "
-"conjunction with [code]reserve_space[/code]."
-msgstr ""
-"Retourne la capacité de la structure qui garde les points en cache, utile "
-"avec [code]reserve_space[/code]."
-
msgid "Returns the number of points currently in the points pool."
msgstr "Retourne le nombre de points actuellement dans le tas de points."
@@ -2857,6 +2896,13 @@ msgstr ""
"Une implémentation de A* pour trouver les chemins les plus courts parmi les "
"points connectés dans l'espace."
+msgid ""
+"Returns the capacity of the structure backing the points, useful in "
+"conjunction with [code]reserve_space[/code]."
+msgstr ""
+"Retourne la capacité de la structure qui garde les points en cache, utile "
+"avec [code]reserve_space[/code]."
+
msgid "Stores information about the audio buses."
msgstr "Stocke de l'information sur les bus audio."
@@ -3993,9 +4039,6 @@ msgstr ""
"Si [code]true[/code], l'objet est affiché à la même taille indépendamment de "
"sa distance à la caméra."
-msgid "Grows object vertices in the direction of their normals."
-msgstr "Agrandit les sommets des objets dans la direction de leurs normales."
-
msgid ""
"If [code]true[/code], depth testing is disabled and the object will be drawn "
"in render order."
@@ -4003,9 +4046,6 @@ msgstr ""
"Si [code]true[/code], les tests de profondeur sont désactivés et l'objet "
"sera dessiné suivant son ordre de rendu et non suivant sa distance."
-msgid "If [code]true[/code], normal mapping is enabled."
-msgstr "Si [code]true[/code], la carte normale est activée."
-
msgid "The strength of the normal map's effect."
msgstr "L'intensité de l'effet de la carte normale."
@@ -4167,9 +4207,6 @@ msgstr "La couleur de l'objet est soustraite à l'arrière-plan."
msgid "The color of the object is multiplied by the background."
msgstr "La couleur de l'objet est multipliée par l'arrière-plan."
-msgid "No culling is performed."
-msgstr "Aucun culling n’est effectué."
-
msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh."
msgstr ""
"Définit [code]ALBEDO[/code] par la couleur définie pour chaque sommet du "
@@ -4248,9 +4285,6 @@ msgstr "Blob spéculaire par défaut."
msgid "Toon blob which changes size based on roughness."
msgstr "Le reflet en mode cartoon change de taille suivant la rugosité."
-msgid "No specular blob."
-msgstr "Pas de blob spéculaire."
-
msgid "Billboard mode is disabled."
msgstr "Le mode d'affichage est désactivé."
@@ -4913,13 +4947,6 @@ msgstr ""
"draw_polyline], [method draw_polygon], et [method draw_rect]."
msgid ""
-"Sets a custom transform for drawing via components. Anything drawn "
-"afterwards will be transformed by this."
-msgstr ""
-"Définit une transformation personnalisée pour le dessin via des composants. "
-"Tout ce qui est dessiné par la suite sera transformé par cela."
-
-msgid ""
"Sets a custom transform for drawing via matrix. Anything drawn afterwards "
"will be transformed by this."
msgstr ""
@@ -5167,11 +5194,6 @@ msgstr ""
"Le nœud [Viewport] personnalisé assigné au [CanvasLayer]. Si [code]null[/"
"code], ça utilise la fenêtre d'affichage par défaut à la place."
-msgid "Layer index for draw order. Lower values are drawn first."
-msgstr ""
-"L'index des calques définit l'ordre d'affichage. Un index bas sera dessiné "
-"en premier."
-
msgid "The layer's base offset."
msgstr "Le décalage de base du calque."
@@ -11422,13 +11444,6 @@ msgstr "InputEvent"
msgid "Returns a [String] representation of the event."
msgstr "Retourne une représentation [String] de l'évènement."
-msgid ""
-"Returns [code]true[/code] if this input event is an echo event (only for "
-"events of type [InputEventKey])."
-msgstr ""
-"Retourne [code]true[/code] si cet événement d'entrée est un écho (uniquement "
-"pour les événements de type [InputEventKey])."
-
msgid "Input event type for actions."
msgstr "Type d’évènement d’entrée pour les actions."
@@ -12020,13 +12035,6 @@ msgstr ""
"L'énergie de la Light2D. Plus la valeur est élevée, plus la lumière est "
"forte."
-msgid ""
-"The layer mask. Only objects with a matching mask will be affected by the "
-"Light2D."
-msgstr ""
-"Le masque de calque. Seuls les objets avec un masque correspondant seront "
-"sous l'influence de ce Light2D."
-
msgid "Maximum layer value of objects that are affected by the Light2D."
msgstr ""
"La niveau de calque maximum pour qu'un objet soit éclairé par la Light2D."
@@ -12059,14 +12067,6 @@ msgstr ""
"possibles."
msgid ""
-"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders "
-"with a matching light mask will cast shadows."
-msgstr ""
-"Le masque d'ombre. Utilisé avec [LightOccluder2D] pour lancer des ombres. "
-"Seuls les occulteurs avec un masque de lumière correspondant lanceront des "
-"ombres."
-
-msgid ""
"Adds the value of pixels corresponding to the Light2D to the values of "
"pixels under it. This is the common behavior of a light."
msgstr ""
@@ -13593,17 +13593,6 @@ msgstr "Retourne la direction haut de la carte."
msgid "Sets the map up direction."
msgstr "Définit la direction haut de la carte."
-msgid ""
-"Process the collision avoidance agents.\n"
-"The result of this process is needed by the physics server, so this must be "
-"called in the main thread.\n"
-"[b]Note:[/b] This function is not thread safe."
-msgstr ""
-"Traite les agents d'évitement de collision.\n"
-"Le résultat de ce processus est nécessaire par le serveur de physique, de "
-"sorte que cela doit être appelé dans le fil d'exécution principal.\n"
-"[b]Note :[/b] Cette fonction n'est pas sûre entre plusieurs fils d'exécution."
-
msgid "Sets the navigation mesh for the region."
msgstr "Définit le polygone de navigation de la région."
@@ -15080,6 +15069,42 @@ msgstr "Si [code]true[/code], la requête prendra la [PhysicsBody2D] en compte."
msgid "Server interface for low-level 2D physics access."
msgstr "L'interface du serveur pour l'accès à la physique 2D en bas niveau."
+msgid "Represents the size of the [enum BodyParameter] enum."
+msgstr "Représente la taille de l'énumération [enum BodyParameter]."
+
+msgid "Constant to set/get the current transform matrix of the body."
+msgstr ""
+"La constante pour définir/obtenir la matrice de transformation actuelle du "
+"corps."
+
+msgid "Constant to set/get the current linear velocity of the body."
+msgstr ""
+"La constante pour définir/récupérer la vélocité linéaire actuelle de ce "
+"corps."
+
+msgid "Constant to set/get the current angular velocity of the body."
+msgstr ""
+"La constante pour définir/récupérer la vélocité angulaire actuelle de ce "
+"corps."
+
+msgid "Constant to set/get whether the body can sleep."
+msgstr "La constante pour définir/obtenir si le corps peut être au repos."
+
+msgid "Constant to create pin joints."
+msgstr "Constante pour créer des joints d’épingle."
+
+msgid "Constant to create groove joints."
+msgstr "Constante pour créer des joints de rainure."
+
+msgid "Constant to get the number of objects that are not sleeping."
+msgstr "La constante pour récupérer le nombre d'objets qui ne dorment pas."
+
+msgid "Constant to get the number of possible collisions."
+msgstr "La constante pour obtenir le nombre possible de collisions."
+
+msgid "Server interface for low-level physics access."
+msgstr "L'interface du serveur pour l'accès physique de bas niveau."
+
msgid ""
"Adds a shape to the area, along with a transform matrix. Shapes are usually "
"referenced by their index, so you should track which shape has a given index."
@@ -15134,15 +15159,8 @@ msgstr "Affecte la zone à un ou plusieurs calques de physique."
msgid "Sets which physics layers the area will monitor."
msgstr "Définit les calques de physique que la zone surveillera."
-msgid ""
-"Sets the value for an area parameter. See [enum AreaParameter] for a list of "
-"available parameters."
-msgstr ""
-"Définit la valeur d’un paramètre de zone. Voir [enum AreaParameter] pour une "
-"liste de paramètres disponibles."
-
-msgid "Disables a given shape in an area."
-msgstr "Désactive une forme donnée dans une zone."
+msgid "Sets object pickable with rays."
+msgstr "Définit l'objet comme sélectionnable par les rayons."
msgid "Sets the transform matrix for an area shape."
msgstr "Définit la matrice de transformation pour la forme de l'aire."
@@ -15159,9 +15177,6 @@ msgstr "Ajoute un corps à la liste de ceux ignorés lors des collisions."
msgid "Removes all shapes from a body."
msgstr "Retire toutes les formes du corps."
-msgid "Creates a physics body."
-msgstr "Crée un corps physique."
-
msgid "Returns the physics layer or layers a body belongs to."
msgstr "Retourne le(s) calque(s) physique(s) auquel(s) ce corps appartient."
@@ -15194,9 +15209,6 @@ msgstr "Retourne le [RID] de la forme assignée à ce corps."
msgid "Returns a body state."
msgstr "Retourne un état du corps."
-msgid "Removes a body from the list of bodies exempt from collisions."
-msgstr "Retirer un corps de la liste de ceux ignorés lors des collisions."
-
msgid "Sets the physics layer or layers a body belongs to."
msgstr "Définit le(s) calque(s) physique(s) auquel(s) ce corps appartient."
@@ -15204,7 +15216,7 @@ msgid "Sets the physics layer or layers a body can collide with."
msgstr ""
"Définit le(s) calque(s) physique(s) où le corps peut entrer en collision."
-msgid "Sets the body mode using one of the [enum BodyMode] constants."
+msgid "Sets the body mode, from one of the [enum BodyMode] constants."
msgstr ""
"Définit le mode du corps, avec l'une des constantes de [enum BodyMode]."
@@ -15216,13 +15228,6 @@ msgstr ""
"(voir [method body_set_force_integration_callback])."
msgid ""
-"Sets a body parameter. See [enum BodyParameter] for a list of available "
-"parameters."
-msgstr ""
-"Définit un paramètre du corps. Voir [enum BodyParameter] pour la liste des "
-"paramètres disponibles."
-
-msgid ""
"Substitutes a given body shape by another. The old shape is selected by its "
"index, the new one by its [RID]."
msgstr ""
@@ -15235,27 +15240,17 @@ msgstr "Définit la matrice de transformation pour la forme du corps."
msgid "Assigns a space to the body (see [method space_create])."
msgstr "Assigne un espace au corps (voir [method space_create])."
-msgid "Returns the value of a joint parameter."
-msgstr "Retourne la valeur du paramètre du joint."
-
-msgid "Returns a joint's type (see [enum JointType])."
-msgstr "Retourne le type de joint (voir [enum JoinType])."
-
-msgid ""
-"Sets a joint parameter. See [enum JointParam] for a list of available "
-"parameters."
-msgstr ""
-"Définit un paramètre du joint. Voir [enum JointParam] pour la liste des "
-"paramètres disponibles."
+msgid "Sets a body state (see [enum BodyState] constants)."
+msgstr "Définit l'état du corps (voir les constantes [enum BodyState])."
-msgid "Activates or deactivates the 2D physics engine."
-msgstr "Active ou désactive le moteur physique 2D."
+msgid "Activates or deactivates the 3D physics engine."
+msgstr "Active ou désactive le moteur physique 3D."
msgid "Returns the shape data."
msgstr "Retourne les données de forme."
-msgid "Returns a shape's type (see [enum ShapeType])."
-msgstr "Retourne le type de forme (voir [enum ShapeType])."
+msgid "Returns the type of shape (see [enum ShapeType] constants)."
+msgstr "Retourne le type de forme (voir les constantes dans [enum ShapeType])."
msgid "Returns the value of a space parameter."
msgstr "Retourne la valeur d'un paramètre de l'espace."
@@ -15264,92 +15259,6 @@ msgid "Returns whether the space is active."
msgstr "Retourne quand cet espace est actif."
msgid ""
-"Sets the value for a space parameter. See [enum SpaceParameter] for a list "
-"of available parameters."
-msgstr ""
-"Définit la valeur pour le paramètre d'espace. Voir [enum SpaceParameter] "
-"pour la liste des paramètres possibles."
-
-msgid "Constant to set/get gravity strength in an area."
-msgstr "La constante pour définir/obtenir la force de gravité de l'aire."
-
-msgid "Constant to set/get gravity vector/center in an area."
-msgstr "La constante pour définir/obtenir le centre de gravité de l'aire."
-
-msgid "Constant to set/get the priority (order of processing) of an area."
-msgstr ""
-"La constant pour définir/obtenir la priorité (l'ordre de gestion) de l'aire."
-
-msgid "Constant to set/get a body's bounce factor."
-msgstr "La constante pour définir/obtenir le facteur de rebond."
-
-msgid "Constant to set/get a body's friction."
-msgstr "Constante pour définir/récupérer la friction du corps."
-
-msgid "Constant to set/get a body's mass."
-msgstr "La constante pour définir/obtenir la masse du corps."
-
-msgid "Constant to set/get a body's inertia."
-msgstr "La constante pour définir/obtenir l'inertie du corps."
-
-msgid "Constant to set/get a body's gravity multiplier."
-msgstr ""
-"La constante pour définir/obtenir le facteur de multiplication de la gravité "
-"du corps."
-
-msgid "Represents the size of the [enum BodyParameter] enum."
-msgstr "Représente la taille de l'énumération [enum BodyParameter]."
-
-msgid "Constant to set/get the current transform matrix of the body."
-msgstr ""
-"La constante pour définir/obtenir la matrice de transformation actuelle du "
-"corps."
-
-msgid "Constant to set/get the current linear velocity of the body."
-msgstr ""
-"La constante pour définir/récupérer la vélocité linéaire actuelle de ce "
-"corps."
-
-msgid "Constant to set/get the current angular velocity of the body."
-msgstr ""
-"La constante pour définir/récupérer la vélocité angulaire actuelle de ce "
-"corps."
-
-msgid "Constant to set/get whether the body can sleep."
-msgstr "La constante pour définir/obtenir si le corps peut être au repos."
-
-msgid "Constant to create pin joints."
-msgstr "Constante pour créer des joints d’épingle."
-
-msgid "Constant to create groove joints."
-msgstr "Constante pour créer des joints de rainure."
-
-msgid "Constant to get the number of objects that are not sleeping."
-msgstr "La constante pour récupérer le nombre d'objets qui ne dorment pas."
-
-msgid "Constant to get the number of possible collisions."
-msgstr "La constante pour obtenir le nombre possible de collisions."
-
-msgid "Server interface for low-level physics access."
-msgstr "L'interface du serveur pour l'accès physique de bas niveau."
-
-msgid "Sets object pickable with rays."
-msgstr "Définit l'objet comme sélectionnable par les rayons."
-
-msgid "Sets the body mode, from one of the [enum BodyMode] constants."
-msgstr ""
-"Définit le mode du corps, avec l'une des constantes de [enum BodyMode]."
-
-msgid "Sets a body state (see [enum BodyState] constants)."
-msgstr "Définit l'état du corps (voir les constantes [enum BodyState])."
-
-msgid "Activates or deactivates the 3D physics engine."
-msgstr "Active ou désactive le moteur physique 3D."
-
-msgid "Returns the type of shape (see [enum ShapeType] constants)."
-msgstr "Retourne le type de forme (voir les constantes dans [enum ShapeType])."
-
-msgid ""
"The strength with which the pinned objects try to stay in velocity relation "
"to each other.\n"
"The higher, the stronger."
@@ -15392,6 +15301,33 @@ msgstr ""
msgid "If set, rotational motion is possible."
msgstr "Si définit, la rotation est possible."
+msgid "Constant to set/get gravity strength in an area."
+msgstr "La constante pour définir/obtenir la force de gravité de l'aire."
+
+msgid "Constant to set/get gravity vector/center in an area."
+msgstr "La constante pour définir/obtenir le centre de gravité de l'aire."
+
+msgid "Constant to set/get the priority (order of processing) of an area."
+msgstr ""
+"La constant pour définir/obtenir la priorité (l'ordre de gestion) de l'aire."
+
+msgid "Constant to set/get a body's bounce factor."
+msgstr "La constante pour définir/obtenir le facteur de rebond."
+
+msgid "Constant to set/get a body's friction."
+msgstr "Constante pour définir/récupérer la friction du corps."
+
+msgid "Constant to set/get a body's mass."
+msgstr "La constante pour définir/obtenir la masse du corps."
+
+msgid "Constant to set/get a body's inertia."
+msgstr "La constante pour définir/obtenir l'inertie du corps."
+
+msgid "Constant to set/get a body's gravity multiplier."
+msgstr ""
+"La constante pour définir/obtenir le facteur de multiplication de la gravité "
+"du corps."
+
msgid "Parameters to be sent to a 2D shape physics query."
msgstr "Les paramètres à passer à un requête physique d'une forme 2D."
@@ -15974,11 +15910,6 @@ msgstr ""
"Si [code]true[/code], envoie des événements d'entrée tactile lorsque vous "
"cliquez ou faites glisser la souris."
-msgid "Default delay for touch events. This only affects iOS devices."
-msgstr ""
-"Un retard par défaut pour les événements tactiles. Cela n'affecte que les "
-"appareils iOS."
-
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
@@ -18139,12 +18070,6 @@ msgstr "Le dragueur fractionné n’est jamais visible."
msgid "A spotlight, such as a reflector spotlight or a lantern."
msgstr "Un projecteur, comme un projecteur de spectacle ou un lanterne."
-msgid "The spotlight's angular attenuation curve."
-msgstr "La courbe d’atténuation angulaire du projecteur."
-
-msgid "The spotlight's light energy attenuation curve."
-msgstr "La courbe d’atténuation de l'énergie de la lumière du projecteur."
-
msgid "A helper node, mostly used in 3rd person cameras."
msgstr ""
"Un nœud d'aide, surtout utilisé pour les caméras à la troisième personne."
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index d2d3354d48..1054650db3 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -1,6 +1,6 @@
# Chinese (Simplified) translation of the Godot Engine class reference.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+# Copyright (c) 2014-present Godot Engine contributors.
+# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
# This file is distributed under the same license as the Godot source code.
#
# Haoyu Qiu <timothyqiu32@gmail.com>, 2020, 2021, 2022, 2023.
@@ -52,8 +52,8 @@
# 有趣æžäº† <2944595791@qq.com>, 2021.
# 刘亚西 <wayrboy123@gmail.com>, 2021.
# 诗鸷Temsys <shenshichao920@hotmail.com>, 2021.
-# Sam Sun <oppositenormal@outlook.com>, 2021.
-# sudo-behappy <3216539984@qq.com>, 2021.
+# Sam Sun <oppositenormal@outlook.com>, 2021, 2023.
+# sudo-behappy <3216539984@qq.com>, 2021, 2023.
# Cc <2590090025@qq.com>, 2021.
# è‹è½¼ <youwanyuyu@gmail.com>, 2021.
# ErrorDreemurr <diandaokui@qq.com>, 2021.
@@ -63,11 +63,14 @@
# 风é’å±± <idleman@yeah.net>, 2023.
# zehuai wu <wuzehuai@gmail.com>, 2023.
# matrixant <yuan545@hotmail.com>, 2023.
+# Pencil Core <pencilzyl@gmail.com>, 2023.
+# skyatgit <1218980814@qq.com>, 2023.
+# Hamster <hamster5295@163.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2023-02-10 06:54+0000\n"
+"PO-Revision-Date: 2023-02-20 10:58+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"
@@ -173,79 +176,10 @@ msgstr "本方法æ述的是使用本类型作为左æ“作数的有效æ“作符
msgid "Built-in GDScript functions."
msgstr "内置 GDScript 函数。"
-msgid ""
-"A list of GDScript-specific utility functions accessed in any script.\n"
-"For the list of the global functions and constants see [@GlobalScope]."
-msgstr ""
-"å¯åœ¨ä»»ä½•è„šæœ¬ä¸­è®¿é—®çš„,GDScript专用的实用函数的列表。\n"
-"有关全局函数和常é‡çš„列表,请å‚阅 [@GlobalScope]。"
-
msgid "GDScript exports"
msgstr "GDScript的导出"
msgid ""
-"Returns a [Color] constructed from red ([param r8]), green ([param g8]), "
-"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each "
-"divided by [code]255.0[/code] for their final value.\n"
-"[codeblock]\n"
-"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0)\n"
-"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n"
-"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n"
-"[/codeblock]"
-msgstr ""
-"返回一个由红([param r8])ã€ç»¿ï¼ˆ[param g8])ã€è“([param b8])和å¯é€‰çš„阿尔法"
-"([param a8])整数通é“构造的 [Color],æ¯ä¸ªé€šé“除以 [code]255.0[/code],作为其"
-"最终值。\n"
-"[codeblock]\n"
-"var red = Color8(255, 0, 0) # 与 Color(1, 0, 0) 相åŒ\n"
-"var dark_blue = Color8(0, 0, 51) # 与 Color(0, 0, 0.2) 相åŒã€‚\n"
-"var my_color = Color8(306, 255, 0, 102) # 与 Color(1.2, 1, 0, 0.4) 相åŒã€‚\n"
-"[/codeblock]"
-
-msgid ""
-"Asserts that the [param condition] is [code]true[/code]. If the [param "
-"condition] is [code]false[/code], an error is generated. When running from "
-"the editor, the running project will also be paused until you resume it. "
-"This can be used as a stronger form of [method @GlobalScope.push_error] for "
-"reporting errors to project developers or add-on users.\n"
-"An optional [param message] can be shown in addition to the generic "
-"\"Assertion failed\" message. You can use this to provide additional details "
-"about why the assertion failed.\n"
-"[b]Warning:[/b] For performance reasons, the code inside [method assert] is "
-"only executed in debug builds or when running the project from the editor. "
-"Don't include code that has side effects in an [method assert] call. "
-"Otherwise, the project will behave differently when exported in release "
-"mode.\n"
-"[codeblock]\n"
-"# Imagine we always want speed to be between 0 and 20.\n"
-"var speed = -10\n"
-"assert(speed < 20) # True, the program will continue\n"
-"assert(speed >= 0) # False, the program will stop\n"
-"assert(speed >= 0 and speed < 20) # You can also combine the two conditional "
-"statements in one check\n"
-"assert(speed < 20, \"the speed limit is 20\") # Show a message\n"
-"[/codeblock]"
-msgstr ""
-"断言æ¡ä»¶ [param condition] 为 [code]true[/code]。如果æ¡ä»¶ [param condition] "
-"为 [code]false[/code] ,则会生æˆä¸€ä¸ªé”™è¯¯ã€‚如果是从编辑器è¿è¡Œçš„,正在è¿è¡Œçš„项"
-"目还会被暂åœï¼Œç›´åˆ°æ‰‹åŠ¨æ¢å¤ã€‚该函数å¯ä»¥ä½œä¸º [method @GlobalScope.push_error] "
-"的加强版,用于å‘项目开å‘者或æ’件用户报错。\n"
-"如果给出了å¯é€‰çš„ [param message] å‚数,在通用的“Assertion failedâ€æ¶ˆæ¯ä¹‹å¤–,还"
-"会显示该信æ¯ã€‚ä½ å¯ä»¥ä½¿ç”¨å®ƒæ¥æ供关于断言失败原因的其他详细信æ¯ã€‚\n"
-"[b]注æ„:[/b]出于对性能的考虑,[method assert] 中的代ç åªä¼šåœ¨è°ƒè¯•ç‰ˆæœ¬æˆ–者从编"
-"辑器è¿è¡Œé¡¹ç›®æ—¶æ‰§è¡Œã€‚所以ä¸è¦åœ¨ [method assert] 调用中加入具有副作用的代ç ã€‚å¦"
-"则,项目在以å‘行模å¼å¯¼å‡ºåŽå°†æœ‰ä¸ä¸€è‡´çš„行为。\n"
-"[codeblock]\n"
-"# 比如说我们希望 speed 始终在 0 和 20 之间。\n"
-"speed = -10\n"
-"assert(speed < 20) # True,程åºä¼šç»§ç»­æ‰§è¡Œ\n"
-"assert(speed >= 0) # False,程åºä¼šåœæ­¢\n"
-"assert(speed >= 0 && speed < 20) # 你还å¯ä»¥åœ¨å•æ¬¡æ–­è¨€ä¸­åˆå¹¶ä¸¤ä¸ªæ¡ä»¶è¯­å¥\n"
-"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # 在消"
-"æ¯ä¸­æ˜¾ç¤ºè¯¦æƒ…\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -396,73 +330,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Returns a [Resource] from the filesystem located at the absolute [param "
-"path]. Unless it's already referenced elsewhere (such as in another script "
-"or in the scene), the resource is loaded from disk on function call, which "
-"might cause a slight delay, especially when loading large scenes. To avoid "
-"unnecessary delays when loading something multiple times, either store the "
-"resource in a variable or use [method preload].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the FileSystem dock and choosing \"Copy Path\" or by dragging the file "
-"from the FileSystem dock into the script.\n"
-"[codeblock]\n"
-"# Load a scene called \"main\" located in the root of the project directory "
-"and cache it in a variable.\n"
-"var main = load(\"res://main.tscn\") # main will contain a PackedScene "
-"resource.\n"
-"[/codeblock]\n"
-"[b]Important:[/b] The path must be absolute. A relative path will always "
-"return [code]null[/code].\n"
-"This function is a simplified version of [method ResourceLoader.load], which "
-"can be used for more advanced scenarios.\n"
-"[b]Note:[/b] Files have to be imported into the engine first to load them "
-"using this function. If you want to load [Image]s at run-time, you may use "
-"[method Image.load]. If you want to import audio files, you can use the "
-"snippet described in [member AudioStreamMP3.data]."
-msgstr ""
-"从ä½äºŽç»å¯¹ [param path] 的文件系统中返回一个 [Resource]。除éžè¯¥èµ„æºå·²åœ¨å…¶ä»–地"
-"方引用(例如在å¦ä¸€ä¸ªè„šæœ¬æˆ–场景中),å¦åˆ™èµ„æºæ˜¯åœ¨å‡½æ•°è°ƒç”¨æ—¶ä»Žç£ç›˜åŠ è½½çš„,这å¯"
-"能会导致轻微的延迟,尤其是在加载大型场景时。为é¿å…在多次加载æŸäº›å†…容时出现ä¸"
-"å¿…è¦çš„延迟,å¯ä»¥å°†èµ„æºå­˜å‚¨åœ¨å˜é‡ä¸­æˆ–使用预加载 [method preload]。\n"
-"[b]注æ„:[/b]资æºè·¯å¾„å¯ä»¥é€šè¿‡å³é”®å•å‡»æ–‡ä»¶ç³»ç»Ÿåœé é¢æ¿ä¸­çš„资æºå¹¶é€‰æ‹©â€œå¤åˆ¶è·¯"
-"径â€ï¼Œæˆ–将文件从文件系统åœé é¢æ¿æ‹–到脚本中获得。\n"
-"[codeblock]\n"
-"# 加载ä½äºŽé¡¹ç›®ç›®å½•æ ¹éƒ¨çš„一个å为“mainâ€çš„场景,并将其缓存在一个å˜é‡ä¸­ã€‚\n"
-"var main = load(\"res://main.tscn\") # main 将包å«ä¸€ä¸ª PackedScene 资æºã€‚\n"
-"[/codeblock]\n"
-"[b]é‡è¦æ示:[/b]路径必须是ç»å¯¹è·¯å¾„。相对路径将始终返回 [code]null[/code]。\n"
-"这个方法是 [method ResourceLoader.load] 的简化版,原版方法å¯ä»¥ç”¨äºŽæ›´é«˜çº§çš„场"
-"景。\n"
-"[b]注æ„:[/b]必须先将文件导入引擎æ‰èƒ½ä½¿ç”¨æ­¤å‡½æ•°åŠ è½½å®ƒä»¬ã€‚如果你想在è¿è¡Œæ—¶åŠ "
-"è½½ [Image],你å¯ä»¥ä½¿ç”¨ [method Image.load]。如果è¦å¯¼å…¥éŸ³é¢‘文件,å¯ä»¥ä½¿ç”¨ "
-"[member AudioStreamMP3.data]中æ述的代ç ç‰‡æ®µã€‚"
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\" or by dragging the file from "
-"the FileSystem dock into the script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
-"[/codeblock]"
-msgstr ""
-"从ä½äºŽ [param path] 的文件系统中返回一个 [Resource]。在è¿è¡Œæ—¶æœŸé—´ï¼Œè¯¥èµ„æºå°†åœ¨"
-"解æžè„šæœ¬æ—¶åŠ è½½ã€‚实际å¯ä»¥å°†è¿™ä¸ªå‡½æ•°è§†ä½œå¯¹è¯¥èµ„æºçš„引用。请注æ„,此函数è¦æ±‚ "
-"[param path] ä¸ºå¸¸é‡ [String]。如果è¦ä»ŽåŠ¨æ€/å¯å˜è·¯å¾„加载资æºï¼Œè¯·ä½¿ç”¨ [method "
-"load]。\n"
-"[b]注æ„:[/b]资æºè·¯å¾„å¯ä»¥é€šè¿‡å³é”®å•å‡»èµ„产é¢æ¿ä¸­çš„资æºå¹¶é€‰æ‹©â€œå¤åˆ¶è·¯å¾„â€ï¼Œæˆ–通过"
-"将文件从文件系统åœé é¢æ¿æ‹–到脚本中æ¥èŽ·å¾—。\n"
-"[codeblock]\n"
-"# 创建场景的实例。\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
-"[/codeblock]"
-
-msgid ""
"Like [method @GlobalScope.print], but includes the current stack frame when "
"running with the debugger turned on.\n"
"The output in the console may look like the following:\n"
@@ -555,20 +422,20 @@ msgid ""
"0.1\n"
"[/codeblock]"
msgstr ""
-"返回给定范围的数组。[method range] 的调用方法有三ç§ï¼š\n"
+"返回具有给定范围的数组。[method range] å¯ä»¥é€šè¿‡ä¸‰ç§æ–¹å¼è°ƒç”¨ï¼š\n"
"[code]range(n: int)[/code]:从 0 开始,æ¯æ¬¡åŠ  1,在到达 [code]n[/code] [i]之"
"å‰[/i]åœæ­¢ã€‚[b]ä¸åŒ…å«[/b]å‚æ•° [code]n[/code]。\n"
"[code]range(b: int, n: int)[/code]:从 [code]b[/code] 开始,æ¯æ¬¡åŠ  1,在到达 "
"[code]n[/code] [i]之å‰[/i]åœæ­¢ã€‚[b]包å«[/b]å‚æ•° [code]b[/code],[b]ä¸åŒ…å«[/b]"
"å‚æ•° [code]n[/code]。\n"
-"[code]range(b: int, n: int, s: int)[/code]:从 [code]b[/code] 开始,æ¯æ¬¡åŠ  "
-"[code]s[/code],在到达 [code]n[/code] [i]之å‰[/i]åœæ­¢ã€‚[b]包å«[/b]å‚æ•° "
-"[code]b[/code],[b]ä¸åŒ…å«[/b]å‚æ•° [code]n[/code]。å‚æ•° [code]s[/code] [b]å¯"
-"以[/b]为负数,但ä¸èƒ½ä¸º [code]0[/code]。如果 [code]s[/code] 为 [code]0[/"
-"code],会输出一æ¡é”™è¯¯ã€‚\n"
+"[code]range(b: int, n: int, s: int)[/code]:从[code]b[/code]开始,以[code]s[/"
+"code]为步长递增/递å‡ï¼Œåœ¨åˆ°è¾¾ [code]n[/code] [i]之å‰[/i]åœæ­¢ã€‚[b]包å«[/b]å‚æ•° "
+"[code]b[/code],[b]ä¸åŒ…å«[/b]å‚æ•° [code]n[/code]。å‚æ•° [code]s[/code] [b]å¯ä»¥"
+"[/b] 为负数,但ä¸èƒ½ä¸º [code]0[/code]。如果 [code]s[/code] 是 [code]0[/code],"
+"则会输出一æ¡é”™è¯¯æ¶ˆæ¯ã€‚\n"
"[method range] 会先将所有å‚数转æ¢ä¸º [int] å†è¿›è¡Œå¤„ç†ã€‚\n"
-"[b]注æ„:[/b]如果ä¸å­˜åœ¨æ»¡è¶³æ¡ä»¶çš„值,则返回空数组(例如 [code]range(2, 5, -1)"
-"[/code] 和 [code]range(5, 5, 1)[/code])。\n"
+"[b]注æ„:[/b]如果没有满足æ¡ä»¶çš„值,则返回空数组(例如 [code]range(2, 5, -1)[/"
+"code] 和 [code]range(5, 5, 1)[/code])。\n"
"示例:\n"
"[codeblock]\n"
"print(range(4)) # 输出 [0, 1, 2, 3]\n"
@@ -576,7 +443,7 @@ msgstr ""
"print(range(0, 6, 2)) # 输出 [0, 2, 4]\n"
"print(range(4, 1, -1)) # 输出 [4, 3, 2]\n"
"[/codeblock]\n"
-"åå‘é历 [Array] 请使用:\n"
+"è¦åå‘é历 [Array],请使用:\n"
"[codeblock]\n"
"var array = [3, 6, 9]\n"
"for i in range(array.size(), 0, -1):\n"
@@ -669,72 +536,48 @@ msgstr ""
"行时错误。"
msgid ""
-"Mark the following property as exported (editable in the Inspector dock and "
-"saved to disk). To control the type of the exported property use the type "
-"hint notation.\n"
-"[codeblock]\n"
-"@export var int_number = 5\n"
-"@export var float_number: float = 5\n"
-"[/codeblock]"
-msgstr ""
-"将以下属性标记为已导出(å¯åœ¨ Inspector Dock 中编辑并ä¿å­˜åˆ°ç£ç›˜ï¼‰ã€‚è¦æŽ§åˆ¶å¯¼å‡º"
-"属性的类型,请使用类型æ示表示法。\n"
-"[codeblock]\n"
-"@export var int_number = 5\n"
-"@export var float_number: float = 5\n"
-"[/codeblock]"
-
-msgid ""
-"Define a new category for the following exported properties. This helps to "
-"organize properties in the Inspector dock.\n"
-"See also [constant PROPERTY_USAGE_CATEGORY].\n"
+"Export an [int] or [String] property as an enumerated list of options. If "
+"the property is an [int], then the index of the value is stored, in the same "
+"order the values are provided. You can add explicit values using a colon. If "
+"the property is a [String], then the value is stored.\n"
+"See also [constant PROPERTY_HINT_ENUM].\n"
"[codeblock]\n"
-"@export_category(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
+"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n"
+"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var "
+"character_speed: int\n"
+"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n"
"[/codeblock]\n"
-"[b]Note:[/b] Categories in the property list are supposed to indicate "
-"different base types, so the use of this annotation is not encouraged. See "
-"[annotation @export_group] and [annotation @export_subgroup] instead."
-msgstr ""
-"为以下导出的属性定义一个新类别。这有助于在检查器åœé æ ä¸­ç»„织属性。\n"
-"å¦è¯·å‚è§ [constant PROPERTY_USAGE_CATEGORY]。\n"
+"If you want to set an initial value, you must specify it explicitly:\n"
"[codeblock]\n"
-"@export_category(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
+"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
+"\"Rebecca\"\n"
"[/codeblock]\n"
-"[b]注æ„:[/b]属性列表中的类别应该指示ä¸åŒçš„基本类型,因此ä¸é¼“励使用此注解。请"
-"å‚阅 [annotation @export_group] å’Œ [annotation @export_subgroup]。"
-
-msgid ""
-"Export a [Color] property without transparency (its alpha fixed as "
-"[code]1.0[/code]).\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
+"If you want to use named GDScript enums, then use [annotation @export] "
+"instead:\n"
"[codeblock]\n"
-"@export_color_no_alpha var modulate_color: Color\n"
+"enum CharacterName {REBECCA, MARY, LEAH}\n"
+"@export var character_name: CharacterName\n"
"[/codeblock]"
msgstr ""
-"导出一个没有é€æ˜Žåº¦çš„ [Color] 属性(它的 alpha 固定为 [code]1.0[/code])。\n"
-"å¦è§ [constant PROPERTY_HINT_COLOR_NO_ALPHA]。\n"
+"å°† [int] 或 [String] 导出为枚举选项列表。如果属性为 [int],则ä¿å­˜çš„是值的索"
+"引,与值的顺åºä¸€è‡´ã€‚ä½ å¯ä»¥é€šè¿‡å†’å·æ·»åŠ æ˜¾å¼å€¼ã€‚如果属性为 [String],则ä¿å­˜çš„是"
+"值。\n"
+"å¦è§ [constant PROPERTY_HINT_ENUM]。\n"
"[codeblock]\n"
-"@export_color_no_alpha var modulate_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be "
-"limited to the project folder and its subfolders. See [annotation "
-"@export_global_dir] to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
+"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n"
+"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var "
+"character_speed: int\n"
+"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n"
+"[/codeblock]\n"
+"如果想è¦è®¾ç½®åˆå§‹å€¼ï¼Œä½ å¿…须进行显å¼æŒ‡å®šï¼š\n"
"[codeblock]\n"
-"@export_dir var sprite_folder: String\n"
-"[/codeblock]"
-msgstr ""
-"å°† [String] 属性作为目录路径导出。该路径将被é™åˆ¶åœ¨é¡¹ç›®æ–‡ä»¶å¤¹åŠå…¶å­æ–‡ä»¶å¤¹ä¸­ã€‚"
-"请å‚阅 [annotation @export_global_dir],以å…许从整个文件系统中进行选择。\n"
-"å¦è¯·å‚è§ [constant PROPERTY_HINT_DIR]。\n"
+"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
+"\"Rebecca\"\n"
+"[/codeblock]\n"
+"如果想è¦ä½¿ç”¨ GDScript 枚举,请改用 [annotation @export]:\n"
"[codeblock]\n"
-"@export_dir var sprite_folder: String\n"
+"enum CharacterName {REBECCA, MARY, LEAH}\n"
+"@export var character_name: CharacterName\n"
"[/codeblock]"
msgid ""
@@ -761,24 +604,55 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property as a path to a file. The path will be limited to "
-"the project folder and its subfolders. See [annotation @export_global_file] "
-"to allow picking from the entire filesystem.\n"
-"If [param filter] is provided, only matching files will be available for "
-"picking.\n"
-"See also [constant PROPERTY_HINT_FILE].\n"
+"Export an integer property as a bit flag field. This allows to store several "
+"\"checked\" or [code]true[/code] values with one property, and comfortably "
+"select them from the Inspector dock.\n"
+"See also [constant PROPERTY_HINT_FLAGS].\n"
"[codeblock]\n"
-"@export_file var sound_effect_file: String\n"
-"@export_file(\"*.txt\") var notes_file: String\n"
+"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
+"0\n"
+"[/codeblock]\n"
+"You can add explicit values using a colon:\n"
+"[codeblock]\n"
+"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
+"[/codeblock]\n"
+"You can also combine several flags:\n"
+"[codeblock]\n"
+"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", "
+"\"Foes:16\")\n"
+"var spell_targets = 0\n"
+"[/codeblock]\n"
+"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most "
+"[code]2 ** 32 - 1[/code].\n"
+"[b]Note:[/b] Unlike [annotation @export_enum], the previous explicit value "
+"is not taken into account. In the following example, A is 16, B is 2, C is "
+"4.\n"
+"[codeblock]\n"
+"@export_flags(\"A:16\", \"B\", \"C\") var x\n"
"[/codeblock]"
msgstr ""
-"å°† [String] 属性导出为文件的路径。该路径将é™äºŽé¡¹ç›®æ–‡ä»¶å¤¹åŠå…¶å­æ–‡ä»¶å¤¹ã€‚请å‚阅 "
-"[annotation @export_global_file],以å…许从整个文件系统中进行选择。\n"
-"如果æ供了 [param filter],则åªæœ‰åŒ¹é…的文件å¯ä¾›é€‰æ‹©ã€‚\n"
-"å¦è¯·å‚è§ [constant PROPERTY_HINT_FILE]。\n"
+"将整数属性导出为ä½æ ‡å¿—字段。能够在å•ä¸ªå±žæ€§ä¸­ä¿å­˜è‹¥å¹²â€œå‹¾é€‰â€æˆ–者说 [code]true[/"
+"code] 值,å¯ä»¥å¾ˆæ–¹ä¾¿åœ°åœ¨æ£€æŸ¥å™¨é¢æ¿ä¸­è¿›è¡Œé€‰æ‹©ã€‚\n"
+"å¦è§ [constant PROPERTY_HINT_FLAGS]。\n"
+"[codeblock]\n"
+"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
+"0\n"
+"[/codeblock]\n"
+"ä½ å¯ä»¥é€šè¿‡å†’å·æ¥æ·»åŠ æ˜¾å¼å€¼ï¼š\n"
+"[codeblock]\n"
+"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
+"[/codeblock]\n"
+"你还å¯ä»¥å¯¹æ ‡å¿—进行组åˆï¼š\n"
+"[codeblock]\n"
+"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", "
+"\"Foes:16\")\n"
+"var spell_targets = 0\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n"
+"[b]注æ„:[/b]与 [annotation @export_enum] ä¸åŒï¼Œä¸ä¼šè€ƒè™‘å‰ä¸€ä¸ªæ˜¾å¼å€¼ã€‚下é¢çš„"
+"例å­ä¸­ï¼ŒA 为 16ã€B 为 2ã€C 为 4。\n"
"[codeblock]\n"
-"@export_file var sound_effect_file: String\n"
-"@export_file(\"*.txt\") var notes_file: String\n"
+"@export_flags(\"A:16\", \"B\", \"C\") var x\n"
"[/codeblock]"
msgid ""
@@ -806,7 +680,7 @@ msgid ""
"@export_flags_2d_physics var physics_layers: int\n"
"[/codeblock]"
msgstr ""
-"将整数属性导出为 2D 物ç†å±‚çš„ä½æ ‡å¿—字段。检查器åœé æ ä¸­çš„å°éƒ¨ä»¶ï¼Œå°†ä½¿ç”¨åœ¨ "
+"将整数属性导出为 2D 物ç†å±‚çš„ä½æ ‡å¿—字段。检查器åœé é¢æ¿ä¸­çš„å°å·¥å…·ï¼Œå°†ä½¿ç”¨åœ¨ "
"[member ProjectSettings.layer_names/2d_physics/layer_1] 中定义的层å称。\n"
"å¦è¯·å‚è§ [constant PROPERTY_HINT_LAYERS_2D_PHYSICS]。\n"
"[codeblock]\n"
@@ -878,155 +752,239 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property as a path to a directory. The path can be picked "
-"from the entire filesystem. See [annotation @export_dir] to limit it to the "
-"project folder and its subfolders.\n"
-"See also [constant PROPERTY_HINT_GLOBAL_DIR].\n"
+"Export a [String] property with a large [TextEdit] widget instead of a "
+"[LineEdit]. This adds support for multiline content and makes it easier to "
+"edit large amount of text stored in the property.\n"
+"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
+"[codeblock]\n"
+"@export_multiline var character_biography\n"
+"[/codeblock]"
+msgstr ""
+"用一个大的 [TextEdit] 部件而ä¸æ˜¯ [LineEdit] 导出一个 [String] 属性。这增加了"
+"对多行内容的支æŒï¼Œä½¿å…¶æ›´å®¹æ˜“编辑存储在属性中的大é‡æ–‡æœ¬ã€‚\n"
+"å‚è§ [constant PROPERTY_HINT_MULTILINE_TEXT]。\n"
+"[codeblock]\n"
+"@export_multiline var character_biography\n"
+"[/codeblock]"
+
+msgid ""
+"Export a [NodePath] property with a filter for allowed node types.\n"
+"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
"[codeblock]\n"
-"@export_global_dir var sprite_folder: String\n"
+"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
"[/codeblock]"
msgstr ""
-"å°† [String] 属性导出为目录路径。å¯ä»¥ä»Žæ•´ä¸ªæ–‡ä»¶ç³»ç»Ÿä¸­é€‰æ‹©è·¯å¾„。请å‚阅 "
-"[annotation @export_dir] 以将其é™åˆ¶ä¸ºé¡¹ç›®æ–‡ä»¶å¤¹åŠå…¶å­æ–‡ä»¶å¤¹ã€‚\n"
-"å¦è¯·å‚è§ [constant PROPERTY_HINT_GLOBAL_DIR]。\n"
+"导出一个 [NodePath] 属性,对å…许的节点类型进行过滤。\n"
+"å‚è§ [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n"
"[codeblock]\n"
-"@export_global_dir var sprite_folder: String\n"
+"@export_node_path(Button, TouchScreenButton) var some_button\n"
"[/codeblock]"
msgid ""
-"Export a [String] property as a path to a file. The path can be picked from "
-"the entire filesystem. See [annotation @export_file] to limit it to the "
-"project folder and its subfolders.\n"
-"If [param filter] is provided, only matching files will be available for "
-"picking.\n"
-"See also [constant PROPERTY_HINT_GLOBAL_FILE].\n"
+"Export a [String] property with a placeholder text displayed in the editor "
+"widget when no value is present.\n"
+"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
"[codeblock]\n"
-"@export_global_file var sound_effect_file: String\n"
-"@export_global_file(\"*.txt\") var notes_file: String\n"
+"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
"[/codeblock]"
msgstr ""
-"å°† [String] 属性作为文件路径导出。å¯ä»¥ä»Žæ•´ä¸ªæ–‡ä»¶ç³»ç»Ÿä¸­é€‰æ‹©è·¯å¾„。请å‚阅 "
-"[annotation @export_file],以将其é™åˆ¶ä¸ºé¡¹ç›®æ–‡ä»¶å¤¹åŠå…¶å­æ–‡ä»¶å¤¹ã€‚\n"
-"如果æ供了 [param filter],则åªæœ‰åŒ¹é…的文件å¯ä¾›é€‰æ‹©ã€‚\n"
-"å¦è¯·å‚è§ [constant PROPERTY_HINT_GLOBAL_FILE]。\n"
+"导出一个带有一个å ä½ç¬¦æ–‡æœ¬çš„ [String] 属性,当没有值时,编辑器å°éƒ¨ä»¶ä¸­ä¼šæ˜¾ç¤º"
+"该å ä½ç¬¦æ–‡æœ¬ã€‚\n"
+"å¦è¯·å‚è§ [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n"
"[codeblock]\n"
-"@export_global_file var sound_effect_file: String\n"
-"@export_global_file(\"*.txt\") var notes_file: String\n"
+"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
"[/codeblock]"
msgid ""
-"Define a new group for the following exported properties. This helps to "
-"organize properties in the Inspector dock. Groups can be added with an "
-"optional [param prefix], which would make group to only consider properties "
-"that have this prefix. The grouping will break on the first property that "
-"doesn't have a prefix. The prefix is also removed from the property's name "
-"in the Inspector dock.\n"
-"If no [param prefix] is provided, the every following property is added to "
-"the group. The group ends when then next group or category is defined. You "
-"can also force end a group by using this annotation with empty strings for "
-"parameters, [code]@export_group(\"\", \"\")[/code].\n"
-"Groups cannot be nested, use [annotation @export_subgroup] to add subgroups "
-"within groups.\n"
-"See also [constant PROPERTY_USAGE_GROUP].\n"
+"Export an [int] or [float] property as a range value. The range must be "
+"defined by [param min] and [param max], as well as an optional [param step] "
+"and a variety of extra hints. The [param step] defaults to [code]1[/code] "
+"for integer properties. For floating-point numbers this value depends on "
+"your [code]EditorSettings.interface/inspector/default_float_step[/code] "
+"setting.\n"
+"If hints [code]\"or_greater\"[/code] and [code]\"or_less\"[/code] are "
+"provided, the editor widget will not cap the value at range boundaries. The "
+"[code]\"exp\"[/code] hint will make the edited values on range to change "
+"exponentially. The [code]\"hide_slider\"[/code] hint will hide the slider "
+"element of the editor widget.\n"
+"Hints also allow to indicate the units for the edited value. Using "
+"[code]\"radians\"[/code] you can specify that the actual value is in "
+"radians, but should be displayed in degrees in the Inspector dock. "
+"[code]\"degrees\"[/code] allows to add a degree sign as a unit suffix. "
+"Finally, a custom suffix can be provided using [code]\"suffix:unit\"[/code], "
+"where \"unit\" can be any string.\n"
+"See also [constant PROPERTY_HINT_RANGE].\n"
"[codeblock]\n"
-"@export_group(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
+"@export_range(0, 20) var number\n"
+"@export_range(-10, 20) var number\n"
+"@export_range(-10, 20, 0.2) var number: float\n"
"\n"
-"@export_group(\"Prefixed Properties\", \"prefix_\")\n"
-"@export var prefix_number = 3\n"
-"@export var prefix_string = \"\"\n"
+"@export_range(0, 100, 1, \"or_greater\") var power_percent\n"
+"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n"
"\n"
-"@export_group(\"\", \"\")\n"
-"@export var ungrouped_number = 3\n"
+"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n"
+"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n"
+"@export_range(-8, 8, 2, \"suffix:px\") var target_offset\n"
"[/codeblock]"
msgstr ""
-"为以下导出的属性定义一个新组。这有助于在检查器åœé é¢æ¿ä¸­ç»„织属性。å¯ä»¥ä½¿ç”¨å¯"
-"选的 [param prefix] 添加组,这将使组仅考虑具有此å‰ç¼€çš„属性。分组将在第一个没"
-"有å‰ç¼€çš„属性上中断。å‰ç¼€ä¹Ÿå°†ä»Žæ£€æŸ¥å™¨åœé é¢æ¿ä¸­çš„属性å称中移除。\n"
-"如果未æä¾› [param prefix],则将以下æ¯ä¸ªå±žæ€§æ·»åŠ åˆ°ç»„中。当定义下一个组或类别"
-"时,该组结æŸã€‚您还å¯ä»¥é€šè¿‡å°†æ­¤æ³¨è§£ä¸Žç©ºå­—符串的å‚数一起使用æ¥å¼ºåˆ¶ç»“æŸç»„,"
-"[code]@export_group(\"\", \"\")[/code]。\n"
-"组ä¸èƒ½è¢«åµŒå¥—,使用 [annotation @export_subgroup] 在组内添加å­ç»„。\n"
-"å¦è§ [constant PROPERTY_USAGE_GROUP]。\n"
+"将一个[int]或[float]属性导出为一个范围值。范围必须由 [param min] 和 [param "
+"max] 定义,以åŠä¸€ä¸ªå¯é€‰çš„ [param step] å’Œå„ç§é¢å¤–çš„æ示。对于整数属性,"
+"[param step] 的默认值是 [code]1[/code] 。对于浮点数,这个值å–决于你的 "
+"[code]EditorSettings.interface/inspector/default_float_step[/code] 设置。\n"
+"如果æ供了æ示 [code]\"or_greater\"[/code] å’Œ [code]\"or_less\"[/code] ,那么"
+"编辑器部件将ä¸ä¼šåœ¨èŒƒå›´è¾¹ç•Œå¤„对数值进行é™åˆ¶ã€‚[code]\"exp\"[/code] æ示将使范围"
+"内的编辑值以指数形å¼å˜åŒ–。[code]\"hide_slider\"[/code] æ示将éšè—编辑器部件中"
+"的滑å—。\n"
+"æ示还å…许指示编辑的值的å•ä½ã€‚使用 [code]\"radians\"[/code] ,你å¯ä»¥æŒ‡å®šå®žé™…"
+"值以弧度为å•ä½ï¼Œä½†åœ¨æ£€æŸ¥å™¨ä¸­ä¼šä»¥è§’度为å•ä½æ˜¾ç¤ºã€‚[code]\"degrees\"[/code] å…许"
+"添加一个角度符å·ä½œä¸ºå•ä½åŽç¼€ã€‚最åŽï¼Œå¯ä»¥ä½¿ç”¨ [code]\"suffix:å•ä½\"[/code] æ"
+"供一个自定义åŽç¼€ï¼Œå…¶ä¸­â€œå•ä½â€å¯ä»¥æ˜¯ä»»ä½•å­—符串。\n"
+"å¦è§ [constant PROPERTY_HINT_RANGE]。\n"
"[codeblock]\n"
-"@export_group(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
+"@export_range(0, 20) var number\n"
+"@export_range(-10, 20) var number\n"
+"@export_range(-10, 20, 0.2) var number: float\n"
"\n"
-"@export_group(\"Prefixed Properties\", \"prefix_\")\n"
-"@export var prefix_number = 3\n"
-"@export var prefix_string = \"\"\n"
+"@export_range(0, 100, 1, \"or_greater\") var power_percent\n"
+"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n"
"\n"
-"@export_group(\"\", \"\")\n"
-"@export var ungrouped_number = 3\n"
+"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n"
+"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n"
+"@export_range(-8, 8, 2, \"suffix:åƒç´ \") var target_offset\n"
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
+"Add a custom icon to the current script. The script must be registered as a "
+"global class using the [code]class_name[/code] keyword for this to have a "
+"visible effect. The icon specified at [param icon_path] is displayed in the "
+"Scene dock for every node of that class, as well as in various editor "
+"dialogs.\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
+"@icon(\"res://path/to/class/icon.svg\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Only the script can have a custom icon. Inner classes are not "
+"supported.\n"
+"[b]Note:[/b] As annotations describe their subject, the [code]@icon[/code] "
+"annotation must be placed before the class definition and inheritance.\n"
+"[b]Note:[/b] Unlike other annotations, the argument of the [code]@icon[/"
+"code] annotation must be a string literal (constant expressions are not "
+"supported)."
+msgstr ""
+"在当å‰è„šæœ¬ä¸­æ·»åŠ ä¸€ä¸ªè‡ªå®šä¹‰å›¾æ ‡ã€‚脚本必须使用 [code]class_name[/code] 关键字注"
+"册为一个全局类,这样æ‰æœ‰å¯è§çš„效果。在 [param icon_path] 处指定的图标会在场景"
+"åœé é¢æ¿ä¸­è¯¥ç±»çš„节点上显示,也会显示在å„ç§ç¼–辑器对è¯æ¡†ä¸­ã€‚\n"
+"[codeblock]\n"
+"@icon(\"res://path/to/class/icon.svg\")\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b] åªæœ‰è„šæœ¬å¯ä»¥æœ‰ä¸€ä¸ªè‡ªå®šä¹‰çš„图标。ä¸æ”¯æŒå†…部类。\n"
+"[b]注æ„:[/b] 由于注解æ述了它们的主题,[code]@icon[/code] 注解必须放在类定义"
+"和继承之å‰ã€‚\n"
+"[b]注æ„:[/b] ä¸åŒäºŽå…¶ä»–注解,[code]@icon[/code] 注解的å‚数必须是一个字符串 "
+"(ä¸æ”¯æŒå¸¸é‡è¡¨è¾¾å¼ï¼‰ã€‚"
+
+msgid ""
+"Mark the following method for remote procedure calls. See [url=$DOCS_URL/"
+"tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/"
+"url].\n"
+"The order of [code]mode[/code], [code]sync[/code] and [code]transfer_mode[/"
+"code] does not matter and all arguments can be omitted, but "
+"[code]transfer_channel[/code] always has to be the last argument. The "
+"accepted values for [code]mode[/code] are [code]\"any_peer\"[/code] or "
+"[code]\"authority\"[/code], for [code]sync[/code] are [code]\"call_remote\"[/"
+"code] or [code]\"call_local\"[/code] and for [code]transfer_mode[/code] are "
+"[code]\"unreliable\"[/code], [code]\"unreliable_ordered\"[/code] or "
+"[code]\"reliable\"[/code].\n"
+"[codeblock]\n"
+"@rpc\n"
+"func fn(): pass\n"
+"\n"
+"@rpc(\"any_peer\", \"unreliable_ordered\")\n"
+"func fn_update_pos(): pass\n"
+"\n"
+"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # Equivalent to "
+"@rpc\n"
+"func fn_default(): pass\n"
"[/codeblock]"
msgstr ""
-"用一个大的 [TextEdit] 部件而ä¸æ˜¯ [LineEdit] 导出一个 [String] 属性。这增加了"
-"对多行内容的支æŒï¼Œä½¿å…¶æ›´å®¹æ˜“编辑存储在属性中的大é‡æ–‡æœ¬ã€‚\n"
-"å‚è§ [constant PROPERTY_HINT_MULTILINE_TEXT]。\n"
+"将以下方法标记为远程过程调用。请å‚è§ [url=$DOCS_URL/tutorials/networking/"
+"high_level_multiplayer.html]高级多人游æˆ[/url]。\n"
+"[code]mode[/code]ã€[code]sync[/code] å’Œ [code]transfer_mode[/code] 的顺åºæ— å…³"
+"ç´§è¦ï¼Œæ‰€æœ‰å‚数都å¯ä»¥çœç•¥ï¼Œä½† [code]transfer_channel[/code] 必须始终是最åŽä¸€ä¸ª"
+"å‚数。对于接å—的值,[code]mode[/code] å¯ä»¥æ˜¯ [code]\"any_peer\"[/code] 或 "
+"[code]\"authority\"[/code],[code]sync[/code] å¯ä»¥æ˜¯ [code]\"call_remote\"[/"
+"code]或 [code]\"call_local\"[/code],[code]transfer_mode[/code] å¯ä»¥æ˜¯ "
+"[code]\"unreliable\"[/code]ã€[code]\"unreliable_ordered\"[/code] 或 "
+"[code]\"reliable\"[/code]。\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
+"@rpc\n"
+"func fn(): pass\n"
+"\n"
+"@rpc(\"any_peer\", \"unreliable_ordered\")\n"
+"func fn_update_pos(): pass\n"
+"\n"
+"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # 等价于 @rpc\n"
+"func fn_default(): pass\n"
"[/codeblock]"
msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
+"Mark the current script as a tool script, allowing it to be loaded and "
+"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/"
+"running_code_in_the_editor.html]Running code in the editor[/url].\n"
"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
+"@tool\n"
+"extends Node\n"
+"[/codeblock]\n"
+"[b]Note:[/b] As annotations describe their subject, the [code]@tool[/code] "
+"annotation must be placed before the class definition and inheritance."
+msgstr ""
+"将当å‰è„šæœ¬æ ‡è®°ä¸ºå·¥å…·è„šæœ¬ï¼Œå…许它被编辑器加载和执行。è§[url=$DOCS_URL/"
+"tutorials/plugins/running_code_in_the_editor.html]《在编辑器中è¿è¡Œä»£ç ã€‹[/"
+"url]。\n"
+"[codeblock]\n"
+"@tool\n"
+"extends Node\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]因为注解æ述对象的关系,必须把 [code]@tool[/code] 注解放在类定义"
+"和继承之å‰ã€‚"
+
+msgid ""
+"Mark the following statement to ignore the specified [param warning]. See "
+"[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript "
+"warning system[/url].\n"
+"[codeblock]\n"
+"func test():\n"
+" print(\"hello\")\n"
+" return\n"
+" @warning_ignore(\"unreachable_code\")\n"
+" print(\"unreachable\")\n"
"[/codeblock]"
msgstr ""
-"导出一个带有一个å ä½ç¬¦æ–‡æœ¬çš„ [String] 属性,当没有值时,编辑器å°éƒ¨ä»¶ä¸­ä¼šæ˜¾ç¤º"
-"该å ä½ç¬¦æ–‡æœ¬ã€‚\n"
-"å¦è¯·å‚è§ [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n"
+"å°†åŽç»­è¯­å¥æ ‡è®°ä¸ºå¿½ç•¥æŒ‡å®šçš„ [param warning] 警告。è§[url=$DOCS_URL/tutorials/"
+"scripting/gdscript/warning_system.html]《GDScript 警告系统》[/url]。\n"
"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
+"func test():\n"
+" print(\"你好\")\n"
+" return\n"
+" @warning_ignore(\"unreachable_code\")\n"
+" print(\"无法到达\")\n"
"[/codeblock]"
+msgid "Global scope constants and functions."
+msgstr "全局范围常é‡å’Œå‡½æ•°ã€‚"
+
msgid ""
-"Define a new subgroup for the following exported properties. This helps to "
-"organize properties in the Inspector dock. Subgroups work exactly like "
-"groups, except they need a parent group to exist. See [annotation "
-"@export_group].\n"
-"See also [constant PROPERTY_USAGE_SUBGROUP].\n"
-"[codeblock]\n"
-"@export_group(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
-"\n"
-"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n"
-"@export var prefix_number = 3\n"
-"@export var prefix_string = \"\"\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Subgroups cannot be nested, they only provide one extra level "
-"of depth. Just like the next group ends the previous group, so do the "
-"subsequent subgroups."
-msgstr ""
-"为接下æ¥çš„导出属性定义一个新的å­ç»„。这有助于组织检查器åœé é¢æ¿ä¸­çš„属性。å­ç»„"
-"的工作方å¼ä¸Žç»„完全一样,åªæ˜¯å®ƒä»¬éœ€è¦ä¸€ä¸ªçˆ¶ç»„æ‰èƒ½å­˜åœ¨ã€‚请å‚阅 [annotation "
-"@export_group]。\n"
-"å¦è¯·å‚è§ [constant PROPERTY_USAGE_SUBGROUP]。\n"
-"[codeblock]\n"
-"@export_group(\"My Properties\")\n"
-"@export var number = 3\n"
-"@export var string = \"\"\n"
-"\n"
-"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n"
-"@export var prefix_number = 3\n"
-"@export var prefix_string = \"\"\n"
-"[/codeblock]\n"
-"[b]注æ„:[/b]å­ç»„ä¸èƒ½åµŒå¥—,它们åªæ供一层é¢å¤–的深度。就åƒæ–°ç»„使å‰ä¸€ä¸ªç»„结æŸä¸€"
-"样,åŽç»­çš„å­ç»„也会打断之å‰çš„å­ç»„。"
+"A list of global scope enumerated constants and built-in functions. This is "
+"all that resides in the globals, constants regarding error codes, keycodes, "
+"property hints, etc.\n"
+"Singletons are also documented here, since they can be accessed from "
+"anywhere.\n"
+"For the entries related to GDScript which can be accessed in any script see "
+"[@GDScript]."
+msgstr ""
+"全局范围的枚举常é‡å’Œå†…置函数的列表。这是所有驻留在全局的,关于错误代ç ã€é”®"
+"ç ã€å±žæ€§æ示等的常é‡ã€‚\n"
+"å•ä¾‹ä¹Ÿè¢«è®°å½•åœ¨è¿™é‡Œï¼Œå› ä¸ºå®ƒä»¬å¯ä»¥ä»Žä»»ä½•åœ°æ–¹è¢«è®¿é—®ã€‚\n"
+"对于å¯ä»¥åœ¨ä»»ä½•è„šæœ¬ä¸­è®¿é—®çš„与 GDScript 相关的æ¡ç›®ï¼Œè¯·å‚阅 [@GDScript]。"
msgid "Random number generation"
msgstr "éšæœºæ•°ç”Ÿæˆ"
@@ -1177,17 +1135,356 @@ msgid ""
"var a = atan2(0, -1) # a is 3.141593\n"
"[/codeblock]"
msgstr ""
-"返回 [code]y/x[/code] çš„å正切值,å•ä½ä¸ºå¼§åº¦ã€‚用æ¥èŽ·å¾—切线的角度 [code]y/x[/"
-"code] 。为了计算该值,该方法考虑了两个å‚数的符å·ï¼Œä»¥ç¡®å®šè±¡é™ã€‚\n"
-"é‡è¦æ示:按照惯例,Yå标在å‰ã€‚\n"
+"返回 [code]y/x[/code] çš„å正切值,å•ä½ä¸ºå¼§åº¦ã€‚用æ¥èŽ·å¾—正切值为 [code]y/x[/"
+"code] 的角度。为了计算该值,该方法考虑了两个å‚数的符å·ï¼Œä»¥ç¡®å®šè±¡é™ã€‚\n"
+"é‡è¦æ示:按照惯例,Y å标在å‰ã€‚\n"
"[codeblock]\n"
-"var a = atan2(0, -1) # a=3.141593\n"
+"var a = atan2(0, -1) # a = 3.141593\n"
"[/codeblock]"
+msgid ""
+"Returns the derivative at the given [param t] on a one-dimensional "
+"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] "
+"defined by the given [param control_1], [param control_2], and [param end] "
+"points."
+msgstr ""
+"返回由给定的 [param control_1]ã€[param control_2] å’Œ [param end] 点定义的一维"
+"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]è´å¡žå°”曲线[/url]上 "
+"[param t] 处的导数。"
+
+msgid ""
+"Returns the point at the given [param t] on a one-dimensional [url=https://"
+"en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by the "
+"given [param control_1], [param control_2], and [param end] points."
+msgstr ""
+"返回由给定的 [param control_1]ã€[param control_2] å’Œ [param end] 点定义的一维"
+"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]è´å¡žå°”曲线[/url]上ä½äºŽç»™"
+"定 [param t] 的点。"
+
+msgid ""
+"Decodes a byte array back to a [Variant] value, without decoding objects.\n"
+"[b]Note:[/b] If you need object deserialization, see [method "
+"bytes_to_var_with_objects]."
+msgstr ""
+"将字节数组解ç å›ž [Variant] 值,无法解ç å¯¹è±¡ã€‚\n"
+"[b]注æ„:[/b]如果需è¦å¯¹è±¡ååºåˆ—化,请å‚è§ [method "
+"bytes_to_var_with_objects]。"
+
+msgid ""
+"Decodes a byte array back to a [Variant] value. Decoding objects is "
+"allowed.\n"
+"[b]Warning:[/b] Deserialized object can contain code which gets executed. Do "
+"not use this option if the serialized object comes from untrusted sources to "
+"avoid potential security threats (remote code execution)."
+msgstr ""
+"将字节数组解ç å›ž [Variant] 值。å…许解ç å¯¹è±¡ã€‚\n"
+"[b]警告:[/b]ååºåˆ—化的对象å¯èƒ½åŒ…å«æ‰§è¡Œçš„代ç ã€‚如果åºåˆ—化对象的æ¥æºä¸å—信任,"
+"则ä¸è¦ä½¿ç”¨æ­¤é€‰é¡¹ï¼Œä»¥é¿å…潜在的安全å¨èƒï¼ˆè¿œç¨‹æ‰§è¡Œä»£ç ï¼‰ã€‚"
+
+msgid ""
+"Rounds [param x] upward (towards positive infinity), returning the smallest "
+"whole number that is not less than [param x]. Supported types: [int], "
+"[float], [Vector2], [Vector3], [Vector4].\n"
+"[codeblock]\n"
+"var i = ceil(1.45) # i is 2.0\n"
+"i = ceil(1.001) # i is 2.0\n"
+"[/codeblock]\n"
+"See also [method floor], [method round], and [method snapped].\n"
+"[b]Note:[/b] For better type safety, use [method ceilf], [method ceili], "
+"[method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil]."
+msgstr ""
+"å‘上èˆå…¥ [param x](æœæ­£æ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å°äºŽ [param x] 的最å°æ•´æ•°ã€‚支æŒçš„ç±»"
+"型:[int]ã€[float]ã€[Vector2]ã€[Vector3]ã€[Vector4]。\n"
+"[codeblock]\n"
+"var i = ceil(1.45) # i 是 2.0\n"
+"i = ceil(1.001) # i 是 2.0\n"
+"[/codeblock]\n"
+"å¦è¯·å‚è§ [method floor]ã€[method round]ã€ä»¥åŠ [method snapped]。\n"
+"[b]注æ„:[/b]为了更好的类型安全,使用 [method ceilf]ã€[method ceili]ã€"
+"[method Vector2.ceil]ã€[method Vector3.ceil] 或 [method Vector4.ceil]。"
+
+msgid ""
+"Rounds [param x] upward (towards positive infinity), returning the smallest "
+"whole number that is not less than [param x].\n"
+"A type-safe version of [method ceil], returning a [float]."
+msgstr ""
+"å‘上èˆå…¥ [param x](æœæ­£æ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å°äºŽ [param x] 的最å°æ•´æ•°ã€‚\n"
+"[method ceil] 的类型安全版本,返回一个 [float]。"
+
+msgid ""
+"Rounds [param x] upward (towards positive infinity), returning the smallest "
+"whole number that is not less than [param x].\n"
+"A type-safe version of [method ceil], returning an [int]."
+msgstr ""
+"å‘上èˆå…¥ [param x](æœæ­£æ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å°äºŽ [param x] 的最å°æ•´æ•°ã€‚\n"
+"[method ceil] 的类型安全版本,返回一个 [int]。"
+
+msgid ""
+"Clamps the [param value], returning a [Variant] not less than [param min] "
+"and not more than [param max]. Supported types: [int], [float], [Vector2], "
+"[Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"var a = clamp(-10, -1, 5)\n"
+"# a is -1\n"
+"\n"
+"var b = clamp(8.1, 0.9, 5.5)\n"
+"# b is 5.5\n"
+"\n"
+"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n"
+"# c is (-3.2, -2)\n"
+"\n"
+"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n"
+"# d is (2, 6)\n"
+"\n"
+"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, "
+"-4.1))\n"
+"# e is (-3, -2, 5.4)\n"
+"\n"
+"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, "
+"-6))\n"
+"# f is (-4, -5, -6)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] For better type safety, use [method clampf], [method clampi], "
+"[method Vector2.clamp], [method Vector2i.clamp], [method Vector3.clamp], "
+"[method Vector3i.clamp], [method Vector4.clamp], or [method Vector4i.clamp]."
+msgstr ""
+"钳制 [param value],返回ä¸å°äºŽ [param min] 且ä¸å¤§äºŽ [param max] çš„ "
+"[Variant]。支æŒçš„类型:[int]ã€[float]ã€[Vector2]ã€[Vector2i]ã€[Vector3]ã€"
+"[Vector3i]ã€[Vector4]ã€[Vector4i]。\n"
+"[codeblock]\n"
+"var a = clamp(-10, -1, 5)\n"
+"# a 是 -1\n"
+"\n"
+"var b = clamp(8.1, 0.9, 5.5)\n"
+"# b 是 5.5\n"
+"\n"
+"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n"
+"# c 是 (-3.2, -2)\n"
+"\n"
+"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n"
+"# d 是 (2, 6)\n"
+"\n"
+"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, "
+"-4.1))\n"
+"# e 是 (-3, -2, 5.4)\n"
+"\n"
+"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, "
+"-6))\n"
+"# f 是 (-4, -5, -6)\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]为了更好的类型安全,使用 [method clampf]ã€[method clampi]ã€"
+"[method Vector2.clamp]ã€[method Vector2i.clamp]ã€[method Vector3.clamp]ã€"
+"[method Vector3i.clamp ]ã€[method Vector4.clamp] 或 [method Vector4i.clamp]。"
+
+msgid ""
+"Clamps the [param value], returning a [float] not less than [param min] and "
+"not more than [param max].\n"
+"[codeblock]\n"
+"var speed = 42.1\n"
+"var a = clampf(speed, 1.0, 20.5) # a is 20.5\n"
+"\n"
+"speed = -10.0\n"
+"var b = clampf(speed, -1.0, 1.0) # b is -1.0\n"
+"[/codeblock]"
+msgstr ""
+"钳制 [param value],返回ä¸å°äºŽ [param min] 且ä¸å¤§äºŽ [param max] çš„ "
+"[float]。\n"
+"[codeblock]\n"
+"var speed = 42.1\n"
+"var a = clampf(speed, 1.0, 20.5) # a 是 20.5\n"
+"\n"
+"speed = -10.0\n"
+"var b = clampf(speed, -1.0, 1.0) # b 是 -1.0\n"
+"[/codeblock]"
+
+msgid ""
+"Clamps the [param value], returning an [int] not less than [param min] and "
+"not more than [param max].\n"
+"[codeblock]\n"
+"var speed = 42\n"
+"var a = clampi(speed, 1, 20) # a is 20\n"
+"\n"
+"speed = -10\n"
+"var b = clampi(speed, -1, 1) # b is -1\n"
+"[/codeblock]"
+msgstr ""
+"钳制 [param value],返回ä¸å°äºŽ [param min] 且ä¸å¤§äºŽ [param max] çš„ [int]。\n"
+"[codeblock]\n"
+"var speed = 42\n"
+"var a = clampi(speed, 1, 20) # a 是 20\n"
+"\n"
+"speed = -10\n"
+"var b = clampi(speed, -1, 1) # b 是 -1\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the cosine of angle [param angle_rad] in radians.\n"
+"[codeblock]\n"
+"cos(PI * 2) # Returns 1.0\n"
+"cos(PI) # Returns -1.0\n"
+"cos(deg_to_rad(90)) # Returns 0.0\n"
+"[/codeblock]"
+msgstr ""
+"返回弧度角为 [param angle_rad] 的余弦值。\n"
+"[codeblock]\n"
+"cos(PI * 2) # 返回 1.0\n"
+"cos(PI) # 返回 -1.0\n"
+"cos(deg_to_rad(90)) # 返回 0.0\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the hyperbolic cosine of [param x] in radians.\n"
+"[codeblock]\n"
+"print(cosh(1)) # Prints 1.543081\n"
+"[/codeblock]"
+msgstr ""
+"返回弧度角 [param x] çš„åŒæ›²ä½™å¼¦å€¼ã€‚\n"
+"[codeblock]\n"
+"print(cosh(1)) # æ‰“å° 1.543081\n"
+"[/codeblock]"
+
+msgid ""
+"Cubic interpolates between two values by the factor defined in [param "
+"weight] with [param pre] and [param post] values."
+msgstr ""
+"æ ¹æ® [param weight] 中定义的因å­ä»¥åŠ [param pre] å’Œ [param post] 值,在两个值"
+"之间进行三次æ’值。"
+
+msgid ""
+"Cubic interpolates between two rotation values with shortest path by the "
+"factor defined in [param weight] with [param pre] and [param post] values. "
+"See also [method lerp_angle]."
+msgstr ""
+"æ ¹æ® [param weight] 中定义的因å­ä»¥åŠ [param pre] å’Œ [param post] 值,在具有最"
+"短路径的两个旋转值之间三次æ’值 。å¦è§ [method lerp_angle]。"
+
+msgid ""
+"Cubic interpolates between two rotation values with shortest path by the "
+"factor defined in [param weight] with [param pre] and [param post] values. "
+"See also [method lerp_angle].\n"
+"It can perform smoother interpolation than [code]cubic_interpolate()[/code] "
+"by the time values."
+msgstr ""
+"æ ¹æ® [param weight] 中定义的因å­ä»¥åŠ [param pre] å’Œ [param post] 值,在具有最"
+"短路径的两个旋转值之间进行三次æ’值。å¦è§ [method lerp_angle]。\n"
+"它å¯ä»¥æ ¹æ®æ—¶é—´å€¼æ‰§è¡Œæ¯” [code]cubic_interpolate()[/code] 更平滑的æ’值。"
+
+msgid ""
+"Cubic interpolates between two values by the factor defined in [param "
+"weight] with [param pre] and [param post] values.\n"
+"It can perform smoother interpolation than [method cubic_interpolate] by the "
+"time values."
+msgstr ""
+"æ ¹æ® [param weight] 中定义的因å­ä»¥åŠ [param pre] å’Œ [param post] 值,在两个值"
+"之间进行三次æ’值。\n"
+"它å¯ä»¥æ ¹æ®æ—¶é—´å€¼æ‰§è¡Œæ¯” [method cubic_interpolate] 更平滑的æ’值。"
+
msgid "Converts from decibels to linear energy (audio)."
msgstr "从分è´è½¬æ¢ä¸ºçº¿æ€§èƒ½é‡ï¼ˆéŸ³é¢‘)。"
msgid ""
+"Converts an angle expressed in degrees to radians.\n"
+"[codeblock]\n"
+"var r = deg_to_rad(180) # r is 3.141593\n"
+"[/codeblock]"
+msgstr ""
+"将角度值转æ¢ä¸ºå¼§åº¦å€¼ã€‚\n"
+"[codeblock]\n"
+"var r = deg_to_rad(180) # r 是 3.141593\n"
+"[/codeblock]"
+
+msgid ""
+"Returns an \"eased\" value of [param x] based on an easing function defined "
+"with [param curve]. This easing function is based on an exponent. The [param "
+"curve] can be any floating-point number, with specific values leading to the "
+"following behaviors:\n"
+"[codeblock]\n"
+"- Lower than -1.0 (exclusive): Ease in-out\n"
+"- 1.0: Linear\n"
+"- Between -1.0 and 0.0 (exclusive): Ease out-in\n"
+"- 0.0: Constant\n"
+"- Between 0.0 to 1.0 (exclusive): Ease out\n"
+"- 1.0: Linear\n"
+"- Greater than 1.0 (exclusive): Ease in\n"
+"[/codeblock]\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"ease_cheatsheet.png]ease() curve values cheatsheet[/url]\n"
+"See also [method smoothstep]. If you need to perform more advanced "
+"transitions, use [method Tween.interpolate_value]."
+msgstr ""
+"基于用 [param curve] 定义的缓动函数返回 [param x] 的“缓动åŽâ€çš„值。该缓动函数"
+"是基于指数的。[param curve] å¯ä»¥æ˜¯ä»»æ„浮点数,具体数值会导致以下行为:\n"
+"[codeblock]\n"
+"- 低于 -1.0(开区间):缓入缓出\n"
+"- -1.0:线性\n"
+"- 在 -1.0 和 0.0 之间(开区间):缓出缓入\n"
+"- 0.0:æ’定\n"
+"- 在 0.0 到 1.0 之间(开区间):缓出\n"
+"- 1.0:线性\n"
+"- 大于 1.0(开区间):缓入\n"
+"[/codeblock]\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"ease_cheatsheet.png]ease() 曲线值速查表[/url]\n"
+"å¦è¯·å‚阅 [method smoothstep]。如果你需è¦æ‰§è¡Œæ›´é«˜çº§çš„过渡,请使用 [method "
+"Tween.interpolate_value]。"
+
+msgid ""
+"Returns a human-readable name for the given [enum Error] code.\n"
+"[codeblock]\n"
+"print(OK) # Prints 0\n"
+"print(error_string(OK)) # Prints OK\n"
+"print(error_string(ERR_BUSY)) # Prints Busy\n"
+"print(error_string(ERR_OUT_OF_MEMORY)) # Prints Out of memory\n"
+"[/codeblock]"
+msgstr ""
+"为给定的 [enum Error] 代ç è¿”回一个人类å¯è¯»çš„å称。\n"
+"[codeblock]\n"
+"print(OK) # 输出 0\n"
+"print(error_string(OK)) # 输出 OK\n"
+"print(error_string(ERR_BUSY)) # 输出 Busy\n"
+"print(error_string(ERR_OUT_OF_MEMORY)) # 输出 Out of memory\n"
+"[/codeblock]"
+
+msgid ""
+"The natural exponential function. It raises the mathematical constant [b]e[/"
+"b] to the power of [param x] and returns it.\n"
+"[b]e[/b] has an approximate value of 2.71828, and can be obtained with "
+"[code]exp(1)[/code].\n"
+"For exponents to other bases use the method [method pow].\n"
+"[codeblock]\n"
+"var a = exp(2) # Approximately 7.39\n"
+"[/codeblock]"
+msgstr ""
+"自然指数函数。计算数学常数 [b]e[/b] 的 [param x] 次方并返回它。\n"
+"[b]e[/b] 的近似值为 2.71828,å¯ä»¥ä½¿ç”¨ [code]exp(1)[/code] 获得。\n"
+"求其他底数的指数应使用 [method pow] 方法。\n"
+"[codeblock]\n"
+"var a = exp(2) # 大约是 7.39\n"
+"[/codeblock]"
+
+msgid ""
+"Rounds [param x] downward (towards negative infinity), returning the largest "
+"whole number that is not more than [param x]. Supported types: [int], "
+"[float], [Vector2], [Vector3], [Vector4].\n"
+"[codeblock]\n"
+"var a = floor(2.99) # a is 2.0\n"
+"a = floor(-2.99) # a is -3.0\n"
+"[/codeblock]\n"
+"See also [method ceil], [method round], and [method snapped].\n"
+"[b]Note:[/b] For better type safety, use [method floorf], [method floori], "
+"[method Vector2.floor], [method Vector3.floor], or [method Vector4.floor]."
+msgstr ""
+"å‘下èˆå…¥ [param x](æœè´Ÿæ— ç©·å¤§ï¼‰ï¼Œè¿”回ä¸å¤§äºŽ [param x] 的最大整数。支æŒçš„ç±»"
+"型:[int]ã€[float]ã€[Vector2]ã€[Vector3]ã€[Vector4]。\n"
+"[codeblock]\n"
+"var a = floor(2.99) # a 是 2.0\n"
+"a = floor(-2.99) # a 是 -3.0\n"
+"[/codeblock]\n"
+"å¦è¯·å‚阅 [method ceil]ã€[method round]ã€ä»¥åŠ [method snapped]。\n"
+"[b]注æ„:[/b]为了更好的类型安全,请使用 [method floorf]ã€[method floori]ã€"
+"[method Vector2.floor]ã€[method Vector3.floor] 或 [method Vector4.floor]。"
+
+msgid ""
"Rounds [param x] downward (towards negative infinity), returning the largest "
"whole number that is not more than [param x].\n"
"A type-safe version of [method floor], returning a [float]."
@@ -1196,6 +1493,201 @@ msgstr ""
"一个类型安全的 [method floor] 版本,返回一个 [float]。"
msgid ""
+"Rounds [param x] downward (towards negative infinity), returning the largest "
+"whole number that is not more than [param x].\n"
+"A type-safe version of [method floor], returning an [int].\n"
+"[b]Note:[/b] This function is [i]not[/i] the same as [code]int(x)[/code], "
+"which rounds towards 0."
+msgstr ""
+"å°† [param x] å‘下èˆå…¥ï¼ˆå‘负无穷大),返回ä¸è¶…过 [param x] 的最大整数。\n"
+"是 [method floor] 的类型安全版本,返回一个 [int]。\n"
+"[b] 注æ„:[/b]这个函数与 [code]int(x)[/code] [i]ä¸[/i] 一样,åŽè€…æ˜¯å‘ 0 å–"
+"整。"
+
+msgid ""
+"Returns the floating-point remainder of [param x] divided by [param y], "
+"keeping the sign of [param x].\n"
+"[codeblock]\n"
+"var remainder = fmod(7, 5.5) # remainder is 1.5\n"
+"[/codeblock]\n"
+"For the integer remainder operation, use the [code]%[/code] operator."
+msgstr ""
+"返回 [param x] 除以 [param y] 的浮点型余数,符å·ä¸Ž [param x]一致。\n"
+"[codeblock]\n"
+"var remainder = fmod(7, 5.5) # remainder 是 1.5\n"
+"[/codeblock]\n"
+"对于整数å–ä½™è¿ç®—,请使用 [code]%[/code] è¿ç®—符。"
+
+msgid ""
+"Returns the floating-point modulus of [param x] divided by [param y], "
+"wrapping equally in positive and negative.\n"
+"[codeblock]\n"
+"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n"
+"for i in 7:\n"
+" var x = i * 0.5 - 1.5\n"
+" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, "
+"1.5)])\n"
+"[/codeblock]\n"
+"Produces:\n"
+"[codeblock]\n"
+" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n"
+"-1.5 -0.0 | 0.0\n"
+"-1.0 -1.0 | 0.5\n"
+"-0.5 -0.5 | 1.0\n"
+" 0.0 0.0 | 0.0\n"
+" 0.5 0.5 | 0.5\n"
+" 1.0 1.0 | 1.0\n"
+" 1.5 0.0 | 0.0\n"
+"[/codeblock]"
+msgstr ""
+"返回 [param x] 除以 [param y] 的浮点模数,正负轴å‡ç­‰åŒ…裹。\n"
+"[codeblock]\n"
+"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n"
+"for i in 7:\n"
+" var x = i * 0.5 - 1.5\n"
+" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, "
+"1.5)])\n"
+"[/codeblock]\n"
+"输出:\n"
+"[codeblock]\n"
+" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n"
+"-1.5 -0.0 | 0.0\n"
+"-1.0 -1.0 | 0.5\n"
+"-0.5 -0.5 | 1.0\n"
+" 0.0 0.0 | 0.0\n"
+" 0.5 0.5 | 0.5\n"
+" 1.0 1.0 | 1.0\n"
+" 1.5 0.0 | 0.0\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the integer hash of the passed [param variable].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(hash(\"a\")) # Prints 177670\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(GD.Hash(\"a\")); // Prints 177670\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回传入的 [param variable] 的整数哈希值。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(hash(\"a\")) # 输出 177670\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(GD.Hash(\"a\")); // 输出 177670\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the [Object] that corresponds to [param instance_id]. All Objects "
+"have a unique instance ID. See also [method Object.get_instance_id].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = \"bar\"\n"
+"\n"
+"func _ready():\n"
+" var id = get_instance_id()\n"
+" var inst = instance_from_id(id)\n"
+" print(inst.foo) # Prints bar\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" public string Foo { get; set; } = \"bar\";\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" ulong id = GetInstanceId();\n"
+" var inst = (MyNode)InstanceFromId(Id);\n"
+" GD.Print(inst.Foo); // Prints bar\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回 [param instance_id] 所对应的 [Object]。所有对象都有唯一的实例 ID。å‚è§ "
+"[method Object.get_instance_id]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = \"bar\"\n"
+"\n"
+"func _ready():\n"
+" var id = get_instance_id()\n"
+" var inst = instance_from_id(id)\n"
+" print(inst.foo) # 输出 bar\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" public string Foo { get; set; } = \"bar\";\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" ulong id = GetInstanceId();\n"
+" var inst = (MyNode)InstanceFromId(Id);\n"
+" GD.Print(inst.Foo); // 输出 bar\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns an interpolation or extrapolation factor considering the range "
+"specified in [param from] and [param to], and the interpolated value "
+"specified in [param weight]. The returned value will be between [code]0.0[/"
+"code] and [code]1.0[/code] if [param weight] is between [param from] and "
+"[param to] (inclusive). If [param weight] is located outside this range, "
+"then an extrapolation factor will be returned (return value lower than "
+"[code]0.0[/code] or greater than [code]1.0[/code]). Use [method clamp] on "
+"the result of [method inverse_lerp] if this is not desired.\n"
+"[codeblock]\n"
+"# The interpolation ratio in the `lerp()` call below is 0.75.\n"
+"var middle = lerp(20, 30, 0.75)\n"
+"# middle is now 27.5.\n"
+"\n"
+"# Now, we pretend to have forgotten the original ratio and want to get it "
+"back.\n"
+"var ratio = inverse_lerp(20, 30, 27.5)\n"
+"# ratio is now 0.75.\n"
+"[/codeblock]\n"
+"See also [method lerp], which performs the reverse of this operation, and "
+"[method remap] to map a continuous series of values to another."
+msgstr ""
+"返回æ’值或外推的因å­ã€‚范围用 [param from] å’Œ [param to]指定,æ’值åŽçš„值由 "
+"[param weight] 指定。如果 [param weight] 在 [param from] 和 [param to] 之间"
+"(包å«ï¼‰ï¼Œé‚£ä¹ˆè¿”回的值在 [code]0.0[/code] å’Œ [code]1.0[/code] 之间。如果 "
+"[param weight] 在该范围之外,则返回的是外推因å­ï¼ˆè¿”回值å°äºŽ [code]0.0[/code] "
+"或大于 [code]1.0[/code])。如果ä¸å¸Œæœ›è¿™æ ·ï¼Œè¯·å¯¹ [method inverse_lerp] 的结果"
+"使用 [method clamp]。\n"
+"[codeblock]\n"
+"# 下é¢çš„ `lerp()` 调用时的æ’值比例是 0.75。\n"
+"var middle = lerp(20, 30, 0.75)\n"
+"# middle 现在是 27.5。\n"
+"\n"
+"# 现在,我们å‡è£…忘记了原æ¥çš„比例,想è¦æ‰¾åˆ°æ˜¯å¤šå°‘。\n"
+"var ratio = inverse_lerp(20, 30, 27.5)\n"
+"# ratio 现在是 0.75。\n"
+"[/codeblock]\n"
+"å¦è§ [method lerp],它执行本æ“作的逆æ“ä½œï¼›ä»¥åŠ [method remap],将一系列连续的"
+"值映射到å¦ä¸€ä¸ªå€¼ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if [param a] and [param b] are approximately equal "
+"to each other.\n"
+"Here, \"approximately equal\" means that [param a] and [param b] are within "
+"a small internal epsilon of each other, which scales with the magnitude of "
+"the numbers.\n"
+"Infinity values of the same sign are considered equal."
+msgstr ""
+"如果 [param a] 和 [param b] 彼此近似相等,则返回 [code]true[/code]。\n"
+"这里,“近似相等â€æ„å‘³ç€ [param a] å’Œ [param b] 在彼此的一个å°çš„内部 epsilon "
+"内,该 epsilon 与数字的大å°æˆæ¯”例。\n"
+"相åŒç¬¦å·çš„无穷大值被认为是相等的。"
+
+msgid ""
"Returns whether [param x] is a finite value, i.e. it is not [constant "
"@GDScript.NAN], positive infinity, or negative infinity."
msgstr ""
@@ -1227,6 +1719,1413 @@ msgid ""
"invalid) value."
msgstr "如果 [param x] 是 NaN(“éžæ•°å­—â€æˆ–无效)值,则返回 [code]true[/code] 。"
+msgid ""
+"Returns [code]true[/code], for value types, if [param a] and [param b] share "
+"the same value. Returns [code]true[/code], for reference types, if the "
+"references of [param a] and [param b] are the same.\n"
+"[codeblock]\n"
+"# Vector2 is a value type\n"
+"var vec2_a = Vector2(0, 0)\n"
+"var vec2_b = Vector2(0, 0)\n"
+"var vec2_c = Vector2(1, 1)\n"
+"is_same(vec2_a, vec2_a) # true\n"
+"is_same(vec2_a, vec2_b) # true\n"
+"is_same(vec2_a, vec2_c) # false\n"
+"\n"
+"# Array is a reference type\n"
+"var arr_a = []\n"
+"var arr_b = []\n"
+"is_same(arr_a, arr_a) # true\n"
+"is_same(arr_a, arr_b) # false\n"
+"[/codeblock]\n"
+"These are [Variant] value types: [code]null[/code], [bool], [int], [float], "
+"[String], [StringName], [Vector2], [Vector2i], [Vector3], [Vector3i], "
+"[Vector4], [Vector4i], [Rect2], [Rect2i], [Transform2D], [Transform3D], "
+"[Plane], [Quaternion], [AABB], [Basis], [Projection], [Color], [NodePath], "
+"[RID], [Callable] and [Signal].\n"
+"These are [Variant] reference types: [Object], [Dictionary], [Array], "
+"[PackedByteArray], [PackedInt32Array], [PackedInt64Array], "
+"[PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], "
+"[PackedVector2Array], [PackedVector3Array] and [PackedColorArray]."
+msgstr ""
+"当 [param a] å’Œ [param b] 为值类型时,如果他们相åŒï¼Œé‚£ä¹ˆè¿”回 [code]true[/"
+"code]。当 [param a] å’Œ [param b] 为引用类型时,如果它们的引用对象相åŒï¼Œé‚£ä¹ˆè¿”"
+"回 [code]true[/code]。\n"
+"[codeblock]\n"
+"# Vector2 is a value type\n"
+"var vec2_a = Vector2(0, 0)\n"
+"var vec2_b = Vector2(0, 0)\n"
+"var vec2_c = Vector2(1, 1)\n"
+"is_same(vec2_a, vec2_a) # true\n"
+"is_same(vec2_a, vec2_b) # true\n"
+"is_same(vec2_a, vec2_c) # false\n"
+"\n"
+"# Array is a reference type\n"
+"var arr_a = []\n"
+"var arr_b = []\n"
+"is_same(arr_a, arr_a) # true\n"
+"is_same(arr_a, arr_b) # false\n"
+"[/codeblock]\n"
+"[Varient] 值类型有:[code]null[/code],[bool],[int],[float],[String],"
+"[StringName],[Vector2],[Vector2i],[Vector3],[Vector3i],[Vector4],"
+"[Vector4i],[Rect2],[Rect2i],[Transform2D],[Transform3D],[Plane],"
+"[Quaternion],[AABB],[Basis],[Projection],[Color],[NodePath],[RID],"
+"[Callable] 和 [Signal]。\n"
+"[Varient] 引用类型有:[Object],[Dictionary],[Array],[PackedByteArray],"
+"[PackedInt32Array],[PackedInt64Array],[PackedFloat32Array],"
+"[PackedFloat64Array],[PackedStringArray],[PackedVector2Array],"
+"[PackedVector3Array] 和 [PackedColorArray]。"
+
+msgid ""
+"Returns [code]true[/code] if [param x] is zero or almost zero. The "
+"comparison is done using a tolerance calculation with a small internal "
+"epsilon.\n"
+"This function is faster than using [method is_equal_approx] with one value "
+"as zero."
+msgstr ""
+"如果 [param x] 为零或几乎为零,则返回 [code]true[/code]。比较是使用具有å°å†…"
+"部 epsilon 的公差计算的。\n"
+"该函数比使用一个值为零的 [method is_equal_approx] 更快。"
+
+msgid ""
+"Linearly interpolates between two values by the factor defined in [param "
+"weight]. To perform interpolation, [param weight] should be between "
+"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside "
+"this range are allowed and can be used to perform [i]extrapolation[/i]. If "
+"this is not desired, use [method clamp] on the result of this function.\n"
+"Both [param from] and [param to] must be the same type. Supported types: "
+"[int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], "
+"[Basis].\n"
+"[codeblock]\n"
+"lerp(0, 4, 0.75) # Returns 3.0\n"
+"[/codeblock]\n"
+"See also [method inverse_lerp] which performs the reverse of this operation. "
+"To perform eased interpolation with [method lerp], combine it with [method "
+"ease] or [method smoothstep]. See also [method remap] to map a continuous "
+"series of values to another.\n"
+"[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2."
+"lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], "
+"[method Quaternion.slerp] or [method Basis.slerp]."
+msgstr ""
+"通过 [param weight] 中定义的因å­åœ¨ä¸¤ä¸ªå€¼ä¹‹é—´è¿›è¡Œçº¿æ€§æ’值。è¦æ‰§è¡Œæ’值,[param "
+"weight] 应介于 [code]0.0[/code] å’Œ [code]1.0[/code] 之间(包å«ï¼‰ã€‚但是,超出"
+"此范围的值也是å…许的,并å¯ç”¨äºŽæ‰§è¡Œ[i]外推 [/i]。如果ä¸éœ€è¦ï¼Œè¯·åœ¨è¯¥å‡½æ•°çš„结果"
+"上使用 [method clamp]。\n"
+"[param from] å’Œ [param to] 必须是åŒä¸€ç±»åž‹ã€‚支æŒçš„类型:[int]ã€[float]ã€"
+"[Vector2]ã€[Vector3]ã€[Vector4]ã€[Color]ã€[Quaternion]ã€[Basis]。\n"
+"[codeblock]\n"
+"lerp(0, 4, 0.75) # 返回 3.0\n"
+"[/codeblock]\n"
+"å¦è¯·å‚阅执行本æ“作的逆æ“作的 [method inverse_lerp]。è¦ä½¿ç”¨ [method lerp] 执行"
+"缓动æ’值,请将其与 [method ease] 或 [method smoothstep] 结åˆä½¿ç”¨ã€‚å¦è§ "
+"[method remap],å¯å°†ä¸€ç³»åˆ—连续的值映射到å¦ä¸€ä¸ªå€¼ã€‚\n"
+"[b]注æ„:[/b]为了更好的类型安全,使用 [method lerpf]ã€[method Vector2.lerp]ã€"
+"[method Vector3.lerp]ã€[method Vector4.lerp]ã€[method Color.lerp]ã€[method "
+"Quaternion.slerp] 或 [method Basis.slerp]。"
+
+msgid ""
+"Linearly interpolates between two angles (in radians) by a [param weight] "
+"value between 0.0 and 1.0.\n"
+"Similar to [method lerp], but interpolates correctly when the angles wrap "
+"around [constant @GDScript.TAU]. To perform eased interpolation with [method "
+"lerp_angle], combine it with [method ease] or [method smoothstep].\n"
+"[codeblock]\n"
+"extends Sprite\n"
+"var elapsed = 0.0\n"
+"func _process(delta):\n"
+" var min_angle = deg_to_rad(0.0)\n"
+" var max_angle = deg_to_rad(90.0)\n"
+" rotation = lerp_angle(min_angle, max_angle, elapsed)\n"
+" elapsed += delta\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This function lerps through the shortest path between [param "
+"from] and [param to]. However, when these two angles are approximately "
+"[code]PI + k * TAU[/code] apart for any integer [code]k[/code], it's not "
+"obvious which way they lerp due to floating-point precision errors. For "
+"example, [code]lerp_angle(0, PI, weight)[/code] lerps counter-clockwise, "
+"while [code]lerp_angle(0, PI + 5 * TAU, weight)[/code] lerps clockwise."
+msgstr ""
+"通过 0.0 å’Œ 1.0 之间的 [param weight] 值,在两个角度(以弧度为å•ä½ï¼‰ä¹‹é—´è¿›è¡Œ"
+"线性æ’值。\n"
+"类似于 [method lerp],但当角度环绕 [constant @GDScript.TAU] 时会正确æ’值。è¦"
+"使用 [method lerp_angle] 执行缓动æ’值,请将其与 [method ease] 或 [method "
+"smoothstep] 结åˆä½¿ç”¨ã€‚\n"
+"[codeblock]\n"
+"extends Sprite\n"
+"var elapsed = 0.0\n"
+"func _process(delta):\n"
+" var min_angle = deg_to_rad(0.0)\n"
+" var max_angle = deg_to_rad(90.0)\n"
+" rotation = lerp_angle(min_angle, max_angle, elapsed)\n"
+" elapsed += delta\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]该函数通过 [param from] å’Œ [param to] 之间的最短路径进行æ’值。然"
+"而,当这两个角度相è·å¤§è‡´ [code]PI + k * TAU[/code] 其中 [code]k[/code] 为任æ„"
+"整数时,由于浮点数精度误差的缘故,è¦å¯¹æ’值的方å‘进行判断是很难的。例如,"
+"[code]lerp_angle(0, PI, weight)[/code] 会逆时针æ’值,而 [code]lerp_angle(0, "
+"PI + 5 * TAU, weight)[/code] 则会顺时针æ’值。"
+
+msgid ""
+"Linearly interpolates between two values by the factor defined in [param "
+"weight]. To perform interpolation, [param weight] should be between "
+"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside "
+"this range are allowed and can be used to perform [i]extrapolation[/i]. If "
+"this is not desired, use [method clampf] on the result of this function.\n"
+"[codeblock]\n"
+"lerp(0, 4, 0.75) # Returns 3.0\n"
+"[/codeblock]\n"
+"See also [method inverse_lerp] which performs the reverse of this operation. "
+"To perform eased interpolation with [method lerp], combine it with [method "
+"ease] or [method smoothstep]."
+msgstr ""
+"通过 [param weight] 中定义的因å­åœ¨ä¸¤ä¸ªå€¼ä¹‹é—´è¿›è¡Œçº¿æ€§æ’值。è¦æ‰§è¡Œæ’值,[param "
+"weight] 应介于 [code]0.0[/code] å’Œ [code]1.0[/code] 之间(包å«ï¼‰ã€‚但是,超出"
+"此范围的值是å…许的,并å¯ç”¨äºŽæ‰§è¡Œ [i]外推 [/i]。如果ä¸éœ€è¦ï¼Œè¯·å¯¹æ­¤å‡½æ•°çš„结果使"
+"用 [method clampf]。\n"
+"[codeblock]\n"
+"lerp(0, 4, 0.75) # 返回 3.0\n"
+"[/codeblock]\n"
+"å¦è¯·å‚阅执行本æ“作的逆è¿ç®—çš„ [method inverse_lerp]。è¦ä½¿ç”¨ [method lerp] 执行"
+"缓动æ’值,请将其与 [method ease] 或 [method smoothstep] 结åˆä½¿ç”¨ã€‚"
+
+msgid ""
+"Converts from linear energy to decibels (audio). This can be used to "
+"implement volume sliders that behave as expected (since volume isn't "
+"linear).\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"# \"Slider\" refers to a node that inherits Range such as HSlider or "
+"VSlider.\n"
+"# Its range must be configured to go from 0 to 1.\n"
+"# Change the bus name if you'd like to change the volume of a specific bus "
+"only.\n"
+"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), "
+"linear_to_db($Slider.value))\n"
+"[/codeblock]"
+msgstr ""
+"从线性能é‡è½¬æ¢ä¸ºåˆ†è´ï¼ˆéŸ³é¢‘)。这å¯ç”¨äºŽå®žçŽ°æŒ‰é¢„期è¿è¡Œçš„音é‡æ»‘å—(因为音é‡ä¸æ˜¯"
+"线性的)。\n"
+"[b]示例:[/b]\n"
+"[codeblock]\n"
+"# “Sliderâ€å¼•ç”¨çš„是 HSliderã€VSlider 等继承自 Range 的节点。\n"
+"# 必须将其范围é…置为 0 到 1。\n"
+"# 如果åªæƒ³ä¿®æ”¹ç‰¹å®šæ€»çº¿çš„音é‡ï¼Œè¯·ä¿®æ”¹æ€»çº¿å称。\n"
+"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), "
+"linear_to_db($Slider.value))\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the natural logarithm of [param x]. This is the amount of time "
+"needed to reach a certain level of continuous growth.\n"
+"[b]Note:[/b] This is not the same as the \"log\" function on most "
+"calculators, which uses a base 10 logarithm.\n"
+"[codeblock]\n"
+"log(10) # Returns 2.302585\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], "
+"while negative values return [code]-nan[/code]."
+msgstr ""
+"返回 [param x] 的自然对数。这是æŒç»­å¢žé•¿åˆ°ä¸€å®šç¨‹åº¦æ‰€éœ€çš„时间。\n"
+"[b]注æ„:[/b]这个函数与大多数计算器上的对数“logâ€å‡½æ•°ä¸åŒï¼Œä»–们适用的底数是 "
+"10。\n"
+"[codeblock]\n"
+"log(10) # 返回 2.302585\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b][code]0[/code] 的对数返回 [code]-inf[/code],负值返回 [code]-"
+"nan[/code]。"
+
+msgid ""
+"Returns the maximum of the given values. This function can take any number "
+"of arguments.\n"
+"[codeblock]\n"
+"max(1, 7, 3, -6, 5) # Returns 7\n"
+"[/codeblock]"
+msgstr ""
+"返回给定值的最大值。这个函数å¯ä»¥æŽ¥å—ä»»æ„æ•°é‡çš„å‚数。\n"
+"[codeblock]\n"
+"max(1, 7, 3, -6, 5) # 返回 7\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the maximum of two [float] values.\n"
+"[codeblock]\n"
+"maxf(3.6, 24) # Returns 24.0\n"
+"maxf(-3.99, -4) # Returns -3.99\n"
+"[/codeblock]"
+msgstr ""
+"返回两个 [float] 值中的最大值。\n"
+"[codeblock]\n"
+"maxf(3.6, 24) # 返回 24.0\n"
+"maxf(-3.99, -4) # 返回 -3.99\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the maximum of two [int] values.\n"
+"[codeblock]\n"
+"maxi(1, 2) # Returns 2\n"
+"maxi(-3, -4) # Returns -3\n"
+"[/codeblock]"
+msgstr ""
+"返回两个 [int] 值中的最大值。\n"
+"[codeblock]\n"
+"maxi(1, 2) # 返回 2\n"
+"maxi(-3, -4) # 返回 -3\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the minimum of the given values. This function can take any number "
+"of arguments.\n"
+"[codeblock]\n"
+"min(1, 7, 3, -6, 5) # Returns -6\n"
+"[/codeblock]"
+msgstr ""
+"返回给定值的最å°å€¼ã€‚这个函数å¯ä»¥æŽ¥å—ä»»æ„æ•°é‡çš„å‚数。\n"
+"[codeblock]\n"
+"min(1, 7, 3, -6, 5) # 返回 -6\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the minimum of two [float] values.\n"
+"[codeblock]\n"
+"minf(3.6, 24) # Returns 3.6\n"
+"minf(-3.99, -4) # Returns -4.0\n"
+"[/codeblock]"
+msgstr ""
+"返回两个 [float] 值中的最å°å€¼ã€‚\n"
+"[codeblock]\n"
+"minf(3.6, 24) # 返回 3.6\n"
+"minf(-3.99, -4) # 返回 -4.0\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the minimum of two [int] values.\n"
+"[codeblock]\n"
+"mini(1, 2) # Returns 1\n"
+"mini(-3, -4) # Returns -4\n"
+"[/codeblock]"
+msgstr ""
+"返回两个 [int] 值中的最å°å€¼ã€‚\n"
+"[codeblock]\n"
+"mini(1, 2) # 返回 1\n"
+"mini(-3, -4) # 返回 -4\n"
+"[/codeblock]"
+
+msgid ""
+"Moves [param from] toward [param to] by the [param delta] value.\n"
+"Use a negative [param delta] value to move away.\n"
+"[codeblock]\n"
+"move_toward(5, 10, 4) # Returns 9\n"
+"move_toward(10, 5, 4) # Returns 6\n"
+"move_toward(10, 5, -1.5) # Returns 11.5\n"
+"[/codeblock]"
+msgstr ""
+"å°† [param from] å‘ [param to] 移动,移动的长度是 [param delta]。\n"
+"使用负的 [param delta] 值则å‘远离的方å‘移动。\n"
+"[codeblock]\n"
+"move_toward(5, 10, 4) # 返回 9\n"
+"move_toward(10, 5, 4) # 返回 6\n"
+"move_toward(10, 5, -1.5) # 返回 11.5\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the nearest equal or larger power of 2 for the integer [param "
+"value].\n"
+"In other words, returns the smallest value [code]a[/code] where [code]a = "
+"pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative "
+"integer [code]n[/code].\n"
+"[codeblock]\n"
+"nearest_po2(3) # Returns 4\n"
+"nearest_po2(4) # Returns 4\n"
+"nearest_po2(5) # Returns 8\n"
+"\n"
+"nearest_po2(0) # Returns 0 (this may not be expected)\n"
+"nearest_po2(-1) # Returns 0 (this may not be expected)\n"
+"[/codeblock]\n"
+"[b]Warning:[/b] Due to the way it is implemented, this function returns "
+"[code]0[/code] rather than [code]1[/code] for negative values of [param "
+"value] (in reality, 1 is the smallest integer power of 2)."
+msgstr ""
+"返回最接近且ä¸å°äºŽæ•´æ•° [param value] çš„ 2 的幂。\n"
+"æ¢å¥è¯è¯´ï¼Œè¿”回最å°å€¼ [code]a[/code],其中 [code]a = pow(2, n)[/code],æŸäº›éž"
+"负整数 [code]n[/code] 使得值 [code]value <= a[/code]。\n"
+"[codeblock]\n"
+"nearest_po2(3) # 返回 4\n"
+"nearest_po2(4) # 返回 4\n"
+"nearest_po2(5) # 返回 8\n"
+"\n"
+"nearest_po2(0) # 返回 0(å¯èƒ½å‡ºä¹Žæ„料)\n"
+"nearest_po2(-1) # 返回 0(å¯èƒ½å‡ºä¹Žæ„料)\n"
+"[/codeblock]\n"
+"[b]警告:[/b]由于其实现方å¼ï¼Œæ­¤å‡½æ•°ä¼šå¯¹éžæ­£æ•°çš„ [param value] 返回 [code]0[/"
+"code] 而ä¸æ˜¯ [code]1[/code] (实际上 1 是 2 的最å°æ•´æ•°å¹‚)。"
+
+msgid ""
+"Wraps [param value] between [code]0[/code] and the [param length]. If the "
+"limit is reached, the next value the function returns is decreased to the "
+"[code]0[/code] side or increased to the [param length] side (like a triangle "
+"wave). If [param length] is less than zero, it becomes positive.\n"
+"[codeblock]\n"
+"pingpong(-3.0, 3.0) # Returns 3.0\n"
+"pingpong(-2.0, 3.0) # Returns 2.0\n"
+"pingpong(-1.0, 3.0) # Returns 1.0\n"
+"pingpong(0.0, 3.0) # Returns 0.0\n"
+"pingpong(1.0, 3.0) # Returns 1.0\n"
+"pingpong(2.0, 3.0) # Returns 2.0\n"
+"pingpong(3.0, 3.0) # Returns 3.0\n"
+"pingpong(4.0, 3.0) # Returns 2.0\n"
+"pingpong(5.0, 3.0) # Returns 1.0\n"
+"pingpong(6.0, 3.0) # Returns 0.0\n"
+"[/codeblock]"
+msgstr ""
+"å°† [param value] 包裹在 [code]0[/code] å’Œ [param length] 之间。如果达到é™åˆ¶ï¼Œ"
+"函数返回的下一个值将å‡å°‘到 [code]0[/code] 侧或增加到 [param length] 侧(åƒä¸‰"
+"角波)。如果 [param length] å°äºŽé›¶ï¼Œåˆ™å˜ä¸ºæ­£æ•°ã€‚\n"
+"[codeblock]\n"
+"pingpong(-3.0, 3.0) # 返回 3.0\n"
+"pingpong(-2.0, 3.0) # 返回 2.0\n"
+"pingpong(-1.0, 3.0) # 返回 1.0\n"
+"pingpong(0.0, 3.0) # 返回 0.0\n"
+"pingpong(1.0, 3.0) # 返回 1.0\n"
+"pingpong(2.0, 3.0) # 返回 2.0\n"
+"pingpong(3.0, 3.0) # 返回 3.0\n"
+"pingpong(4.0, 3.0) # 返回 2.0\n"
+"pingpong(5.0, 3.0) # 返回 1.0\n"
+"pingpong(6.0, 3.0) # 返回 0.0\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the integer modulus of [param x] divided by [param y] that wraps "
+"equally in positive and negative.\n"
+"[codeblock]\n"
+"print(\"#(i) (i % 3) (posmod(i, 3))\")\n"
+"for i in range(-3, 4):\n"
+" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n"
+"[/codeblock]\n"
+"Produces:\n"
+"[codeblock]\n"
+"(i) (i % 3) (posmod(i, 3))\n"
+"-3 0 | 0\n"
+"-2 -2 | 1\n"
+"-1 -1 | 2\n"
+" 0 0 | 0\n"
+" 1 1 | 1\n"
+" 2 2 | 2\n"
+" 3 0 | 0\n"
+"[/codeblock]"
+msgstr ""
+"返回 [param x] 除以 [param y] 的整数模数,对正负数进行一致的循环。\n"
+"[codeblock]\n"
+"print(\"#(i) (i % 3) (posmod(i, 3))\")\n"
+"for i in range(-3, 4):\n"
+" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n"
+"[/codeblock]\n"
+"结果:\n"
+"[codeblock]\n"
+"(i) (i % 3) (posmod(i, 3))\n"
+"-3 0 | 0\n"
+"-2 -2 | 1\n"
+"-1 -1 | 2\n"
+" 0 0 | 0\n"
+" 1 1 | 1\n"
+" 2 2 | 2\n"
+" 3 0 | 0\n"
+"[/codeblock]"
+
+msgid ""
+"Converts one or more arguments of any type to string in the best way "
+"possible and prints them to the console.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var a = [1, 2, 3]\n"
+"print(\"a\", \"b\", a) # Prints ab[1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var a = new Godot.Collections.Array { 1, 2, 3 };\n"
+"GD.Print(\"a\", \"b\", a); // Prints ab[1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to "
+"print error and warning messages instead of [method print] or [method "
+"print_rich]. This distinguishes them from print messages used for debugging "
+"purposes, while also displaying a stack trace when an error or warning is "
+"printed."
+msgstr ""
+"以尽å¯èƒ½æœ€ä½³çš„æ–¹å¼å°†ä¸€ä¸ªæˆ–多个任æ„类型的å‚数转æ¢ä¸ºå­—符串,并将其打å°åˆ°æŽ§åˆ¶"
+"å°ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var a = [1, 2, 3]\n"
+"print(\"a\", \"b\", a) # 输出 ab[1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var a = new Godot.Collections.Array { 1, 2, 3 };\n"
+"GD.Print(\"a\", \"b\", a); // 输出 ab[1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]请考虑使用 [method push_error] å’Œ [method push_warning] æ¥æ‰“å°é”™"
+"误和警告消æ¯ï¼Œè€Œä¸æ˜¯ [method print] 或 [method print_rich]。这将它们与用于调"
+"试目的的打å°æ¶ˆæ¯åŒºåˆ†å¼€æ¥ï¼ŒåŒæ—¶è¿˜ä¼šåœ¨æ‰“å°é”™è¯¯æˆ–警告时显示堆栈跟踪。"
+
+msgid ""
+"Converts one or more arguments of any type to string in the best way "
+"possible and prints them to the console. The following BBCode tags are "
+"supported: b, i, u, s, indent, code, url, center, right, color, bgcolor, "
+"fgcolor. Color tags only support named colors such as [code]red[/code], "
+"[i]not[/i] hexadecimal color codes. Unsupported tags will be left as-is in "
+"standard output.\n"
+"When printing to standard output, the supported subset of BBCode is "
+"converted to ANSI escape codes for the terminal emulator to display. "
+"Displaying ANSI escape codes is currently only supported on Linux and macOS. "
+"Support for ANSI escape codes may vary across terminal emulators, especially "
+"for italic and strikethrough.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print_rich(\"[code][b]Hello world![/b][/code]\") # Prints out: [b]Hello "
+"world![/b]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // Prints out: [b]Hello "
+"world![/b]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to "
+"print error and warning messages instead of [method print] or [method "
+"print_rich]. This distinguishes them from print messages used for debugging "
+"purposes, while also displaying a stack trace when an error or warning is "
+"printed."
+msgstr ""
+"以尽å¯èƒ½æœ€ä½³çš„æ–¹å¼å°†ä¸€ä¸ªæˆ–多个任æ„类型的å‚数转æ¢ä¸ºå­—符串,并将其打å°åˆ°æŽ§åˆ¶"
+"å°ã€‚支æŒä»¥ä¸‹ BBCode 标签:bã€iã€uã€sã€indentã€codeã€urlã€centerã€rightã€"
+"colorã€bgcolorã€fgcolor。颜色标签仅支æŒå‘½å颜色,例如 [code]red[/code]ã€[i]ä¸"
+"支æŒ[/i] å六进制颜色代ç ã€‚ä¸æ”¯æŒçš„标签将在标准输出中ä¿æŒåŽŸæ ·ã€‚\n"
+"当打å°åˆ°æ ‡å‡†è¾“出时,支æŒçš„ BBCode å­é›†è¢«è½¬æ¢ä¸º ANSI 转义ç ä»¥ä¾›ç»ˆç«¯ä»¿çœŸå™¨æ˜¾"
+"示。目å‰ä»… Linux å’Œ macOS 支æŒæ˜¾ç¤º ANSI 转义ç ã€‚对 ANSI 转义ç çš„支æŒå¯èƒ½å› ç»ˆ"
+"端仿真器而异,尤其是斜体和删除线。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print_rich(\"[code][b]Hello world![/b][/code]\") # 输出:[b]Hello world![/"
+"b]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // 输出:[b]Hello world!"
+"[/b]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]请考虑使用 [method push_error] å’Œ [method push_warning] æ¥æ‰“å°é”™"
+"误和警告消æ¯ï¼Œè€Œä¸æ˜¯ [method print] 或 [method print_rich]。这将它们与用于调"
+"试目的的打å°æ¶ˆæ¯åŒºåˆ†å¼€æ¥ï¼ŒåŒæ—¶è¿˜ä¼šåœ¨æ‰“å°é”™è¯¯æˆ–警告时显示堆栈跟踪。"
+
+msgid ""
+"If verbose mode is enabled ([method OS.is_stdout_verbose] returning "
+"[code]true[/code]), converts one or more arguments of any type to string in "
+"the best way possible and prints them to the console."
+msgstr ""
+"如果å¯ç”¨äº†è¯¦ç»†æ¨¡å¼ï¼ˆ[method OS.is_stdout_verbose] 返回 [code]true[/code]),"
+"则尽å¯èƒ½ä»¥æœ€ä½³æ–¹å¼å°†ä¸€ä¸ªæˆ–多个任æ„类型的å‚数转æ¢ä¸ºå­—符串,并将它们打å°åˆ°æŽ§åˆ¶"
+"å°ã€‚"
+
+msgid ""
+"Prints one or more arguments to strings in the best way possible to standard "
+"error line.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printerr(\"prints to stderr\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintErr(\"prints to stderr\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"以尽å¯èƒ½æœ€ä½³çš„æ–¹å¼å°†ä¸€ä¸ªæˆ–多个å‚数作为字符串输出到标准错误行。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printerr(\"prints to stderr\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintErr(\"prints to stderr\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Prints one or more arguments to strings in the best way possible to the OS "
+"terminal. Unlike [method print], no newline is automatically added at the "
+"end.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printraw(\"A\")\n"
+"printraw(\"B\")\n"
+"printraw(\"C\")\n"
+"# Prints ABC to terminal\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintRaw(\"A\");\n"
+"GD.PrintRaw(\"B\");\n"
+"GD.PrintRaw(\"C\");\n"
+"// Prints ABC to terminal\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"以尽å¯èƒ½æœ€ä½³çš„æ–¹å¼å°†ä¸€ä¸ªæˆ–多个å‚数作为字符串输出到 OS 终端。与 [method "
+"print] ä¸åŒçš„是,最åŽä¸ä¼šè‡ªåŠ¨æ·»åŠ æ¢è¡Œç¬¦ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printraw(\"A\")\n"
+"printraw(\"B\")\n"
+"printraw(\"C\")\n"
+"# 输出 ABC 到终端\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintRaw(\"A\");\n"
+"GD.PrintRaw(\"B\");\n"
+"GD.PrintRaw(\"C\");\n"
+"// 输出 ABC 到终端\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Prints one or more arguments to the console with a space between each "
+"argument.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"prints(\"A\", \"B\", \"C\") # Prints A B C\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintS(\"A\", \"B\", \"C\"); // Prints A B C\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将一个或多个å‚数打å°åˆ°æŽ§åˆ¶å°ï¼Œæ¯ä¸ªå‚数之间有一个空格。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"prints(\"A\", \"B\", \"C\") # 输出 A B C\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintS(\"A\", \"B\", \"C\"); // 输出 A B C\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Prints one or more arguments to the console with a tab between each "
+"argument.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printt(\"A\", \"B\", \"C\") # Prints A B C\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintT(\"A\", \"B\", \"C\"); // Prints A B C\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将一个或多个å‚数打å°åˆ°æŽ§åˆ¶å°ï¼Œæ¯ä¸ªå‚数之间有一个制表符。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"printt(\"A\", \"B\", \"C\") # 输出 A B C\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PrintT(\"A\", \"B\", \"C\"); // 输出 A B C\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Pushes an error message to Godot's built-in debugger and to the OS "
+"terminal.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"push_error(\"test error\") # Prints \"test error\" to debugger and terminal "
+"as error call\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PushError(\"test error\"); // Prints \"test error\" to debugger and "
+"terminal as error call\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] This function does not pause project execution. To print an "
+"error message and pause project execution in debug builds, use "
+"[code]assert(false, \"test error\")[/code] instead."
+msgstr ""
+"将错误消æ¯æŽ¨é€åˆ° Godot 的内置调试器和 OS 终端。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"push_error(\"test error\") # å‘è°ƒè¯•å™¨å’Œç»ˆç«¯æ‰“å° â€œtest error†作为错误调用\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PushError(\"test error\"); // å‘è°ƒè¯•å™¨å’Œç»ˆç«¯æ‰“å° â€œtest error†作为错误调"
+"用\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]该函数ä¸ä¼šæš‚åœé¡¹ç›®æ‰§è¡Œã€‚è¦åœ¨è°ƒè¯•ç‰ˆæœ¬ä¸­æ‰“å°é”™è¯¯æ¶ˆæ¯å¹¶æš‚åœé¡¹ç›®æ‰§"
+"行,请改用 [code]assert(false, \"test error\")[/code]。"
+
+msgid ""
+"Pushes a warning message to Godot's built-in debugger and to the OS "
+"terminal.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"push_warning(\"test warning\") # Prints \"test warning\" to debugger and "
+"terminal as warning call\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and "
+"terminal as warning call\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将警告消æ¯æŽ¨é€åˆ° Godot 的内置调试器和 OS 终端。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"push_warning(\"test warning\") # 以警告的形å¼å‘调试器和终端输出 “test "
+"warningâ€\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.PushWarning(\"test warning\"); // 以警告的形å¼å‘调试器和终端输出 “test "
+"warningâ€\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Converts an angle expressed in radians to degrees.\n"
+"[codeblock]\n"
+"rad_to_deg(0.523599) # Returns 30\n"
+"rad_to_deg(PI) # Returns 180\n"
+"rad_to_deg(PI * 2) # Returns 360\n"
+"[/codeblock]"
+msgstr ""
+"将以弧度表示的角度转æ¢ä¸ºåº¦ã€‚\n"
+"[codeblock]\n"
+"rad_to_deg(0.523599) # 返回 30\n"
+"rad_to_deg(PI) # 返回 180\n"
+"rad_to_deg(PI * 2) # 返回 360\n"
+"[/codeblock]"
+
+msgid ""
+"Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], "
+"where its first element is the randomized [int] value, and the second "
+"element is the same as [param seed]. Passing the same [param seed] "
+"consistently returns the same array.\n"
+"[b]Note:[/b] \"Seed\" here refers to the internal state of the pseudo random "
+"number generator, currently implemented as a 64 bit integer.\n"
+"[codeblock]\n"
+"var a = rand_from_seed(4)\n"
+"\n"
+"print(a[0])\t# Prints 2879024997\n"
+"print(a[1])\t# Prints 4\n"
+"[/codeblock]"
+msgstr ""
+"给定一个 [param seed],返回一个大å°ä¸º [code]2[/code] çš„ [PackedInt64Array],"
+"其中第一个元素是éšæœºåŒ–çš„ [int] 值,第二个元素与 [param seed] 相åŒã€‚传入相åŒ"
+"çš„ [param seed] 会一致地返回相åŒçš„数组。\n"
+"[b]注æ„:[/b]这里的“ç§å­â€æ˜¯æŒ‡ä¼ªéšæœºæ•°å‘生器的内部状æ€ï¼Œç›®å‰å®žçŽ°ä¸ºä¸€ä¸ª 64 ä½æ•´"
+"数。\n"
+"[codeblock]\n"
+"var a = rand_from_seed(4)\n"
+"\n"
+"print(a[0])\t# 输出 2879024997\n"
+"print(a[1])\t# 输出 4\n"
+"[/codeblock]"
+
+msgid ""
+"Returns a random floating point value between [code]0.0[/code] and "
+"[code]1.0[/code] (inclusive).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf() # Returns e.g. 0.375671\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Randf(); // Returns e.g. 0.375671\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回 [code]0.0[/code] å’Œ [code]1.0[/code](包å«ï¼‰ä¹‹é—´çš„éšæœºæµ®ç‚¹å€¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf() # 返回示例 0.375671\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Randf(); // 返回示例 0.375671\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a random floating point value between [param from] and [param to] "
+"(inclusive).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf_range(0, 20.5) # Returns e.g. 7.45315\n"
+"randf_range(-10, 10) # Returns e.g. -3.844535\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.RandRange(0.0, 20.5); // Returns e.g. 7.45315\n"
+"GD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回 [param from] å’Œ [param to](包å«ï¼‰ä¹‹é—´çš„éšæœºæµ®ç‚¹å€¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf_range(0, 20.5) # 返回示例 7.45315\n"
+"randf_range(-10, 10) # 返回示例 -3.844535\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.RandRange(0.0, 20.5); // 返回示例 7.45315\n"
+"GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a normally-distributed pseudo-random floating point value using Box-"
+"Muller transform with the specified [param mean] and a standard [param "
+"deviation]. This is also called Gaussian distribution."
+msgstr ""
+"返回一个正æ€åˆ†å¸ƒçš„伪éšæœºæµ®ç‚¹å€¼ï¼Œè¯¥åˆ†å¸ƒä½¿ç”¨å…·æœ‰æŒ‡å®š [param mean] 和标准 "
+"[param deviation] çš„ Box-Muller å˜æ¢ã€‚这也被称为高斯分布。"
+
+msgid ""
+"Returns a random unsigned 32-bit integer. Use remainder to obtain a random "
+"value in the interval [code][0, N - 1][/code] (where N is smaller than "
+"2^32).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randi() # Returns random integer between 0 and 2^32 - 1\n"
+"randi() % 20 # Returns random integer between 0 and 19\n"
+"randi() % 100 # Returns random integer between 0 and 99\n"
+"randi() % 100 + 1 # Returns random integer between 1 and 100\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Randi(); // Returns random integer between 0 and 2^32 - 1\n"
+"GD.Randi() % 20; // Returns random integer between 0 and 19\n"
+"GD.Randi() % 100; // Returns random integer between 0 and 99\n"
+"GD.Randi() % 100 + 1; // Returns random integer between 1 and 100\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回一个éšæœºçš„æ— ç¬¦å· 32 ä½æ•´æ•°ã€‚使用余数获得区间 [code][0, N - 1][/code] (其"
+"中 N å°äºŽ 2^32)的éšæœºå€¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randi() # 返回介于 0 到 2^32 - 1 之间的éšæœºæ•´æ•°\n"
+"randi() % 20 # 返回介于 0 到 19之间的éšæœºæ•´æ•°\n"
+"randi() % 100 # 返回介于 0 到 99 之间的éšæœºæ•´æ•°\n"
+"randi() % 100 + 1 # 返回介于 1 到 100 之间的éšæœºæ•´æ•°\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的éšæœºæ•´æ•°\n"
+"GD.Randi() % 20; // 返回介于 0 到 19之间的éšæœºæ•´æ•°\n"
+"GD.Randi() % 100; // 返回介于 0 到 99 之间的éšæœºæ•´æ•°\n"
+"GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的éšæœºæ•´æ•°\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a random signed 32-bit integer between [param from] and [param to] "
+"(inclusive). If [param to] is lesser than [param from], they are swapped.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randi_range(0, 1) # Returns either 0 or 1\n"
+"randi_range(-10, 1000) # Returns random integer between -10 and 1000\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.RandRange(0, 1); // Returns either 0 or 1\n"
+"GD.RandRange(-10, 1000); // Returns random integer between -10 and 1000\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回介于 [param from] å’Œ [param to](包å«ï¼‰ä¹‹é—´çš„一个éšæœºæœ‰ç¬¦å· 32 ä½æ•´æ•°ã€‚如"
+"æžœ [param to] å°äºŽ [param from],则它们将被交æ¢ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randi_range(0, 1) # 返回 0 或 1\n"
+"randi_range(-10, 1000) # 返回介于 -10 å’Œ 1000 之间的éšæœºæ•´æ•°\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.RandRange(0, 1); // 返回 0 或 1\n"
+"GD.RandRange(-10, 1000); // 返回介于 -10 å’Œ 1000 之间的éšæœºæ•´æ•°\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Randomizes the seed (or the internal state) of the random number generator. "
+"The current implementation uses a number based on the device's time.\n"
+"[b]Note:[/b] This function is called automatically when the project is run. "
+"If you need to fix the seed to have consistent, reproducible results, use "
+"[method seed] to initialize the random number generator."
+msgstr ""
+"éšæœºåŒ–éšæœºæ•°å‘生器的ç§å­ï¼ˆæˆ–内部状æ€ï¼‰ã€‚ç›®å‰çš„实现使用一个基于设备时间的数"
+"字。\n"
+"[b]注æ„:[/b]该函数在项目è¿è¡Œæ—¶è‡ªåŠ¨è¢«è°ƒç”¨ã€‚如果需è¦ä¿®å¤ç§å­ä»¥èŽ·å¾—一致ã€å¯é‡çŽ°"
+"的结果,请使用 [method seed] æ¥åˆå§‹åŒ–éšæœºæ•°ç”Ÿæˆå™¨ã€‚"
+
+msgid ""
+"Maps a [param value] from range [code][istart, istop][/code] to [code]"
+"[ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If "
+"[param value] is outside [code][istart, istop][/code], then the resulting "
+"value will also be outside [code][ostart, ostop][/code]. If this is not "
+"desired, use [method clamp] on the result of this function.\n"
+"[codeblock]\n"
+"remap(75, 0, 100, -1, 1) # Returns 0.5\n"
+"[/codeblock]\n"
+"For complex use cases where multiple ranges are needed, consider using "
+"[Curve] or [Gradient] instead."
+msgstr ""
+"将 [param value] 从范围 [code][istart, istop][/code] 映射到 [code][ostart, "
+"ostop][/code]。å¦è§ [method lerp] å’Œ [method inverse_lerp]。如果 [param "
+"value] 在 [code][istart, istop][/code] 之外,那么结果值也将在 [code][ostart, "
+"ostop][/code] 之外。如果ä¸å¸Œæœ›è¿™æ ·ï¼Œè¯·å¯¹è¯¥å‡½æ•°çš„结果使用 [method clamp]。\n"
+"[codeblock]\n"
+"remap(75, 0, 100, -1, 1) # 返回 0.5\n"
+"[/codeblock]\n"
+"对于需è¦å¤šä¸ªèŒƒå›´çš„å¤æ‚用例,请考虑改用 [Curve] 或 [Gradient]。"
+
+msgid ""
+"Allocates a unique ID which can be used by the implementation to construct a "
+"RID. This is used mainly from native extensions to implement servers."
+msgstr ""
+"分é…一个唯一的 ID,å¯è¢«å®žçŽ°ç”¨æ¥æž„造一个 RID。这主è¦è¢«æœ¬åœ°æ‰©å±•ä½¿ç”¨ä»¥å®žçŽ°æœåŠ¡"
+"器。"
+
+msgid ""
+"Creates a RID from a [param base]. This is used mainly from native "
+"extensions to build servers."
+msgstr "从 [param base] 创建一个 RID。这主è¦è¢«æœ¬åœ°æ‰©å±•ä½¿ç”¨ä»¥æž„建æœåŠ¡å™¨ã€‚"
+
+msgid ""
+"Rounds [param x] to the nearest whole number, with halfway cases rounded "
+"away from 0. Supported types: [int], [float], [Vector2], [Vector3], "
+"[Vector4].\n"
+"[codeblock]\n"
+"round(2.4) # Returns 2\n"
+"round(2.5) # Returns 3\n"
+"round(2.6) # Returns 3\n"
+"[/codeblock]\n"
+"See also [method floor], [method ceil], and [method snapped].\n"
+"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], "
+"[method Vector2.round], [method Vector3.round], or [method Vector4.round]."
+msgstr ""
+"å°† [param x] èˆå…¥åˆ°æœ€æŽ¥è¿‘的整数,中间情况远离 0 èˆå…¥ã€‚支æŒçš„类型:[int]ã€"
+"[float]ã€[Vector2]ã€[Vector3]ã€[Vector4]。\n"
+"[codeblock]\n"
+"round(2.4) # 返回 2\n"
+"round(2.5) # 返回 3\n"
+"round(2.6) # 返回 3\n"
+"[/codeblock]\n"
+"å¦è¯·å‚è§ [method floor]ã€[method ceil] å’Œ [method snapped]。\n"
+"[b]注æ„:[/b]为了更好的类型安全,使用 [method roundf]ã€[method roundi]ã€"
+"[method Vector2.round]ã€[method Vector3.round] 或 [method Vector4.round]。"
+
+msgid ""
+"Rounds [param x] to the nearest whole number, with halfway cases rounded "
+"away from 0.\n"
+"A type-safe version of [method round], returning a [float]."
+msgstr ""
+"å°† [param x] èˆå…¥åˆ°æœ€æŽ¥è¿‘的整数,中间情况远离 0 èˆå…¥ã€‚\n"
+"[method round] 的类型安全版本,返回一个 [float]。"
+
+msgid ""
+"Rounds [param x] to the nearest whole number, with halfway cases rounded "
+"away from 0.\n"
+"A type-safe version of [method round], returning an [int]."
+msgstr ""
+"å°† [param x] èˆå…¥åˆ°æœ€æŽ¥è¿‘的整数,中间情况远离 0 èˆå…¥ã€‚\n"
+"[method round] 的类型安全版本,返回一个 [int]。"
+
+msgid ""
+"Sets the seed for the random number generator to [param base]. Setting the "
+"seed manually can ensure consistent, repeatable results for most random "
+"functions.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_seed = \"Godot Rocks\".hash()\n"
+"seed(my_seed)\n"
+"var a = randf() + randi()\n"
+"seed(my_seed)\n"
+"var b = randf() + randi()\n"
+"# a and b are now identical\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n"
+"GD.Seed(mySeed);\n"
+"var a = GD.Randf() + GD.Randi();\n"
+"GD.Seed(mySeed);\n"
+"var b = GD.Randf() + GD.Randi();\n"
+"// a and b are now identical\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"å°†éšæœºæ•°ç”Ÿæˆå™¨çš„ç§å­è®¾ç½®ä¸º [param base]。手动设置ç§å­å¯ä»¥ç¡®ä¿å¤§å¤šæ•°éšæœºå‡½æ•°çš„"
+"结果一致ã€å¯é‡å¤ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_seed = \"Godot Rocks\".hash()\n"
+"seed(my_seed)\n"
+"var a = randf() + randi()\n"
+"seed(my_seed)\n"
+"var b = randf() + randi()\n"
+"# a 和 b 现在是一样的\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n"
+"GD.Seed(mySeed);\n"
+"var a = GD.Randf() + GD.Randi();\n"
+"GD.Seed(mySeed);\n"
+"var b = GD.Randf() + GD.Randi();\n"
+"// a 和 b 现在是一样的\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the same type of [Variant] as [param x], with [code]-1[/code] for "
+"negative values, [code]1[/code] for positive values, and [code]0[/code] for "
+"zeros. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], "
+"[Vector3i], [Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"sign(-6.0) # Returns -1\n"
+"sign(0.0) # Returns 0\n"
+"sign(6.0) # Returns 1\n"
+"\n"
+"sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] For better type safety, use [method signf], [method signi], "
+"[method Vector2.sign], [method Vector2i.sign], [method Vector3.sign], "
+"[method Vector3i.sign], [method Vector4.sign], or [method Vector4i.sign]."
+msgstr ""
+"返回与 [param x] 相åŒç±»åž‹çš„ [Variant],[code]-1[/code] 为负值,[code]1[/"
+"code] 为正值,[code]0[/code] 为零值。支æŒçš„类型:[int]ã€[float]ã€[Vector2]ã€"
+"[Vector2i]ã€[Vector3]ã€[Vector3i]ã€[Vector4]ã€[Vector4i]。\n"
+"[codeblock]\n"
+"sign(-6.0) # 返回 -1\n"
+"sign(0.0) # 返回 0\n"
+"sign(6.0) # 返回 1\n"
+"\n"
+"sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]为了更好的类型安全,请使用 [method signf]ã€[method signi]ã€"
+"[method Vector2.sign]ã€[method Vector2i.sign]ã€[method Vector3.sign]ã€"
+"[method Vector3i.sign]ã€[method Vector4.sign]ã€æˆ– [method Vector4i.sign]。"
+
+msgid ""
+"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param "
+"x] is positive, and [code]0[/code] if if [param x] is zero.\n"
+"[codeblock]\n"
+"sign(-6) # Returns -1\n"
+"sign(0) # Returns 0\n"
+"sign(6) # Returns 1\n"
+"[/codeblock]"
+msgstr ""
+"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 "
+"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n"
+"[codeblock]\n"
+"sign(-6) # 返回 -1\n"
+"sign(0) # 返回 0\n"
+"sign(6) # 返回 1\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the sine of angle [param angle_rad] in radians.\n"
+"[codeblock]\n"
+"sin(0.523599) # Returns 0.5\n"
+"sin(deg_to_rad(90)) # Returns 1.0\n"
+"[/codeblock]"
+msgstr ""
+"返回弧度角 [param angle_rad] 的正弦值。\n"
+"[codeblock]\n"
+"sin(0.523599) # 返回 0.5\n"
+"sin(deg_to_rad(90)) # 返回 1.0\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the hyperbolic sine of [param x].\n"
+"[codeblock]\n"
+"var a = log(2.0) # Returns 0.693147\n"
+"sinh(a) # Returns 0.75\n"
+"[/codeblock]"
+msgstr ""
+"返回 [param x] çš„åŒæ›²æ­£å¼¦å€¼ã€‚\n"
+"[codeblock]\n"
+"var a = log(2.0) # 返回 0.693147\n"
+"sinh(a) # 返回 0.75\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the result of smoothly interpolating the value of [param x] between "
+"[code]0[/code] and [code]1[/code], based on the where [param x] lies with "
+"respect to the edges [param from] and [param to].\n"
+"The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/"
+"code] if [code]x >= to[/code]. If [param x] lies between [param from] and "
+"[param to], the returned value follows an S-shaped curve that maps [param x] "
+"between [code]0[/code] and [code]1[/code].\n"
+"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = "
+"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n"
+"[codeblock]\n"
+"smoothstep(0, 2, -5.0) # Returns 0.0\n"
+"smoothstep(0, 2, 0.5) # Returns 0.15625\n"
+"smoothstep(0, 2, 1.0) # Returns 0.5\n"
+"smoothstep(0, 2, 2.0) # Returns 1.0\n"
+"[/codeblock]\n"
+"Compared to [method ease] with a curve value of [code]-1.6521[/code], "
+"[method smoothstep] returns the smoothest possible curve with no sudden "
+"changes in the derivative. If you need to perform more advanced transitions, "
+"use [Tween] or [AnimationPlayer].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, "
+"-1.6521) return values[/url]"
+msgstr ""
+"返回 [param x] 在 [code]0[/code] å’Œ [code]1[/code] 之间平滑æ’值的结果,基于 "
+"[param x] 相对于边 [param from] å’Œ [param to] çš„ä½ç½®ã€‚\n"
+"如果 [code]x <= from[/code],则返回值为 [code]0[/code];如果 [code]x >= to[/"
+"code],则返回值为 [code]1[/code]。如果 [param x] ä½äºŽ [param from] å’Œ [param "
+"to] 之间,则返回值éµå¾ªä¸€æ¡å°† [param x] 映射到 [code]0[/code] å’Œ [code]1[/"
+"code] 之间的 S 形曲线。\n"
+"è¿™æ¡ S 形曲线是三次 Hermite æ’值器,由 [code]f(y) = 3*y^2 - 2*y^3[/code] ç»™"
+"出,其中 [code]y = (x-from) / (to-from)[/code]。\n"
+"[codeblock]\n"
+"smoothstep(0, 2, -5.0) # 返回 0.0\n"
+"smoothstep(0, 2, 0.5) # 返回 0.15625\n"
+"smoothstep(0, 2, 1.0) # 返回 0.5\n"
+"smoothstep(0, 2, 2.0) # 返回 1.0\n"
+"[/codeblock]\n"
+"与曲线值为 [code]-1.6521[/code] 的 [method ease] 相比,[method smoothstep] 返"
+"回最平滑的曲线,导数没有çªç„¶å˜åŒ–。如果您需è¦æ‰§è¡Œæ›´é«˜çº§çš„过渡,请使用 [Tween] "
+"或 [AnimationPlayer]。\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"smoothstep_ease_comparison.png]smoothstep() 与 ease(x, -1.6521) 返回值的比较"
+"[/url]"
+
+msgid ""
+"Returns the multiple of [param step] that is the closest to [param x]. This "
+"can also be used to round a floating point number to an arbitrary number of "
+"decimals.\n"
+"The returned value is the same type of [Variant] as [param step]. Supported "
+"types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], "
+"[Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"snapped(100, 32) # Returns 96\n"
+"snapped(3.14159, 0.01) # Returns 3.14\n"
+"\n"
+"snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)\n"
+"[/codeblock]\n"
+"See also [method ceil], [method floor], and [method round].\n"
+"[b]Note:[/b] For better type safety, use [method snappedf], [method "
+"snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method "
+"Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped], or "
+"[method Vector4i.snapped]."
+msgstr ""
+"返回最接近 [param x] çš„ [param step] çš„å€æ•°ã€‚这也å¯ç”¨äºŽå°†ä¸€ä¸ªæµ®ç‚¹æ•°å››èˆäº”入为"
+"ä»»æ„å°æ•°ä½æ•°ã€‚\n"
+"返回值是与 [param step] 相åŒç±»åž‹çš„ [Variant]。支æŒçš„类型:[int]ã€[float]ã€"
+"[Vector2]ã€[Vector2i]ã€[Vector3]ã€[Vector3i]ã€[Vector4]ã€[Vector4i]。\n"
+"[codeblock]\n"
+"snapped(100, 32) # 返回 96\n"
+"snapped(3.14159, 0.01) # 返回 3.14\n"
+"\n"
+"snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)\n"
+"[/codeblock]\n"
+"å¦è§ [method ceil]ã€[method floor] å’Œ [method round]。\n"
+"[b]注æ„:[/b]为了更好的类型安全,请使用 [method snappedf]ã€[method "
+"snappedi]ã€[method Vector2.snapped]ã€[method Vector2i.snapped]ã€[method "
+"Vector3.snapped]ã€[method Vector3i.snapped]ã€[method Vector4.snapped]ã€æˆ– "
+"[method Vector4i.snapped]。"
+
+msgid ""
+"Returns the multiple of [param step] that is the closest to [param x]. This "
+"can also be used to round a floating point number to an arbitrary number of "
+"decimals.\n"
+"A type-safe version of [method snapped], returning a [float].\n"
+"[codeblock]\n"
+"snapped(32.0, 2.5) # Returns 32.5\n"
+"snapped(3.14159, 0.01) # Returns 3.14\n"
+"[/codeblock]"
+msgstr ""
+"返回最接近 [param x] çš„ [param step] çš„å€æ•°ã€‚也å¯ç”¨äºŽå°†æµ®ç‚¹æ•°å››èˆäº”入为任æ„çš„"
+"å°æ•°ä½æ•°ã€‚\n"
+"[method snapped] 的类型安全版本,返回一个 [float]。\n"
+"[codeblock]\n"
+"snapped(32.0, 2.5) # 返回 32.5\n"
+"snapped(3.14159, 0.01) # 返回 3.14\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the multiple of [param step] that is the closest to [param x].\n"
+"A type-safe version of [method snapped], returning an [int].\n"
+"[codeblock]\n"
+"snapped(53, 16) # Returns 48\n"
+"snapped(4096, 100) # Returns 4100\n"
+"[/codeblock]"
+msgstr ""
+"返回最接近 [param x] çš„ [param step] çš„å€æ•°ã€‚\n"
+"[method snapped] 的类型安全版本,返回一个 [int]。\n"
+"[codeblock]\n"
+"snapped(53, 16) # 返回 48\n"
+"snapped(4096, 100) # 返回 4100\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the square root of [param x], where [param x] is a non-negative "
+"number.\n"
+"[codeblock]\n"
+"sqrt(9) # Returns 3\n"
+"sqrt(10.24) # Returns 3.2\n"
+"sqrt(-1) # Returns NaN\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Negative values of [param x] return NaN (\"Not a Number\"). in "
+"C#, if you need negative inputs, use [code]System.Numerics.Complex[/code]."
+msgstr ""
+"返回 [param x] 的平方根,其中 [param x] 是一个éžè´Ÿæ•°ã€‚\n"
+"[codeblock]\n"
+"sqrt(9) # 返回 3\n"
+"sqrt(10.24) # 返回 3.2\n"
+"sqrt(-1) # 返回 NaN\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]è´Ÿæ•°çš„ [param x] 会返回 NaN(“ä¸æ˜¯æ•°å­—â€ï¼‰ã€‚在 C# 中,如果需è¦è´Ÿ"
+"输入,请使用 [code]System.Numerics.Complex[/code]。"
+
+msgid ""
+"Returns the position of the first non-zero digit, after the decimal point. "
+"Note that the maximum return value is 10, which is a design decision in the "
+"implementation.\n"
+"[codeblock]\n"
+"var n = step_decimals(5) # n is 0\n"
+"n = step_decimals(1.0005) # n is 4\n"
+"n = step_decimals(0.000000005) # n is 9\n"
+"[/codeblock]"
+msgstr ""
+"返回å°æ•°ç‚¹åŽç¬¬ä¸€ä¸ªéžé›¶æ•°å­—çš„ä½ç½®ã€‚注æ„最大返回值是 10,这是实现中的设计决"
+"定。\n"
+"[codeblock]\n"
+"var n = step_decimals(5) # n 为 0\n"
+"n = step_decimals(1.0005) # n 为 4\n"
+"n = step_decimals(0.000000005) # n 为 9\n"
+"[/codeblock]"
+
+msgid ""
+"Converts one or more arguments of any [Variant] type to a [String] in the "
+"best way possible.\n"
+"[codeblock]\n"
+"var a = [10, 20, 30]\n"
+"var b = str(a)\n"
+"print(len(a)) # Prints 3 (the number of elements in the array).\n"
+"print(len(b)) # Prints 12 (the length of the string \"[10, 20, 30]\").\n"
+"[/codeblock]"
+msgstr ""
+"å°½å¯èƒ½ä»¥æœ€ä½³æ–¹å¼å°†ä¸€ä¸ªæˆ–多个任何 [Variant] 类型的å‚数转æ¢ä¸ºä¸€ä¸ª [String]。\n"
+"[codeblock]\n"
+"var a = [10, 20, 30]\n"
+"var b = str(a)\n"
+"print(len(a)) # 输出 3(数组中元素的数é‡ï¼‰ã€‚\n"
+"print(len(b)) # 输出 12(字符串“[10, 20, 30]â€çš„长度)。\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the tangent of angle [param angle_rad] in radians.\n"
+"[codeblock]\n"
+"tan(deg_to_rad(45)) # Returns 1\n"
+"[/codeblock]"
+msgstr ""
+"返回弧度角 [param angle_rad] 的正切值。\n"
+"[codeblock]\n"
+"tan(deg_to_rad(45)) # 返回 1\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the hyperbolic tangent of [param x].\n"
+"[codeblock]\n"
+"var a = log(2.0) # Returns 0.693147\n"
+"tanh(a) # Returns 0.6\n"
+"[/codeblock]"
+msgstr ""
+"返回 [param x] çš„åŒæ›²æ­£åˆ‡å€¼ã€‚\n"
+"[codeblock]\n"
+"var a = log(2.0) # 返回 0.693147\n"
+"tanh(a) # 返回 0.6\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the internal type of the given [param variable], using the [enum "
+"Variant.Type] values.\n"
+"[codeblock]\n"
+"var json = JSON.new()\n"
+"json.parse('[\"a\", \"b\", \"c\"]')\n"
+"var result = json.get_data()\n"
+"if typeof(result) == TYPE_ARRAY:\n"
+" print(result[0]) # Prints a\n"
+"else:\n"
+" print(\"Unexpected result\")\n"
+"[/codeblock]"
+msgstr ""
+"使用 [enum Variant.Type] 值返回给定 [param variable] 的内部类型。\n"
+"[codeblock]\n"
+"var json = JSON.new()\n"
+"json.parse('[\"a\", \"b\", \"c\"]')\n"
+"var result = json.get_data()\n"
+"if typeof(result) == TYPE_ARRAY:\n"
+" print(result[0]) # 输出 a\n"
+"else:\n"
+" print(\"出乎æ„料的结果\")\n"
+"[/codeblock]"
+
+msgid ""
+"Encodes a [Variant] value to a byte array, without encoding objects. "
+"Deserialization can be done with [method bytes_to_var].\n"
+"[b]Note:[/b] If you need object serialization, see [method "
+"var_to_bytes_with_objects]."
+msgstr ""
+"å°† [Variant] 值编ç ä¸ºå­—节数组,ä¸ç¼–ç å¯¹è±¡ã€‚ååºåˆ—化å¯ä»¥ä½¿ç”¨ [method "
+"bytes_to_var] æ¥å®Œæˆã€‚\n"
+"[b]注æ„:[/b]如果需è¦å¯¹è±¡åºåˆ—化,å‚è§ [method var_to_bytes_with_objects]。"
+
+msgid ""
+"Encodes a [Variant] value to a byte array. Encoding objects is allowed (and "
+"can potentially include executable code). Deserialization can be done with "
+"[method bytes_to_var_with_objects]."
+msgstr ""
+"å°† [Variant] 值编ç ä¸ºå­—节数组。å…许对对象进行编ç ï¼ˆå¹¶ä¸”å¯èƒ½åŒ…括å¯æ‰§è¡Œä»£ç ï¼‰ã€‚"
+"ååºåˆ—化å¯ä»¥ä½¿ç”¨ [method bytes_to_var_with_objects] æ¥å®Œæˆã€‚"
+
+msgid ""
+"Converts a [Variant] [param variable] to a formatted [String] that can then "
+"be parsed using [method str_to_var].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var a = { \"a\": 1, \"b\": 2 }\n"
+"print(var_to_str(a))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n"
+"GD.Print(GD.VarToStr(a));\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Prints:\n"
+"[codeblock]\n"
+"{\n"
+" \"a\": 1,\n"
+" \"b\": 2\n"
+"}\n"
+"[/codeblock]"
+msgstr ""
+"å°† [Variant] [param variable] 转æ¢ä¸ºæ ¼å¼åŒ–çš„ [String],然åŽå¯ä»¥ä½¿ç”¨ [method "
+"str_to_var] 对其进行解æžã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var a = { \"a\": 1, \"b\": 2 }\n"
+"print(var_to_str(a))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n"
+"GD.Print(GD.VarToStr(a));\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"输出:\n"
+"[codeblock]\n"
+"{\n"
+" \"a\": 1,\n"
+" \"b\": 2\n"
+"}\n"
+"[/codeblock]"
+
+msgid ""
+"Returns a weak reference to an object, or [code]null[/code] if [param obj] "
+"is invalid.\n"
+"A weak reference to an object is not enough to keep the object alive: when "
+"the only remaining references to a referent are weak references, garbage "
+"collection is free to destroy the referent and reuse its memory for "
+"something else. However, until the object is actually destroyed the weak "
+"reference may return the object even if there are no strong references to it."
+msgstr ""
+"返回对æŸä¸ªå¯¹è±¡çš„弱引用,如果 [param obj] 无效,则返回 [code]null[/code]。\n"
+"对对象的弱引用ä¸è¶³ä»¥ä½¿å¯¹è±¡ä¿æŒå­˜æ´»ï¼šå½“对引用对象的剩余引用都是弱引用时,垃圾"
+"回收å¯ä»¥è‡ªç”±é”€æ¯è¯¥å¼•ç”¨å¯¹è±¡å¹¶å°†å…¶å†…å­˜é‡æ–°ç”¨äºŽå…¶ä»–用途。但是,在对象实际被销æ¯"
+"之å‰ï¼Œå¼±å¼•ç”¨å¯èƒ½ä¼šè¿”回该对象,å³ä½¿ä¸å­˜åœ¨å¯¹å®ƒçš„强引用也是如此。"
+
+msgid ""
+"Wraps the [Variant] [param value] between [param min] and [param max]. Can "
+"be used for creating loop-alike behavior or infinite surfaces.\n"
+"Variant types [int] and [float] are supported. If any of the arguments is "
+"[float] this function returns a [float], otherwise it returns an [int].\n"
+"[codeblock]\n"
+"var a = wrap(4, 5, 10)\n"
+"# a is 9 (int)\n"
+"\n"
+"var a = wrap(7, 5, 10)\n"
+"# a is 7 (int)\n"
+"\n"
+"var a = wrap(10.5, 5, 10)\n"
+"# a is 5.5 (float)\n"
+"[/codeblock]"
+msgstr ""
+"在 [param min] å’Œ [param max] 之间包裹 [Variant] [param value]。å¯ç”¨äºŽåˆ›å»ºç±»"
+"似循环的行为或无é™æ›²é¢ã€‚\n"
+"支æŒå˜ä½“类型 [int] å’Œ [float]。如果任一å‚数是 [float],则该函数返回 [float],"
+"å¦åˆ™è¿”回 [int]。\n"
+"[codeblock]\n"
+"var a = wrap(4, 5, 10)\n"
+"# a 为 9 (整数类型)\n"
+"\n"
+"var a = wrap(7, 5, 10)\n"
+"# a 为 7 (整数类型)\n"
+"\n"
+"var a = wrap(10.5, 5, 10)\n"
+"# a 为 5.5 (浮点类型)\n"
+"[/codeblock]"
+
+msgid ""
+"Wraps the float [param value] between [param min] and [param max]. Can be "
+"used for creating loop-alike behavior or infinite surfaces.\n"
+"[codeblock]\n"
+"# Infinite loop between 5.0 and 9.9\n"
+"value = wrapf(value + 0.1, 5.0, 10.0)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# Infinite rotation (in radians)\n"
+"angle = wrapf(angle + 0.1, 0.0, TAU)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# Infinite rotation (in radians)\n"
+"angle = wrapf(angle + 0.1, -PI, PI)\n"
+"[/codeblock]\n"
+"[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method "
+"fposmod], so prefer using that instead.\n"
+"[code]wrapf[/code] is more flexible than using the [method fposmod] approach "
+"by giving the user control over the minimum value."
+msgstr ""
+"在 [param min] å’Œ [param max] 之间将浮点数 [param value] 循环。å¯ç”¨äºŽåˆ›å»ºç±»ä¼¼"
+"循环的行为或无é™æ›²é¢ã€‚\n"
+"[codeblock]\n"
+"# 在 5.0 å’Œ 9.9 之间无é™å¾ªçŽ¯\n"
+"value = wrapf(value + 0.1, 5.0, 10.0)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# æ— é™æ—‹è½¬ï¼ˆå¼§åº¦ï¼‰\n"
+"angle = wrapf(angle + 0.1, 0.0, TAU)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# æ— é™æ—‹è½¬ï¼ˆå¼§åº¦ï¼‰\n"
+"angle = wrapf(angle + 0.1, -PI, PI)\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]如果 [param min] 为 [code]0[/code],则相当于 [method fposmod],"
+"因此请改用它。\n"
+"通过让用户控制最å°å€¼ï¼Œ[code]wrapf[/code] 比使用 [method fposmod] 方法更çµæ´»ã€‚"
+
+msgid ""
+"Wraps the integer [param value] between [param min] and [param max]. Can be "
+"used for creating loop-alike behavior or infinite surfaces.\n"
+"[codeblock]\n"
+"# Infinite loop between 5 and 9\n"
+"frame = wrapi(frame + 1, 5, 10)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# result is -2\n"
+"var result = wrapi(-6, -5, -1)\n"
+"[/codeblock]"
+msgstr ""
+"在 [param min] å’Œ [param max] 之间环绕整数 [param value]。 å¯ç”¨äºŽåˆ›å»ºç±»ä¼¼å¾ªçŽ¯"
+"的行为或无é™æ›²é¢ã€‚\n"
+"[codeblock]\n"
+"# 在 5 å’Œ 9 之间无é™å¾ªçŽ¯\n"
+"frame = wrapi(frame + 1, 5, 10)\n"
+"[/codeblock]\n"
+"[codeblock]\n"
+"# result 是 -2\n"
+"var result = wrapi(-6, -5, -1)\n"
+"[/codeblock]"
+
msgid "The [AudioServer] singleton."
msgstr "[AudioServer] å•ä¾‹ã€‚"
@@ -1236,9 +3135,27 @@ msgstr "[CameraServer] å•ä¾‹ã€‚"
msgid "The [ClassDB] singleton."
msgstr "[ClassDB] å•ä¾‹ã€‚"
+msgid "The [DisplayServer] singleton."
+msgstr "[DisplayServer] å•ä¾‹ã€‚"
+
msgid "The [Engine] singleton."
msgstr "[Engine] å•ä¾‹ã€‚"
+msgid "The [EngineDebugger] singleton."
+msgstr "[EngineDebugger] å•ä¾‹ã€‚"
+
+msgid "The [GDExtensionManager] singleton."
+msgstr "[GDExtensionManager] å•ä¾‹ã€‚"
+
+msgid "The [Geometry2D] singleton."
+msgstr "[Geometry2D] å•ä¾‹ã€‚"
+
+msgid "The [Geometry3D] singleton."
+msgstr "[Geometry3D] å•ä¾‹ã€‚"
+
+msgid "The [GodotSharp] singleton."
+msgstr "[GodotSharp] å•ä¾‹ã€‚"
+
msgid "The [IP] singleton."
msgstr "[IP] å•ä¾‹ã€‚"
@@ -1255,33 +3172,85 @@ msgstr ""
"[JavaClassWrapper] å•ä¾‹ã€‚\n"
"[b]注æ„:[/b]仅在 Android 上实现。"
+msgid ""
+"The [JavaScriptBridge] singleton.\n"
+"[b]Note:[/b] Only implemented on the Web platform."
+msgstr ""
+"[JavaScriptBridge] å•ä¾‹ã€‚\n"
+"[b]注æ„:[/b]仅在 Web å¹³å°ä¸Šå®žçŽ°ã€‚"
+
msgid "The [Marshalls] singleton."
msgstr "[Marshalls] å•ä¾‹ã€‚"
msgid "The [NavigationMeshGenerator] singleton."
msgstr "[NavigationMeshGenerator] å•ä¾‹ã€‚"
+msgid "The [NavigationServer2D] singleton."
+msgstr "[NavigationServer2D] å•ä¾‹ã€‚"
+
msgid "The [OS] singleton."
msgstr "[OS] å•ä¾‹ã€‚"
msgid "The [Performance] singleton."
msgstr "[Performance] å•ä¾‹ã€‚"
+msgid "The [PhysicsServer2D] singleton."
+msgstr "[PhysicsServer2D] å•ä¾‹ã€‚"
+
+msgid "The [PhysicsServer2DManager] singleton."
+msgstr "[PhysicsServer2DManager] å•ä¾‹ã€‚"
+
+msgid "The [PhysicsServer3D] singleton."
+msgstr "[PhysicsServer3D] å•ä¾‹ã€‚"
+
+msgid "The [PhysicsServer3DManager] singleton."
+msgstr "[PhysicsServer3DManager] å•ä¾‹ã€‚"
+
msgid "The [ProjectSettings] singleton."
msgstr "[ProjectSettings] å•ä¾‹ã€‚"
+msgid "The [RenderingServer] singleton."
+msgstr "[RenderingServer] å•ä¾‹ã€‚"
+
msgid "The [ResourceLoader] singleton."
msgstr "[ResourceLoader] å•ä¾‹ã€‚"
msgid "The [ResourceSaver] singleton."
msgstr "[ResourceSaver] å•ä¾‹ã€‚"
+msgid "The [ResourceUID] singleton."
+msgstr "[ResourceUID] å•ä¾‹ã€‚"
+
+msgid "The [TextServerManager] singleton."
+msgstr "[TextServerManager] å•ä¾‹ã€‚"
+
+msgid "The [ThemeDB] singleton."
+msgstr "[ThemeDB] å•ä¾‹ã€‚"
+
msgid "The [Time] singleton."
msgstr "[Time] å•ä¾‹ã€‚"
msgid "The [TranslationServer] singleton."
msgstr "[TranslationServer] å•ä¾‹ã€‚"
+msgid "The [WorkerThreadPool] singleton."
+msgstr "[WorkerThreadPool] å•ä¾‹ã€‚"
+
+msgid "The [XRServer] singleton."
+msgstr "[XRServer] å•ä¾‹ã€‚"
+
+msgid "Left side, usually used for [Control] or [StyleBox]-derived classes."
+msgstr "左边,常用于 [Control] 或 [StyleBox] 的派生类。"
+
+msgid "Top side, usually used for [Control] or [StyleBox]-derived classes."
+msgstr "顶边,常用于 [Control] 或 [StyleBox] 的派生类。"
+
+msgid "Right side, usually used for [Control] or [StyleBox]-derived classes."
+msgstr "å³è¾¹ï¼Œå¸¸ç”¨äºŽ [Control] 或 [StyleBox] 的派生类。"
+
+msgid "Bottom side, usually used for [Control] or [StyleBox]-derived classes."
+msgstr "底边,常用于 [Control] 或 [StyleBox] 的派生类。"
+
msgid "Top-left corner."
msgstr "左上角。"
@@ -1304,6 +3273,15 @@ msgid ""
"[Slider], etc."
msgstr "通用水平对é½ï¼Œå¸¸ç”¨äºŽ [Separator]ã€[ScrollBar]ã€[Slider] 等。"
+msgid ""
+"Clockwise rotation. Used by some methods (e.g. [method Image.rotate_90])."
+msgstr "顺时针旋转。被一些方法使用(例如 [method Image.rotate_90])。"
+
+msgid ""
+"Counter-clockwise rotation. Used by some methods (e.g. [method Image."
+"rotate_90])."
+msgstr "逆时针旋转。被一些方法使用(例如 [method Image.rotate_90])。"
+
msgid "Horizontal left alignment, usually for text-derived classes."
msgstr "水平左对é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
@@ -1313,6 +3291,9 @@ msgstr "水平居中对é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
msgid "Horizontal right alignment, usually for text-derived classes."
msgstr "æ°´å¹³å³å¯¹é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
+msgid "Expand row to fit width, usually for text-derived classes."
+msgstr "扩展行以适应宽度,常用于文本派生类。"
+
msgid "Vertical top alignment, usually for text-derived classes."
msgstr "垂直上对é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
@@ -1322,6 +3303,147 @@ msgstr "垂直居中对é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
msgid "Vertical bottom alignment, usually for text-derived classes."
msgstr "垂直下对é½ï¼Œå¸¸ç”¨äºŽæ–‡æœ¬æ´¾ç”Ÿç±»ã€‚"
+msgid "Expand rows to fit height, usually for text-derived classes."
+msgstr "扩展行以适应高度,通常用于文本派生类。"
+
+msgid ""
+"Aligns the top of the inline object (e.g. image, table) to the position of "
+"the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„顶部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常é‡"
+"指定的文本ä½ç½®å¯¹é½ã€‚"
+
+msgid ""
+"Aligns the center of the inline object (e.g. image, table) to the position "
+"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„中心与 [code]INLINE_ALIGNMENT_TO_*[/code] 常é‡"
+"指定的文本ä½ç½®å¯¹é½ã€‚"
+
+msgid ""
+"Aligns the baseline (user defined) of the inline object (e.g. image, table) "
+"to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] "
+"constant."
+msgstr ""
+"将内è”对象(如图åƒã€è¡¨æ ¼ï¼‰çš„基线(用户定义)与[code]INLINE_ALIGNMENT_TO_*[/"
+"code] 常数指定的文本ä½ç½®å¯¹é½ã€‚"
+
+msgid ""
+"Aligns the bottom of the inline object (e.g. image, table) to the position "
+"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„底部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常é‡"
+"指定的文本ä½ç½®å¯¹é½ã€‚"
+
+msgid ""
+"Aligns the position of the inline object (e.g. image, table) specified by "
+"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the top of the text."
+msgstr ""
+"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常é‡æŒ‡å®šçš„内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰"
+"çš„ä½ç½®ä¸Žæ–‡æœ¬é¡¶éƒ¨å¯¹é½ã€‚"
+
+msgid ""
+"Aligns the position of the inline object (e.g. image, table) specified by "
+"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the center of the text."
+msgstr ""
+"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常é‡æŒ‡å®šçš„内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰"
+"çš„ä½ç½®ä¸Žæ–‡æœ¬ä¸­å¿ƒå¯¹é½ã€‚"
+
+msgid ""
+"Aligns the position of the inline object (e.g. image, table) specified by "
+"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the baseline of the text."
+msgstr ""
+"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常é‡æŒ‡å®šçš„内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰"
+"çš„ä½ç½®ä¸Žæ–‡æœ¬åŸºçº¿å¯¹é½ã€‚"
+
+msgid "Aligns inline object (e.g. image, table) to the bottom of the text."
+msgstr "将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰ä¸Žæ–‡æœ¬åº•éƒ¨å¯¹é½ã€‚"
+
+msgid ""
+"Aligns top of the inline object (e.g. image, table) to the top of the text. "
+"Equivalent to [code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„顶部与文本的顶部对é½ã€‚等效于 "
+"[code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]。"
+
+msgid ""
+"Aligns center of the inline object (e.g. image, table) to the center of the "
+"text. Equivalent to [code]INLINE_ALIGNMENT_CENTER_TO | "
+"INLINE_ALIGNMENT_TO_CENTER[/code]."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„中心与文本的中心对é½ã€‚相当于 "
+"[code]INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER[/code]。"
+
+msgid ""
+"Aligns bottom of the inline object (e.g. image, table) to the bottom of the "
+"text. Equivalent to [code]INLINE_ALIGNMENT_BOTTOM_TO | "
+"INLINE_ALIGNMENT_TO_BOTTOM[/code]."
+msgstr ""
+"将内è”对象(例如图åƒã€è¡¨æ ¼ï¼‰çš„底部与文本底部对é½ã€‚等效于 "
+"[code]INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM[/code]。"
+
+msgid "A bit mask for [code]INLINE_ALIGNMENT_*_TO[/code] alignment constants."
+msgstr "用于 [code]INLINE_ALIGNMENT_*_TO[/code] 对é½å¸¸é‡çš„ä½æŽ©ç ã€‚"
+
+msgid "A bit mask for [code]INLINE_ALIGNMENT_TO_*[/code] alignment constants."
+msgstr "用于 [code]INLINE_ALIGNMENT_TO_*[/code] 对é½å¸¸é‡çš„ä½æŽ©ç ã€‚"
+
+msgid ""
+"Specifies that Euler angles should be in XYZ order. When composing, the "
+"order is X, Y, Z. When decomposing, the order is reversed, first Z, then Y, "
+"and X last."
+msgstr ""
+"指定欧拉角应按 XYZ 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Xã€Yã€Z。分解时,顺åºç›¸å,先 Z,"
+"å† Yï¼Œæœ€åŽ X。"
+
+msgid ""
+"Specifies that Euler angles should be in XZY order. When composing, the "
+"order is X, Z, Y. When decomposing, the order is reversed, first Y, then Z, "
+"and X last."
+msgstr ""
+"指定欧拉角应按 XZY 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Xã€Zã€Y。分解时,顺åºç›¸å,先 Y,"
+"å† Zï¼Œæœ€åŽ X。"
+
+msgid ""
+"Specifies that Euler angles should be in YXZ order. When composing, the "
+"order is Y, X, Z. When decomposing, the order is reversed, first Z, then X, "
+"and Y last."
+msgstr ""
+"指定欧拉角应按 YXZ 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Yã€Xã€Z。分解时,顺åºç›¸å,先 Z,"
+"å† Xï¼Œæœ€åŽ Y。"
+
+msgid ""
+"Specifies that Euler angles should be in YZX order. When composing, the "
+"order is Y, Z, X. When decomposing, the order is reversed, first X, then Z, "
+"and Y last."
+msgstr ""
+"指定欧拉角应按 YZX 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Yã€Zã€X。分解时,顺åºç›¸å,先 X,"
+"å† Zï¼Œæœ€åŽ Y。"
+
+msgid ""
+"Specifies that Euler angles should be in ZXY order. When composing, the "
+"order is Z, X, Y. When decomposing, the order is reversed, first Y, then X, "
+"and Z last."
+msgstr ""
+"指定欧拉角应按 ZXY 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Zã€Xã€Y。分解时,顺åºç›¸å,先 Y,"
+"å† Xï¼Œæœ€åŽ Z。"
+
+msgid ""
+"Specifies that Euler angles should be in ZYX order. When composing, the "
+"order is Z, Y, X. When decomposing, the order is reversed, first X, then Y, "
+"and Z last."
+msgstr ""
+"指定欧拉角应按 ZYX 顺åºæŽ’列。组åˆæ—¶ï¼Œé¡ºåºä¸º Zã€Yã€X。分解时,顺åºç›¸å,先 X,"
+"å† Yï¼Œæœ€åŽ Z。"
+
+msgid ""
+"Enum value which doesn't correspond to any key. This is used to initialize "
+"[enum Key] properties with a generic state."
+msgstr "与任何键都ä¸å¯¹åº”的枚举值。这用于åˆå§‹åŒ–具有通用状æ€çš„ [enum Key] 属性。"
+
+msgid "Keycodes with this bit applied are non-printable."
+msgstr "应用此ä½çš„é”®ç ä¸å¯æ‰“å°ã€‚"
+
msgid "Escape key."
msgstr "ESC 键。"
@@ -1451,6 +3573,63 @@ msgstr "F15 键。"
msgid "F16 key."
msgstr "F16 键。"
+msgid "F17 key."
+msgstr "F17 键。"
+
+msgid "F18 key."
+msgstr "F18 键。"
+
+msgid "F19 key."
+msgstr "F19 键。"
+
+msgid "F20 key."
+msgstr "F20 键。"
+
+msgid "F21 key."
+msgstr "F21 键。"
+
+msgid "F22 key."
+msgstr "F22 键。"
+
+msgid "F23 key."
+msgstr "F23 键。"
+
+msgid "F24 key."
+msgstr "F24 键。"
+
+msgid "F25 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F25 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F26 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F26 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F27 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F27 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F28 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F28 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F29 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F29 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F30 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F30 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F31 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F31 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F32 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F32 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F33 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F33 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F34 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F34 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
+msgid "F35 key. Only supported on macOS and Linux due to a Windows limitation."
+msgstr "F35 键。由于 Windows é™åˆ¶ï¼Œä»…æ”¯æŒ macOS å’Œ Linux。"
+
msgid "Multiply (*) key on the numeric keypad."
msgstr "å°é”®ç›˜çš„星键/乘以键(*)。"
@@ -1461,7 +3640,7 @@ msgid "Subtract (-) key on the numeric keypad."
msgstr "å°é”®ç›˜çš„å‡å·é”®ï¼ˆ-)。"
msgid "Period (.) key on the numeric keypad."
-msgstr "å°ä»¶ç›˜çš„点键(.)。"
+msgstr "å°é”®ç›˜çš„点键(.)。"
msgid "Add (+) key on the numeric keypad."
msgstr "å°é”®ç›˜çš„加å·é”®ï¼ˆ+)。"
@@ -1497,7 +3676,10 @@ msgid "Number 9 on the numeric keypad."
msgstr "å°é”®ç›˜çš„æ•°å­— 9。"
msgid "Context menu key."
-msgstr "èœå•é”®ã€‚"
+msgstr "上下文èœå•é”®ã€‚"
+
+msgid "Hyper key. (On Linux/X11 only)."
+msgstr "超级键。(仅在 Linux/X11 上)。"
msgid "Help key."
msgstr "Help 键。"
@@ -1656,6 +3838,36 @@ msgstr ". 键。"
msgid "/ key."
msgstr "/ 键。"
+msgid "Number 0 key."
+msgstr "数字 0 键。"
+
+msgid "Number 1 key."
+msgstr "数字 1 键。"
+
+msgid "Number 2 key."
+msgstr "数字 2 键。"
+
+msgid "Number 3 key."
+msgstr "数字 3 键。"
+
+msgid "Number 4 key."
+msgstr "数字 4 键。"
+
+msgid "Number 5 key."
+msgstr "数字 5 键。"
+
+msgid "Number 6 key."
+msgstr "数字 6 键。"
+
+msgid "Number 7 key."
+msgstr "数字 7 键。"
+
+msgid "Number 8 key."
+msgstr "数字 8 键。"
+
+msgid "Number 9 key."
+msgstr "数字 9 键。"
+
msgid ": key."
msgstr ": 键。"
@@ -1791,17 +4003,40 @@ msgstr "¥ 键。"
msgid "§ key."
msgstr "§ 键。"
+msgid "\"Globe\" key on Mac / iPad keyboard."
+msgstr "Mac / iPad 键盘上的“地çƒâ€é”®ã€‚"
+
+msgid "\"On-screen keyboard\" key iPad keyboard."
+msgstr "iPad 键盘上的“å±å¹•é”®ç›˜â€é”®ã€‚"
+
+msgid "英数 key on Mac keyboard."
+msgstr "Mac 键盘上的“英数â€é”®ã€‚"
+
+msgid "ã‹ãª key on Mac keyboard."
+msgstr "Mac 键盘上的“ã‹ãªâ€é”®ã€‚"
+
msgid "Key Code mask."
msgstr "é”®ç æŽ©ç ã€‚"
msgid "Modifier key mask."
-msgstr "Modifier 键掩ç ã€‚"
+msgstr "修饰键掩ç ã€‚"
+
+msgid ""
+"Automatically remapped to [constant KEY_META] on macOS and [constant "
+"KEY_CTRL] on other platforms, this mask is never set in the actual events, "
+"and should be used for key mapping only."
+msgstr ""
+"自动é‡æ˜ å°„为 macOS 上的 [constant KEY_META] 和其他平å°ä¸Šçš„ [constant "
+"KEY_CTRL],此掩ç åœ¨å®žé™…事件中从ä¸è®¾ç½®ï¼Œåº”仅用于键映射。"
msgid "Shift key mask."
msgstr "Shift 键掩ç ã€‚"
-msgid "Ctrl key mask."
-msgstr "Ctrl 键掩ç ã€‚"
+msgid "Alt or Option (on macOS) key mask."
+msgstr "Alt 或 Option(在 macOS 上)键掩ç ã€‚"
+
+msgid "Command (on macOS) or Meta/Windows key mask."
+msgstr "命令(在 macOS 上)或 Meta/Windows 键掩ç ã€‚"
msgid "Keypad key mask."
msgstr "Keypad 键掩ç ã€‚"
@@ -1809,14 +4044,21 @@ msgstr "Keypad 键掩ç ã€‚"
msgid "Group Switch key mask."
msgstr "Group Switch 键掩ç ã€‚"
-msgid "Middle mouse button."
-msgstr "鼠标中键。"
+msgid ""
+"Enum value which doesn't correspond to any mouse button. This is used to "
+"initialize [enum MouseButton] properties with a generic state."
+msgstr ""
+"与任何鼠标按钮都ä¸å¯¹åº”的枚举值。这用于åˆå§‹åŒ–具有通用状æ€çš„ [enum "
+"MouseButton] 属性。"
-msgid "Mouse wheel up."
-msgstr "鼠标滚轮å‘上。"
+msgid "Primary mouse button, usually assigned to the left button."
+msgstr "鼠标主键,通常分é…给左键。"
-msgid "Mouse wheel down."
-msgstr "鼠标滚轮å‘下。"
+msgid "Secondary mouse button, usually assigned to the right button."
+msgstr "鼠标次键,通常分é…ç»™å³é”®ã€‚"
+
+msgid "Middle mouse button."
+msgstr "鼠标中键。"
msgid "Mouse wheel left button (only present on some mice)."
msgstr "鼠标滚轮左键(仅在æŸäº›é¼ æ ‡ä¸Šæœ‰å®žçŽ°ï¼‰ã€‚"
@@ -1824,6 +4066,22 @@ msgstr "鼠标滚轮左键(仅在æŸäº›é¼ æ ‡ä¸Šæœ‰å®žçŽ°ï¼‰ã€‚"
msgid "Mouse wheel right button (only present on some mice)."
msgstr "鼠标滚轮å³é”®ï¼ˆä»…在æŸäº›é¼ æ ‡ä¸Šæœ‰å®žçŽ°ï¼‰ã€‚"
+msgid ""
+"Extra mouse button 1. This is sometimes present, usually to the sides of the "
+"mouse."
+msgstr "é¼ æ ‡é¢å¤–é”® 1。有时会出现,通常ä½äºŽé¼ æ ‡çš„两侧。"
+
+msgid ""
+"Extra mouse button 2. This is sometimes present, usually to the sides of the "
+"mouse."
+msgstr "é¼ æ ‡é¢å¤–é”® 2。有时会出现,通常ä½äºŽé¼ æ ‡çš„两侧。"
+
+msgid "Primary mouse button mask, usually for the left button."
+msgstr "鼠标主键掩ç ï¼Œé€šå¸¸ç”¨äºŽå·¦é”®ã€‚"
+
+msgid "Secondary mouse button mask, usually for the right button."
+msgstr "鼠标次键掩ç ï¼Œé€šå¸¸ç”¨äºŽå³é”®ã€‚"
+
msgid "Middle mouse button mask."
msgstr "鼠标中键掩ç ã€‚"
@@ -1833,6 +4091,152 @@ msgstr "é¼ æ ‡é¢å¤–é”® 1 掩ç ã€‚"
msgid "Extra mouse button 2 mask."
msgstr "é¼ æ ‡é¢å¤–é”® 2 掩ç ã€‚"
+msgid "An invalid game controller button."
+msgstr "无效的游æˆæŽ§åˆ¶å™¨æŒ‰é’®ã€‚"
+
+msgid ""
+"Game controller SDL button A. Corresponds to the bottom action button: Sony "
+"Cross, Xbox A, Nintendo B."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL 按键 A。对应底部动作按钮:Sony Crossã€Xbox Aã€Nintendo B。"
+
+msgid ""
+"Game controller SDL button B. Corresponds to the right action button: Sony "
+"Circle, Xbox B, Nintendo A."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL 按钮 B。对应å³ä¾§åŠ¨ä½œæŒ‰é’®ï¼šSony Circleã€Xbox Bã€Nintendo A。"
+
+msgid ""
+"Game controller SDL button X. Corresponds to the left action button: Sony "
+"Square, Xbox X, Nintendo Y."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL 按钮 X。对应左侧动作按钮:Sony Squareã€Xbox Xã€Nintendo Y。"
+
+msgid ""
+"Game controller SDL button Y. Corresponds to the top action button: Sony "
+"Triangle, Xbox Y, Nintendo X."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL 按钮 Y。对应顶部动作按钮:Sony Triangleã€Xbox Yã€Nintendo X。"
+
+msgid ""
+"Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, "
+"Nintendo - button."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL back按钮。对应于 Sony Selectã€Xbox Backã€Nintendo - 按钮。"
+
+msgid ""
+"Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home "
+"button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL guide 按钮。对应于索尼 PSã€Xbox çš„ Home 键。"
+
+msgid "Game controller SDL start button. Corresponds to the Nintendo + button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL start 按钮。对应 Nintendo + 按钮。"
+
+msgid ""
+"Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS "
+"button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 左摇æ†æŒ‰é’®ã€‚对应于 Sony L3ã€Xbox L/LS 按钮。"
+
+msgid ""
+"Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/"
+"RS button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL å³æ‘‡æ†æŒ‰é’®ã€‚对应于 Sony R3ã€Xbox R/RS 按钮。"
+
+msgid ""
+"Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox "
+"LB button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 左肩按钮。对应于 Sony L1ã€Xbox LB 按钮。"
+
+msgid ""
+"Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox "
+"RB button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL å³è‚©æŒ‰é’®ã€‚对应于 Sony R1ã€Xbox RB 按钮。"
+
+msgid "Game controller D-pad up button."
+msgstr "游æˆæŽ§åˆ¶å™¨æ–¹å‘é”®å‘上按钮。"
+
+msgid "Game controller D-pad down button."
+msgstr "游æˆæŽ§åˆ¶å™¨æ–¹å‘é”®å‘下按钮。"
+
+msgid "Game controller D-pad left button."
+msgstr "游æˆæŽ§åˆ¶å™¨æ–¹å‘é”®å‘左键。"
+
+msgid "Game controller D-pad right button."
+msgstr "游æˆæŽ§åˆ¶å™¨æ–¹å‘é”®å‘å³é”®ã€‚"
+
+msgid ""
+"Game controller SDL miscellaneous button. Corresponds to Xbox share button, "
+"PS5 microphone button, Nintendo Switch capture button."
+msgstr ""
+"游æˆæŽ§åˆ¶å™¨ SDL æ‚项按钮。对应 Xbox 分享键ã€PS5 麦克风键ã€Nintendo Switch æ•æ‰"
+"键。"
+
+msgid "Game controller SDL paddle 1 button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 拨片 1 按钮。"
+
+msgid "Game controller SDL paddle 2 button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 拨片 2 按钮。"
+
+msgid "Game controller SDL paddle 3 button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 拨片 3 按钮。"
+
+msgid "Game controller SDL paddle 4 button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 拨片 4 按钮。"
+
+msgid "Game controller SDL touchpad button."
+msgstr "游æˆæŽ§åˆ¶å™¨ SDL 触摸æ¿æŒ‰é’®ã€‚"
+
+msgid "The number of SDL game controller buttons."
+msgstr "SDL 游æˆæŽ§åˆ¶å™¨æŒ‰é’®çš„æ•°é‡ã€‚"
+
+msgid ""
+"The maximum number of game controller buttons supported by the engine. The "
+"actual limit may be lower on specific platforms:\n"
+"- [b]Android:[/b] Up to 36 buttons.\n"
+"- [b]Linux:[/b] Up to 80 buttons.\n"
+"- [b]Windows[/b] and [b]macOS:[/b] Up to 128 buttons."
+msgstr ""
+"引擎所支æŒçš„最大游æˆæŽ§åˆ¶å™¨æŒ‰é’®æ•°ã€‚特定平å°ä¸Šçš„实际界é™å¯èƒ½æ›´ä½Žï¼š\n"
+"- [b]Android:[/b]最多 36 个按钮。\n"
+"- [b]Linux:[/b]最多 80 个按钮。\n"
+"- [b]Windows[/b] 和 [b]macOS:[/b]最多 128 个按钮。"
+
+msgid "An invalid game controller axis."
+msgstr "无效的游æˆæŽ§åˆ¶å™¨è½´ã€‚"
+
+msgid "Game controller left joystick x-axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å·¦æ“çºµæ† x 轴。"
+
+msgid "Game controller left joystick y-axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å·¦æ“çºµæ† y 轴。"
+
+msgid "Game controller right joystick x-axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å³æ“çºµæ† x 轴。"
+
+msgid "Game controller right joystick y-axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å³æ“çºµæ† y 轴。"
+
+msgid "Game controller left trigger axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å·¦æ‰³æœºè½´ã€‚"
+
+msgid "Game controller right trigger axis."
+msgstr "游æˆæŽ§åˆ¶å™¨å·¦æ‰³æœºè½´ã€‚"
+
+msgid "The number of SDL game controller axes."
+msgstr "SDL 游æˆæŽ§åˆ¶å™¨è½´çš„æ•°é‡ã€‚"
+
+msgid ""
+"The maximum number of game controller axes: OpenVR supports up to 5 "
+"Joysticks making a total of 10 axes."
+msgstr "最大游æˆæŽ§åˆ¶å™¨è½´æ•°ï¼šOpenVR æœ€å¤šæ”¯æŒ 5 个æ“纵æ†ï¼Œæ€»å…± 10 个轴。"
+
+msgid ""
+"Enum value which doesn't correspond to any MIDI message. This is used to "
+"initialize [enum MIDIMessage] properties with a generic state."
+msgstr ""
+"与任何 MIDI 消æ¯éƒ½ä¸å¯¹åº”的枚举值。这用于åˆå§‹åŒ–具有通用状æ€çš„ [enum "
+"MIDIMessage] 属性。"
+
msgid ""
"MIDI note OFF message. See the documentation of [InputEventMIDI] for "
"information of how to use MIDI inputs."
@@ -1904,7 +4308,7 @@ msgstr "MIDI 歌曲选择消æ¯ã€‚指定è¦æ’­æ”¾çš„åºåˆ—或歌曲。Godot 未å
msgid ""
"MIDI tune request message. Upon receiving a tune request, all analog "
"synthesizers should tune their oscillators."
-msgstr "MIDI 调整请求消æ¯ã€‚收到调整请求åŽï¼Œæ‰€æœ‰æ¨¡æ‹Ÿåˆæˆå™¨éƒ½åº”该调整其晶振。"
+msgstr "MIDI è°ƒè°è¯·æ±‚消æ¯ã€‚收到调è°è¯·æ±‚åŽï¼Œæ‰€æœ‰æ¨¡æ‹Ÿåˆæˆå™¨éƒ½åº”调整其振è¡å™¨ã€‚"
msgid ""
"MIDI timing clock message. Sent 24 times per quarter note when "
@@ -1933,6 +4337,39 @@ msgid ""
msgstr ""
"MIDI 系统é‡ç½®æ¶ˆæ¯ã€‚将系统中的所有接收方é‡ç½®ä¸ºä¸Šç”µçŠ¶æ€ã€‚本身ä¸åº”在上电时å‘é€ã€‚"
+msgid ""
+"Methods that return [enum Error] return [constant OK] when no error "
+"occurred.\n"
+"Since [constant OK] has value 0, and all other error constants are positive "
+"integers, it can also be used in boolean checks.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"var error = method_that_returns_error()\n"
+"if error != OK:\n"
+" printerr(\"Failure!\")\n"
+"\n"
+"# Or, alternatively:\n"
+"if error:\n"
+" printerr(\"Still failing!\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Many functions do not return an error code, but will print "
+"error messages to standard output."
+msgstr ""
+"返回 [enum Error] 的方法会在没有错误å‘生时返回 [constant OK]。\n"
+"由于 [constant OK] 的值为 0,并且所有其他错误常数都是正整数,因此返回值也å¯ä»¥"
+"用于布尔检查。\n"
+"[b]示例:[/b]\n"
+"[codeblock]\n"
+"var error = method_that_returns_error()\n"
+"if error != OK:\n"
+" printerr(\"Failure!\")\n"
+"\n"
+"# 或者,等价于:\n"
+"if error:\n"
+" printerr(\"Still failing!\")\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]许多函数ä¸è¿”回错误代ç ï¼Œä½†ä¼šå°†é”™è¯¯ä¿¡æ¯æ‰“å°åˆ°æ ‡å‡†è¾“出。"
+
msgid "Generic error."
msgstr "一般性错误。"
@@ -2069,6 +4506,90 @@ msgid "Skip error."
msgstr "跳过错误。"
msgid ""
+"Help error. Used internally when passing [code]--version[/code] or [code]--"
+"help[/code] as executable options."
+msgstr ""
+"帮助错误。内部使用,用于将 [code]--version[/code] 或 [code]--help[/code] 作为"
+"选项传递给å¯æ‰§è¡Œæ–‡ä»¶çš„情况。"
+
+msgid ""
+"Bug error, caused by an implementation issue in the method.\n"
+"[b]Note:[/b] If a built-in method returns this code, please open an issue on "
+"[url=https://github.com/godotengine/godot/issues]the GitHub Issue Tracker[/"
+"url]."
+msgstr ""
+"Bug 错误,由方法中的实现问题引起。\n"
+"[b]注æ„:[/b]如果内置方法返回此代ç ï¼Œè¯·åœ¨ [url=https://github.com/"
+"godotengine/godot/issues]GitHub 问题追踪器[/url] 上开一个问题。"
+
+msgid ""
+"Printer on fire error (This is an easter egg, no built-in methods return "
+"this error code)."
+msgstr "打å°æœºèµ·ç«é”™è¯¯ï¼ˆè¿™æ˜¯ä¸ªå½©è›‹ï¼Œå¼•æ“Žä¸­æ²¡æœ‰å†…置方法会返回此错误ç ï¼‰ã€‚"
+
+msgid "The property has no hint for the editor."
+msgstr "该属性没有编辑器æ示。"
+
+msgid ""
+"Hints that an [int] or [float] property should be within a range specified "
+"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/"
+"code]. The hint string can optionally include [code]\"or_greater\"[/code] "
+"and/or [code]\"or_less\"[/code] to allow manual input going respectively "
+"above the max or below the min values.\n"
+"[b]Example:[/b] [code]\"-360,360,1,or_greater,or_less\"[/code].\n"
+"Additionally, other keywords can be included: [code]\"exp\"[/code] for "
+"exponential range editing, [code]\"radians\"[/code] for editing radian "
+"angles in degrees, [code]\"degrees\"[/code] to hint at an angle and "
+"[code]\"hide_slider\"[/code] to hide the slider."
+msgstr ""
+"æ示 [int] 或 [float] 属性应在æ示字符串 [code]\"min,max\"[/code] 或 "
+"[code]\"min,max,step\"[/code] 指定的范围内。æ示字符串å¯ä»¥é€‰æ‹©åŒ…å« "
+"[code]\"or_greater\"[/code] å’Œ/或 [code]\"or_less\"[/code] 以å…许手动输入高于"
+"最大值或低于最å°å€¼çš„值。\n"
+"[b]示例:[/b][code]\"-360,360,1,or_greater,or_less\"[/code]。\n"
+"此外,还å¯ä»¥åŒ…å«å…¶ä»–关键字:[code]\"exp\"[/code] 用于指数范围编辑,"
+"[code]\"radians\"[/code] 用于以度数编辑弧度角,[code]\"degrees\"[/code] æ示"
+"ä¸€ä¸ªè§’åº¦ï¼Œä»¥åŠ [code]\"hide_slider\"[/code] éšè—滑å—。"
+
+msgid ""
+"Hints that an [int] or [String] property is an enumerated value to pick in a "
+"list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. Whitespaces are [b]not[/b] removed from either end "
+"of a name. For integer properties, the first name in the list has value 0, "
+"the next 1, and so on. Explicit values can also be specified by appending "
+"[code]:integer[/code] to the name, e.g. [code]\"Zero,One,Three:3,Four,"
+"Six:6\"[/code]."
+msgstr ""
+"æ示 [int] 或 [String] 属性是枚举值,å¯é€šè¿‡æ示字符串在指定的列表中选å–。\n"
+"该æ示字符串是逗å·åˆ†éš”çš„å称列表,例如 [code]\"Hello,Something,Else\"[/"
+"code]。 [b]ä¸ä¼š[/b]从å称的任何一端删除空格。对于整数属性,列表中的第一个å称"
+"的值为 0,下一个å称的值为 1,ä¾æ­¤ç±»æŽ¨ã€‚也å¯ä»¥é€šè¿‡å°† [code]:integer[/code] 附"
+"加到å称æ¥æ˜¾å¼æŒ‡å®šå€¼ï¼Œä¾‹å¦‚ [code]\"Zero,One,Three:3,Four,Six:6\"[/code]。"
+
+msgid ""
+"Hints that a [String] property can be an enumerated value to pick in a list "
+"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n"
+"Unlike [constant PROPERTY_HINT_ENUM], a property with this hint still "
+"accepts arbitrary values and can be empty. The list of values serves to "
+"suggest possible values."
+msgstr ""
+"æ示 [String] 属性为枚举值,å¯ä»¥é€šè¿‡æ示字符串在指定的列表中选å–,例如 "
+"[code]\"Hello,Something,Else\"[/code]。\n"
+"与 [constant PROPERTY_HINT_ENUM] ä¸åŒï¼Œå…·æœ‰è¯¥æ示的属性ä»ç„¶æŽ¥å—ä»»æ„值并且å¯ä»¥"
+"为空。值列表用于建议å¯èƒ½çš„值。"
+
+msgid ""
+"Hints that a [float] property should be edited via an exponential easing "
+"function. The hint string can include [code]\"attenuation\"[/code] to flip "
+"the curve horizontally and/or [code]\"positive_only\"[/code] to exclude in/"
+"out easing and limit values to be greater than or equal to zero."
+msgstr ""
+"æ示应通过指数缓动函数编辑 [float] 属性。æ示字符串å¯ä»¥åŒ…括 "
+"[code]\"attenuation\"[/code] 以水平翻转曲线,和/或 [code]\"positive_only\"[/"
+"code] 以排除 in/out 缓动并é™åˆ¶å€¼å¤§äºŽæˆ–等于零。"
+
+msgid ""
"Hints that a vector property should allow its components to be linked. For "
"example, this allows [member Vector2.x] and [member Vector2.y] to be edited "
"together."
@@ -2077,6 +4598,30 @@ msgstr ""
"Vector2.y] 被一起编辑。"
msgid ""
+"Hints that an [int] property is a bitmask with named bit flags.\n"
+"The hint string is a comma separated list of names such as [code]\"Bit0,Bit1,"
+"Bit2,Bit3\"[/code]. Whitespaces are [b]not[/b] removed from either end of a "
+"name. The first name in the list has value 1, the next 2, then 4, 8, 16 and "
+"so on. Explicit values can also be specified by appending [code]:integer[/"
+"code] to the name, e.g. [code]\"A:4,B:8,C:16\"[/code]. You can also combine "
+"several flags ([code]\"A:4,B:8,AB:12,C:16\"[/code]).\n"
+"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most "
+"[code]2 ** 32 - 1[/code].\n"
+"[b]Note:[/b] Unlike [constant PROPERTY_HINT_ENUM], the previous explicit "
+"value is not taken into account. For the hint [code]\"A:16,B,C\"[/code], A "
+"is 16, B is 2, C is 4."
+msgstr ""
+"æ示 [int] 属性为ä½æŽ©ç ï¼Œä½æ ‡å¿—拥有å称。\n"
+"æ示字符串为逗å·åˆ†éš”çš„å称列表,例如 [code]\"Bit0,Bit1,Bit2,Bit3\"[/code]。å"
+"称两端的空白字符[b]ä¸ä¼š[/b]被移除。列表中的第一个å称的值为 1ã€ç„¶åŽæ˜¯ 2ã€æŽ¥ä¸‹"
+"æ¥å°±æ˜¯ 4ã€8ã€16 等值。也å¯ä»¥é€šè¿‡åœ¨å称åŽåŠ ä¸Š [code]:æ•´æ•°[/code] æ¥æŒ‡å®šæ˜¾å¼çš„"
+"值,例如 [code]\"A:4,B:8,C:16\"[/code]。你还å¯ä»¥å¯¹æ ‡å¿—进行组åˆï¼ˆ[code]\"A:4,"
+"B:8,AB:12,C:16\"[/code])。\n"
+"[b]注æ„:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n"
+"[b]注æ„:[/b]与 [constant PROPERTY_HINT_ENUM] ä¸åŒï¼Œä¸ä¼šè€ƒè™‘å‰ä¸€ä¸ªæ˜¾å¼å€¼ã€‚如"
+"æžœæ示为 [code]\"A:16,B,C\"[/code],则 A 为 16ã€B 为 2ã€C 为 4。"
+
+msgid ""
"Hints that an [int] property is a bitmask using the optionally named 2D "
"render layers."
msgstr "æ示 [int] 属性为ä½æŽ©ç ï¼Œè¡¨ç¤ºå¯å‘½åçš„ 2D 渲染层。"
@@ -2137,6 +4682,15 @@ msgstr ""
"的文件对è¯æ¡†ã€‚"
msgid ""
+"Hints that a property is an instance of a [Resource]-derived type, "
+"optionally specified via the hint string (e.g. [code]\"Texture2D\"[/code]). "
+"Editing it will show a popup menu of valid resource types to instantiate."
+msgstr ""
+"æ示属性是 [Resource] 派生类型的实例,å¯é€šè¿‡æ示字符串指定(例如 "
+"[code]\"Texture2D\"[/code])。 编辑该属性会显示一个有效资æºç±»åž‹çš„弹出èœå•ç”¨ä»¥"
+"实例化。"
+
+msgid ""
"Hints that a [String] property is text with line breaks. Editing it will "
"show a text input field where line breaks can be typed."
msgstr ""
@@ -2152,6 +4706,57 @@ msgstr ""
"æ示 [String] 属性在为空时应当显示å ä½æ–‡æœ¬ã€‚æ示字符串为所使用的å ä½æ–‡æœ¬ã€‚"
msgid ""
+"Hints that a [Color] property should be edited without affecting its "
+"transparency ([member Color.a] is not editable)."
+msgstr ""
+"æ示一个 [Color] 属性在编辑时ä¸èƒ½å½±å“å…¶é€æ˜Žåº¦ï¼ˆ[member Color.a] ä¸å¯ç¼–辑)。"
+
+msgid ""
+"Hint that a property represents a particular type. If a property is "
+"[constant TYPE_STRING], allows to set a type from the create dialog. If you "
+"need to create an [Array] to contain elements of a specific type, the "
+"[code]hint_string[/code] must encode nested types using [code]\":\"[/code] "
+"and [code]\"/\"[/code] for specifying [Resource] types. For instance:\n"
+"[codeblock]\n"
+"hint_string = \"%s:\" % [TYPE_INT] # Array of integers.\n"
+"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array "
+"of floats.\n"
+"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # Array of "
+"resources.\n"
+"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] "
+"# Two-dimensional array of resources.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] The final colon is required for properly detecting built-in "
+"types."
+msgstr ""
+"æ示一个属性代表特定的类型。如果属性为 [constant TYPE_STRING],则å¯ä»¥é€šè¿‡åˆ›å»º"
+"对è¯æ¡†è®¾ç½®å…¶ç±»åž‹ã€‚如果你需è¦åˆ›å»ºä¸€ä¸ª [Array] æ¥æ”¾ç½®ç‰¹å®šç±»åž‹çš„元素,则 "
+"[code]hint_string[/code] 必须使用 [code]\":\"[/code] æ¥ç¼–ç åµŒå¥—类型,使用 "
+"[code]\"/\"[/code] æ¥æŒ‡å®š [Resource] 类型。例如:\n"
+"[codeblock]\n"
+"hint_string = \"%s:\" % [TYPE_INT] # 整数数组。\n"
+"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # 浮点数二维数组。\n"
+"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # 资æºæ•°ç»„。\n"
+"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] "
+"# 资æºäºŒç»´æ•°ç»„。\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]最åŽçš„冒å·æ˜¯å¿…须的,å¦åˆ™æ— æ³•æ­£ç¡®æ£€æµ‹å†…置类型。"
+
+msgid ""
+"Hints that a string property is a locale code. Editing it will show a locale "
+"dialog for picking language and country."
+msgstr ""
+"æ示一个字符串属性是一个区域设置代ç ã€‚编辑它将显示一个用于选择语言和地区的区"
+"域设置对è¯æ¡†ã€‚"
+
+msgid ""
+"Hints that a dictionary property is string translation map. Dictionary keys "
+"are locale codes and, values are translated strings."
+msgstr ""
+"æ示一个字典属性是字符串翻译映射。字典的键是区域设置代ç ï¼Œå€¼æ˜¯ç¿»è¯‘åŽçš„字符"
+"串。"
+
+msgid ""
"Hints that a quaternion property should disable the temporary euler editor."
msgstr "æ示四元数属性应当ç¦ç”¨ä¸´æ—¶æ¬§æ‹‰å€¼ç¼–辑器。"
@@ -2160,15 +4765,36 @@ msgid ""
"with the secret character."
msgstr "æ示字符串属性为密ç ï¼Œæ¯ä¸€ä¸ªå­—符都会被替æ¢ä¸ºç§˜å¯†å­—符。"
+msgid ""
+"The property is not stored, and does not display in the editor. This is the "
+"default for non-exported properties."
+msgstr "该属性ä¸è¢«å­˜å‚¨ï¼Œä¹Ÿä¸ä¼šæ˜¾ç¤ºåœ¨ç¼–辑器中。这是éžå¯¼å‡ºå±žæ€§çš„默认值。"
+
msgid "The property is serialized and saved in the scene file (default)."
msgstr "将属性åºåˆ—化并ä¿å­˜åˆ°åœºæ™¯æ–‡ä»¶ä¸­ï¼ˆé»˜è®¤ï¼‰ã€‚"
+msgid "The property is shown in the [EditorInspector] (default)."
+msgstr "该属性将被显示在 [EditorInspector](默认)中。"
+
+msgid "The property can be checked in the [EditorInspector]."
+msgstr "该属性å¯ä»¥åœ¨ [EditorInspector] 中被勾选。"
+
+msgid "The property is checked in the [EditorInspector]."
+msgstr "该属性在 [EditorInspector] 中已被勾选。"
+
msgid "Used to group properties together in the editor. See [EditorInspector]."
-msgstr "åœ¨ç¼–è¾‘å™¨ä¸­ç”¨äºŽä¸ºå±žæ€§åˆ†ç»„ã€‚è§ [EditorInspector]。"
+msgstr "用于在编辑器中将属性编组在一起。请å‚阅 [EditorInspector]。"
msgid "Used to categorize properties together in the editor."
msgstr "在编辑器中用于为属性分类。"
+msgid ""
+"Used to group properties together in the editor in a subgroup (under a "
+"group). See [EditorInspector]."
+msgstr ""
+"用于在å­ç»„(一个组下)中将编辑器中的属性编组在一起。请å‚阅 "
+"[EditorInspector]。"
+
msgid "The property does not save its state in [PackedScene]."
msgstr "该属性ä¸åœ¨ [PackedScene] 中ä¿å­˜å…¶çŠ¶æ€ã€‚"
@@ -2180,6 +4806,29 @@ msgid ""
"the scene file."
msgstr "该属性是一个脚本å˜é‡ï¼Œåº”该被åºåˆ—化并ä¿å­˜åœ¨åœºæ™¯æ–‡ä»¶ä¸­ã€‚"
+msgid "The property is an array."
+msgstr "该属性为数组。"
+
+msgid ""
+"When duplicating a resource with [method Resource.duplicate], and this flag "
+"is set on a property of that resource, the property should always be "
+"duplicated, regardless of the [code]subresources[/code] bool parameter."
+msgstr ""
+"当创建一个带有 [method Resource.duplicate] 的 Resource,并且它的标志是在一个 "
+"Resource 的属性上设置的副本时候,无论 [code]subresources[/code] 为多少,该属"
+"性永远都会被创建为副本。"
+
+msgid ""
+"When duplicating a resource with [method Resource.duplicate], and this flag "
+"is set on a property of that resource, the property should never be "
+"duplicated, regardless of the [code]subresources[/code] bool parameter."
+msgstr ""
+"使用 [method Resource.duplicate] å¤åˆ¶èµ„æºæ—¶ï¼Œå¦‚果该资æºçš„æŸä¸ªå±žæ€§ä¸Šè®¾æœ‰è¿™ä¸ªæ ‡"
+"志,则ä¸ä¼šå¯¹è¯¥å±žæ€§è¿›è¡Œå¤åˆ¶ï¼Œæ— è§† [code]subresources[/code] 布尔型å‚数。"
+
+msgid "The property is read-only in the [EditorInspector]."
+msgstr "该属性在 [EditorInspector] 中åªè¯»ã€‚"
+
msgid "Default usage (storage, editor and network)."
msgstr "默认用法(存储ã€ç¼–辑器和网络)。"
@@ -2200,6 +4849,22 @@ msgstr "常é‡æ–¹æ³•çš„标志。"
msgid "Flag for a virtual method."
msgstr "虚方法的标志。"
+msgid "Flag for a method with a variable number of arguments."
+msgstr "具有å¯å˜æ•°é‡å‚数的方法的标志。"
+
+msgid "Flag for a static method."
+msgstr "é™æ€æ–¹æ³•çš„标志。"
+
+msgid ""
+"Used internally. Allows to not dump core virtual methods (such as [method "
+"Object._notification]) to the JSON API."
+msgstr ""
+"内部使用。å…许ä¸å°†æ ¸å¿ƒè™šæ‹Ÿæ–¹æ³•ï¼ˆä¾‹å¦‚ [method Object._notification])转储到 "
+"JSON API。"
+
+msgid "Default method flags (normal)."
+msgstr "默认方法标志(正常)。"
+
msgid "Variable is [code]null[/code]."
msgstr "å˜é‡ä¸º [code]null[/code]。"
@@ -2209,56 +4874,119 @@ msgstr "å˜é‡ç±»åž‹ä¸º [bool]。"
msgid "Variable is of type [int]."
msgstr "å˜é‡ç±»åž‹ä¸º [int]。"
+msgid "Variable is of type [float]."
+msgstr "å˜é‡çš„类型为 [float]。"
+
msgid "Variable is of type [String]."
msgstr "å˜é‡ç±»åž‹ä¸º [String]。"
msgid "Variable is of type [Vector2]."
msgstr "å˜é‡ç±»åž‹ä¸º [Vector2]。"
+msgid "Variable is of type [Vector2i]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Vector2i]。"
+
msgid "Variable is of type [Rect2]."
msgstr "å˜é‡ç±»åž‹ä¸º [Rect2]。"
+msgid "Variable is of type [Rect2i]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Rect2i]。"
+
msgid "Variable is of type [Vector3]."
msgstr "å˜é‡ç±»åž‹ä¸º [Vector3]。"
+msgid "Variable is of type [Vector3i]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Vector3i]。"
+
msgid "Variable is of type [Transform2D]."
msgstr "å˜é‡ç±»åž‹ä¸º [Transform2D]。"
+msgid "Variable is of type [Vector4]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Vector4]。"
+
+msgid "Variable is of type [Vector4i]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Vector4i]。"
+
msgid "Variable is of type [Plane]."
msgstr "å˜é‡ç±»åž‹ä¸º [Plane]。"
+msgid "Variable is of type [Quaternion]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Quaternion]。"
+
msgid "Variable is of type [AABB]."
-msgstr "å˜é‡çš„类型为 [AABB]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [AABB]。"
msgid "Variable is of type [Basis]."
-msgstr "å˜é‡çš„类型为 [Basis]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [Basis]。"
+
+msgid "Variable is of type [Transform3D]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Transform3D]。"
+
+msgid "Variable is of type [Projection]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Projection]。"
msgid "Variable is of type [Color]."
-msgstr "å˜é‡çš„类型为 [Color]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [Color]。"
+
+msgid "Variable is of type [StringName]."
+msgstr "å˜é‡ç±»åž‹ä¸º [StringName]。"
msgid "Variable is of type [NodePath]."
-msgstr "å˜é‡çš„类型为 [NodePath]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [NodePath]。"
msgid "Variable is of type [RID]."
-msgstr "å˜é‡çš„类型为 [RID]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [RID]。"
msgid "Variable is of type [Object]."
-msgstr "å˜é‡çš„类型为 [Object]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [Object]。"
+
+msgid "Variable is of type [Callable]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Callable]。"
+
+msgid "Variable is of type [Signal]."
+msgstr "å˜é‡ç±»åž‹ä¸º [Signal]。"
msgid "Variable is of type [Dictionary]."
-msgstr "å˜é‡çš„类型为 [Dictionary]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [Dictionary]。"
msgid "Variable is of type [Array]."
-msgstr "å˜é‡çš„类型为 [Array]。"
+msgstr "å˜é‡ç±»åž‹ä¸º [Array]。"
+
+msgid "Variable is of type [PackedByteArray]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedByteArray]。"
+
+msgid "Variable is of type [PackedInt32Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedInt32Array]。"
+
+msgid "Variable is of type [PackedInt64Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedInt64Array]。"
+
+msgid "Variable is of type [PackedFloat32Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedFloat32Array]。"
+
+msgid "Variable is of type [PackedFloat64Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedFloat64Array]。"
+
+msgid "Variable is of type [PackedStringArray]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedStringArray]。"
+
+msgid "Variable is of type [PackedVector2Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedVector2Array]。"
+
+msgid "Variable is of type [PackedVector3Array]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedVector3Array]。"
+
+msgid "Variable is of type [PackedColorArray]."
+msgstr "å˜é‡ç±»åž‹ä¸º [PackedColorArray]。"
msgid "Represents the size of the [enum Variant.Type] enum."
-msgstr "表示 [enum Variant.Type] 枚举的大å°ã€‚"
+msgstr "代表 [enum Variant.Type] 枚举的大å°ã€‚"
msgid "Equality operator ([code]==[/code])."
-msgstr "等于è¿ç®—符([code]==[/code])。"
+msgstr "相等è¿ç®—符([code]==[/code])。"
msgid "Inequality operator ([code]!=[/code])."
-msgstr "ä¸ç­‰å¼è¿ç®—符([code]!=[/code])。"
+msgstr "ä¸ç­‰è¿ç®—符([code]!=[/code])。"
msgid "Less than operator ([code]<[/code])."
msgstr "å°äºŽè¿ç®—符([code]<[/code])。"
@@ -2270,7 +4998,7 @@ msgid "Greater than operator ([code]>[/code])."
msgstr "大于è¿ç®—符([code]>[/code])。"
msgid "Greater than or equal operator ([code]>=[/code])."
-msgstr "大于等于è¿ç®—符([code]> =[/code])。"
+msgstr "大于等于è¿ç®—符([code]>=[/code])。"
msgid "Addition operator ([code]+[/code])."
msgstr "加法è¿ç®—符([code]+[/code])。"
@@ -2293,6 +5021,9 @@ msgstr "一元加å·è¿ç®—符([code]+[/code])。"
msgid "Remainder/modulo operator ([code]%[/code])."
msgstr "余数/å–模è¿ç®—符([code]%[/code])。"
+msgid "Power operator ([code]**[/code])."
+msgstr "幂è¿ç®—符([code]**[/code])。"
+
msgid "Left shift operator ([code]<<[/code])."
msgstr "左移è¿ç®—符([code]<<[/code])。"
@@ -2327,17 +5058,43 @@ msgid "Logical IN operator ([code]in[/code])."
msgstr "逻辑 IN è¿ç®—符([code]in[/code])。"
msgid "Represents the size of the [enum Variant.Operator] enum."
-msgstr "表示 [enum Variant.Operator] 枚举的大å°ã€‚"
+msgstr "代表 [enum Variant.Operator] 枚举的大å°ã€‚"
msgid "Axis-Aligned Bounding Box."
msgstr "轴对é½åŒ…围盒。"
+msgid ""
+"[AABB] consists of a position, a size, and several utility functions. It is "
+"typically used for fast overlap tests.\n"
+"It uses floating-point coordinates. The 2D counterpart to [AABB] is "
+"[Rect2].\n"
+"Negative values for [member size] are not supported and will not work for "
+"most methods. Use [method abs] to get an AABB with a positive size.\n"
+"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses "
+"integer coordinates."
+msgstr ""
+"[AABB] 由一个ä½ç½®ã€ä¸€ä¸ªå¤§å°å’Œè‹¥å¹²å®žç”¨å‡½æ•°ç»„æˆã€‚通常用于快速é‡å æµ‹è¯•ã€‚\n"
+"它使用浮点å标。[AABB] çš„ 2D 对应物为 [Rect2]。\n"
+"ä¸æ”¯æŒè´Ÿçš„ [member size],并且ä¸é€‚用于大多数方法。使用 [method abs] 获得具有"
+"正尺寸的 AABB。\n"
+"[b]注æ„:[/b]与 [Rect2] ä¸åŒï¼Œ[AABB] 没有使用整数å标的å˜ä½“。"
+
+msgid "Math documentation index"
+msgstr "数学文档索引"
+
msgid "Vector math"
msgstr "å‘é‡æ•°å­¦"
msgid "Advanced vector math"
msgstr "高等å‘é‡æ•°å­¦"
+msgid ""
+"Constructs a default-initialized [AABB] with default (zero) values of "
+"[member position] and [member size]."
+msgstr ""
+"使用 [member position] å’Œ [member size] 的默认值(零)构造一个默认åˆå§‹åŒ–çš„ "
+"[AABB]。"
+
msgid "Constructs an [AABB] as a copy of the given [AABB]."
msgstr "构造给定 [AABB] 的副本。"
@@ -2354,6 +5111,43 @@ msgid ""
msgstr "该 [AABB] 完全包å«å¦ä¸€ä¸ªæ—¶ï¼Œè¿”回 [code]true[/code]。"
msgid ""
+"Returns a copy of this [AABB] expanded to include a given point.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# position (-3, 2, 0), size (1, 1, 1)\n"
+"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n"
+"# position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB and "
+"Vector3(0, -1, 2)\n"
+"var box2 = box.expand(Vector3(0, -1, 2))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// position (-3, 2, 0), size (1, 1, 1)\n"
+"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n"
+"// position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB "
+"and Vector3(0, -1, 2)\n"
+"var box2 = box.Expand(new Vector3(0, -1, 2));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回该 [AABB] 的副本,该副本扩展至包å«ç»™å‡ºçš„点。\n"
+"[b]例å­ï¼š[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# ä½ç½® (-3, 2, 0)ï¼Œå¤§å° (1, 1, 1)\n"
+"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n"
+"# ä½ç½® (-3, -1, 0)ï¼Œå¤§å° (3, 4, 2),包å«åŽŸæ¥çš„ AABB å’Œ Vector3(0, -1, 2)\n"
+"var box2 = box.expand(Vector3(0, -1, 2))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ä½ç½® (-3, 2, 0)ï¼Œå¤§å° (1, 1, 1)\n"
+"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n"
+"// ä½ç½® (-3, -1, 0)ï¼Œå¤§å° (3, 4, 2),包å«åŽŸæ¥çš„ AABB å’Œ Vector3(0, -1, 2)\n"
+"var box2 = box.Expand(new Vector3(0, -1, 2));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns the center of the [AABB], which is equal to [member position] + "
"([member size] / 2)."
msgstr "返回该 [AABB] 的中心点,等于 [member position] + ([member size] / 2)。"
@@ -2393,6 +5187,46 @@ msgstr "返回指定方å‘上的支æŒç‚¹ã€‚常用于碰撞检测算法。"
msgid "Returns the volume of the [AABB]."
msgstr "返回该 [AABB] 的体积。"
+msgid ""
+"Returns a copy of the [AABB] grown a given number of units towards all the "
+"sides."
+msgstr "返回 [AABB] 的副本,该副本å‘所有方å‘增长了给定数é‡çš„å•ä½ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the [AABB] contains a point. Points on the "
+"faces of the AABB are considered included, though float-point precision "
+"errors may impact the accuracy of such checks.\n"
+"[b]Note:[/b] This method is not reliable for [AABB] with a [i]negative size[/"
+"i]. Use [method abs] to get a positive sized equivalent [AABB] to check for "
+"contained points."
+msgstr ""
+"如果 [AABB] 包å«ç‚¹ï¼Œåˆ™è¿”回 [code]true[/code]。AABB 表é¢ä¸Šçš„点被视为包括在内,"
+"但浮点精度误差å¯èƒ½ä¼šå½±å“此类检测的准确性。\n"
+"[b]注æ„:[/b]è¿™ç§æ–¹æ³•å¯¹äºŽå…·æœ‰[i]负尺寸[/i]çš„ [AABB] 是ä¸å¯é çš„。使用 [method "
+"abs] 获得一个正尺寸的等效 [AABB] 在检查是å¦åŒ…å«ç‚¹ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the [AABB] has a surface or a length, and "
+"[code]false[/code] if the [AABB] is empty (all components of [member size] "
+"are zero or negative)."
+msgstr ""
+"如果 [AABB] 具有表é¢æˆ–长度,则返回 [code]true[/code];如果 [AABB] 为空"
+"([member size] 的所有分é‡ä¸ºé›¶æˆ–负),则返回 [code]false[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [AABB] has a volume, and [code]false[/code] "
+"if the [AABB] is flat, empty, or has a negative [member size]."
+msgstr ""
+"如果 [AABB] 有体积,则返回 [code]true[/code];如果 [AABB] 是æ‰å¹³çš„ã€ç©ºçš„或具"
+"有负的 [member size],则返回 [code]false[/code]。"
+
+msgid ""
+"Returns the intersection between two [AABB]. An empty AABB (size [code](0, "
+"0, 0)[/code]) is returned on failure."
+msgstr ""
+"返回两个 [AABB] 的交å åŒºåŸŸã€‚失败时返回空的 AABB(大å°ä¸º [code](0, 0, 0)[/"
+"code])。"
+
msgid "Returns [code]true[/code] if the [AABB] overlaps with another."
msgstr "该 [AABB] 与å¦ä¸€ä¸ªäº¤å æ—¶ï¼Œè¿”回 [code]true[/code]。"
@@ -2400,6 +5234,37 @@ msgid "Returns [code]true[/code] if the [AABB] is on both sides of a plane."
msgstr "该 [AABB] åŒæ—¶ä½äºŽæŒ‡å®šå¹³é¢çš„两边时,返回 [code]true[/code]。"
msgid ""
+"Returns [code]true[/code] if the given ray intersects with this [AABB]. Ray "
+"length is infinite."
+msgstr ""
+"如果给定的射线与此 [AABB] 相交,则返回 [code]true[/code]。射线长度是无é™çš„。"
+
+msgid ""
+"Returns [code]true[/code] if the [AABB] intersects the line segment between "
+"[param from] and [param to]."
+msgstr ""
+"如果该 [AABB] 与 [param from] 和 [param to] 之间的线段相交,则返回 "
+"[code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [AABB] and [param aabb] are approximately "
+"equal, by calling [method @GlobalScope.is_equal_approx] on each component."
+msgstr ""
+"如果该 [AABB] å’Œ [param aabb] 近似相等,则返回 [code]true[/code],通过在æ¯ä¸ª"
+"分é‡ä¸Šè°ƒç”¨ [method @GlobalScope.is_equal_approx]。"
+
+msgid ""
+"Returns [code]true[/code] if this [AABB] is finite, by calling [method "
+"@GlobalScope.is_finite] on each component."
+msgstr ""
+"如果该 [AABB] 是有é™çš„,则返回 [code]true[/code],方法是在æ¯ä¸ªåˆ†é‡ä¸Šè°ƒç”¨ "
+"[method @GlobalScope.is_finite]。"
+
+msgid ""
+"Returns a larger [AABB] that contains both this [AABB] and [param with]."
+msgstr "返回åŒæ—¶åŒ…å«è¯¥ [AABB] å’Œ [param with] 的更大的 [AABB]。"
+
+msgid ""
"Ending corner. This is calculated as [code]position + size[/code]. Setting "
"this value will change the size."
msgstr ""
@@ -2413,9 +5278,30 @@ msgid ""
"positive.\n"
"If the size is negative, you can use [method abs] to fix it."
msgstr ""
-"从[member position] 到 [member end] 的大å°ã€‚通常所有分é‡éƒ½æ˜¯æ­£æ•°ã€‚\n"
+"从 [member position] 到 [member end] 的大å°ã€‚通常所有分é‡éƒ½æ˜¯æ­£æ•°ã€‚\n"
"如果大å°ä¸ºè´Ÿï¼Œå¯ä»¥ç”¨ [method abs] 修正。"
+msgid ""
+"Returns [code]true[/code] if the vectors are not equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果å‘é‡ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。\n"
+"[b]注æ„:[/b]由于浮点精度误差,考虑改用更å¯é çš„ [method is_equal_approx]。"
+
+msgid ""
+"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] "
+"transformation matrix."
+msgstr "通过给定的 [Transform3D] å˜æ¢çŸ©é˜µå¯¹è¯¥ [AABB] 进行逆å˜æ¢ï¼ˆç›¸ä¹˜ï¼‰ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the AABBs are exactly equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果 AABB 完全相等,则返回 [code]true[/code]。\n"
+"[b]注æ„:[/b]由于浮点精度误差,考虑改用更å¯é çš„ [method is_equal_approx]。"
+
msgid "Base dialog for user notification."
msgstr "用户通知的基本对è¯æ¡†ã€‚"
@@ -2423,10 +5309,35 @@ msgid ""
"This dialog is useful for small notifications to the user about an event. It "
"can only be accepted or closed, with the same result."
msgstr ""
-"该对è¯æ¡†å¯¹äºŽå‘用户å‘é€æœ‰å…³äº‹ä»¶çš„å°é€šçŸ¥å¾ˆæœ‰ç”¨ã€‚它åªèƒ½è¢«æŽ¥å—或关闭,并且结果相"
+"该对è¯æ¡†å¯¹äºŽå‘用户å‘é€æœ‰å…³äº‹ä»¶çš„å°é€šçŸ¥å¾ˆæœ‰ç”¨ã€‚它åªèƒ½è¢«æŽ¥å—或关闭,并且结果相"
"åŒã€‚"
msgid ""
+"Adds a button with label [param text] and a custom [param action] to the "
+"dialog and returns the created button. [param action] will be passed to the "
+"[signal custom_action] signal when pressed.\n"
+"If [code]true[/code], [param right] will place the button to the right of "
+"any sibling buttons.\n"
+"You can use [method remove_button] method to remove a button created with "
+"this method from the dialog."
+msgstr ""
+"将带有标签 [param text] 和自定义 [param action] 的按钮添加到对è¯æ¡†ï¼Œå¹¶è¿”回该"
+"创建的按钮。[param action] 将在按钮被按下时传递给 [signal custom_action] 信"
+"å·ã€‚\n"
+"如果 [param right] 为 [code]true[/code],按钮会被放置在所有åŒçº§æŒ‰é’®çš„å³ä¾§ã€‚\n"
+"您å¯ä»¥ä½¿ç”¨ [method remove_button] 方法从对è¯æ¡†ä¸­ç§»é™¤ä½¿ç”¨è¯¥æ–¹æ³•åˆ›å»ºçš„按钮。"
+
+msgid ""
+"Adds a button with label [param name] and a cancel action to the dialog and "
+"returns the created button.\n"
+"You can use [method remove_button] method to remove a button created with "
+"this method from the dialog."
+msgstr ""
+"在对è¯æ¡†ä¸­æ·»åŠ ä¸€ä¸ªå¸¦æœ‰æ ‡ç­¾ [param name] å’Œå–消动作的按钮,并返回创建的按"
+"钮。\n"
+"ä½ å¯ä»¥ä½¿ç”¨ [method remove_button] 方法从对è¯æ¡†ä¸­åˆ é™¤ç”¨æ­¤æ–¹æ³•åˆ›å»ºçš„按钮。"
+
+msgid ""
"Returns the label used for built-in text.\n"
"[b]Warning:[/b] This is a required internal node, removing and freeing it "
"may cause a crash. If you wish to hide it or any of its children, use their "
@@ -2451,10 +5362,29 @@ msgid ""
"dialog will be accepted."
msgstr "在对è¯æ¡†ä¸­æ³¨å†Œ [LineEdit]。当按下回车键时,对è¯æ¡†å°†è¢«æŽ¥å—。"
+msgid ""
+"Removes the [param button] from the dialog. Does NOT free the [param "
+"button]. The [param button] must be a [Button] added with [method "
+"add_button] or [method add_cancel_button] method. After removal, pressing "
+"the [param button] will no longer emit this dialog's [signal custom_action] "
+"or [signal canceled] signals."
+msgstr ""
+"从对è¯æ¡†ä¸­ç§»é™¤ [param button]。但ä¸é‡Šæ”¾è¯¥ [param button] 对象。[param "
+"button] 必须是用 [method add_button] 或 [method add_cancel] 方法添加的 "
+"[Button]。移除åŽï¼ŒæŒ‰ä¸‹è¯¥ [param button] å°†ä¸å†å‘出该对è¯æ¡†çš„ [signal "
+"custom_action] 或 [signal canceled] ä¿¡å·ã€‚"
+
msgid "Sets autowrapping for the text in the dialog."
msgstr "为对è¯æ¡†ä¸­çš„文本设置自动æ¢è¡Œã€‚"
msgid ""
+"If [code]true[/code], the dialog will be hidden when the escape key "
+"([constant KEY_ESCAPE]) is pressed."
+msgstr ""
+"如果为 [code]true[/code],当按下退出键([constant KEY_ESCAPE])时,对è¯æ¡†å°†è¢«"
+"éšè—。"
+
+msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. "
"You can set it to [code]false[/code] if you want to do e.g. input validation "
"when receiving the [signal confirmed] signal, and handle hiding the dialog "
@@ -2477,15 +5407,184 @@ msgstr ""
msgid "The text displayed by the dialog."
msgstr "对è¯æ¡†æ˜¾ç¤ºçš„文本。"
+msgid "The text displayed by the OK button (see [method get_ok_button])."
+msgstr "确定按钮(å‚è§ [method get_ok_button])显示的文本。"
+
+msgid ""
+"Emitted when the dialog is closed or the button created with [method "
+"add_cancel_button] is pressed."
+msgstr "当对è¯æ¡†å…³é—­æˆ–按下 [method add_cancel_button] 创建的按钮时å‘出。"
+
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr "接å—对è¯æ¡†æ—¶ï¼Œå³æŒ‰ä¸‹ç¡®å®šæŒ‰é’®æ—¶å‘出。"
msgid "Emitted when a custom button is pressed. See [method add_button]."
msgstr "按下自定义按钮时å‘å‡ºã€‚è§ [method add_button]。"
+msgid ""
+"The size of the vertical space between the dialog's content and the button "
+"row."
+msgstr "对è¯æ¡†å†…容和按钮行之间的垂直空间的大å°ã€‚"
+
+msgid "The panel that fills the background of the window."
+msgstr "填充窗å£èƒŒæ™¯çš„é¢æ¿ã€‚"
+
msgid "Interface to low level AES encryption features."
msgstr "底层 AES 加密功能接å£ã€‚"
+msgid ""
+"This class provides access to AES encryption/decryption of raw data. Both "
+"AES-ECB and AES-CBC mode are supported.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"\n"
+"var aes = AESContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"My secret key!!!\" # Key must be either 16 or 32 bytes.\n"
+" var data = \"My secret text!!\" # Data size must be multiple of 16 "
+"bytes, apply padding if needed.\n"
+" # Encrypt ECB\n"
+" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n"
+" var encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # Decrypt ECB\n"
+" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n"
+" var decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # Check ECB\n"
+" assert(decrypted == data.to_utf8())\n"
+"\n"
+" var iv = \"My secret iv!!!!\" # IV must be of exactly 16 bytes.\n"
+" # Encrypt CBC\n"
+" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n"
+" encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # Decrypt CBC\n"
+" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n"
+" decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # Check CBC\n"
+" assert(decrypted == data.to_utf8())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private AesContext _aes = new AesContext();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" string key = \"My secret key!!!\"; // Key must be either 16 or 32 "
+"bytes.\n"
+" string data = \"My secret text!!\"; // Data size must be multiple of "
+"16 bytes, apply padding if needed.\n"
+" // Encrypt ECB\n"
+" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n"
+" byte[] encrypted = _aes.Update(data.ToUtf8());\n"
+" _aes.Finish();\n"
+" // Decrypt ECB\n"
+" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n"
+" byte[] decrypted = _aes.Update(encrypted);\n"
+" _aes.Finish();\n"
+" // Check ECB\n"
+" Debug.Assert(decrypted == data.ToUtf8());\n"
+"\n"
+" string iv = \"My secret iv!!!!\"; // IV must be of exactly 16 "
+"bytes.\n"
+" // Encrypt CBC\n"
+" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n"
+" encrypted = _aes.Update(data.ToUtf8());\n"
+" _aes.Finish();\n"
+" // Decrypt CBC\n"
+" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n"
+" decrypted = _aes.Update(encrypted);\n"
+" _aes.Finish();\n"
+" // Check CBC\n"
+" Debug.Assert(decrypted == data.ToUtf8());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"此类æ供了对原始数æ®çš„ AES 加密/解密的访问。åŒæ—¶æ”¯æŒ AES-ECB å’Œ AES-CBC 模"
+"å¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"\n"
+"var aes = AESContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"My secret key!!!\" # 密钥必须是 16 或 32 字节。\n"
+" var data = \"My secret text!!\" # æ•°æ®å¤§å°å¿…须是 16 字节的å€æ•°ï¼Œéœ€è¦æ—¶æ·»"
+"加补白。\n"
+" # ECB 加密\n"
+" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n"
+" var encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # ECB 解密\n"
+" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n"
+" var decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # ECB 校验\n"
+" assert(decrypted == data.to_utf8())\n"
+"\n"
+" var iv = \"My secret iv!!!!\" # IV 必须是 16 字节。\n"
+" # CBC 加密\n"
+" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n"
+" encrypted = aes.update(data.to_utf8())\n"
+" aes.finish()\n"
+" # CBC 解密\n"
+" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n"
+" decrypted = aes.update(encrypted)\n"
+" aes.finish()\n"
+" # CBC 校验\n"
+" assert(decrypted == data.to_utf8())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private AesContext _aes = new AesContext();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" string key = \"My secret key!!!\"; // 密钥必须是 16 或 32 字节。\n"
+" string data = \"My secret text!!\"; // æ•°æ®å¤§å°å¿…须是 16 字节的å€æ•°ï¼Œ"
+"需è¦æ—¶æ·»åŠ è¡¥ç™½ã€‚\n"
+" // ECB 加密\n"
+" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n"
+" byte[] encrypted = _aes.Update(data.ToUtf8());\n"
+" _aes.Finish();\n"
+" // ECB 解密\n"
+" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n"
+" byte[] decrypted = _aes.Update(encrypted);\n"
+" _aes.Finish();\n"
+" // ECB 校验\n"
+" Debug.Assert(decrypted == data.ToUtf8());\n"
+"\n"
+" string iv = \"My secret iv!!!!\"; // IV 必须是 16 字节。\n"
+" // CBC 加密\n"
+" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n"
+" encrypted = _aes.Update(data.ToUtf8());\n"
+" _aes.Finish();\n"
+" // CBC 解密\n"
+" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n"
+" decrypted = _aes.Update(encrypted);\n"
+" _aes.Finish();\n"
+" // CBC 校验\n"
+" Debug.Assert(decrypted == data.ToUtf8());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "Close this AES context so it can be started again. See [method start]."
msgstr "关闭此 AES 上下文,以便å¯ä»¥å†æ¬¡å¯åŠ¨å®ƒã€‚è§ [method start]。"
@@ -2500,6 +5599,27 @@ msgstr ""
"[b]注æ„:[/b]仅当上下文以 [constant MODE_CBC_ENCRYPT] 或 [constant "
"MODE_CBC_DECRYPT] 开头时,此函数æ‰æœ‰æ„义。"
+msgid ""
+"Start the AES context in the given [param mode]. A [param key] of either 16 "
+"or 32 bytes must always be provided, while an [param iv] (initialization "
+"vector) of exactly 16 bytes, is only needed when [param mode] is either "
+"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]."
+msgstr ""
+"在给定的 [param mode] 中å¯åŠ¨ AES 上下文。必须始终æä¾› 16 或 32 字节的 [param "
+"key],而仅当 [param mode] 为 [constant MODE_CBC_ENCRYPT] 或 [constant "
+"MODE_CBC_DECRYPT] 时,æ‰éœ€è¦æ­£å¥½ä¸º 16 字节的 [param iv](åˆå§‹åŒ–å‘é‡ï¼‰ã€‚"
+
+msgid ""
+"Run the desired operation for this AES context. Will return a "
+"[PackedByteArray] containing the result of encrypting (or decrypting) the "
+"given [param src]. See [method start] for mode of operation.\n"
+"[b]Note:[/b] The size of [param src] must be a multiple of 16. Apply some "
+"padding if needed."
+msgstr ""
+"è¿è¡Œæ­¤ AES 上下文所需的æ“作。将返回包å«åŠ å¯†ï¼ˆæˆ–解密)给定 [param src] 结果的 "
+"[PackedByteArray] 。有关æ“作模å¼ï¼Œè¯·å‚阅 [method start]。\n"
+"[b]注æ„:[/b][param src] 的大å°å¿…须是 16 å€çš„å€æ•°ã€‚如果需è¦ï¼Œåº”用一些填充。"
+
msgid "AES electronic codebook encryption mode."
msgstr "AES 电å­å¯†ç ç°¿åŠ å¯†æ¨¡å¼ã€‚"
@@ -2515,6 +5635,73 @@ msgstr "AES 密ç å°é”器链å¼è§£å¯†æ¨¡å¼ã€‚"
msgid "Maximum value for the mode enum."
msgstr "模å¼åˆ—举的最大值。"
+msgid ""
+"Physics body for 2D physics which moves only by script or animation. Useful "
+"for moving platforms and doors."
+msgstr "用于 2D 物ç†ä¸­ä»…通过脚本或动画移动的物ç†å®žä½“。适用于移动的平å°å’Œé—¨ã€‚"
+
+msgid ""
+"Animatable body for 2D physics.\n"
+"An animatable body can't be moved by external forces or contacts, but can be "
+"moved by script or animation to affect other bodies in its path. It is ideal "
+"for implementing moving objects in the environment, such as moving platforms "
+"or doors.\n"
+"When the body is moved manually, either from code or from an "
+"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set "
+"to [code]physics[/code]), the physics will automatically compute an estimate "
+"of their linear and angular velocity. This makes them very useful for moving "
+"platforms or other AnimationPlayer-controlled objects (like a door, a bridge "
+"that opens, etc)."
+msgstr ""
+"用于 2D 物ç†çš„å¯åŠ¨ç”»åŒ–实体。\n"
+"å¯åŠ¨ç”»åŒ–实体无法通过外力或接触移动,但å¯ä»¥é€šè¿‡è„šæœ¬æˆ–动画移动以影å“其路径中的"
+"其他实体。它éžå¸¸é€‚åˆå®žçŽ°ç§»åŠ¨çŽ¯å¢ƒä¸­çš„对象,例如移动的平å°æˆ–门。\n"
+"当实体通过代ç æˆ– [AnimationPlayer](将 [member AnimationPlayer."
+"playback_process_mode] 设置为 [code]physics[/code])手动移动时,物ç†å°†è‡ªåŠ¨è®¡"
+"算其线速度和角速度的估计值。这使得它们对于移动的平å°æˆ–其他 AnimationPlayer 控"
+"制的对象(如门ã€æ‰“开的桥等)éžå¸¸æœ‰ç”¨ã€‚"
+
+msgid ""
+"If [code]true[/code], the body's movement will be synchronized to the "
+"physics frame. This is useful when animating movement via [AnimationPlayer], "
+"for example on moving platforms. Do [b]not[/b] use together with [method "
+"PhysicsBody2D.move_and_collide]."
+msgstr ""
+"如果为 [code]true[/code],则物体的è¿åŠ¨å°†ä¸Žç‰©ç†å¸§åŒæ­¥ã€‚当通过 "
+"[AnimationPlayer] 为è¿åŠ¨è®¾ç½®åŠ¨ç”»æ—¶ï¼Œä¾‹å¦‚在移动的平å°ä¸Šï¼Œè¿™ä¸ªåŠŸèƒ½å¾ˆæœ‰ç”¨ã€‚[b]ä¸"
+"è¦[/b]与[method PhysicsBody2D.move_and_collide]一起使用。"
+
+msgid ""
+"Physics body for 3D physics which moves only by script or animation. Useful "
+"for moving platforms and doors."
+msgstr "仅通过脚本或动画移动ã€ç”¨äºŽ3D 物ç†çš„物ç†ä½“。适用于移动的平å°å’Œé—¨ã€‚"
+
+msgid ""
+"Animatable body for 3D physics.\n"
+"An animatable body can't be moved by external forces or contacts, but can be "
+"moved by script or animation to affect other bodies in its path. It is ideal "
+"for implementing moving objects in the environment, such as moving platforms "
+"or doors.\n"
+"When the body is moved manually, either from code or from an "
+"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set "
+"to [code]physics[/code]), the physics will automatically compute an estimate "
+"of their linear and angular velocity. This makes them very useful for moving "
+"platforms or other AnimationPlayer-controlled objects (like a door, a bridge "
+"that opens, etc).\n"
+"[b]Warning:[/b] With a non-uniform scale this node will probably not "
+"function as expected. Please make sure to keep its scale uniform (i.e. the "
+"same on all axes), and change the size(s) of its collision shape(s) instead."
+msgstr ""
+"用于 3D 物ç†çš„å¯åŠ¨ç”»å®žä½“。\n"
+"å¯åŠ¨ç”»çš„实体ä¸èƒ½è¢«å¤–力或接触移动,但å¯ä»¥è¢«è„šæœ¬æˆ–动画移动以影å“其路径中的其他"
+"实体。它éžå¸¸é€‚åˆåœ¨çŽ¯å¢ƒä¸­å®žçŽ°ç§»åŠ¨çš„实体,例如移动的平å°æˆ–门。\n"
+"当通过代ç æˆ– [AnimationPlayer]([member AnimationPlayer."
+"playback_process_mode] 被设置为 [code]physics[/code])手动移动实体时,物ç†å°†"
+"自动计算其线速度和角速度的估计值。这使得它们对于移动的平å°æˆ–其他 "
+"AnimationPlayer 控制的对象(如门ã€æ‰“开的桥等)éžå¸¸æœ‰ç”¨ã€‚\n"
+"[b]警告:[/b]如果缩放比例ä¸å‡åŒ€ï¼Œæ­¤èŠ‚点å¯èƒ½æ— æ³•æŒ‰é¢„期è¿è¡Œã€‚请确ä¿ä¿æŒå…¶æ¯”例统"
+"一(å³åœ¨æ‰€æœ‰è½´ä¸Šç›¸åŒï¼‰ï¼Œå¹¶æ”¹ä¸ºæ›´æ”¹å…¶ç¢°æ’žå½¢çŠ¶çš„大å°ã€‚"
+
msgid "3D Physics Tests Demo"
msgstr "3D 物ç†æµ‹è¯•æ¼”示"
@@ -2525,8 +5712,30 @@ msgid "3D Voxel Demo"
msgstr "3D 体素演示"
msgid ""
+"If [code]true[/code], the body's movement will be synchronized to the "
+"physics frame. This is useful when animating movement via [AnimationPlayer], "
+"for example on moving platforms. Do [b]not[/b] use together with [method "
+"PhysicsBody3D.move_and_collide]."
+msgstr ""
+"如果为 [code]true[/code],则实体的è¿åŠ¨å°†ä¸Žç‰©ç†å¸§åŒæ­¥ã€‚当通过 "
+"[AnimationPlayer] 为è¿åŠ¨è®¾ç½®åŠ¨ç”»æ—¶ï¼Œä¾‹å¦‚在移动的平å°ä¸Šï¼Œè¿™ä¸ªåŠŸèƒ½å¾ˆæœ‰ç”¨ã€‚请[b]"
+"ä¸è¦[/b]与 [method PhysicsBody3D.move_and_collide] 函数一起使用。"
+
+msgid ""
"Sprite node that contains multiple textures as frames to play for animation."
-msgstr "å¯ä»¥ä½¿ç”¨å¤šä¸ªçº¹ç†è¿›è¡ŒåŠ¨ç”»å¤„ç†çš„ç²¾çµèŠ‚点。"
+msgstr "包å«å¤šä¸ªçº¹ç†ä½œä¸ºåŠ¨ç”»æ’­æ”¾å¸§çš„ Sprite 节点。"
+
+msgid ""
+"[AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries "
+"multiple textures as animation frames. Animations are created using a "
+"[SpriteFrames] resource, which allows you to import image files (or a folder "
+"containing said files) to provide the animation frames for the sprite. The "
+"[SpriteFrames] resource can be configured in the editor via the SpriteFrames "
+"bottom panel."
+msgstr ""
+"[AnimatedSprite2D] 与 [Sprite2D] 节点类似,但是包å«å¤šå¼ çº¹ç†ï¼Œå¯ç”¨ä½œåŠ¨ç”»å¸§ã€‚动"
+"画使用 [SpriteFrames] 资æºåˆ›å»ºï¼Œå¯ä»¥å¯¼å…¥å›¾åƒæ–‡ä»¶ï¼ˆæˆ–包å«æ­¤ç±»æ–‡ä»¶çš„文件夹)为"
+"该精çµæ供动画帧。å¯ä»¥åœ¨ç¼–辑器的“动画帧â€åº•éƒ¨é¢æ¿ä¸­é…ç½® [SpriteFrames] 资æºã€‚"
msgid "2D Sprite animation"
msgstr "2D ç²¾çµåŠ¨ç”»"
@@ -2534,6 +5743,111 @@ msgstr "2D ç²¾çµåŠ¨ç”»"
msgid "2D Dodge The Creeps Demo"
msgstr "2D Dodge The Creeps 演示"
+msgid ""
+"Returns the actual playing speed of current animation or [code]0[/code] if "
+"not playing. This speed is the [member speed_scale] property multiplied by "
+"[code]custom_speed[/code] argument specified when calling the [method play] "
+"method.\n"
+"Returns a negative value if the current animation is playing backwards."
+msgstr ""
+"返回当å‰åŠ¨ç”»çš„实际播放速度,未播放时则为 [code]0[/code]。这个速度是 [member "
+"speed_scale] 属性乘以调用 [method play] 时指定的 [code]custom_speed[/code] å‚"
+"数。\n"
+"如果当å‰åŠ¨ç”»æ˜¯å€’放的,则返回负值。"
+
+msgid ""
+"Returns [code]true[/code] if an animation is currently playing (even if "
+"[member speed_scale] and/or [code]custom_speed[/code] are [code]0[/code])."
+msgstr ""
+"如果动画目å‰æ­£åœ¨æ’­æ”¾ï¼Œåˆ™è¿”回 [code]true[/code](å³ä¾¿ [member speed_scale] å’Œ/"
+"或 [code]custom_speed[/code] 为 [code]0[/code])。"
+
+msgid ""
+"Pauses the currently playing animation. The [member frame] and [member "
+"frame_progress] will be kept and calling [method play] or [method "
+"play_backwards] without arguments will resume the animation from the current "
+"playback position.\n"
+"See also [method stop]."
+msgstr ""
+"æš‚åœå½“å‰æ­£åœ¨æ’­æ”¾çš„动画。会ä¿ç•™ [member frame] å’Œ [member frame_progress],ä¸"
+"带å‚数调用 [method play] 或 [method play_backwards] 会从当å‰æ’­æ”¾ä½ç½®æ¢å¤æ’­æ”¾"
+"该动画。\n"
+"å¦è§ [method stop]。"
+
+msgid ""
+"Plays the animation with key [param name]. If [param custom_speed] is "
+"negative and [param from_end] is [code]true[/code], the animation will play "
+"backwards (which is equivalent to calling [method play_backwards]).\n"
+"If this method is called with that same animation [param name], or with no "
+"[param name] parameter, the assigned animation will resume playing if it was "
+"paused."
+msgstr ""
+"播放å称键为 [param name] 的动画。如果 [param custom_speed] 为负且 [param "
+"from_end] 为 [code]true[/code],则该动画会倒放(等价于 [method "
+"play_backwards])。\n"
+"如果调用这个方法时使用了相åŒçš„动画å称 [param name] 或者没有使用 [param "
+"name] å‚数,则会继续播放已暂åœçš„分é…动画。"
+
+msgid ""
+"Plays the animation with key [param name] in reverse.\n"
+"This method is a shorthand for [method play] with [code]custom_speed = -1.0[/"
+"code] and [code]from_end = true[/code], so see its description for more "
+"information."
+msgstr ""
+"倒放å称键为 [param name] 的动画。\n"
+"这个方法是简写,等价于调用 [method play] 时使用 [code]custom_speed = -1.0[/"
+"code] å’Œ [code]from_end = true[/code],所以更多信æ¯è¯·å‚阅其æ述。"
+
+msgid ""
+"The setter of [member frame] resets the [member frame_progress] to "
+"[code]0.0[/code] implicitly, but this method avoids that.\n"
+"This is useful when you want to carry over the current [member "
+"frame_progress] to another [member frame].\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Change the animation with keeping the frame index and progress.\n"
+"var current_frame = animated_sprite.get_frame()\n"
+"var current_progress = animated_sprite.get_frame_progress()\n"
+"animated_sprite.play(\"walk_another_skin\")\n"
+"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"设置 [member frame] 时会éšå¼å°† [member frame_progress] é‡ç½®ä¸º [code]0.0[/"
+"code],但这个方法å¯ä»¥é¿å…。\n"
+"如果你想è¦æŠŠå½“å‰çš„ [member frame_progress] 带到其他 [member frame] 中,就会éž"
+"常有用。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 更改动画的åŒæ—¶ä¿ç•™å¸§ç´¢å¼•å’Œè¿›åº¦ã€‚\n"
+"var current_frame = animated_sprite.get_frame()\n"
+"var current_progress = animated_sprite.get_frame_progress()\n"
+"animated_sprite.play(\"walk_another_skin\")\n"
+"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Stops the currently playing animation. The animation position is reset to "
+"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/"
+"code]. See also [method pause]."
+msgstr ""
+"åœæ­¢å½“å‰æ­£åœ¨æ’­æ”¾çš„动画。会将动画的ä½ç½®é‡ç½®ä¸º [code]0[/code],并将 "
+"[code]custom_speed[/code] é‡ç½®ä¸º [code]1.0[/code]。å¦è§ [method pause]。"
+
+msgid ""
+"The current animation from the [member sprite_frames] resource. If this "
+"value is changed, the [member frame] counter and the [member frame_progress] "
+"are reset."
+msgstr ""
+"当å‰åŠ¨ç”»ï¼Œæ¥è‡ª [member sprite_frames]。如果更改了这个值,会é‡ç½® [member "
+"frame] 计数和 [member frame_progress]。"
+
+msgid "The key of the animation to play when the scene loads."
+msgstr "场景加载时è¦æ’­æ”¾çš„动画å称。"
+
msgid "If [code]true[/code], texture will be centered."
msgstr "如果为 [code]true[/code],纹ç†å°†è¢«å±…中。"
@@ -2543,10 +5857,38 @@ msgstr "如果为 [code]true[/code],纹ç†å°†è¢«æ°´å¹³ç¿»è½¬ã€‚"
msgid "If [code]true[/code], texture is flipped vertically."
msgstr "如果为 [code]true[/code],纹ç†å°†è¢«åž‚直翻转。"
+msgid ""
+"The displayed animation frame's index. Setting this property also resets "
+"[member frame_progress]. If this is not desired, use [method "
+"set_frame_and_progress]."
+msgstr ""
+"所显示动画帧的索引。设置这个属性会é‡ç½® [member frame_progress]。如果ä¸å¸Œæœ›è¿™"
+"样,请使用 [method set_frame_and_progress]。"
+
+msgid ""
+"The progress value between [code]0.0[/code] and [code]1.0[/code] until the "
+"current frame transitions to the next frame. If the animation is playing "
+"backwards, the value transitions from [code]1.0[/code] to [code]0.0[/code]."
+msgstr ""
+"当å‰å¸§è¿‡æ¸¡åˆ°ä¸‹ä¸€å¸§çš„进度值,在 [code]0.0[/code] å’Œ [code]1.0[/code] 之间。如"
+"果动画是倒放的,则该值是从 [code]1.0[/code] 到 [code]0.0[/code]。"
+
msgid "The texture's drawing offset."
msgstr "纹ç†çš„绘图å移é‡ã€‚"
msgid ""
+"The speed scaling ratio. For example, if this value is [code]1[/code], then "
+"the animation plays at normal speed. If it's [code]0.5[/code], then it plays "
+"at half speed. If it's [code]2[/code], then it plays at double speed.\n"
+"If set to a negative value, the animation is played in reverse. If set to "
+"[code]0[/code], the animation will not advance."
+msgstr ""
+"速度缩放比。例如,如果该值为 [code]1[/code],则动画以正常速度播放。如果它是 "
+"[code]0.5[/code],那么它会åŠé€Ÿæ’­æ”¾ã€‚如果是 [code]2[/code],则会以åŒå€é€Ÿåº¦æ’­"
+"放。\n"
+"如果设置为负值,则动画åå‘播放。如果设置为[code]0[/code],则动画ä¸ä¼šå‰è¿›ã€‚"
+
+msgid ""
"The [SpriteFrames] resource containing the animation(s). Allows you the "
"option to load, edit, clear, make unique and save the states of the "
"[SpriteFrames] resource."
@@ -2554,18 +5896,74 @@ msgstr ""
"包å«åŠ¨ç”»çš„ [SpriteFrames] 资æºã€‚å¯ä»¥å¯¹ [SpriteFrames] 资æºè¿›è¡ŒåŠ è½½ã€ç¼–辑ã€æ¸…"
"空ã€å”¯ä¸€åŒ–ã€ä¿å­˜çŠ¶æ€ç­‰æ“作。"
+msgid "Emitted when [member animation] changes."
+msgstr "当 [member animation] 更改时å‘出。"
+
+msgid ""
+"Emitted when the animation reaches the end, or the start if it is played in "
+"reverse. When the animation finishes, it pauses the playback."
+msgstr ""
+"当动画到达结尾时,或者如果åå‘播放则到达起点时å‘出。当动画结æŸæ—¶ï¼Œå®ƒä¼šæš‚åœæ’­"
+"放。"
+
+msgid "Emitted when the animation loops."
+msgstr "当动画循环播放时å‘出。"
+
+msgid "Emitted when [member frame] changes."
+msgstr "[member frame] 更改时å‘出。"
+
+msgid "Emitted when [member sprite_frames] changes."
+msgstr "当 [member sprite_frames] 更改时å‘出。"
+
msgid ""
"2D sprite node in 3D world, that can use multiple 2D textures for animation."
msgstr "3D 世界中的 2D ç²¾çµèŠ‚点,å¯ä»¥ä½¿ç”¨å¤šä¸ª 2D 纹ç†è¿›è¡ŒåŠ¨ç”»å¤„ç†ã€‚"
+msgid ""
+"[AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries "
+"multiple textures as animation [member sprite_frames]. Animations are "
+"created using a [SpriteFrames] resource, which allows you to import image "
+"files (or a folder containing said files) to provide the animation frames "
+"for the sprite. The [SpriteFrames] resource can be configured in the editor "
+"via the SpriteFrames bottom panel."
+msgstr ""
+"[AnimatedSprite3D] 与 [Sprite3D] 节点类似,但是包å«å¤šå¼ çº¹ç†ï¼Œå¯ç”¨ä½œåŠ¨ç”» "
+"[member sprite_frames]。动画使用 [SpriteFrames] 资æºåˆ›å»ºï¼Œå¯ä»¥å¯¼å…¥å›¾åƒæ–‡ä»¶"
+"(或包å«æ­¤ç±»æ–‡ä»¶çš„文件夹)为该精çµæ供动画帧。å¯ä»¥åœ¨ç¼–辑器的“动画帧â€åº•éƒ¨é¢æ¿"
+"中é…ç½® [SpriteFrames] 资æºã€‚"
+
msgid "2D Sprite animation (also applies to 3D)"
msgstr "2D ç²¾çµåŠ¨ç”»ï¼ˆä¹Ÿé€‚用于 3D)"
msgid "Proxy texture for simple frame-based animations."
-msgstr "基于简å•å¸§åŠ¨ç”»çš„代ç†çº¹ç†ã€‚"
+msgstr "用于简å•å¸§åŠ¨ç”»çš„代ç†çº¹ç†ã€‚"
-msgid "Sets the currently visible frame of the texture."
-msgstr "设置纹ç†å½“å‰å¯è§çš„帧。"
+msgid "Returns the given [param frame]'s duration, in seconds."
+msgstr "返回给定的 [param frame] çš„æŒç»­æ—¶é—´ï¼Œä»¥ç§’为å•ä½ã€‚"
+
+msgid "Returns the given frame's [Texture2D]."
+msgstr "返回给定帧的 [Texture2D]。"
+
+msgid ""
+"Sets the duration of any given [param frame]. The final duration is affected "
+"by the [member speed_scale]. If set to [code]0[/code], the frame is skipped "
+"during playback."
+msgstr ""
+"设置任何给定 [param frame] çš„æŒç»­æ—¶é—´ã€‚最终的æŒç»­æ—¶é—´å— [member speed_scale] "
+"å½±å“。如果设置为 [code]0[/code],则该帧在播放过程中被跳过。"
+
+msgid ""
+"Assigns a [Texture2D] to the given frame. Frame IDs start at 0, so the first "
+"frame has ID 0, and the last frame of the animation has ID [member frames] - "
+"1.\n"
+"You can define any number of textures up to [constant MAX_FRAMES], but keep "
+"in mind that only frames from 0 to [member frames] - 1 will be part of the "
+"animation."
+msgstr ""
+"å°† [Texture2D] 分é…给给定的帧。帧 ID 从 0 开始,因此第一帧的 ID 为 0,动画的"
+"最åŽä¸€å¸§çš„ ID 为 [member frames] - 1。\n"
+"您å¯ä»¥å®šä¹‰æœ€å¤š [constant MAX_FRAMES] 个纹ç†ï¼Œä½†è¦è®°ä½ï¼Œåªæœ‰ 0 到 [member "
+"frames] - 1 的帧会æˆä¸ºåŠ¨ç”»çš„一部分。"
msgid ""
"Number of frames to use in the animation. While you can create the frames "
@@ -2593,40 +5991,327 @@ msgstr ""
"current_frame])。将此属性更改为 [code]false[/code] 时,动画将从暂åœå¤„继续播"
"放。"
+msgid ""
+"The animation speed is multiplied by this value. If set to a negative value, "
+"the animation is played in reverse."
+msgstr "动画速度将乘以该值。如果设置为负值,则动画åå‘播放。"
+
+msgid ""
+"The maximum number of frames supported by [AnimatedTexture]. If you need "
+"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite2D]."
+msgstr ""
+"[AnimatedTexture] 支æŒçš„最大帧数。如果动画需è¦æ›´å¤šå¸§ï¼Œè¯·ä½¿ç”¨ "
+"[AnimationPlayer] 或 [AnimatedSprite2D]。"
+
msgid "Contains data used to animate everything in the engine."
msgstr "包å«ç”¨äºŽå¯¹å¼•æ“Žä¸­æ‰€æœ‰å†…容进行动画处ç†çš„æ•°æ®ã€‚"
+msgid ""
+"An Animation resource contains data used to animate everything in the "
+"engine. Animations are divided into tracks, and each track must be linked to "
+"a node. The state of that node can be changed through time, by adding timed "
+"keys (events) to the track.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# This creates an animation that makes the node \"Enemy\" move to the right "
+"by\n"
+"# 100 pixels in 0.5 seconds.\n"
+"var animation = Animation.new()\n"
+"var track_index = animation.add_track(Animation.TYPE_VALUE)\n"
+"animation.track_set_path(track_index, \"Enemy:position:x\")\n"
+"animation.track_insert_key(track_index, 0.0, 0)\n"
+"animation.track_insert_key(track_index, 0.5, 100)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// This creates an animation that makes the node \"Enemy\" move to the right "
+"by\n"
+"// 100 pixels in 0.5 seconds.\n"
+"var animation = new Animation();\n"
+"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n"
+"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n"
+"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n"
+"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Animations are just data containers, and must be added to nodes such as an "
+"[AnimationPlayer] to be played back. Animation tracks have different types, "
+"each with its own set of dedicated methods. Check [enum TrackType] to see "
+"available types.\n"
+"[b]Note:[/b] For 3D position/rotation/scale, using the dedicated [constant "
+"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] "
+"track types instead of [constant TYPE_VALUE] is recommended for performance "
+"reasons."
+msgstr ""
+"Animation(动画)资æºåŒ…å«ç”¨äºŽå¯¹å¼•æ“Žä¸­çš„一切进行动画处ç†çš„æ•°æ®ã€‚动画分为轨é“,"
+"轨é“必须与节点相连。å‘轨é“添加定时关键帧(事件)åŽï¼ŒèŠ‚点的状æ€å¯ä»¥éšæ—¶é—´å˜"
+"化。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 创建动画,让“Enemyâ€èŠ‚点在 0.5 秒内\n"
+"# å‘å³ç§»åŠ¨ 100 åƒç´ ã€‚\n"
+"var animation = Animation.new()\n"
+"var track_index = animation.add_track(Animation.TYPE_VALUE)\n"
+"animation.track_set_path(track_index, \"Enemy:position:x\")\n"
+"animation.track_insert_key(track_index, 0.0, 0)\n"
+"animation.track_insert_key(track_index, 0.5, 100)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"# 创建动画,让“Enemyâ€èŠ‚点在 0.5 秒内\n"
+"# å‘å³ç§»åŠ¨ 100 åƒç´ ã€‚\n"
+"var animation = new Animation();\n"
+"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n"
+"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n"
+"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n"
+"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"动画åªæ˜¯æ•°æ®çš„容器,必须添加至 [AnimationPlayer] 等节点æ‰èƒ½è¿›è¡Œæ’­æ”¾ã€‚动画轨é“"
+"分为ä¸åŒçš„类型,ä¸åŒçš„类型有å„自ä¸åŒçš„专属方法。å¯ç”¨çš„类型请查看 [enum "
+"TrackType]。\n"
+"[b]注æ„:[/b]对于 3D çš„ä½ç½®ã€æ—‹è½¬ã€ç¼©æ”¾ï¼ŒæŽ¨è使用专门的 [constant "
+"TYPE_POSITION_3D]ã€[constant TYPE_ROTATION_3D]ã€[constant TYPE_SCALE_3D] 轨é“"
+"类型,ä¸è¦ä½¿ç”¨ [constant TYPE_VALUE],性能更高。"
+
+msgid "Animation documentation index"
+msgstr "动画教程索引"
+
msgid "Adds a track to the Animation."
msgstr "å‘动画添加轨é“。"
+msgid ""
+"Returns the animation name at the key identified by [param key_idx]. The "
+"[param track_idx] must be the index of an Animation Track."
+msgstr ""
+"返回由 [param key_idx] 标识的键处的动画å称。[param track_idx] 必须是动画轨é“"
+"的索引。"
+
+msgid ""
+"Inserts a key with value [param animation] at the given [param time] (in "
+"seconds). The [param track_idx] must be the index of an Animation Track."
+msgstr ""
+"在给定的 [param time](以秒为å•ä½ï¼‰æ’入一个值为 [param animation] 的键。"
+"[param track_idx] 必须是动画轨é“的索引。"
+
+msgid ""
+"Sets the key identified by [param key_idx] to value [param animation]. The "
+"[param track_idx] must be the index of an Animation Track."
+msgstr ""
+"将 [param key_idx] 标识的键设置为值 [param animation]。[param track_idx] 必须"
+"是动画轨é“的索引。"
+
+msgid ""
+"Returns the end offset of the key identified by [param key_idx]. The [param "
+"track_idx] must be the index of an Audio Track.\n"
+"End offset is the number of seconds cut off at the ending of the audio "
+"stream."
+msgstr ""
+"返回由 [param key_idx] 标识的键的结æŸå移é‡ã€‚[param track_idx] 必须是音频轨é“"
+"的索引。\n"
+"结æŸå移é‡æ˜¯åœ¨éŸ³é¢‘æµç»“æŸæ—¶æˆªæ–­çš„秒数。"
+
+msgid ""
+"Returns the start offset of the key identified by [param key_idx]. The "
+"[param track_idx] must be the index of an Audio Track.\n"
+"Start offset is the number of seconds cut off at the beginning of the audio "
+"stream."
+msgstr ""
+"返回由 [param key_idx] 标识的键的起始å移é‡ã€‚[param track_idx] 必须是音频轨é“"
+"的索引。\n"
+"起始å移é‡æ˜¯åœ¨éŸ³é¢‘æµå¼€å§‹æ—¶æˆªæ–­çš„秒数。"
+
+msgid ""
+"Returns the audio stream of the key identified by [param key_idx]. The "
+"[param track_idx] must be the index of an Audio Track."
+msgstr ""
+"返回由 [param key_idx] 标识的键的音频æµã€‚[param track_idx] 必须是音频轨é“çš„ç´¢"
+"引。"
+
+msgid ""
+"Inserts an Audio Track key at the given [param time] in seconds. The [param "
+"track_idx] must be the index of an Audio Track.\n"
+"[param stream] is the [AudioStream] resource to play. [param start_offset] "
+"is the number of seconds cut off at the beginning of the audio stream, while "
+"[param end_offset] is at the ending."
+msgstr ""
+"在 [param time] 秒处æ’入音频轨é“关键帧。[param track_idx] 必须是音频轨é“çš„ç´¢"
+"引。\n"
+"[param stream] 是è¦æ’­æ”¾çš„ [AudioStream] 资æºã€‚[param start_offset] 是音频æµå¼€"
+"头截断的秒数,而 [param end_offset] 是在结尾处截断的秒数。"
+
+msgid ""
+"Sets the end offset of the key identified by [param key_idx] to value [param "
+"offset]. The [param track_idx] must be the index of an Audio Track."
+msgstr ""
+"将由 [param key_idx] 标识的键的结æŸå移é‡è®¾ç½®ä¸ºå€¼ [param offset]。[param "
+"track_idx] 必须是音频轨é“的索引。"
+
+msgid ""
+"Sets the start offset of the key identified by [param key_idx] to value "
+"[param offset]. The [param track_idx] must be the index of an Audio Track."
+msgstr ""
+"将由 [param key_idx] 标识的键的起始å移é‡è®¾ç½®ä¸ºå€¼ [param offset]。[param "
+"track_idx] 必须是音频轨é“的索引。"
+
+msgid ""
+"Sets the stream of the key identified by [param key_idx] to value [param "
+"stream]. The [param track_idx] must be the index of an Audio Track."
+msgstr ""
+"将由 [param key_idx] 标识的键的æµè®¾ç½®ä¸ºå€¼ [param stream]。[param track_idx] "
+"必须是音频轨é“的索引。"
+
+msgid ""
+"Sets whether the track will be blended with other animations. If [code]true[/"
+"code], the audio playback volume changes depending on the blend value."
+msgstr ""
+"设置轨é“是å¦å°†ä¸Žå…¶ä»–动画混åˆã€‚如果为 [code]true[/code],音频播放音é‡ä¼šæ ¹æ®æ··"
+"åˆå€¼è€Œå˜åŒ–。"
+
+msgid ""
+"Returns the in handle of the key identified by [param key_idx]. The [param "
+"track_idx] must be the index of a Bezier Track."
+msgstr ""
+"返回由 [param key_idx] 识别的键的入点手柄,[param track_idx] 必须是è´èµ›å°”曲线"
+"轨é“的索引。"
+
+msgid ""
+"Returns the out handle of the key identified by [param key_idx]. The [param "
+"track_idx] must be the index of a Bezier Track."
+msgstr ""
+"返回由 [param key_idx] 识别的键的出点手柄,[param track_idx] 必须是è´èµ›å°”曲线"
+"轨é“的索引。"
+
+msgid ""
+"Returns the value of the key identified by [param key_idx]. The [param "
+"track_idx] must be the index of a Bezier Track."
+msgstr ""
+"返回由 [param key_idx] 识别的键的值,[param track_idx] 必须是è´å¡žå°”轨é“çš„ç´¢"
+"引。"
+
+msgid ""
+"Inserts a Bezier Track key at the given [param time] in seconds. The [param "
+"track_idx] must be the index of a Bezier Track.\n"
+"[param in_handle] is the left-side weight of the added Bezier curve point, "
+"[param out_handle] is the right-side one, while [param value] is the actual "
+"value at this point."
+msgstr ""
+"在给定的时间 [param time] 秒处æ’å…¥è´å¡žå°”轨é“键。[param track_idx] 必须是è´å¡ž"
+"尔轨é“的索引。\n"
+"[param in_handle] 是添加的è´å¡žå°”曲线点的左侧æƒé‡ï¼Œ[param out_handle] 是å³ä¾§æƒ"
+"é‡ï¼Œè€Œ [param value] 是这个点的实际值。"
+
+msgid ""
+"Returns the interpolated value at the given [param time] (in seconds). The "
+"[param track_idx] must be the index of a Bezier Track."
+msgstr ""
+"返回给定 [param time] 处的æ’值(以秒为å•ä½ï¼‰ã€‚[param track_idx] 必须是è´å¡žå°”"
+"轨é“的索引。"
+
+msgid ""
+"Sets the in handle of the key identified by [param key_idx] to value [param "
+"in_handle]. The [param track_idx] must be the index of a Bezier Track."
+msgstr ""
+"将 [param key_idx] 所标识的键的入点手柄设置为 [param in_handle] 值。[param "
+"track_idx] 必须是è´å¡žå°”轨é“的索引。"
+
+msgid ""
+"Sets the out handle of the key identified by [param key_idx] to value [param "
+"out_handle]. The [param track_idx] must be the index of a Bezier Track."
+msgstr ""
+"将由 [param key_idx] 确定的关键帧的出点手柄设置为 [param out_handle]。å‚æ•° "
+"[param track_idx] 必须是è´å¡žå°”轨é“的索引。"
+
+msgid ""
+"Sets the value of the key identified by [param key_idx] to the given value. "
+"The [param track_idx] must be the index of a Bezier Track."
+msgstr ""
+"å°† [param key_idx] 所标识的键值设置为给定值。[param track_idx] 必须是è´å¡žå°”轨"
+"é“的索引。"
+
+msgid "Inserts a key in a given blend shape track. Returns the key index."
+msgstr "在给定的混åˆå½¢çŠ¶è½¨é“中æ’入一个关键帧。返回键索引。"
+
msgid "Clear the animation (clear all tracks and reset all)."
msgstr "清除动画(清除所有轨é“并é‡ç½®æ‰€æœ‰ï¼‰ã€‚"
msgid ""
+"Compress the animation and all its tracks in-place. This will make [method "
+"track_is_compressed] return [code]true[/code] once called on this "
+"[Animation]. Compressed tracks require less memory to be played, and are "
+"designed to be used for complex 3D animations (such as cutscenes) imported "
+"from external 3D software. Compression is lossy, but the difference is "
+"usually not noticeable in real world conditions.\n"
+"[b]Note:[/b] Compressed tracks have various limitations (such as not being "
+"editable from the editor), so only use compressed animations if you actually "
+"need them."
+msgstr ""
+"就地压缩动画åŠå…¶æ‰€æœ‰è½¨é“。这将使 [method track_is_compressed] 一旦在这个 "
+"[Animation] 上被调用就会返回 [code]true[/code]。压缩åŽçš„轨é“在播放时需è¦æ›´å°‘"
+"的内存,并且这被设计用于从外部3D软件导入的å¤æ‚çš„3D动画(比如过场动画)。压缩"
+"是有æŸå¤±çš„,但现实中通常ä¸ä¼šæ³¨æ„到这ç§å·®å¼‚。\n"
+"[b]注æ„:[/b]压缩轨é“有å„ç§é™åˆ¶ï¼ˆæ¯”如ä¸èƒ½ä»Žç¼–辑器中编辑),所以åªæœ‰åœ¨ä½ çœŸæ­£éœ€"
+"è¦æ—¶æ‰ä½¿ç”¨åŽ‹ç¼©åŠ¨ç”»ã€‚"
+
+msgid ""
+"Adds a new track that is a copy of the given track from [param to_animation]."
+msgstr "添加一个新的轨é“,这个轨é“æ˜¯ç»™å®šè½¨é“ [param to_animation] 的副本。"
+
+msgid ""
"Returns the index of the specified track. If the track is not found, return "
"-1."
msgstr "返回指定轨迹的索引。如果没有找到,返回 -1。"
msgid "Returns the amount of tracks in the animation."
-msgstr "返回动画中的曲目é‡ã€‚"
+msgstr "返回动画中的轨é“数。"
msgid "Returns the method name of a method track."
-msgstr "返回一个方法轨迹的方法å。"
+msgstr "返回一个方法轨é“的方法å。"
msgid ""
"Returns the arguments values to be called on a method track for a given key "
"in a given track."
-msgstr "返回给定轨é“中给定键的方法轨é“上è¦è°ƒç”¨çš„å‚数值。"
+msgstr "返回给定方法轨é“中给定键的方法è¦è°ƒç”¨çš„å‚数值。"
+
+msgid "Inserts a key in a given 3D position track. Returns the key index."
+msgstr "在给定的 3D ä½ç½®è½¨é“中æ’入关键帧。返回该关键帧的索引。"
msgid "Removes a track by specifying the track index."
msgstr "通过指定轨é“索引æ¥ç§»é™¤ä¸€ä¸ªè½¨é“。"
+msgid "Inserts a key in a given 3D rotation track. Returns the key index."
+msgstr "在给定的 3D 旋转轨é“中æ’入关键帧。返回该关键帧的索引。"
+
+msgid "Inserts a key in a given 3D scale track. Returns the key index."
+msgstr "在给定的 3D 缩放轨é“中æ’入关键帧。返回该关键帧的索引。"
+
+msgid ""
+"Finds the key index by time in a given track. Optionally, only find it if "
+"the approx/exact time is given."
+msgstr ""
+"按时间查找给定轨é“中的关键帧索引。也å¯é€‰æ‹©åªåœ¨ç»™å®šå¤§çº¦/准确时间的情况下查找。"
+
+msgid ""
+"Returns [code]true[/code] if the track at [param track_idx] wraps the "
+"interpolation loop. New tracks wrap the interpolation loop by default."
+msgstr ""
+"如果 [param track_idx] 处的轨é“环绕æ’值循环,则返回 [code]true[/code]。新建的"
+"轨é“默认都会环绕æ’值循环。"
+
msgid "Returns the interpolation type of a given track."
msgstr "返回给定轨é“çš„æ’值类型。"
+msgid "Returns the number of keys in a given track."
+msgstr "返回给定轨é“中关键帧的数é‡ã€‚"
+
msgid "Returns the time at which the key is located."
msgstr "返回关键帧所在的时间。"
+msgid ""
+"Returns the transition curve (easing) for a specific key (see the built-in "
+"math function [method @GlobalScope.ease])."
+msgstr ""
+"返回给定关键帧的过渡曲线(缓动)(è§å†…置数学函数 [method @GlobalScope."
+"ease])。"
+
msgid "Returns the value of a given key in a given track."
msgstr "返回给定轨é“中给定关键帧的值。"
@@ -2639,6 +6324,20 @@ msgstr ""
msgid "Gets the type of a track."
msgstr "获å–轨é“的类型。"
+msgid "Inserts a generic key in a given track. Returns the key index."
+msgstr "在给定的轨é“中æ’入一个通用关键帧。返回关键帧索引。"
+
+msgid ""
+"Returns [code]true[/code] if the track is compressed, [code]false[/code] "
+"otherwise. See also [method compress]."
+msgstr ""
+"如果轨é“被压缩,则返回 [code]true[/code],å¦åˆ™è¿”回 [code]false[/code]。å¦è§ "
+"[method compress]。"
+
+msgid ""
+"Returns [code]true[/code] if the track at index [param track_idx] is enabled."
+msgstr "如果å¯ç”¨äº†ç´¢å¼• [param track_idx] 处的轨é“,则返回 [code]true[/code]。"
+
msgid ""
"Returns [code]true[/code] if the given track is imported. Else, return "
"[code]false[/code]."
@@ -2649,24 +6348,44 @@ msgstr ""
msgid "Moves a track down."
msgstr "将轨é“下移。"
+msgid ""
+"Changes the index position of track [param track_idx] to the one defined in "
+"[param to_idx]."
+msgstr "å°†è½¨é“ [param track_idx] 的索引ä½ç½®æ”¹ä¸º [param to_idx] 中定义的ä½ç½®ã€‚"
+
msgid "Moves a track up."
msgstr "将轨é“上移。"
msgid "Removes a key by index in a given track."
msgstr "在指定的轨é“上按索引移除一个键。"
+msgid "Removes a key at [param time] in a given track."
+msgstr "在给定轨é“中的 [param time] 移除一个键。"
+
msgid "Enables/disables the given track. Tracks are enabled by default."
-msgstr "å¯ç”¨/ç¦ç”¨æŒ‡å®šçš„轨é“。轨é“默认为å¯ç”¨ã€‚"
+msgstr "å¯ç”¨/ç¦ç”¨ç»™å®šçš„轨é“。轨é“默认为å¯ç”¨ã€‚"
msgid "Sets the given track as imported or not."
msgstr "将指定的轨é“设置为导入或ä¸å¯¼å…¥ã€‚"
+msgid ""
+"If [code]true[/code], the track at [param track_idx] wraps the interpolation "
+"loop."
+msgstr "如果为 [code]true[/code],则 [param track_idx] 处的轨é“环绕æ’值循环。"
+
msgid "Sets the interpolation type of a given track."
-msgstr "设置指定轨é“的内æ’类型。"
+msgstr "设置指定轨é“çš„æ’值类型。"
msgid "Sets the time of an existing key."
msgstr "设置现有关键帧的时间。"
+msgid ""
+"Sets the transition curve (easing) for a specific key (see the built-in math "
+"function [method @GlobalScope.ease])."
+msgstr ""
+"设置指定关键帧的过渡曲线(缓动)(å‚阅内置数学函数 [method @GlobalScope."
+"ease])。"
+
msgid "Sets the value of an existing key."
msgstr "设置现有关键帧的值。"
@@ -2684,9 +6403,22 @@ msgstr ""
"例如,[code]\"character/skeleton:ankle\"[/code] 或 [code]\"character/mesh:"
"transform/local\"[/code]。"
+msgid ""
+"Swaps the track [param track_idx]'s index position with the track [param "
+"with_idx]."
+msgstr ""
+"å°†è½¨é“ [param track_idx] 的索引ä½ç½®ä¸Žè½¨é“ [param with_idx] 的索引ä½ç½®äº’æ¢ã€‚"
+
msgid "Returns the update mode of a value track."
msgstr "返回值轨é“的更新模å¼ã€‚"
+msgid ""
+"Returns the interpolated value at the given time (in seconds). The [param "
+"track_idx] must be the index of a value track."
+msgstr ""
+"返回ä½äºŽç»™å®šæ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰çš„æ’值åŽçš„值。[param track_idx] 必须是值轨é“çš„"
+"索引。"
+
msgid "Sets the update mode (see [enum UpdateMode]) of a value track."
msgstr "设置值轨é“的更新模å¼ï¼ˆè¯·å‚阅 [enum UpdateMode])。"
@@ -2699,9 +6431,41 @@ msgstr ""
"[b]注æ„:[/b]长度ä¸ä»¥æœ€åŽä¸€ä¸ªå…³é”®å¸§ä¸ºç•Œï¼Œå› ä¸ºè¿™ä¸ªå…³é”®å¸§å¯èƒ½ä½äºŽç»“æŸå‰æˆ–结æŸ"
"åŽï¼Œä»¥ç¡®ä¿æ­£ç¡®çš„æ’值和循环。"
+msgid ""
+"Determines the behavior of both ends of the animation timeline during "
+"animation playback. This is used for correct interpolation of animation "
+"cycles, and for hinting the player that it must restart the animation."
+msgstr ""
+"确定动画播放期间动画时间轴两端的行为。 这用于动画循环的正确æ’值,以åŠæ示播放"
+"器必须é‡æ–°å¯åŠ¨åŠ¨ç”»ã€‚"
+
msgid "The animation step value."
msgstr "动画步长值。"
+msgid ""
+"Value tracks set values in node properties, but only those which can be "
+"interpolated. For 3D position/rotation/scale, using the dedicated [constant "
+"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] "
+"track types instead of [constant TYPE_VALUE] is recommended for performance "
+"reasons."
+msgstr ""
+"值轨é“设置节点属性中的值,但仅é™äºŽé‚£äº›å¯ä»¥è¢«æ’值的属性。对于 3D ä½ç½®/旋转/缩"
+"放,出于性能原因,建议使用专用的 [constant TYPE_POSITION_3D]ã€[constant "
+"TYPE_ROTATION_3D] å’Œ [constant TYPE_SCALE_3D] 轨é“类型而ä¸æ˜¯ [constant "
+"TYPE_VALUE]。"
+
+msgid "3D position track (values are stored in [Vector3]s)."
+msgstr "3D ä½ç½®è½¨é“(值存储在 [Vector3] 中)。"
+
+msgid "3D rotation track (values are stored in [Quaternion]s)."
+msgstr "3D 旋转轨é“(值存储在 [Quaternion] 中)。"
+
+msgid "3D scale track (values are stored in [Vector3]s)."
+msgstr "3D 缩放轨é“(值存储在 [Vector3] 中)。"
+
+msgid "Blend shape track."
+msgstr "æ··åˆå½¢çŠ¶è½¨é“。"
+
msgid "Method tracks call functions with given arguments per key."
msgstr "方法轨é“会在å„个关键帧上使用给定å‚数的调用函数。"
@@ -2730,6 +6494,35 @@ msgstr "æ— æ’值(最邻近的值)。"
msgid "Linear interpolation."
msgstr "线性æ’值。"
+msgid ""
+"Cubic interpolation. This looks smoother than linear interpolation, but is "
+"more expensive to interpolate. Stick to [constant INTERPOLATION_LINEAR] for "
+"complex 3D animations imported from external software, even if it requires "
+"using a higher animation framerate in return."
+msgstr ""
+"三次æ’值。这看起æ¥æ¯”线性æ’值更平滑,但æ’值æˆæœ¬æ›´é«˜ã€‚对于从外部软件导入的å¤æ‚ "
+"3D 动画,åšæŒä½¿ç”¨ [constant INTERPOLATION_LINEAR],å³ä½¿å®ƒéœ€è¦ä½¿ç”¨æ›´é«˜çš„动画帧"
+"率作为回报。"
+
+msgid ""
+"Linear interpolation with shortest path rotation.\n"
+"[b]Note:[/b] The result value is always normalized and may not match the key "
+"value."
+msgstr ""
+"具有最短路径旋转的线性æ’值。\n"
+"[b]注æ„:[/b]结果值总是归一化的,å¯èƒ½ä¸Žå…³é”®å¸§çš„值ä¸åŒ¹é…。"
+
+msgid ""
+"Cubic interpolation with shortest path rotation.\n"
+"[b]Note:[/b] The result value is always normalized and may not match the key "
+"value."
+msgstr ""
+"具有最短路径旋转的三次æ’值。\n"
+"[b]注æ„:[/b]结果值总是归一化的,å¯èƒ½ä¸Žå…³é”®å¸§çš„值ä¸åŒ¹é…。"
+
+msgid "Update between keyframes and hold the value."
+msgstr "在关键帧之间更新并ä¿æŒå€¼ã€‚"
+
msgid "Update at the keyframes."
msgstr "在关键帧更新。"
@@ -2740,9 +6533,104 @@ msgstr ""
"与线性æ’值相åŒï¼Œä½†å¦‚果第一个关键帧ä¸åœ¨ç¬¬ 0 秒,则会从当å‰å€¼è¿›è¡Œæ’值(å³åœ¨è¿è¡Œ"
"时动æ€æ’值)。"
+msgid "At both ends of the animation, the animation will stop playing."
+msgstr "在动画的两端,动画将åœæ­¢æ’­æ”¾ã€‚"
+
+msgid ""
+"At both ends of the animation, the animation will be repeated without "
+"changing the playback direction."
+msgstr "在动画的两端,动画会在ä¸æ”¹å˜æ’­æ”¾æ–¹å‘的情况下é‡å¤æ’­æ”¾ã€‚"
+
+msgid "Repeats playback and reverse playback at both ends of the animation."
+msgstr "在动画的两端é‡å¤è¿›è¡Œæ’­æ”¾å’Œåå‘播放。"
+
+msgid "This flag indicates that the animation proceeds without any looping."
+msgstr "该标志指示动画在没有任何循环的情况下继续进行。"
+
+msgid ""
+"This flag indicates that the animation has reached the end of the animation "
+"and just after loop processed."
+msgstr "该标志表示动画已到达动画的末尾并且刚好在循环处ç†ä¹‹åŽã€‚"
+
+msgid ""
+"This flag indicates that the animation has reached the start of the "
+"animation and just after loop processed."
+msgstr "该标志表示动画已ç»åˆ°è¾¾åŠ¨ç”»çš„开始并且刚好在循环处ç†ä¹‹åŽã€‚"
+
+msgid "Finds the nearest time key."
+msgstr "查找最近的时间键。"
+
+msgid "Finds only the key with approximating the time."
+msgstr "仅查找与时间相近的键。"
+
+msgid "Finds only the key with matching the time."
+msgstr "仅查找与时间匹é…的键。"
+
+msgid "Container for [Animation] resources."
+msgstr "[Animation] 资æºçš„容器。"
+
+msgid ""
+"An animation library stores a set of animations accessible through "
+"[StringName] keys, for use with [AnimationPlayer] nodes."
+msgstr ""
+"动画库存储一组å¯é€šè¿‡ [StringName] 键访问的动画,å¯ç”¨äºŽ [AnimationPlayer] 节"
+"点。"
+
msgid "Animation tutorial index"
msgstr "动画教程索引"
+msgid ""
+"Adds the [param animation] to the library, accessible by the key [param "
+"name]."
+msgstr "å°† [param animation] 添加到库中,å¯é€šè¿‡é”® [param name] 访问。"
+
+msgid ""
+"Returns the [Animation] with the key [param name]. If the animation does not "
+"exist, [code]null[/code] is returned and an error is logged."
+msgstr ""
+"返回带有键 [param name] çš„ [Animation]。如果动画ä¸å­˜åœ¨ï¼Œåˆ™è¿”回 [code]null[/"
+"code] 并记录错误。"
+
+msgid "Returns the keys for the [Animation]s stored in the library."
+msgstr "返回库中存储的 [Animation] 的键。"
+
+msgid ""
+"Returns [code]true[/code] if the library stores an [Animation] with [param "
+"name] as the key."
+msgstr ""
+"如果该库存储了以 [param name] 作为键的 [Animation],则返回 [code]true[/"
+"code]。"
+
+msgid "Removes the [Animation] with the key [param name]."
+msgstr "使用键 [param name] 移除 [Animation]。"
+
+msgid ""
+"Changes the key of the [Animation] associated with the key [param name] to "
+"[param newname]."
+msgstr "将与键 [param name] å…³è”çš„ [Animation] 的键更改为 [param newname]。"
+
+msgid "Emitted when an [Animation] is added, under the key [param name]."
+msgstr "在键 [param name] 下添加 [Animation] æ—¶å‘出。"
+
+msgid ""
+"Emitted when there's a change in one of the animations, e.g. tracks are "
+"added, moved or have changed paths. [param name] is the key of the animation "
+"that was changed.\n"
+"See also [signal Resource.changed], which this acts as a relay for."
+msgstr ""
+"当其中一个动画å‘生å˜åŒ–æ—¶å‘出,例如轨é“被添加ã€ç§»åŠ¨ï¼Œæˆ–路径被更改。[param "
+"name] 是被改å˜çš„动画的键。\n"
+"å¦è§ [signal Resource.changed],本信å·å……当该信å·çš„中继。"
+
+msgid ""
+"Emitted when an [Animation] stored with the key [param name] is removed."
+msgstr "当使用键 [param name] 存储的 [Animation] 被移除时å‘出。"
+
+msgid ""
+"Emitted when the key for an [Animation] is changed, from [param name] to "
+"[param to_name]."
+msgstr "当 [Animation] 的键从 [param name] 更改为 [param to_name] æ—¶å‘出。"
+
msgid "Base resource for [AnimationTree] nodes."
msgstr "[AnimationTree] 节点的基础资æºã€‚"
@@ -2768,6 +6656,13 @@ msgstr ""
msgid ""
"When inheriting from [AnimationRootNode], implement this virtual method to "
+"return a child node by its [param name]."
+msgstr ""
+"继承 [AnimationRootNode] 时,实现这个虚方法å¯ä»¥æ ¹æ®å称 [param name] æ¥è¿”回对"
+"应的å­èŠ‚点。"
+
+msgid ""
+"When inheriting from [AnimationRootNode], implement this virtual method to "
"return all children nodes in order as a [code]name: node[/code] dictionary."
msgstr ""
"继承 [AnimationRootNode] 时,实现这个虚方法å¯ä»¥ç”¨ [code]å称:节点[/code] å­—å…¸"
@@ -2775,6 +6670,14 @@ msgstr ""
msgid ""
"When inheriting from [AnimationRootNode], implement this virtual method to "
+"return the default value of a [param parameter]. Parameters are custom local "
+"memory used for your nodes, given a resource can be reused in multiple trees."
+msgstr ""
+"继承 [AnimationRootNode] 时,实现这个虚方法å¯ä»¥è¿”回å‚数“[param parameter]â€çš„"
+"默认值。å‚数是节点的自定义本地存储,资æºå¯ä»¥åœ¨å¤šä¸ªæ ‘中é‡ç”¨ã€‚"
+
+msgid ""
+"When inheriting from [AnimationRootNode], implement this virtual method to "
"return a list of the properties on this node. Parameters are custom local "
"memory used for your nodes, given a resource can be reused in multiple "
"trees. Format is similar to [method Object.get_property_list]."
@@ -2792,12 +6695,78 @@ msgstr ""
"节点上显示过滤器编辑。"
msgid ""
+"When inheriting from [AnimationRootNode], implement this virtual method to "
+"return whether the [param parameter] is read-only. Parameters are custom "
+"local memory used for your nodes, given a resource can be reused in multiple "
+"trees."
+msgstr ""
+"继承 [AnimationRootNode] 时,实现这个虚方法å¯ä»¥è¿”回å‚æ•° [param parameter] 是"
+"å¦åªè¯»ã€‚å‚数是节点的自定义本地存储,资æºå¯ä»¥åœ¨å¤šä¸ªæ ‘中é‡ç”¨ã€‚"
+
+msgid ""
+"When inheriting from [AnimationRootNode], implement this virtual method to "
+"run some code when this node is processed. The [param time] parameter is a "
+"relative delta, unless [param seek] is [code]true[/code], in which case it "
+"is absolute.\n"
+"Here, call the [method blend_input], [method blend_node] or [method "
+"blend_animation] functions. You can also use [method get_parameter] and "
+"[method set_parameter] to modify local memory.\n"
+"This function should return the time left for the current animation to "
+"finish (if unsure, pass the value from the main blend being called)."
+msgstr ""
+"继承 [AnimationRootNode] 时,实现这个虚方法å¯ä»¥åœ¨è¿™ä¸ªèŠ‚点进行处ç†æ—¶æ‰§è¡Œä»£ç ã€‚"
+"å‚æ•° [param time] 是相对增é‡ï¼Œé™¤éž [param seek] 为 [code]true[/code],此时为"
+"ç»å¯¹å¢žé‡ã€‚\n"
+"请在此处调用 [method blend_input]ã€[method blend_node] 或 [method "
+"blend_animation] 函数。你也å¯ä»¥ä½¿ç”¨ [method get_parameter] å’Œ [method "
+"set_parameter] æ¥ä¿®æ”¹æœ¬åœ°å­˜å‚¨ã€‚\n"
+"这个函数应当返回当å‰åŠ¨ç”»è¿˜éœ€å¤šå°‘时间完æˆï¼ˆä¸ç¡®å®šçš„è¯ï¼Œè¯·ä¼ é€’调用主混åˆçš„"
+"值)。"
+
+msgid ""
+"Adds an input to the node. This is only useful for nodes created for use in "
+"an [AnimationNodeBlendTree]. If the addition fails, returns [code]false[/"
+"code]."
+msgstr ""
+"为节点添加一个输入。这åªå¯¹åˆ›å»ºç”¨äºŽ [AnimationNodeBlendTree] 的节点有用。如果"
+"添加失败,返回 [code]false[/code]。"
+
+msgid ""
+"Blend an animation by [param blend] amount (name must be valid in the linked "
+"[AnimationPlayer]). A [param time] and [param delta] may be passed, as well "
+"as whether [param seeked] happened.\n"
+"A [param looped_flag] is used by internal processing immediately after the "
+"loop. See also [enum Animation.LoopedFlag]."
+msgstr ""
+"按 [param blend] é‡æ··åˆä¸€ä¸ªåŠ¨ç”»ï¼ˆå称必须在链接的 [AnimationPlayer] 中有"
+"效)。å¯ä»¥ä¼ å…¥æ—¶é—´ [param time] å’Œå¢žé‡ [param delta],以åŠè¡¨ç¤ºæ˜¯å¦å‘生寻é“çš„ "
+"[param seeked]。\n"
+"[param looped_flag] 在循环åŽç«‹å³ç”±å†…部处ç†ä½¿ç”¨ã€‚å¦è§ [enum Animation."
+"LoopedFlag]。"
+
+msgid ""
+"Blend an input. This is only useful for nodes created for an "
+"[AnimationNodeBlendTree]. The [param time] parameter is a relative delta, "
+"unless [param seek] is [code]true[/code], in which case it is absolute. A "
+"filter mode may be optionally passed (see [enum FilterAction] for options)."
+msgstr ""
+"æ··åˆä¸€ä¸ªè¾“入。这åªå¯¹ä¸º [AnimationNodeBlendTree] 创建的节点有用。时间å‚æ•° "
+"[param time] 是一个相对的增é‡ï¼Œé™¤éž [param seek] 是 [code]true[/code],此时它"
+"是ç»å¯¹çš„。å¯ä»¥é€‰æ‹©ä¼ å…¥è¿‡æ»¤æ¨¡å¼ï¼ˆé€‰é¡¹è¯·å‚阅 [enum FilterAction])。"
+
+msgid ""
"Blend another animation node (in case this node contains children animation "
"nodes). This function is only useful if you inherit from [AnimationRootNode] "
"instead, else editors will not display your node for addition."
msgstr ""
"æ··åˆå¦ä¸€ä¸ªåŠ¨ç”»èŠ‚点(在这个节点包å«å­åŠ¨ç”»èŠ‚点的情况下)。这个函数åªæœ‰åœ¨ä½ ç»§æ‰¿ "
-"[AnimationRootNode] æ—¶æ‰æœ‰ç”¨ï¼Œå¦åˆ™ç¼–辑器将ä¸ä¼šæ˜¾ç¤ºä½ çš„节点进行添加。"
+"[AnimationRootNode] æ—¶æ‰æœ‰ç”¨ï¼Œå¦åˆ™ç¼–辑器将ä¸ä¼šæ˜¾ç¤ºä½ çš„节点以供添加。"
+
+msgid ""
+"Returns the input index which corresponds to [param name]. If not found, "
+"returns [code]-1[/code]."
+msgstr ""
+"返回与å称 [param name] 相关的输入索引,如果ä¸å­˜åœ¨åˆ™è¿”回 [code]-1[/code]。"
msgid ""
"Amount of inputs in this node, only useful for nodes that go into "
@@ -2815,7 +6784,7 @@ msgstr ""
"中é‡å¤ä½¿ç”¨ã€‚"
msgid "Returns whether the given path is filtered."
-msgstr "返回是å¦å¯¹ç»™å®šçš„路径进行过滤。"
+msgstr "返回给定路径是å¦è¢«è¿‡æ»¤ã€‚"
msgid "Removes an input, call this only when inactive."
msgstr "移除输入,仅在处于éžæ´»åŠ¨çŠ¶æ€æ—¶è°ƒç”¨æ­¤è¾“入。"
@@ -2824,6 +6793,13 @@ msgid "Adds or removes a path for the filter."
msgstr "添加或移除筛选器的路径。"
msgid ""
+"Sets the name of the input at the given [param input] index. If the setting "
+"fails, returns [code]false[/code]."
+msgstr ""
+"在给定的 [param input] 索引处设置输入的å称。如果设置失败,返回 [code]false[/"
+"code]。"
+
+msgid ""
"Sets a custom parameter. These are used as local memory, because resources "
"can be reused across the tree or scenes."
msgstr ""
@@ -2833,6 +6809,38 @@ msgstr ""
msgid "If [code]true[/code], filtering is enabled."
msgstr "如果为 [code]true[/code],则å¯ç”¨ç­›é€‰åŠŸèƒ½ã€‚"
+msgid ""
+"Emitted by nodes that inherit from this class and that have an internal tree "
+"when one of their nodes removes. The nodes that emit this signal are "
+"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], "
+"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]."
+msgstr ""
+"由继承自该类的节点å‘出,并且当其中一个节点移除时具有内部树。å‘出此信å·çš„节点"
+"å¯ä»¥æ˜¯ [AnimationNodeBlendSpace1D]ã€[AnimationNodeBlendSpace2D]ã€"
+"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。"
+
+msgid ""
+"Emitted by nodes that inherit from this class and that have an internal tree "
+"when one of their node names changes. The nodes that emit this signal are "
+"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], "
+"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]."
+msgstr ""
+"由继承自该类的节点å‘出,并且当其中一个节点å称更改时具有内部树。å‘出此信å·çš„"
+"节点å¯ä»¥æ˜¯ [AnimationNodeBlendSpace1D]ã€[AnimationNodeBlendSpace2D]ã€"
+"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。"
+
+msgid ""
+"Emitted by nodes that inherit from this class and that have an internal tree "
+"when one of their nodes changes. The nodes that emit this signal are "
+"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], "
+"[AnimationNodeStateMachine], [AnimationNodeBlendTree] and "
+"[AnimationNodeTransition]."
+msgstr ""
+"由继承自该类的节点å‘出,并且当其一个节点å‘生å˜åŒ–时具有内部树。å‘出此信å·çš„节"
+"点å¯ä»¥æ˜¯ [AnimationNodeBlendSpace1D]ã€[AnimationNodeBlendSpace2D]ã€"
+"[AnimationNodeStateMachine]ã€[AnimationNodeBlendTree] å’Œ "
+"[AnimationNodeTransition]。"
+
msgid "Do not use filtering."
msgstr "ä¸è¦ä½¿ç”¨ç­›é€‰åŠŸèƒ½ã€‚"
@@ -2875,19 +6883,19 @@ msgstr ""
"内的值,将三个动画中的两个动画加法混åˆåœ¨ä¸€èµ·ã€‚\n"
"这个节点有三个输入。\n"
"- è¦æ·»åŠ åˆ°åŸºç¡€åŠ¨ç”»ä¸­çš„动画\n"
-"- 当混åˆé‡åœ¨ [code][-1.0,0.0][/code] 范围内时,添加动画进行混åˆã€‚\n"
-"- 当混åˆé‡åœ¨ [code][0.0,1.0][/code] 范围内时,添加动画进行混åˆ"
+"- 当混åˆé‡åœ¨ [code][-1.0,0.0][/code] 范围内时,-add 进行混åˆã€‚\n"
+"- 当混åˆé‡åœ¨ [code][0.0,1.0][/code] 范围内时,+add 进行混åˆ"
msgid "Input animation to use in an [AnimationNodeBlendTree]."
-msgstr "输入è¦åœ¨ [AnimationNodeBlendTree] 中使用的动画。"
+msgstr "è¦åœ¨ [AnimationNodeBlendTree] 中使用的输入动画。"
msgid ""
"A resource to add to an [AnimationNodeBlendTree]. Only features one output "
"set using the [member animation] property. Use it as an input for "
"[AnimationNode] that blend animations together."
msgstr ""
-"添加到 [AnimationNodeBlendTree] 的资æºã€‚åªå…·æœ‰ä¸€ä¸ªä½¿ç”¨ [member animation] 属"
-"性的输出集。将其作为 [AnimationNode] 的输入,将动画èžåˆåœ¨ä¸€èµ·ã€‚"
+"一ç§æ·»åŠ åˆ° [AnimationNodeBlendTree] 的资æºã€‚仅使用 [member animation] 属性设"
+"置一个输出集。将其作为 [AnimationNode] 的输入,将动画混åˆåœ¨ä¸€èµ·ã€‚"
msgid "3D Platformer Demo"
msgstr "3D å¹³å°è·³è·ƒæ¼”示"
@@ -2898,6 +6906,9 @@ msgid ""
msgstr ""
"作为输出使用的动画。它是 [member AnimationTree.anim_player] æ供的动画之一。"
+msgid "Determines the playback direction of the animation."
+msgstr "确定动画的播放方å‘。"
+
msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]."
msgstr "在 [AnimationNodeBlendTree] 中将两个动画进行线性混åˆã€‚"
@@ -2924,12 +6935,12 @@ msgid ""
"- A +blend animation to blend with when the blend amount is in the [code]"
"[0.0, 1.0][/code] range"
msgstr ""
-"添加到 [AnimationNodeBlendTree] 的资æºã€‚æ ¹æ®[code][-1.0,1.0][/code]范围内的"
-"值,将三个动画中的两个动画线性地混åˆåœ¨ä¸€èµ·ã€‚\n"
-"这个节点有三个输入。\n"
+"一ç§æ·»åŠ åˆ° [AnimationNodeBlendTree] 的资æºã€‚æ ¹æ®èŒƒå›´åœ¨ [code][-1.0,1.0][/"
+"code] 内的值,将三个动画中的两个动画,线性地混åˆåœ¨ä¸€èµ·ã€‚\n"
+"这个节点有三个输入:\n"
"- 基础动画\n"
-"- 当混åˆé‡åœ¨[code][-1.0,0.0][/code]范围内时,使用-æ··åˆåŠ¨ç”»è¿›è¡Œæ··åˆã€‚\n"
-"- 当混åˆé‡åœ¨[code][0.0,1.0][/code]范围内时,è¦ä½¿ç”¨+æ··åˆåŠ¨ç”»è¿›è¡Œæ··åˆ"
+"- 当混åˆé‡åœ¨ [code][-1.0,0.0][/code] 范围内时,使用 -blend 动画进行混åˆã€‚\n"
+"- 当混åˆé‡åœ¨ [code][0.0,1.0][/code] 范围内时,使用 +blend 动画进行混åˆ"
msgid ""
"Blends linearly between two of any number of [AnimationNode] of any type "
@@ -2950,13 +6961,41 @@ msgstr ""
"å¯æ·»åŠ åˆ° [AnimationNodeBlendTree] 的资æºã€‚\n"
"这是一个虚拟轴,您å¯ä»¥ä½¿ç”¨ [method add_blend_point] 在上é¢æ·»åŠ ä»»ä½•ç±»åž‹çš„ "
"[AnimationNode]。\n"
-"输出最接近节点当å‰å€¼çš„两个 [AnimationNode] 的线性混åˆã€‚\n"
-"您å¯ä»¥ä½¿ç”¨ [member min_space] å’Œ [member max_space] æ¥è®¾ç½®è½´çš„外延。"
+"输出最接近节点当å‰å€¼çš„两个 [AnimationNode] 之间的线性混åˆã€‚\n"
+"您å¯ä»¥ä½¿ç”¨ [member min_space] å’Œ [member max_space] æ¥è®¾ç½®è½´çš„范围。"
+
+msgid ""
+"Adds a new point that represents a [param node] on the virtual axis at a "
+"given position set by [param pos]. You can insert it at a specific index "
+"using the [param at_index] argument. If you use the default value for [param "
+"at_index], the point is inserted at the end of the blend points array."
+msgstr ""
+"在虚拟轴上 [param pos] 设定的给定ä½ç½®ï¼Œæ·»åŠ ä¸€ä¸ªæ–°ç‚¹ä»£è¡¨ [param node]。您å¯ä»¥"
+"使用 [param at_index] å‚数在特定的索引处æ’入新点。如果您使用 [param "
+"at_index] 的默认值,该点会被æ’入到混åˆç‚¹æ•°ç»„的末尾。"
msgid "Returns the number of points on the blend axis."
msgstr "返回混åˆè½´ä¸Šçš„点的数é‡ã€‚"
msgid ""
+"Returns the [AnimationNode] referenced by the point at index [param point]."
+msgstr "返回索引 [param point] 处的点所引用的 [AnimationNode]。"
+
+msgid "Returns the position of the point at index [param point]."
+msgstr "返回索引 [param point] 处的点的ä½ç½®ã€‚"
+
+msgid "Removes the point at index [param point] from the blend axis."
+msgstr "从混åˆè½´ç§»é™¤ç´¢å¼• [param point] 处的点。"
+
+msgid ""
+"Changes the [AnimationNode] referenced by the point at index [param point]."
+msgstr "更改索引 [param point] 处的点所引用的 [AnimationNode]。"
+
+msgid ""
+"Updates the position of the point at index [param point] on the blend axis."
+msgstr "æ›´æ–°æ··åˆè½´ä¸Šç´¢å¼• [param point] 处的点的ä½ç½®ã€‚"
+
+msgid ""
"Controls the interpolation between animations. See [enum BlendMode] "
"constants."
msgstr "控制动画之间的æ’å€¼ã€‚è§ [enum BlendMode] 常é‡ã€‚"
@@ -2964,21 +7003,30 @@ msgstr "控制动画之间的æ’å€¼ã€‚è§ [enum BlendMode] 常é‡ã€‚"
msgid ""
"The blend space's axis's upper limit for the points' position. See [method "
"add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸Šé™ã€‚è§ [method add_blend_point]。"
+msgstr "用于点ä½ç½®çš„æ··åˆç©ºé—´è½´çš„上é™ã€‚è§ [method add_blend_point]。"
msgid ""
"The blend space's axis's lower limit for the points' position. See [method "
"add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„轴的点的ä½ç½®ä¸‹é™ã€‚è§ [method add_blend_point]。"
+msgstr "用于点ä½ç½®çš„æ··åˆç©ºé—´è½´çš„下é™ã€‚è§ [method add_blend_point]。"
msgid "Position increment to snap to when moving a point on the axis."
msgstr "当在轴上移动一个点时,è¦æ•æ‰åˆ°çš„ä½ç½®å¢žé‡ã€‚"
+msgid ""
+"If [code]false[/code], the blended animations' frame are stopped when the "
+"blend value is [code]0[/code].\n"
+"If [code]true[/code], forcing the blended animations to advance frame."
+msgstr ""
+"如果为 [code]false[/code],则当混åˆå€¼ä¸º [code]0[/code] 时,åœæ­¢æ··åˆåŠ¨ç”»çš„"
+"帧。\n"
+"如果为 [code]true[/code],则强制混åˆåŠ¨ç”»ä»¥å‰è¿›å¸§ã€‚"
+
msgid "Label of the virtual axis of the blend space."
msgstr "æ··åˆç©ºé—´è™šæ‹Ÿè½´çš„标签。"
msgid "The interpolation between animations is linear."
-msgstr "动画之间的æ’点是线性的。"
+msgstr "动画之间的æ’值是线性的。"
msgid ""
"The blend space plays the animation of the node the blending position is "
@@ -2995,7 +7043,7 @@ msgstr ""
msgid ""
"Blends linearly between three [AnimationNode] of any type placed in a 2D "
"space."
-msgstr "在 2D 空间中放置的三个任æ„类型的 [AnimationNode] 之间线性èžåˆã€‚"
+msgstr "在 2D 空间中放置的三个任æ„类型的 [AnimationNode] 之间线性混åˆã€‚"
msgid ""
"A resource to add to an [AnimationNodeBlendTree].\n"
@@ -3012,13 +7060,50 @@ msgstr ""
"auto_triangles] 设置为 [code]true[/code] æ¥è‡ªåŠ¨è¿›è¡Œä¸‰è§’测é‡ã€‚å¦åˆ™ï¼Œè¯·ä½¿ç”¨ "
"[method add_triangle] å’Œ [method remove_triangle] 手工创建混åˆç©ºé—´ã€‚"
+msgid ""
+"Adds a new point that represents a [param node] at the position set by "
+"[param pos]. You can insert it at a specific index using the [param "
+"at_index] argument. If you use the default value for [param at_index], the "
+"point is inserted at the end of the blend points array."
+msgstr ""
+"在 [param pos] 设定的ä½ç½®æ·»åŠ ä¸€ä¸ªä»£è¡¨ [param node] 的新点。您å¯ä»¥ä½¿ç”¨ [param "
+"at_index] å‚数将它æ’入到特定的索引中。如果您使用 [param at_index] 的默认值,"
+"这个点会被æ’入到混åˆç‚¹æ•°ç»„的末尾。"
+
+msgid ""
+"Creates a new triangle using three points [param x], [param y], and [param "
+"z]. Triangles can overlap. You can insert the triangle at a specific index "
+"using the [param at_index] argument. If you use the default value for [param "
+"at_index], the point is inserted at the end of the blend points array."
+msgstr ""
+"使用三个点 [param x]ã€[param y] å’Œ [param z] 创建一个新三角形。三角形å¯ä»¥é‡"
+"å ã€‚å¯ä»¥ä½¿ç”¨ [param at_index] å‚数在特定索引处æ’入三角形。如果使用 [param "
+"at_index] 的默认值,该点将æ’入到混åˆç‚¹æ•°ç»„的末尾。"
+
msgid "Returns the number of points in the blend space."
msgstr "返回混åˆç©ºé—´ä¸­çš„点的数é‡ã€‚"
+msgid ""
+"Returns the [AnimationRootNode] referenced by the point at index [param "
+"point]."
+msgstr "返回索引 [param point] 处的点所引用的 [AnimationRootNode]。"
+
msgid "Returns the number of triangles in the blend space."
msgstr "返回混åˆç©ºé—´ä¸­ä¸‰è§’形的数é‡ã€‚"
msgid ""
+"Returns the position of the point at index [param point] in the triangle of "
+"index [param triangle]."
+msgstr ""
+"返回索引 [param point] 处的点在索引 [param triangle] 的三角形中的ä½ç½®ã€‚"
+
+msgid "Removes the point at index [param point] from the blend space."
+msgstr "从混åˆç©ºé—´ä¸­ç§»é™¤ç´¢å¼• [param point] 处的点。"
+
+msgid "Removes the triangle at index [param triangle] from the blend space."
+msgstr "从混åˆç©ºé—´ä¸­ç§»é™¤ç´¢å¼• [param triangle] 处的三角形。"
+
+msgid ""
"If [code]true[/code], the blend space is triangulated automatically. The "
"mesh updates every time you add or remove points with [method "
"add_blend_point] and [method remove_blend_point]."
@@ -3030,15 +7115,17 @@ msgstr ""
msgid ""
"The blend space's X and Y axes' upper limit for the points' position. See "
"[method add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„ X è½´å’Œ Y 轴的点的ä½ç½®ä¸Šé™ã€‚è§ [method add_blend_point]。"
+msgstr ""
+"用于点的ä½ç½®çš„æ··åˆç©ºé—´çš„ X è½´å’Œ Y 轴的上é™ã€‚请å‚阅 [method add_blend_point]。"
msgid ""
"The blend space's X and Y axes' lower limit for the points' position. See "
"[method add_blend_point]."
-msgstr "æ··åˆç©ºé—´çš„ X è½´å’Œ Y 轴的点的ä½ç½®ä¸‹é™ã€‚è§ [method add_blend_point]。"
+msgstr ""
+"用于点的ä½ç½®çš„æ··åˆç©ºé—´çš„ X è½´å’Œ Y 轴的下é™ã€‚请å‚阅 [method add_blend_point]。"
msgid "Position increment to snap to when moving a point."
-msgstr "移动点时è¦å¯¹é½çš„ä½ç½®å¢žé‡ã€‚"
+msgstr "移动点时è¦å¸é™„到的ä½ç½®å¢žé‡ã€‚"
msgid "Name of the blend space's X axis."
msgstr "æ··åˆç©ºé—´ X è½´çš„å称。"
@@ -3066,9 +7153,33 @@ msgstr ""
"最常用的根之一。\n"
"默认会创建一个å为 [code]output[/code] çš„ [AnimationNodeOutput] 节点。"
+msgid ""
+"Adds an [AnimationNode] at the given [param position]. The [param name] is "
+"used to identify the created sub-node later."
+msgstr ""
+"在给定的 [param position] 添加一个 [AnimationNode]。[param name] 用于ç¨åŽè¯†åˆ«"
+"该创建的å­èŠ‚点。"
+
+msgid ""
+"Connects the output of an [AnimationNode] as input for another "
+"[AnimationNode], at the input port specified by [param input_index]."
+msgstr ""
+"连接一个 [AnimationNode] 的输出作为å¦ä¸€ä¸ª [AnimationNode] 的输入,连接在 "
+"[param input_index] 指定的输入端å£ã€‚"
+
msgid "Disconnects the node connected to the specified input."
msgstr "断开连接到指定输入端的节点。"
+msgid "Returns the sub-node with the specified [param name]."
+msgstr "返回å称为 [param name] çš„å­èŠ‚点。"
+
+msgid "Returns the position of the sub-node with the specified [param name]."
+msgstr "返回å称为 [param name] çš„å­èŠ‚点的ä½ç½®ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if a sub-node with specified [param name] exists."
+msgstr "如果存在å称为 [param name] çš„å­èŠ‚点,则返回 [code]true[/code]。"
+
msgid "Removes a sub-node."
msgstr "移除一个å­èŠ‚点。"
@@ -3081,6 +7192,9 @@ msgstr "修改å­èŠ‚点的ä½ç½®ã€‚"
msgid "The global offset of all sub-nodes."
msgstr "所有å­èŠ‚点的全局å移é‡ã€‚"
+msgid "Emitted when the input port information is changed."
+msgstr "当输入端å£ä¿¡æ¯å‘生更改时å‘出。"
+
msgid "The connection was successful."
msgstr "连接æˆåŠŸã€‚"
@@ -3102,19 +7216,6 @@ msgstr "指定的连接已ç»å­˜åœ¨ã€‚"
msgid "Plays an animation once in [AnimationNodeBlendTree]."
msgstr "在 [AnimationNodeBlendTree] 中播放一次动画。"
-msgid ""
-"A resource to add to an [AnimationNodeBlendTree]. This node will execute a "
-"sub-animation and return once it finishes. Blend times for fading in and out "
-"can be customized, as well as filters."
-msgstr ""
-"å¯æ·»åŠ åˆ° [AnimationNodeBlendTree] 的资æºã€‚这个节点将执行一个å­åŠ¨ç”»ï¼Œå¹¶åœ¨å®Œæˆ"
-"åŽè¿”回。å¯ä»¥è‡ªå®šä¹‰æ·¡å…¥å’Œæ·¡å‡ºçš„æ··åˆæ—¶é—´ï¼Œä»¥åŠè¿‡æ»¤å™¨ã€‚"
-
-msgid ""
-"If [code]true[/code], the sub-animation will restart automatically after "
-"finishing."
-msgstr "如果为 [code]true[/code],则å­åŠ¨ç”»å®ŒæˆåŽä¼šè‡ªåŠ¨é‡æ–°å¼€å§‹ã€‚"
-
msgid "The delay after which the automatic restart is triggered, in seconds."
msgstr "触å‘自动é‡å¯çš„延迟时间,以秒为å•ä½ã€‚"
@@ -3132,11 +7233,51 @@ msgstr "å¯æ·»åŠ åˆ° [AnimationNodeBlendTree] 的通用输出节点。"
msgid "State machine for control of animations."
msgstr "用于控制动画的状æ€æœºã€‚"
+msgid ""
+"Contains multiple nodes representing animation states, connected in a graph. "
+"Node transitions can be configured to happen automatically or via code, "
+"using a shortest-path algorithm. Retrieve the "
+"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to "
+"control it programmatically.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")."
+"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n"
+"stateMachine.Travel(\"some_state\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"包å«è¡¨ç¤ºåŠ¨ç”»çŠ¶æ€çš„多个节点,以图的形å¼è¿žæŽ¥ã€‚å¯ä»¥ä½¿ç”¨æœ€çŸ­è·¯å¾„算法,将节点过渡"
+"é…置为自动å‘生或通过代ç å‘生。从 [AnimationTree] 节点检索 "
+"[AnimationNodeStateMachinePlayback] 对象,以编程方å¼æŽ§åˆ¶å®ƒã€‚\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")."
+"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n"
+"stateMachine.Travel(\"some_state\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Adds a new node to the graph. The [param position] is used for display in "
+"the editor."
+msgstr "å‘图中添加一个新节点。[param position] 用于在编辑器中显示。"
+
msgid "Adds a transition between the given nodes."
msgstr "在给定节点之间添加一个过渡。"
msgid "Returns the draw offset of the graph. Used for display in the editor."
-msgstr "返回图形的绘制å移。用于编辑器中的显示。"
+msgstr "返回图的绘制å移。用于在编辑器中显示。"
msgid "Returns the animation node with the given name."
msgstr "返回指定å称的动画节点。"
@@ -3145,7 +7286,7 @@ msgid "Returns the given animation node's name."
msgstr "返回指定动画节点的å称。"
msgid "Returns the given node's coordinates. Used for display in the editor."
-msgstr "返回给定的节点的å标。用于编辑器中的显示。"
+msgstr "返回给定节点的å标。用于在编辑器中显示。"
msgid "Returns the given transition."
msgstr "返回给定的过渡。"
@@ -3157,7 +7298,7 @@ msgid "Returns the given transition's start node."
msgstr "返回给定过渡的开始节点。"
msgid "Returns the given transition's end node."
-msgstr "返回给定过渡的端节点。"
+msgstr "返回给定过渡的末端节点。"
msgid "Returns [code]true[/code] if the graph contains the given node."
msgstr "如果图中包å«ç»™å®šçš„节点,返回 [code]true[/code]。"
@@ -3179,20 +7320,64 @@ msgid "Renames the given node."
msgstr "é‡å‘½å给定的节点。"
msgid "Sets the draw offset of the graph. Used for display in the editor."
-msgstr "设置图形的绘制å移。用于编辑器中的显示。"
+msgstr "设置图形的绘制å移。用于在编辑器中显示。"
msgid "Sets the node's coordinates. Used for display in the editor."
-msgstr "设置节点的å标。用于编辑器中的显示。"
+msgstr "设置节点的å标。用于在编辑器中显示。"
+
+msgid ""
+"If [code]true[/code], allows teleport to the self state with [method "
+"AnimationNodeStateMachinePlayback.travel]. When the reset option is enabled "
+"in [method AnimationNodeStateMachinePlayback.travel], the animation is "
+"restarted. If [code]false[/code], nothing happens on the teleportation to "
+"the self state."
+msgstr ""
+"如果为 [code]true[/code],å…许使用 [method AnimationNodeStateMachinePlayback."
+"travel] ä¼ é€åˆ°å½“å‰çŠ¶æ€ã€‚当在 [method AnimationNodeStateMachinePlayback."
+"travel] 中å¯ç”¨é‡ç½®é€‰é¡¹æ—¶ï¼ŒåŠ¨ç”»å°†é‡æ–°å¯åŠ¨ã€‚如果为 [code]false[/code],传é€åˆ°å½“"
+"å‰çŠ¶æ€æ—¶ä¸ä¼šå‘生任何事情。"
msgid "Playback control for [AnimationNodeStateMachine]."
msgstr "[AnimationNodeStateMachine] 的播放控件。"
-msgid "Returns the currently playing animation state."
-msgstr "返回当å‰æ’­æ”¾çš„动画状æ€ã€‚"
+msgid ""
+"Allows control of [AnimationTree] state machines created with "
+"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree."
+"get(\"parameters/playback\")[/code].\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")."
+"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n"
+"stateMachine.Travel(\"some_state\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"å…许控制使用 [AnimationNodeStateMachine] 创建的 [AnimationTree] 状æ€æœºã€‚使用 "
+"[code]$AnimationTree.get(\"parameters/playback\")[/code] 检索。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var state_machine = $AnimationTree.get(\"parameters/playback\")\n"
+"state_machine.travel(\"some_state\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var stateMachine = GetNode<AnimationTree>(\"AnimationTree\")."
+"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n"
+"stateMachine.Travel(\"some_state\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
msgid "Returns the playback position within the current animation state."
msgstr "返回当å‰åŠ¨ç”»çŠ¶æ€å†…的播放ä½ç½®ã€‚"
+msgid "Returns the starting state of currently fading animation."
+msgstr "返回当å‰æ·¡å…¥æ·¡å‡ºåŠ¨ç”»çš„开始状æ€ã€‚"
+
msgid ""
"Returns the current travel path as computed internally by the A* algorithm."
msgstr "返回 A* 算法内部计算的当å‰è¡Œè¿›è·¯å¾„。"
@@ -3200,11 +7385,109 @@ msgstr "返回 A* 算法内部计算的当å‰è¡Œè¿›è·¯å¾„。"
msgid "Returns [code]true[/code] if an animation is playing."
msgstr "如果正在播放动画,返回 [code]true[/code]。"
+msgid ""
+"If there is a next path by travel or auto advance, immediately transitions "
+"from the current state to the next state."
+msgstr "如果通过行进或自动å‰è¿›æœ‰ä¸‹ä¸€æ¡è·¯å¾„,则立å³ä»Žå½“å‰çŠ¶æ€è¿‡æ¸¡åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€ã€‚"
+
+msgid ""
+"Starts playing the given animation.\n"
+"If [param reset] is [code]true[/code], the animation is played from the "
+"beginning."
+msgstr ""
+"开始播放给定的动画。\n"
+"如果 [param reset] 为 [code]true[/code],则动画从头开始播放。"
+
msgid "Stops the currently playing animation."
msgstr "åœæ­¢å½“å‰æ’­æ”¾çš„动画。"
+msgid ""
+"Transitions from the current state to another one, following the shortest "
+"path.\n"
+"If the path does not connect from the current state, the animation will play "
+"after the state teleports.\n"
+"If [param reset_on_teleport] is [code]true[/code], the animation is played "
+"from the beginning when the travel cause a teleportation."
+msgstr ""
+"按照最短的路径从当å‰çŠ¶æ€è¿‡æ¸¡åˆ°å¦ä¸€ä¸ªçŠ¶æ€ã€‚\n"
+"如果路径没有连接到当å‰çŠ¶æ€ï¼Œåˆ™åŠ¨ç”»å°†åœ¨çŠ¶æ€ä¼ é€åŽæ’­æ”¾ã€‚\n"
+"如果 [param reset_on_teleport] 为 [code]true[/code],当行进导致传é€æ—¶ï¼Œè¯¥åŠ¨ç”»"
+"将从头开始播放。"
+
+msgid ""
+"Turn on auto advance when this condition is set. The provided name will "
+"become a boolean parameter on the [AnimationTree] that can be controlled "
+"from code (see [url=$DOCS_URL/tutorials/animation/animation_tree."
+"html#controlling-from-code]Using AnimationTree[/url]). For example, if "
+"[member AnimationTree.tree_root] is an [AnimationNodeStateMachine] and "
+"[member advance_condition] is set to [code]\"idle\"[/code]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and "
+"(linear_velocity.x == 0))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetNode<AnimationTree>(\"animation_tree\").Set(\"parameters/conditions/"
+"idle\", IsOnFloor && (LinearVelocity.X == 0));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"该æ¡ä»¶è¢«è®¾ç½®æ—¶æ‰“开自动å‰è¿›ã€‚æ供的å称将æˆä¸º [AnimationTree] 上的布尔å‚数,å¯"
+"以通过代ç è¿›è¡ŒæŽ§åˆ¶ï¼ˆè¯·å‚阅 [url=$DOCS_URL/tutorials/animation/animation_tree."
+"html#controlling-from-code]使用 AnimationTree[/url])。例如,如果 [member "
+"AnimationTree.tree_root] 是一个 [AnimationNodeStateMachine] 并且 [member "
+"advance_condition] 被设置为 [code]\"idle\"[/code]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and "
+"(linear_velocity.x == 0))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetNode<AnimationTree>(\"animation_tree\").Set(\"parameters/conditions/"
+"idle\", IsOnFloor && (LinearVelocity.X == 0));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Use an expression as a condition for state machine transitions. It is "
+"possible to create complex animation advance conditions for switching "
+"between states and gives much greater flexibility for creating complex state "
+"machines by directly interfacing with the script code."
+msgstr ""
+"将表达å¼ç”¨ä½œçŠ¶æ€æœºè¿‡æ¸¡çš„æ¡ä»¶ã€‚å¯ä»¥ä¸ºçŠ¶æ€ä¹‹é—´çš„切æ¢åˆ›å»ºå¤æ‚的动画推进æ¡ä»¶ï¼Œå¹¶"
+"通过直接与脚本代ç äº¤äº’为创建å¤æ‚的状æ€æœºæ供更大的çµæ´»æ€§ã€‚"
+
+msgid ""
+"Determines whether the transition should disabled, enabled when using "
+"[method AnimationNodeStateMachinePlayback.travel], or traversed "
+"automatically if the [member advance_condition] and [member "
+"advance_expression] checks are true (if assigned)."
+msgstr ""
+"决定在使用 [method AnimationNodeStateMachinePlayback.travel] 时该过渡是å¦åº”该"
+"被ç¦ç”¨/å¯ç”¨ï¼Œæˆ–者如果 [member advance_condition] å’Œ [member "
+"advance_expression] 检查为真则自动行进(如果已分é…)。"
+
+msgid ""
+"Lower priority transitions are preferred when travelling through the tree "
+"via [method AnimationNodeStateMachinePlayback.travel] or [member "
+"advance_mode] is set to [constant ADVANCE_MODE_AUTO]."
+msgstr ""
+"当在树中通过 [method AnimationNodeStateMachinePlayback.travel] 或将 [member "
+"advance_mode] 设置为 [constant ADVANCE_MODE_AUTO] 行进时,倾å‘于优先级较低的"
+"过渡。"
+
+msgid ""
+"If [code]true[/code], the destination animation is played back from the "
+"beginning when switched."
+msgstr "如果为 [code]true[/code],切æ¢æ—¶ç›®æ ‡åŠ¨ç”»ä»Žå¤´å¼€å§‹æ’­æ”¾ã€‚"
+
msgid "The transition type."
-msgstr "过渡类型."
+msgstr "过渡类型。"
+
+msgid ""
+"Ease curve for better control over cross-fade between this state and the "
+"next."
+msgstr "缓动曲线å¯ä»¥æ›´å¥½åœ°æŽ§åˆ¶æ­¤çŠ¶æ€å’Œä¸‹ä¸€ä¸ªçŠ¶æ€ä¹‹é—´çš„交å‰æ·¡å…¥æ·¡å‡ºã€‚"
msgid "The time to cross-fade between this state and the next."
msgstr "这个状æ€å’Œä¸‹ä¸€ä¸ªçŠ¶æ€ä¹‹é—´çš„交å‰æ¸å˜æ—¶é—´ã€‚"
@@ -3215,18 +7498,33 @@ msgstr "å˜æ›´ [member advance_condition] æ—¶å‘出。"
msgid ""
"Switch to the next state immediately. The current state will end and blend "
"into the beginning of the new one."
-msgstr "ç«‹å³åˆ‡æ¢åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€ã€‚当å‰çŠ¶æ€å°†ç»“æŸï¼Œå¹¶èžåˆåˆ°æ–°çŠ¶æ€çš„开始。"
+msgstr "ç«‹å³åˆ‡æ¢åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€ã€‚当å‰çŠ¶æ€å°†ç»“æŸï¼Œå¹¶æ··åˆåˆ°æ–°çŠ¶æ€çš„开始。"
msgid ""
"Switch to the next state immediately, but will seek the new state to the "
"playback position of the old state."
-msgstr "ç«‹å³åˆ‡æ¢åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€ï¼Œä½†ä¼šå¯»æ‰¾æ–°çš„状æ€åˆ°æ—§çŠ¶æ€çš„播放ä½ç½®ã€‚"
+msgstr "ç«‹å³åˆ‡æ¢åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€ï¼Œä½†ä¼šå°†æ–°çš„状æ€å®šä½åˆ°æ—§çŠ¶æ€çš„播放ä½ç½®ã€‚"
msgid ""
"Wait for the current state playback to end, then switch to the beginning of "
"the next state animation."
msgstr "等待当å‰çŠ¶æ€æ’­æ”¾ç»“æŸï¼Œç„¶åŽåˆ‡æ¢åˆ°ä¸‹ä¸€ä¸ªçŠ¶æ€åŠ¨ç”»çš„开头。"
+msgid "Don't use this transition."
+msgstr "ä¸è¦ä½¿ç”¨è¯¥è¿‡æ¸¡ã€‚"
+
+msgid ""
+"Only use this transition during [method AnimationNodeStateMachinePlayback."
+"travel]."
+msgstr "仅在 [method AnimationNodeStateMachinePlayback.travel] 时使用该过渡。"
+
+msgid ""
+"Automatically use this transition if the [member advance_condition] and "
+"[member advance_expression] checks are true (if assigned)."
+msgstr ""
+"如果 [member advance_condition] 和 [member advance_expression] 检查为真,则自"
+"动使用该过渡(如果已分é…)。"
+
msgid "A time-scaling animation node to be used with [AnimationTree]."
msgstr "与 [AnimationTree] 一起使用的时间缩放动画节点。"
@@ -3242,18 +7540,106 @@ msgid "A generic animation transition node for [AnimationTree]."
msgstr "[AnimationTree] 的通用动画过渡节点。"
msgid ""
-"Simple state machine for cases which don't require a more advanced "
-"[AnimationNodeStateMachine]. Animations can be connected to the inputs and "
-"transition times can be specified."
+"Returns whether the animation restarts when the animation transitions from "
+"the other animation."
+msgstr "返回当动画从å¦ä¸€ä¸ªåŠ¨ç”»è¿‡æ¸¡æ—¶ï¼Œè¯¥åŠ¨ç”»æ˜¯å¦é‡æ–°å¼€å§‹ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if auto-advance is enabled for the given [param "
+"input] index."
+msgstr ""
+"如果为给定的 [param input] 索引å¯ç”¨äº†è‡ªåŠ¨å‰è¿›ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Enables or disables auto-advance for the given [param input] index. If "
+"enabled, state changes to the next input after playing the animation once. "
+"If enabled for the last input state, it loops to the first."
msgstr ""
-"简å•çš„状æ€æœºï¼Œé€‚用于ä¸éœ€è¦æ›´é«˜çº§çš„[AnimationNodeStateMachine]的情况。å¯ä»¥å°†åŠ¨"
-"画连接到输入,并指定过渡时间。"
+"为给定的 [param input] 索引å¯ç”¨æˆ–ç¦ç”¨è‡ªåŠ¨å‰è¿›ã€‚如果å¯ç”¨ï¼ŒçŠ¶æ€ä¼šåœ¨æ’­æ”¾ä¸€æ¬¡åŠ¨ç”»"
+"åŽæ›´æ”¹ä¸ºä¸‹ä¸€ä¸ªè¾“入。如果为最åŽä¸€ä¸ªè¾“入状æ€å¯ç”¨ï¼Œå®ƒä¼šå¾ªçŽ¯åˆ°ç¬¬ä¸€ä¸ªã€‚"
+
+msgid ""
+"If [code]true[/code], the destination animation is restarted when the "
+"animation transitions."
+msgstr "如果为 [code]true[/code],则目标动画在动画过渡时é‡æ–°å¯åŠ¨ã€‚"
+
+msgid ""
+"If [code]true[/code], allows transition to the self state. When the reset "
+"option is enabled in input, the animation is restarted. If [code]false[/"
+"code], nothing happens on the transition to the self state."
+msgstr ""
+"如果为 [code]true[/code],å…许过渡到当å‰çŠ¶æ€ã€‚当在输入中å¯ç”¨é‡ç½®é€‰é¡¹æ—¶ï¼ŒåŠ¨ç”»"
+"å°†é‡æ–°å¯åŠ¨ã€‚如果为 [code]false[/code],则在过渡到 当å‰çŠ¶æ€æ—¶ä¸ä¼šå‘生任何事"
+"情。"
+
+msgid "The number of enabled input ports for this node."
+msgstr "该节点已å¯ç”¨çš„输入端å£æ•°ã€‚"
+
+msgid ""
+"Determines how cross-fading between animations is eased. If empty, the "
+"transition will be linear."
+msgstr "确定如何缓动动画之间的淡入淡出。如果为空,过渡将是线性的。"
msgid ""
"Cross-fading time (in seconds) between each animation connected to the "
"inputs."
msgstr "连接到输入的æ¯ä¸ªåŠ¨ç”»ä¹‹é—´çš„交å‰æ¸å˜æ—¶é—´ï¼ˆç§’)。"
+msgid "Player of [Animation] resources."
+msgstr "[Animation] 资æºçš„播放器。"
+
+msgid ""
+"An animation player is used for general-purpose playback of [Animation] "
+"resources. It contains a dictionary of [AnimationLibrary] resources and "
+"custom blend times between animation transitions.\n"
+"Some methods and properties use a single key to reference an animation "
+"directly. These keys are formatted as the key for the library, followed by a "
+"forward slash, then the key for the animation within the library, for "
+"example [code]\"movement/run\"[/code]. If the library's key is an empty "
+"string (known as the default library), the forward slash is omitted, being "
+"the same key used by the library.\n"
+"[AnimationPlayer] is more suited than [Tween] for animations where you know "
+"the final values in advance. For example, fading a screen in and out is more "
+"easily done with an [AnimationPlayer] node thanks to the animation tools "
+"provided by the editor. That particular example can also be implemented with "
+"a [Tween], but it requires doing everything by code.\n"
+"Updating the target properties of animations occurs at process time."
+msgstr ""
+"动画播放器用于 [Animation] 资æºçš„通用播放。它包å«ä¸€ä¸ª [AnimationLibrary] 资æº"
+"的字典和动画过渡之间的自定义混åˆæ—¶é—´ã€‚\n"
+"æŸäº›æ–¹æ³•å’Œå±žæ€§ä½¿ç”¨å•ä¸ªé”®ç›´æŽ¥å¼•ç”¨åŠ¨ç”»ã€‚这些键的格å¼ä¸ºåº“的键,åŽè·Ÿæ­£æ–œæ ï¼Œç„¶åŽ"
+"是库内动画的键,例如 [code]\"movement/run\"[/code]。如果库的键是空字符串(称"
+"为默认库),则çœç•¥æ­£æ–œæ ï¼Œä¸Žåº“使用的键相åŒã€‚\n"
+"[AnimationPlayer] 比 [Tween] 更适åˆç”¨äºŽäº‹å…ˆçŸ¥é“最终值的动画。例如,由于编辑器"
+"æ供的动画工具,使用 [AnimationPlayer] 节点å¯ä»¥æ›´è½»æ¾åœ°å®žçŽ°å±å¹•æ·¡å…¥æ·¡å‡ºã€‚该特"
+"定示例也å¯ä»¥ä½¿ç”¨ [Tween] 实现,但它需è¦é€šè¿‡ä»£ç æ¥å®Œæˆä¸€åˆ‡ã€‚\n"
+"更新动画的目标属性是在处ç†æ—¶è¿›è¡Œçš„。"
+
+msgid "A virtual function for processing after key getting during playback."
+msgstr "一个用于播放期间键获å–之åŽçš„处ç†çš„虚函数。"
+
+msgid ""
+"Adds [param library] to the animation player, under the key [param name]."
+msgstr "将 [param library] 添加到该动画播放器的键 [param name] 下。"
+
+msgid ""
+"Shifts position in the animation timeline and immediately updates the "
+"animation. [param delta] is the time in seconds to shift. Events between the "
+"current frame and [param delta] are handled."
+msgstr ""
+"移动动画时间轴上的ä½ç½®å¹¶ç«‹å³æ›´æ–°åŠ¨ç”»ã€‚[param delta] 是è¦ç§»åŠ¨çš„时间,å•ä½ä¸º"
+"秒。会处ç†ä½äºŽå½“å‰å¸§å’Œ [param delta] 之间的事件。"
+
+msgid ""
+"Returns the key of the animation which is queued to play after the [param "
+"anim_from] animation."
+msgstr "返回在 [param anim_from] 动画之åŽæŽ’队播放的动画的键。"
+
+msgid ""
+"Triggers the [param anim_to] animation when the [param anim_from] animation "
+"completes."
+msgstr "当 [param anim_from] 动画完æˆæ—¶ï¼Œè§¦å‘ [param anim_to] 动画。"
+
msgid ""
"[AnimationPlayer] caches animated nodes. It may not notice if a node "
"disappears; [method clear_caches] forces it to update the cache again."
@@ -3265,6 +7651,88 @@ msgid "Clears all queued, unplayed animations."
msgstr "清除所有已排队ã€æœªæ’­æ”¾çš„动画。"
msgid ""
+"Returns the key of [param animation] or an empty [StringName] if not found."
+msgstr "返回 [param animation] 的键;如果未找到,则返回一个空的 [StringName]。"
+
+msgid ""
+"Returns the key for the [AnimationLibrary] that contains [param animation] "
+"or an empty [StringName] if not found."
+msgstr ""
+"è¿”å›žåŒ…å« [param animation] çš„ [AnimationLibrary] 的键;如果找ä¸åˆ°ï¼Œåˆ™è¿”回一个"
+"空的 [StringName]。"
+
+msgid ""
+"Returns the first [AnimationLibrary] with key [param name] or [code]null[/"
+"code] if not found."
+msgstr ""
+"返回第一个 [AnimationLibrary] 键 [param name];如果没有找到则返回 "
+"[code]null[/code]。"
+
+msgid "Returns the list of stored library keys."
+msgstr "返回存储的库的键的列表。"
+
+msgid "Returns the list of stored animation keys."
+msgstr "返回存储的动画键列表。"
+
+msgid ""
+"Returns the blend time (in seconds) between two animations, referenced by "
+"their keys."
+msgstr "返回两个动画之间的混åˆæ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ï¼Œç”±å®ƒä»¬çš„键引用。"
+
+msgid "Returns a list of the animation keys that are currently queued to play."
+msgstr "返回当å‰æŽ’队播放的动画键列表。"
+
+msgid ""
+"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] "
+"with key [param name]."
+msgstr ""
+"如果该 [AnimationPlayer] 使用键 [param name] 存储 [Animation],则返回 "
+"[code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [AnimationPlayer] stores an "
+"[AnimationLibrary] with key [param name]."
+msgstr ""
+"如果该 [AnimationPlayer] 使用键 [param name] 存储 [AnimationLibrary],则返回 "
+"[code]true[/code]。"
+
+msgid ""
+"Pauses the currently playing animation. The [member "
+"current_animation_position] will be kept and calling [method play] or "
+"[method play_backwards] without arguments or with the same animation name as "
+"[member assigned_animation] will resume the animation.\n"
+"See also [method stop]."
+msgstr ""
+"æš‚åœå½“å‰æ’­æ”¾çš„动画。[member current_animation_position] 将被ä¿ç•™ï¼Œè°ƒç”¨ "
+"[method play] 或 [method play_backwards] 时,ä¸å¸¦å‚数或使用与 [member "
+"assigned_animation] 相åŒçš„动画å称,将æ¢å¤åŠ¨ç”»ã€‚\n"
+"å¦è§ [method stop]。"
+
+msgid ""
+"Plays the animation with key [param name]. Custom blend times and speed can "
+"be set. If [param custom_speed] is negative and [param from_end] is "
+"[code]true[/code], the animation will play backwards (which is equivalent to "
+"calling [method play_backwards]).\n"
+"The [AnimationPlayer] keeps track of its current or last played animation "
+"with [member assigned_animation]. If this method is called with that same "
+"animation [param name], or with no [param name] parameter, the assigned "
+"animation will resume playing if it was paused.\n"
+"[b]Note:[/b] The animation will be updated the next time the "
+"[AnimationPlayer] is processed. If other variables are updated at the same "
+"time this is called, they may be updated too early. To perform the update "
+"immediately, call [code]advance(0)[/code]."
+msgstr ""
+"播放键å为 [param name] 的动画。å¯ä»¥è®¾ç½®è‡ªå®šä¹‰æ··åˆæ—¶é—´å’Œé€Ÿåº¦ã€‚如果 [param "
+"custom_speed] 为负,且[param from_end] 为 [code]true[/code],则动画将å‘åŽæ’­æ”¾"
+"(相当于调用 [method play_backwards])。\n"
+"[AnimationPlayer] 使用 [member assigned_animation] 跟踪其当å‰æˆ–上次播放的动"
+"画。如果使用相åŒçš„动画 [param name] 或没有 [param name] å‚数调用此方法,则分"
+"é…的动画将在暂åœæ—¶æ¢å¤æ’­æ”¾ã€‚\n"
+"[b]注æ„:[/b]åŠ¨ç”»å°†åœ¨ä¸‹æ¬¡å¤„ç† [AnimationPlayer] 时更新。如果在调用该方法的åŒ"
+"时更新了其他å˜é‡ï¼Œåˆ™å®ƒä»¬å¯èƒ½æ›´æ–°å¾—太早。è¦ç«‹å³æ‰§è¡Œæ›´æ–°ï¼Œè¯·è°ƒç”¨ "
+"[code]advance(0)[/code]。"
+
+msgid ""
"Queues an animation for playback once the current one is done.\n"
"[b]Note:[/b] If a looped animation is currently playing, the queued "
"animation will never play unless the looped animation is stopped somehow."
@@ -3273,6 +7741,87 @@ msgstr ""
"[b]注æ„:[/b]如果当å‰æ­£åœ¨æ’­æ”¾å¾ªçŽ¯åŠ¨ç”»ï¼Œé™¤éžä»¥æŸç§æ–¹å¼åœæ­¢å¾ªçŽ¯åŠ¨ç”»ï¼Œå¦åˆ™æŽ’队的"
"动画将永远ä¸ä¼šæ’­æ”¾ã€‚"
+msgid "Removes the [AnimationLibrary] associated with the key [param name]."
+msgstr "移除与键 [param name] å…³è”çš„ [AnimationLibrary]。"
+
+msgid ""
+"Moves the [AnimationLibrary] associated with the key [param name] to the key "
+"[param newname]."
+msgstr ""
+"将与键 [param name] å…³è”çš„ [AnimationLibrary] 移动到键 [param newname]。"
+
+msgid ""
+"Seeks the animation to the [param seconds] point in time (in seconds). If "
+"[param update] is [code]true[/code], the animation updates too, otherwise it "
+"updates at process time. Events between the current frame and [param "
+"seconds] are skipped.\n"
+"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal "
+"animation_finished]. If you want to skip animation and emit the signal, use "
+"[method advance]."
+msgstr ""
+"将动画寻é“到时间点 [param seconds](å•ä½ä¸ºç§’)。[param update] 为 "
+"[code]true[/code] 时会åŒæ—¶æ›´æ–°åŠ¨ç”»ï¼Œå¦åˆ™ä¼šåœ¨å¤„ç†æ—¶æ›´æ–°ã€‚当å‰å¸§å’Œ [param "
+"seconds] 之间的事件会被跳过。\n"
+"[b]注æ„:[/b]寻é“至动画的末尾ä¸ä¼šè§¦å‘ [signal animation_finished]。如果想è¦è·³"
+"过动画并触å‘该信å·ï¼Œè¯·ä½¿ç”¨ [method advance]。"
+
+msgid ""
+"Specifies a blend time (in seconds) between two animations, referenced by "
+"their keys."
+msgstr "指定两个动画(由它们的键所引用)之间的混åˆæ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚"
+
+msgid ""
+"Stops the currently playing animation. The animation position is reset to "
+"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/"
+"code]. See also [method pause].\n"
+"If [param keep_state] is [code]true[/code], the animation state is not "
+"updated visually.\n"
+"[b]Note:[/b] The method / audio / animation playback tracks will not be "
+"processed by this method."
+msgstr ""
+"åœæ­¢å½“å‰æ’­æ”¾çš„动画。动画ä½ç½®è¢«é‡ç½®ä¸º [code]0[/code],[code]custom_speed[/"
+"code] 被é‡ç½®ä¸º [code]1.0[/code]。å¦è§ [method pause]。\n"
+"如果 [param keep_state] 为 [code]true[/code],则动画状æ€ä¸ä¼šåœ¨è§†è§‰ä¸Šæ›´æ–°ã€‚\n"
+"[b]注æ„:[/b]方法/音频/动画播放轨é“ä¸ä¼šè¢«è¯¥æ–¹æ³•å¤„ç†ã€‚"
+
+msgid ""
+"If playing, the the current animation's key, otherwise, the animation last "
+"played. When set, this changes the animation, but will not play it unless "
+"already playing. See also [member current_animation]."
+msgstr ""
+"如果正在播放,则为当å‰åŠ¨ç”»çš„键,å¦åˆ™ä¸ºä¸Šæ¬¡æ’­æ”¾çš„动画。设置åŽä¼šæ”¹å˜åŠ¨ç”»ï¼Œä½†é™¤"
+"éžå·²ç»æ’­æ”¾ï¼Œå¦åˆ™ä¸ä¼šæ’­æ”¾ã€‚å¦è§ [member current_animation]。"
+
+msgid ""
+"The number of possible simultaneous sounds for each of the assigned "
+"AudioStreamPlayers.\n"
+"For example, if this value is [code]32[/code] and the animation has two "
+"audio tracks, the two [AudioStreamPlayer]s assigned can play simultaneously "
+"up to [code]32[/code] voices each."
+msgstr ""
+"æ¯ä¸ªæŒ‡å®šçš„ AudioStreamPlayer å¯èƒ½åŒæ—¶å‘出的声音的数é‡ã€‚\n"
+"例如,如果该值为 [code]32[/code] 并且动画有两个音轨,则分é…的两个 "
+"[AudioStreamPlayer] å¯ä»¥åŒæ—¶æ’­æ”¾æœ€å¤š [code]32[/code] 个声音。"
+
+msgid ""
+"The key of the currently playing animation. If no animation is playing, the "
+"property's value is an empty string. Changing this value does not restart "
+"the animation. See [method play] for more information on playing "
+"animations.\n"
+"[b]Note:[/b] While this property appears in the Inspector, it's not meant to "
+"be edited, and it's not saved in the scene. This property is mainly used to "
+"get the currently playing animation, and internally for animation playback "
+"tracks. For more information, see [Animation]."
+msgstr ""
+"当å‰æ’­æ”¾çš„动画的å称。如果没有动画正在播放,该属性的值是一个空字符串。改å˜è¿™"
+"个值ä¸ä¼šé‡æ–°å¯åŠ¨åŠ¨ç”»ã€‚关于播放动画的更多信æ¯è¯·å‚阅 [method play]。\n"
+"[b]注æ„:[/b]虽然这个属性会出现在检查器中,但它ä¸æ˜¯ç”¨æ¥ç¼–辑的,也ä¸ä¼šä¿å­˜åœ¨åœº"
+"景中。该属性主è¦ç”¨äºŽèŽ·å–当å‰æ’­æ”¾çš„动画,内部用于动画播放轨é“。详情请å‚阅 "
+"[Animation]。"
+
+msgid "The length (in seconds) of the currently playing animation."
+msgstr "当å‰æ­£åœ¨æ’­æ”¾çš„动画的长度(以秒为å•ä½ï¼‰ã€‚"
+
msgid "The position (in seconds) of the currently playing animation."
msgstr "当å‰æ’­æ”¾çš„动画的ä½ç½®ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚"
@@ -3280,6 +7829,20 @@ msgid "The call mode to use for Call Method tracks."
msgstr "方法调用轨é“所使用的调用模å¼ã€‚"
msgid ""
+"If [code]true[/code] and the engine is running in Movie Maker mode (see "
+"[MovieWriter]), exits the engine with [method SceneTree.quit] as soon as an "
+"animation is done playing in this [AnimationPlayer]. A message is printed "
+"when the engine quits for this reason.\n"
+"[b]Note:[/b] This obeys the same logic as the [signal animation_finished] "
+"signal, so it will not quit the engine if the animation is set to be looping."
+msgstr ""
+"如果为 [code]true[/code],并且引擎在 Movie Maker 模å¼ä¸‹è¿è¡Œï¼ˆè¯·å‚阅 "
+"[MovieWriter]),则在此 [AnimationPlayer] 中播放完动画åŽï¼Œç«‹å³ä½¿ç”¨ [method "
+"SceneTree.quit] 退出引擎。当引擎因此而退出时,会打å°ä¸€æ¡æ¶ˆæ¯ã€‚\n"
+"[b]注æ„:[/b]这与 [signal animation_finished] ä¿¡å·éµå¾ªç›¸åŒçš„逻辑,因此如果动"
+"画被设置为循环,它ä¸ä¼šé€€å‡ºå¼•æ“Žã€‚"
+
+msgid ""
"If [code]true[/code], updates animations in response to process-related "
"notifications."
msgstr "如果为 [code]true[/code],根æ®æµç¨‹ç›¸å…³é€šçŸ¥æ›´æ–°åŠ¨ç”»ã€‚"
@@ -3292,11 +7855,49 @@ msgstr "æ··åˆåŠ¨ç”»çš„默认时间。范围从 0 到 4096,精度为 0.01。"
msgid "The process notification in which to update animations."
msgstr "更新动画的过程通知。"
+msgid ""
+"This is used by the editor. If set to [code]true[/code], the scene will be "
+"saved with the effects of the reset animation (the animation with the key "
+"[code]\"RESET\"[/code]) applied as if it had been seeked to time 0, with the "
+"editor keeping the values that the scene had before saving.\n"
+"This makes it more convenient to preview and edit animations in the editor, "
+"as changes to the scene will not be saved as long as they are set in the "
+"reset animation."
+msgstr ""
+"由编辑器使用。如果设置为 [code]true[/code],场景将被ä¿å­˜ï¼Œå¹¶åº”用é‡ç½®åŠ¨ç”»ï¼ˆå¸¦"
+"有键 [code]\"RESET\"[/code] 的动画)的效果,就好åƒå®ƒå·²è¢«å®šä½åˆ°æ—¶é—´ 0 一样,编"
+"辑器ä¿ç•™åœºæ™¯åœ¨ä¿å­˜ä¹‹å‰çš„值。\n"
+"这使得在编辑器中预览和编辑动画更加方便,因为对场景的更改,åªè¦åœ¨é‡ç½®åŠ¨ç”»ä¸­è¢«"
+"设置,就ä¸ä¼šè¢«ä¿å­˜ã€‚"
+
msgid "The node from which node path references will travel."
msgstr "节点路径引用将从其è¿è¡Œçš„节点。"
+msgid ""
+"Emitted when a queued animation plays after the previous animation finished. "
+"See [method queue].\n"
+"[b]Note:[/b] The signal is not emitted when the animation is changed via "
+"[method play] or by an [AnimationTree]."
+msgstr ""
+"在å‰ä¸€ä¸ªåŠ¨ç”»å®ŒæˆåŽï¼Œæ’­æ”¾é˜Ÿåˆ—中的动画时å‘出。请å‚阅 [method queue]。\n"
+"[b]注æ„:[/b]通过 [method play] 或 [AnimationTree] 改å˜åŠ¨ç”»æ—¶ï¼Œä¸ä¼šå‘出此信"
+"å·ã€‚"
+
+msgid ""
+"Notifies when an animation finished playing.\n"
+"[b]Note:[/b] This signal is not emitted if an animation is looping."
+msgstr ""
+"动画播放结æŸæ—¶é€šçŸ¥ã€‚\n"
+"[b]注æ„:[/b]如果动画正在循环播放,则ä¸ä¼šå‘出此信å·ã€‚"
+
+msgid "Notifies when the animation libraries have changed."
+msgstr "当动画库å‘生更改时å‘出通知。"
+
+msgid "Notifies when an animation list is changed."
+msgstr "当动画列表å‘生更改时å‘出通知。"
+
msgid "Notifies when an animation starts playing."
-msgstr "当动画开始播放时通知。"
+msgstr "当动画开始播放时å‘出通知。"
msgid ""
"Notifies when the caches have been cleared, either automatically, or "
@@ -3355,16 +7956,301 @@ msgstr "使用 AnimationTree"
msgid "Manually advance the animations by the specified time (in seconds)."
msgstr "手动将动画å‰è¿›æŒ‡å®šçš„时间(å•ä½ä¸ºç§’)。"
+msgid ""
+"Retrieve the motion delta of position with the [member root_motion_track] as "
+"a [Vector3] that can be used elsewhere.\n"
+"If [member root_motion_track] is not a path to a track of type [constant "
+"Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].\n"
+"See also [member root_motion_track] and [RootMotionView].\n"
+"The most basic example is applying position to [CharacterBody3D]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var current_rotation: Quaternion\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" current_rotation = get_quaternion()\n"
+" state_machine.travel(\"Animate\")\n"
+" var velocity: Vector3 = current_rotation * animation_tree."
+"get_root_motion_position() / delta\n"
+" set_velocity(velocity)\n"
+" move_and_slide()\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"By using this in combination with [method "
+"get_root_motion_position_accumulator], you can apply the root motion "
+"position more correctly to account for the rotation of the node.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" set_quaternion(get_quaternion() * animation_tree."
+"get_root_motion_rotation())\n"
+" var velocity: Vector3 = (animation_tree."
+"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * "
+"animation_tree.get_root_motion_position() / delta\n"
+" set_velocity(velocity)\n"
+" move_and_slide()\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"将具有 [member root_motion_track] çš„ä½ç½®çš„è¿åŠ¨å¢žé‡ï¼Œæ£€ç´¢ä¸ºä¸€ä¸ªå¯ä»¥åœ¨å…¶ä»–地方"
+"使用的 [Vector3]。\n"
+"如果 [member root_motion_track] ä¸æ˜¯ [constant Animation.TYPE_POSITION_3D] ç±»"
+"型轨é“的路径,则返回 [code]Vector3(0, 0, 0)[/code]。\n"
+"å¦è§ [member root_motion_track] å’Œ [RootMotionView]。\n"
+"最基本的示例是将ä½ç½®åº”用于 [CharacterBody3D]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var current_rotation: Quaternion\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" current_rotation = get_quaternion()\n"
+" state_machine.travel(\"Animate\")\n"
+" var velocity: Vector3 = current_rotation * animation_tree."
+"get_root_motion_position() / delta\n"
+" set_velocity(velocity)\n"
+" move_and_slide()\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"通过将其与 [method get_root_motion_position_accumulator] 结åˆä½¿ç”¨ï¼Œæ‚¨å¯ä»¥æ›´æ­£"
+"确地应用根è¿åŠ¨ä½ç½®æ¥è€ƒè™‘节点的旋转。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" set_quaternion(get_quaternion() * animation_tree."
+"get_root_motion_rotation())\n"
+" var velocity: Vector3 = (animation_tree."
+"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * "
+"animation_tree.get_root_motion_position() / delta\n"
+" set_velocity(velocity)\n"
+" move_and_slide()\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Retrieve the motion delta of rotation with the [member root_motion_track] as "
+"a [Quaternion] that can be used elsewhere.\n"
+"If [member root_motion_track] is not a path to a track of type [constant "
+"Animation.TYPE_ROTATION_3D], returns [code]Quaternion(0, 0, 0, 1)[/code].\n"
+"See also [member root_motion_track] and [RootMotionView].\n"
+"The most basic example is applying rotation to [CharacterBody3D]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" set_quaternion(get_quaternion() * animation_tree."
+"get_root_motion_rotation())\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"检索带有 [member root_motion_track] 的旋转è¿åŠ¨ï¼Œä½œä¸ºä¸€ä¸ª [Quaternion],å¯ä»¥åœ¨"
+"其他地方使用。\n"
+"如果 [member root_motion_track] ä¸æ˜¯ [constant Animation.TYPE_ROTATION_3D] ç±»"
+"型的轨迹的路径,返回 [code]Quaternion(0, 0, 0, 1)[/code] 。\n"
+"å¦è§ [member root_motion_track] å’Œ [RootMotionView]。\n"
+"最基本的例å­æ˜¯å¯¹ [CharacterBody3D] 应用旋转。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" set_quaternion(get_quaternion() * animation_tree."
+"get_root_motion_rotation() )\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Retrieve the blended value of the rotation tracks with the [member "
+"root_motion_track] as a [Quaternion] that can be used elsewhere.\n"
+"This is necessary to apply the root motion position correctly, taking "
+"rotation into account. See also [method get_root_motion_position].\n"
+"Also, this is useful in cases where you want to respect the initial key "
+"values of the animation.\n"
+"For example, if an animation with only one key [code]Quaternion(0, 0, 0, 1)[/"
+"code] is played in the previous frame and then an animation with only one "
+"key [code]Quaternion(0, 0.707, 0, 0.707)[/code] is played in the next frame, "
+"the difference can be calculated as follows:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prev_root_motion_rotation_accumulator: Quaternion\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" var current_root_motion_rotation_accumulator: Quaternion = "
+"animation_tree.get_root_motion_Quaternion_accumulator()\n"
+" var difference: Quaternion = prev_root_motion_rotation_accumulator."
+"inverse() * current_root_motion_rotation_accumulator\n"
+" prev_root_motion_rotation_accumulator = "
+"current_root_motion_rotation_accumulator\n"
+" transform.basis *= difference\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"However, if the animation loops, an unintended discrete change may occur, so "
+"this is only useful for some simple use cases."
+msgstr ""
+"检索带有 [member root_motion_track] 的旋转轨é“çš„æ··åˆå€¼ï¼Œä½œä¸ºä¸€ä¸ª "
+"[Quaternion],å¯ä»¥åœ¨å…¶ä»–地方使用。\n"
+"这里必须正确地结åˆæ ¹è¿åŠ¨ä½ç½®ï¼Œå¹¶ä¸”è¦è€ƒè™‘到旋转。å‚考 [method "
+"get_root_motion_position]。\n"
+"并且,当你想é‡è§†åŠ¨ç”»çš„åˆå§‹åŠ¨ç”»å¸§çš„值时,这会很有用。\n"
+"比如说,如果一个动画在上一帧åªæ’­æ”¾ä¸€ä¸ª [code]Quaternion(0, 0, 0, 1)[/code] 动"
+"画帧,并且一个动画在下一帧åªæ’­æ”¾äº†ä¸€ä¸ªåŠ¨ç”»å¸§çš„ [code]Quaternion(0, 0.707, 0, "
+"0.707)[/code] 时,它们相差的值å¯ä»¥è¿™æ ·æ±‚出:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prev_root_motion_rotation_accumulator: Quaternion\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" var current_root_motion_rotation_accumulator: Quaternion = "
+"animation_tree.get_root_motion_Quaternion_accumulator()\n"
+" var difference: Quaternion = prev_root_motion_rotation_accumulator."
+"inverse() * current_root_motion_rotation_accumulator\n"
+" prev_root_motion_rotation_accumulator = "
+"current_root_motion_rotation_accumulator\n"
+" transform.basis *= difference\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"然而,当一个动画循环时,å¯èƒ½ä¼šå¾—到一个æ„料之外的å˜åŒ–,所以这个åªåœ¨ä¸€äº›ç®€å•æƒ…"
+"况下æ‰æœ‰ç”¨ã€‚"
+
+msgid ""
+"Retrieve the motion delta of scale with the [member root_motion_track] as a "
+"[Vector3] that can be used elsewhere.\n"
+"If [member root_motion_track] is not a path to a track of type [constant "
+"Animation.TYPE_SCALE_3D], returns [code]Vector3(0, 0, 0)[/code].\n"
+"See also [member root_motion_track] and [RootMotionView].\n"
+"The most basic example is applying scale to [CharacterBody3D]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var current_scale: Vector3 = Vector3(1, 1, 1)\n"
+"var scale_accum: Vector3 = Vector3(1, 1, 1)\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" current_scale = get_scale()\n"
+" scale_accum = Vector3(1, 1, 1)\n"
+" state_machine.travel(\"Animate\")\n"
+" scale_accum += animation_tree.get_root_motion_scale()\n"
+" set_scale(current_scale * scale_accum)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"检索具有[member root_motion_track]çš„scaleçš„è¿åŠ¨ï¼Œä½œä¸ºä¸€ä¸ª[Vector3],å¯ä»¥åœ¨å…¶"
+"他地方使用。\n"
+"如果[member root_motion_track]ä¸æ˜¯ä¸€ä¸ªç±»åž‹ä¸º[constant Animation."
+"TYPE_SCALE_3D]的轨迹的路径,返回[code]Vector3(0, 0, 0)[/code] 。\n"
+"å¦è§[æˆå‘˜root_motion_track]å’Œ[RootMotionView]。\n"
+"最基本的例å­æ˜¯å¯¹[CharacterBody3D]应用缩放。\n"
+"[codeblocks]。\n"
+"[gdscript]\n"
+"var current_scale:Vector3 = Vector3(1, 1, 1)\n"
+"var scale_accum: Vector3 = Vector3(1, 1, 1)\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" current_scale = get_scale()\n"
+" scale_accum = Vector3(1, 1, 1)\n"
+" state_machine.travel(\"Animate\")\n"
+" scale_accum += animation_tree.get_root_motion_scale()\n"
+" set_scale(current_scale * scale_accum)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Retrieve the blended value of the scale tracks with the [member "
+"root_motion_track] as a [Vector3] that can be used elsewhere.\n"
+"For example, if an animation with only one key [code]Vector3(1, 1, 1)[/code] "
+"is played in the previous frame and then an animation with only one key "
+"[code]Vector3(2, 2, 2)[/code] is played in the next frame, the difference "
+"can be calculated as follows:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prev_root_motion_scale_accumulator: Vector3\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" var current_root_motion_scale_accumulator: Vector3 = animation_tree."
+"get_root_motion_scale_accumulator()\n"
+" var difference: Vector3 = current_root_motion_scale_accumulator - "
+"prev_root_motion_scale_accumulator\n"
+" prev_root_motion_scale_accumulator = "
+"current_root_motion_scale_accumulator\n"
+" transform.basis = transform.basis.scaled(difference)\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"However, if the animation loops, an unintended discrete change may occur, so "
+"this is only useful for some simple use cases."
+msgstr ""
+"检索带有 [member root_motion_track] 的缩放轨é“çš„æ··åˆå€¼ï¼Œä½œä¸ºä¸€ä¸ª [Vector3],"
+"å¯ä»¥åœ¨å…¶ä»–地方使用。\n"
+"例如,如果一个动画在å‰ä¸€å¸§åªæ’­æ”¾äº†ä¸€ä¸ªåŠ¨ç”»å¸§ [code]Vector3(1, 1, 1)[/code],"
+"并且一个动画在åŽä¸€å¸§åªæ’­æ”¾äº†ä¸€ä¸ªåŠ¨ç”»å¸§ [code]Vector3(2, 2, 2)[/code],他们之"
+"间相差的值å¯ä»¥è¿™æ ·æ±‚出:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prev_root_motion_scale_accumulator: Vector3\n"
+"\n"
+"func _process(delta):\n"
+" if Input.is_action_just_pressed(\"animate\"):\n"
+" state_machine.travel(\"Animate\")\n"
+" var current_root_motion_scale_accumulator: Vector3 = animation_tree."
+"get_root_motion_scale_accumulator()\n"
+" var difference: Vector3 = current_root_motion_scale_accumulator - "
+"prev_root_motion_scale_accumulator\n"
+" prev_root_motion_scale_accumulator = "
+"current_root_motion_scale_accumulator\n"
+" transform.basis = transform.basis.scaled(difference)\n"
+"[/gdscript]\n"
+"[/codeblocks]\n"
+"然而,当一个动画循环时,å¯èƒ½ä¼šå¾—到一个æ„料之外的å˜åŒ–,所以这个åªåœ¨ä¸€äº›ç®€å•æƒ…"
+"况下æ‰æœ‰ç”¨ã€‚"
+
msgid "If [code]true[/code], the [AnimationTree] will be processing."
msgstr "如果 [code]true[/code] 时,[AnimationTree] 将执行逻辑处ç†ã€‚"
msgid "The path to the [AnimationPlayer] used for animating."
msgstr "用于动画的 [AnimationPlayer] 的路径。"
+msgid ""
+"The process mode of this [AnimationTree]. See [enum "
+"AnimationProcessCallback] for available modes."
+msgstr ""
+"该 [AnimationTree] 的处ç†æ¨¡å¼ã€‚å¯ç”¨çš„模å¼è§ [enum AnimationProcessCallback]。"
+
msgid "The root animation node of this [AnimationTree]. See [AnimationNode]."
msgstr "该 [AnimationTree] çš„æ ¹åŠ¨ç”»èŠ‚ç‚¹ã€‚è§ [AnimationNode]。"
msgid ""
+"Notifies when an animation finished playing.\n"
+"[b]Note:[/b] This signal is not emitted if an animation is looping or "
+"aborted. Also be aware of the possibility of unseen playback by sync and "
+"xfade."
+msgstr ""
+"æŸä¸ªåŠ¨ç”»å®Œæˆæ’­æ”¾æ—¶å‘出通知。\n"
+"[b]注æ„:[/b]如果动画需è¦å¾ªçŽ¯æˆ–者是被中止的,则ä¸ä¼šå‘出该信å·ã€‚å¦å¤–请æ„识到å¯"
+"能存在åŒæ­¥å’Œè¿‡æ¸¡æ‰€å¯¼è‡´çš„ä¸å¯è§çš„播放。"
+
+msgid ""
+"Notifies when an animation starts playing.\n"
+"[b]Note:[/b] This signal is not emitted if an animation is looping or "
+"playbacked from the middle. Also be aware of the possibility of unseen "
+"playback by sync and xfade."
+msgstr ""
+"æŸä¸ªåŠ¨ç”»å®Œæˆæ’­æ”¾æ—¶å‘出通知。\n"
+"[b]注æ„:[/b]如果动画需è¦å¾ªçŽ¯æˆ–者是被中止的,则ä¸ä¼šå‘出该信å·ã€‚å¦å¤–请æ„识到å¯"
+"能存在åŒæ­¥å’Œè¿‡æ¸¡æ‰€å¯¼è‡´çš„ä¸å¯è§çš„播放。"
+
+msgid ""
"The animations will progress during the physics frame (i.e. [method Node."
"_physics_process])."
msgstr "在物ç†å¸§æœŸé—´è¿›è¡ŒåŠ¨ç”»ï¼ˆå³ [method Node._physics_process])。"
@@ -3375,10 +8261,7 @@ msgid ""
msgstr "åœ¨ç©ºé—²å¸§æœŸé—´è¿›è¡ŒåŠ¨ç”»ï¼ˆå³ [method Node._process])。"
msgid "The animations will only progress manually (see [method advance])."
-msgstr "åªèƒ½æ‰‹åŠ¨è¿›è¡ŒåŠ¨ç”»ï¼ˆè§ [method advance])。"
-
-msgid "2D area for detection and physics and audio influence."
-msgstr "用于检测ã€ç‰©ç†å’ŒéŸ³é¢‘å½±å“çš„ 2D 区域。"
+msgstr "åªèƒ½æ‰‹åŠ¨è¡Œè¿›åŠ¨ç”»ï¼ˆè§ [method advance])。"
msgid "Using Area2D"
msgstr "使用 Area2D"
@@ -3401,7 +8284,7 @@ msgstr ""
"collision_layer] 必须是这个区域 [member CollisionObject2D.collision_mask] 的"
"一部分,这样æ‰èƒ½è¢«æ£€æµ‹åˆ°ã€‚\n"
"出于性能的考虑(所有碰撞都是一起处ç†çš„),这个列表会在物ç†æ­¥éª¤ä¸­è¿›è¡Œä¸€æ¬¡ä¿®"
-"改,而ä¸æ˜¯åœ¨ç‰©ä½“被移动åŽç«‹å³ä¿®æ”¹ã€‚请考虑使用信å·æ¥ä»£æ›¿ã€‚"
+"改,而ä¸æ˜¯åœ¨ç‰©ä½“被移动åŽç«‹å³ä¿®æ”¹ã€‚å¯è€ƒè™‘改用信å·ã€‚"
msgid ""
"The rate at which objects stop spinning in this area. Represents the angular "
@@ -3413,6 +8296,12 @@ msgstr ""
"å…³äºŽé˜»å°¼çš„æ›´å¤šç»†èŠ‚è§ [member ProjectSettings.physics/2d/"
"default_angular_damp]。"
+msgid ""
+"Override mode for angular damping calculations within this area. See [enum "
+"SpaceOverride] for possible values."
+msgstr ""
+"此区域内的角阻尼计算的覆盖模å¼ã€‚有关å¯èƒ½çš„值,请å‚阅 [enum SpaceOverride]。"
+
msgid "The name of the area's audio bus."
msgstr "该区域音频总线的å称。"
@@ -3421,6 +8310,35 @@ msgid ""
msgstr "如果为 [code]true[/code],该区域的音频总线将覆盖默认的音频总线。"
msgid ""
+"The area's gravity intensity (in pixels per second squared). This value "
+"multiplies the gravity direction. This is useful to alter the force of "
+"gravity without altering its direction."
+msgstr ""
+"该区域的é‡åŠ›å¼ºåº¦ï¼ˆä»¥åƒç´ æ¯å¹³æ–¹ç§’为å•ä½ï¼‰ã€‚这个值是é‡åŠ›å‘é‡çš„å€æ•°ã€‚这对于改å˜"
+"é‡åŠ›å¤§å°è€Œä¸æ”¹å˜å…¶æ–¹å‘很有用。"
+
+msgid "The area's gravity vector (not normalized)."
+msgstr "该区域的é‡åŠ›å‘é‡ï¼ˆæœªå½’一化)。"
+
+msgid ""
+"If [code]true[/code], gravity is calculated from a point (set via [member "
+"gravity_point_center]). See also [member gravity_space_override]."
+msgstr ""
+"如果为 [code]true[/code],则从一个点(通过 [member gravity_point_center] 设"
+"置)计算é‡åŠ›ã€‚å‚阅 [member gravity_space_override]。"
+
+msgid ""
+"If gravity is a point (see [member gravity_point]), this will be the point "
+"of attraction."
+msgstr "如果é‡åŠ›æ˜¯ä¸€ä¸ªç‚¹ï¼ˆå‚è§ [member gravity_point]),这将是å¸å¼•åŠ›ç‚¹ã€‚"
+
+msgid ""
+"Override mode for gravity calculations within this area. See [enum "
+"SpaceOverride] for possible values."
+msgstr ""
+"该区域内é‡åŠ›è®¡ç®—的覆盖模å¼ã€‚有关å¯èƒ½çš„值,请å‚阅 [enum SpaceOverride]。"
+
+msgid ""
"The rate at which objects stop moving in this area. Represents the linear "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
@@ -3430,6 +8348,11 @@ msgstr ""
"å…³äºŽé˜»å°¼çš„æ›´å¤šç»†èŠ‚è§ [member ProjectSettings.physics/2d/"
"default_linear_damp]。"
+msgid ""
+"Override mode for linear damping calculations within this area. See [enum "
+"SpaceOverride] for possible values."
+msgstr "该区域内线性阻尼计算的覆盖模å¼ã€‚å¯å–çš„å€¼è§ [enum SpaceOverride]。"
+
msgid "If [code]true[/code], other monitoring areas can detect this area."
msgstr "如果为 [code]true[/code],其他监测区域å¯ä»¥æ£€æµ‹åˆ°è¿™ä¸ªåŒºåŸŸã€‚"
@@ -3437,11 +8360,141 @@ msgid ""
"If [code]true[/code], the area detects bodies or areas entering and exiting "
"it."
msgstr ""
-"如果为 [code]true[/code],该区域能够检测到进入和退出该区域的实体或区域。"
+"为 [code]true[/code] 时,该区域能够检测到进入和退出该区域的实体或区域。"
msgid "The area's priority. Higher priority areas are processed first."
msgstr "该区域的优先级。将优先处ç†ä¼˜å…ˆçº§è¾ƒé«˜çš„区域。"
+msgid ""
+"Emitted when the received [param area] enters this area. Requires [member "
+"monitoring] to be set to [code]true[/code]."
+msgstr ""
+"当接收的 [param area] 进入此区域时å‘å‡ºã€‚éœ€è¦ [member monitoring] 被设置为 "
+"[code]true[/code]。"
+
+msgid ""
+"Emitted when the received [param area] exits this area. Requires [member "
+"monitoring] to be set to [code]true[/code]."
+msgstr ""
+"当接收的 [param area] 退出此区域时å‘å‡ºã€‚éœ€è¦ [member monitoring] 被设置为 "
+"[code]true[/code]。"
+
+msgid ""
+"Emitted when a [Shape2D] of the received [param area] enters a shape of this "
+"area. Requires [member monitoring] to be set to [code]true[/code].\n"
+"[param local_shape_index] and [param area_shape_index] contain indices of "
+"the interacting shapes from this area and the other area, respectively. "
+"[param area_rid] contains the [RID] of the other area. These values can be "
+"used with the [PhysicsServer2D].\n"
+"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape "
+"index:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var other_shape_owner = area.shape_find_owner(area_shape_index)\n"
+"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"当收到的 [param area] çš„ [Shape2D] 进入这个区域的形状时å‘出。è¦æ±‚[æˆå‘˜ç›‘控]被"
+"设置为 [code]true[/code] 。\n"
+"[param local_shape_index] å’Œ [param area_shape_index] 分别包å«æ¥è‡ªè¿™ä¸ªåŒºåŸŸå’Œ"
+"å¦ä¸€ä¸ªåŒºåŸŸçš„交互形状的索引。[param area_rid] 包å«å¦ä¸€ä¸ªåŒºåŸŸçš„ [RID]。这些值å¯"
+"以与 [PhysicsServer2D] 一起使用。\n"
+"[b]从形状索引中获å–[/b] [CollisionShape2D][b]节点的例å­ã€‚[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var other_shape_owner = area.shape_find_owner( area_shape_index)\n"
+"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Emitted when a [Shape2D] of the received [param area] exits a shape of this "
+"area. Requires [member monitoring] to be set to [code]true[/code].\n"
+"See also [signal area_shape_entered]."
+msgstr ""
+"当接收的 [param area] çš„ [Shape2D] 退出此区域的形状时å‘å‡ºã€‚éœ€è¦ [member "
+"monitoring] 被设置为 [code]true[/code]。\n"
+"å¦è§ [signal area_shape_entered]。"
+
+msgid ""
+"Emitted when the received [param body] enters this area. [param body] can be "
+"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] "
+"has collision shapes configured. Requires [member monitoring] to be set to "
+"[code]true[/code]."
+msgstr ""
+"当接收到的 [param body] 进入这个区域时å‘出的。[param body] å¯ä»¥æ˜¯ä¸€ä¸ª "
+"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] çš„ [TileSet] é…置了碰撞形"
+"状,就会被检测到。需è¦å°† [member monitoring] 设置为 [code]true[/code] 。"
+
+msgid ""
+"Emitted when the received [param body] exits this area. [param body] can be "
+"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] "
+"has collision shapes configured. Requires [member monitoring] to be set to "
+"[code]true[/code]."
+msgstr ""
+"当接收到的 [param body] 离开这个区域时å‘出的。[param body] å¯ä»¥æ˜¯ä¸€ä¸ª "
+"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] çš„ [TileSet] é…置了碰撞形"
+"状,就会被检测到。è¦æ±‚ [member monitoring] 被设置为 [code]true[/code] 。"
+
+msgid ""
+"Emitted when a [Shape2D] of the received [param body] enters a shape of this "
+"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are "
+"detected if their [TileSet] has collision shapes configured. Requires "
+"[member monitoring] to be set to [code]true[/code].\n"
+"[param local_shape_index] and [param body_shape_index] contain indices of "
+"the interacting shapes from this area and the interacting body, "
+"respectively. [param body_rid] contains the [RID] of the body. These values "
+"can be used with the [PhysicsServer2D].\n"
+"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape "
+"index:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var body_shape_owner = body.shape_find_owner(body_shape_index)\n"
+"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"当收到的 [param body] çš„ [Shape2D] 进入这个区域的形状时å‘出。[param body] å¯"
+"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] çš„ [TileSet] é…置了"
+"碰撞形状,则会被检测到。è¦æ±‚ [member monitoring] 被设置为 [code]true[/"
+"code] 。\n"
+"[param local_shape_index] å’Œ [param body_shape_index] 分别包å«æ¥è‡ªè¿™ä¸ªåŒºåŸŸå’Œ"
+"交互体的交互形状的指数。[param body_rid] 包å«ä½“çš„ [RID]。这些值å¯ä»¥ä¸Ž "
+"[PhysicsServer2D] 一起使用。\n"
+"[b]从形状索引中获å–[/b] [CollisionShape2D] [b]节点的例å­ã€‚[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var body_shape_owner = body.shape_find_owner(body_shape_index)\n"
+"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Emitted when a [Shape2D] of the received [param body] exits a shape of this "
+"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are "
+"detected if their [TileSet] has collision shapes configured. Requires "
+"[member monitoring] to be set to [code]true[/code].\n"
+"See also [signal body_shape_entered]."
+msgstr ""
+"当收到的 [param body] çš„ [Shape2D] 退出这个区域的形状时å‘出。[param body] å¯"
+"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] çš„ [TileSet] é…置了"
+"碰撞形状,则会被检测到。è¦æ±‚ [member monitoring] 被设置为 [code]true[/"
+"code] 。\n"
+"å¦è¯·å‚阅 [signal body_shape_entered]。"
+
msgid "This area does not affect gravity/damping."
msgstr "这个区域ä¸å½±å“é‡åŠ›/阻尼。"
@@ -3471,13 +8524,59 @@ msgstr ""
"这个区域å–代了到目å‰ä¸ºæ­¢è®¡ç®—出的任何é‡åŠ›/阻尼(按 [member priority] 顺åºï¼‰ï¼Œ"
"但继续计算其余的区域。"
-msgid "3D area for detection and physics and audio influence."
-msgstr "用于检测和物ç†åŠéŸ³é¢‘å½±å“çš„ 3D 区域。"
+msgid ""
+"3D area that detects [CollisionObject3D] nodes overlapping, entering, or "
+"exiting. Can also alter or override local physics parameters (gravity, "
+"damping) and route audio to custom audio buses.\n"
+"To give the area its shape, add a [CollisionShape3D] or a "
+"[CollisionPolygon3D] node as a [i]direct[/i] child (or add multiple such "
+"nodes as direct children) of the area.\n"
+"[b]Warning:[/b] See [ConcavePolygonShape3D] (also called \"trimesh\") for a "
+"warning about possibly unexpected behavior when using that shape for an "
+"area.\n"
+"[b]Warning:[/b] With a non-uniform scale this node will probably not "
+"function as expected. Please make sure to keep its scale uniform (i.e. the "
+"same on all axes), and change the size(s) of its collision shape(s) instead."
+msgstr ""
+"3D 区域å¯ä»¥æ£€æµ‹ [CollisionObject3D] 节点é‡å ã€è¿›å…¥æˆ–退出 。还å¯ä»¥æ›´æ”¹æˆ–覆盖局"
+"部物ç†å‚数(é‡åŠ›ã€é˜»å°¼ï¼‰ï¼Œä»¥åŠå°†éŸ³é¢‘路由到自定义音频总线。\n"
+"è¦ä¸ºåŒºåŸŸè®¾ç½®å½¢çŠ¶ï¼Œè¯·æ·»åŠ ä¸€ä¸ª [CollisionShape3D] 或 [CollisionPolygon3D] 节点"
+"作为该区域的[i]直接[/i]å­èŠ‚点(或添加多个该类节点作为直接å­èŠ‚点)。\n"
+"[b]警告:[/b]请å‚阅 [ConcavePolygonShape3D](也称为“三角形网格â€ï¼‰ä»¥èŽ·å–有关在"
+"区域中使用该形状时å¯èƒ½å‡ºçŽ°æ„外行为的警告。\n"
+"[b]警告:[/b]如果缩放比例ä¸ä¸€è‡´ï¼Œè¯¥èŠ‚点å¯èƒ½æ— æ³•æŒ‰é¢„期è¿è¡Œã€‚请确ä¿ä¿æŒå…¶æ¯”例统"
+"一(å³åœ¨æ‰€æœ‰è½´ä¸Šç›¸åŒï¼‰ï¼Œå¹¶æ”¹ä¸ºæ›´æ”¹å…¶ç¢°æ’žå½¢çŠ¶çš„大å°ã€‚"
msgid "GUI in 3D Demo"
msgstr "3D GUI 演示"
msgid ""
+"Returns a list of intersecting [Area3D]s. The overlapping area's [member "
+"CollisionObject3D.collision_layer] must be part of this area's [member "
+"CollisionObject3D.collision_mask] in order to be detected.\n"
+"For performance reasons (collisions are all processed at the same time) this "
+"list is modified once during the physics step, not immediately after objects "
+"are moved. Consider using signals instead."
+msgstr ""
+"返回相交的 [Area3D] 的列表。é‡å åŒºåŸŸçš„ [member CollisionObject3D."
+"collision_layer] 必须是该区域的 [member CollisionObject3D.collision_mask] 的"
+"一部分æ‰èƒ½è¢«æ£€æµ‹åˆ°ã€‚\n"
+"出于性能原因(åŒæ—¶å¤„ç†æ‰€æœ‰ç¢°æ’žï¼‰ï¼Œæ­¤åˆ—表在物ç†æ­¥éª¤æœŸé—´ä¿®æ”¹ä¸€æ¬¡ï¼Œè€Œä¸æ˜¯åœ¨å®žä½“"
+"被移动åŽç«‹å³ä¿®æ”¹ã€‚å¯è€ƒè™‘改用信å·ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the given [Area3D] intersects or overlaps this "
+"[Area3D], [code]false[/code] otherwise.\n"
+"[b]Note:[/b] The result of this test is not immediate after moving objects. "
+"For performance, list of overlaps is updated once per frame and before the "
+"physics step. Consider using signals instead."
+msgstr ""
+"如果给定的 [Area3D] 与此 [Area3D] 相交或é‡å ï¼Œåˆ™è¿”回 [code]true[/code],å¦åˆ™"
+"返回 [code]false[/code]。\n"
+"[b]注æ„:[/b]此测试的结果ä¸æ˜¯åœ¨ç§»åŠ¨å®žä½“åŽç«‹å³äº§ç”Ÿçš„。为了æ高性能,é‡å åˆ—表æ¯"
+"帧仅更新一次,并且在物ç†æ­¥éª¤ä¹‹å‰æ›´æ–°ã€‚å¯è€ƒè™‘改用信å·ã€‚"
+
+msgid ""
"The rate at which objects stop spinning in this area. Represents the angular "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
@@ -3488,12 +8587,20 @@ msgstr ""
"default_angular_damp]。"
msgid ""
+"The area's gravity intensity (in meters per second squared). This value "
+"multiplies the gravity direction. This is useful to alter the force of "
+"gravity without altering its direction."
+msgstr ""
+"该区域的é‡åŠ›å¼ºåº¦ï¼ˆä»¥ç±³æ¯å¹³æ–¹ç§’为å•ä½ï¼‰ã€‚这个值是é‡åŠ›å‘é‡çš„å€æ•°ã€‚这对于改å˜é‡"
+"力大å°è€Œä¸æ”¹å˜å…¶æ–¹å‘很有用。"
+
+msgid ""
"The rate at which objects stop moving in this area. Represents the linear "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"物体在此区域å‡é€Ÿçš„速率。代表æ¯ç§’æŸå¤±çš„线速度。\n"
+"实体在此区域å‡é€Ÿçš„速率。代表æ¯ç§’æŸå¤±çš„线速度。\n"
"关于阻尼的更多细节,è§[member ProjectSettings.physics/3d/"
"default_linear_damp]。"
@@ -3505,7 +8612,10 @@ msgstr ""
"度为 [code]0.1[/code]。"
msgid "If [code]true[/code], the area applies reverb to its associated audio."
-msgstr "如果为 [code]true[/code],该区域会将混å“应用于其相关音频。"
+msgstr "如果为 [code]true[/code],该区域会将混å“应用于其关è”音频。"
+
+msgid "The name of the reverb bus to use for this area's associated audio."
+msgstr "用于该区域关è”音频的混å“总线的å称。"
msgid ""
"The degree to which this area's reverb is a uniform effect. Ranges from "
@@ -3514,12 +8624,341 @@ msgstr ""
"该区域的混å“效果å‡åŒ€çš„程度。范围从 [code]0[/code] 到 [code]1[/code],精度为 "
"[code]0.1[/code]。"
+msgid ""
+"The exponential rate at which wind force decreases with distance from its "
+"origin."
+msgstr "风力éšç€è·å…¶åŽŸç‚¹çš„è·ç¦»è€Œè¡°å‡çš„指数速率。"
+
+msgid "The magnitude of area-specific wind force."
+msgstr "特定区域风力的大å°ã€‚"
+
+msgid ""
+"The [Node3D] which is used to specify the the direction and origin of an "
+"area-specific wind force. The direction is opposite to the z-axis of the "
+"[Node3D]'s local transform, and its origin is the origin of the [Node3D]'s "
+"local transform."
+msgstr ""
+"[Node3D] 用于指定特定区域风力的方å‘和原点。方å‘与 [Node3D] 局部å˜æ¢çš„ z 轴相"
+"å,其原点为 [Node3D] 局部å˜æ¢çš„原点。"
+
+msgid ""
+"Emitted when a [Shape3D] of the received [param area] enters a shape of this "
+"area. Requires [member monitoring] to be set to [code]true[/code].\n"
+"[param local_shape_index] and [param area_shape_index] contain indices of "
+"the interacting shapes from this area and the other area, respectively. "
+"[param area_rid] contains the [RID] of the other area. These values can be "
+"used with the [PhysicsServer3D].\n"
+"[b]Example of getting the[/b] [CollisionShape3D] [b]node from the shape "
+"index:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var other_shape_owner = area.shape_find_owner(area_shape_index)\n"
+"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"当收到的 [param area] çš„ [Shape3D] 进入这个区域的形状时å‘出。è¦æ±‚ [member "
+"monitoring] 被设置为 [code]true[/code] 。\n"
+"[param local_shape_index] å’Œ [param area_shape_index] 分别包å«æ¥è‡ªè¿™ä¸ªåŒºåŸŸå’Œ"
+"å¦ä¸€ä¸ªåŒºåŸŸçš„交互形状的索引。[param area_rid] 包å«å¦ä¸€ä¸ªåŒºåŸŸçš„ [RID]。这些值å¯"
+"以与 [PhysicsServer3D] 一起使用。\n"
+"[b]从形状索引中获å–[/b] [CollisionShape3D] [b]节点的例å­ã€‚[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var other_shape_owner = area.shape_find_owner( area_shape_index)\n"
+"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n"
+"\n"
+"var local_shape_owner = shape_find_owner(local_shape_index)\n"
+"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
+"Emitted when a [Shape3D] of the received [param area] exits a shape of this "
+"area. Requires [member monitoring] to be set to [code]true[/code].\n"
+"See also [signal area_shape_entered]."
+msgstr ""
+"当接收的 [param area] çš„ [Shape3D] 退出此区域的形状时å‘å‡ºã€‚éœ€è¦ [member "
+"monitoring] 被设置为 [code]true[/code]。\n"
+"å¦è§ [signal area_shape_entered]。"
+
+msgid ""
+"Emitted when the received [param body] enters this area. [param body] can be "
+"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their "
+"[MeshLibrary] has collision shapes configured. Requires [member monitoring] "
+"to be set to [code]true[/code]."
+msgstr ""
+"当接收到的 [param body] 进入这个区域时触å‘。[param body] å¯ä»¥æ˜¯ä¸€ä¸ª "
+"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] çš„ [MeshLibrary] é…置了碰撞"
+"形状,就会被检测到。需è¦å°† [member monitoring] 设置为 [code]true[/code] 。"
+
+msgid ""
+"Emitted when the received [param body] exits this area. [param body] can be "
+"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their "
+"[MeshLibrary] has collision shapes configured. Requires [member monitoring] "
+"to be set to [code]true[/code]."
+msgstr ""
+"当接收到的 [param body] 离开这个区域时å‘出的。[param body] å¯ä»¥æ˜¯ä¸€ä¸ª "
+"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] çš„ [MeshLibrary] é…置了碰撞"
+"形状,就会被检测到。è¦æ±‚ [member monitoring] 被设置为 [code]true[/code] 。"
+
msgid "A generic array datatype."
msgstr "通用数组数æ®ç±»åž‹ã€‚"
+msgid ""
+"A generic array that can contain several elements of any type, accessible by "
+"a numerical index starting at 0. Negative indices can be used to count from "
+"the back, like in Python (-1 is the last element, -2 is the second to last, "
+"etc.).\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = [\"One\", 2, 3, \"Four\"]\n"
+"print(array[0]) # One.\n"
+"print(array[2]) # 3.\n"
+"print(array[-1]) # Four.\n"
+"array[2] = \"Three\"\n"
+"print(array[-2]) # Three.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n"
+"GD.Print(array[0]); // One.\n"
+"GD.Print(array[2]); // 3.\n"
+"GD.Print(array[array.Count - 1]); // Four.\n"
+"array[2] = \"Three\";\n"
+"GD.Print(array[array.Count - 2]); // Three.\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Arrays can be concatenated using the [code]+[/code] operator:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array1 = [\"One\", 2]\n"
+"var array2 = [3, \"Four\"]\n"
+"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Array concatenation is not possible with C# arrays, but is with Godot."
+"Collections.Array.\n"
+"var array1 = new Godot.Collections.Array{\"One\", 2};\n"
+"var array2 = new Godot.Collections.Array{3, \"Four\"};\n"
+"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a "
+"new array, which has a cost. If you want to append another array to an "
+"existing array, [method append_array] is more efficient.\n"
+"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an "
+"array that can be modified independently of the original array, use [method "
+"duplicate].\n"
+"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] "
+"supported and will result in unpredictable behavior.\n"
+"[b]Note:[/b] When declaring an array with [code]const[/code], the array "
+"itself can still be mutated by defining the values at individual indices or "
+"pushing/removing elements. Using [code]const[/code] will only prevent "
+"assigning the constant with another value after it was initialized."
+msgstr ""
+"通用数组,å¯ä»¥åŒ…å«ä»»æ„类型的多个元素,å¯ä»¥é€šè¿‡ä»Ž 0 开始的数字索引进行访问。负"
+"数索引å¯ä»¥ç”¨æ¥ä»ŽåŽé¢æ•°èµ·ï¼Œå°±åƒåœ¨ Python 中一样(-1 是最åŽä¸€ä¸ªå…ƒç´ ã€-2 是倒数"
+"第二,以此类推)。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = [\"One\", 2, 3, \"Four\"]\n"
+"print(array[0]) # One。\n"
+"print(array[2]) # 3。\n"
+"print(array[-1]) # Four。\n"
+"array[2] = \"Three\"\n"
+"print(array[-2]) # Three。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n"
+"GD.Print(array[0]); // One。\n"
+"GD.Print(array[2]); // 3。\n"
+"GD.Print(array[array.Count - 1]); // Four。\n"
+"array[2] = \"Three\";\n"
+"GD.Print(array[array.Count - 2]); // Three。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"å¯ä»¥ä½¿ç”¨ [code]+[/code] è¿ç®—符连接数组:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array1 = [\"One\", 2]\n"
+"var array2 = [3, \"Four\"]\n"
+"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C# 数组无法进行数组串è”,但 Godot.Collections.Array å¯ä»¥ã€‚\n"
+"var array1 = new Godot.Collections.Array{\"One\", 2};\n"
+"var array2 = new Godot.Collections.Array{3, \"Four\"};\n"
+"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]用 [code]+=[/code] æ“作符串è”将创建一个新的数组,这是有代价的。"
+"如果è¦å°†å¦ä¸€ä¸ªæ•°ç»„追加到现有的数组中,[method append_array] 会更有效。\n"
+"[b]注æ„:[/b]数组总是通过引用æ¥ä¼ é€’。è¦èŽ·å¾—一个å¯ä»¥ç‹¬ç«‹äºŽåŽŸå§‹æ•°ç»„而被修改的数"
+"组的副本,请使用 [method duplicate]。\n"
+"[b]注æ„:[/b][b]ä¸[/b]支æŒåœ¨é历数组时擦除元素,这将导致ä¸å¯é¢„知的行为。\n"
+"[b]注æ„:[/b]当用 [code]const[/code] 声明数组时,数组本身ä»ç„¶å¯ä»¥é€šè¿‡å®šä¹‰å„个"
+"索引上的值或追加/移除元素而被修改。使用 [code]const[/code] åªèƒ½é˜²æ­¢è¯¥å¸¸é‡åœ¨åˆ"
+"始化åŽè¢«èµ‹å€¼ä¸ºå¦ä¸€ä¸ªå€¼ã€‚"
+
msgid "Constructs an empty [Array]."
msgstr "构造空的 [Array]。"
+msgid "Creates a typed array from the [param base] array."
+msgstr "从 [param base] 数组创建具有类型的数组。"
+
+msgid ""
+"Returns the same array as [param from]. If you need a copy of the array, use "
+"[method duplicate]."
+msgstr ""
+"返回与 [param from] 相åŒçš„数组。如果你需è¦ä¸€ä¸ªæ•°ç»„的副本,请使用 [method "
+"duplicate]。"
+
+msgid "Constructs an array from a [PackedByteArray]."
+msgstr "从 [PackedByteArray] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedColorArray]."
+msgstr "从 [PackedColorArray] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedFloat32Array]."
+msgstr "从 [PackedFloat32Array] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedFloat64Array]."
+msgstr "从 [PackedFloat64Array] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedInt32Array]."
+msgstr "从 [PackedInt32Array] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedInt64Array]."
+msgstr "从 [PackedInt64Array] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedStringArray]."
+msgstr "从 [PackedStringArray] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedVector2Array]."
+msgstr "从 [PackedVector2Array] 构造一个数组。"
+
+msgid "Constructs an array from a [PackedVector3Array]."
+msgstr "从 [PackedVector3Array] 构造一个数组。"
+
+msgid ""
+"Calls the provided [Callable] on each element in the array and returns "
+"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] "
+"elements in the array. If the [Callable] returns [code]false[/code] for one "
+"array element or more, this method returns [code]false[/code].\n"
+"The callable's method should take one [Variant] parameter (the current array "
+"element) and return a boolean value.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([6, 10, 6].all(greater_than_5)) # Prints True (3/3 elements "
+"evaluate to `true`).\n"
+" print([4, 10, 4].all(greater_than_5)) # Prints False (1/3 elements "
+"evaluate to `true`).\n"
+" print([4, 4, 4].all(greater_than_5)) # Prints False (0/3 elements "
+"evaluate to `true`).\n"
+" print([].all(greater_than_5)) # Prints True (0/0 elements evaluate to "
+"`true`).\n"
+"\n"
+" print([6, 10, 6].all(func(number): return number > 5)) # Prints True. "
+"Same as the first line above, but using lambda function.\n"
+"\n"
+"func greater_than_5(number):\n"
+" return number > 5\n"
+"[/codeblock]\n"
+"See also [method any], [method filter], [method map] and [method reduce].\n"
+"[b]Note:[/b] Unlike relying on the size of an array returned by [method "
+"filter], this method will return as early as possible to improve performance "
+"(especially with large arrays).\n"
+"[b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/"
+"wiki/Vacuous_truth]always[/url] returns [code]true[/code]."
+msgstr ""
+"对数组中的æ¯ä¸ªå…ƒç´ è°ƒç”¨æ供的 [Callable],如果 [Callable] 为数组中的 [i]所有[/"
+"i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 [Callable] 为一"
+"个或多个数组元素返回 [code]false[/code],则此方法返回 [code]false[/code]。\n"
+"该å¯è°ƒç”¨çš„方法应采用一个 [Variant] å‚数(当å‰æ•°ç»„元素)并返回一个布尔值。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([6, 10, 6].all(greater_than_5)) # 输出 True(3/3 元素评估为 "
+"`true`)。\n"
+" print([4, 10, 4].all(greater_than_5)) # 输出 False(1/3 元素评估为 "
+"`true`)。\n"
+" print([4, 4, 4].all(greater_than_5)) # 输出 False(0/3 元素评估为 "
+"`true`)。\n"
+" print([].all(greater_than_5)) # 输出 True(0/0 元素评估为 `true`)。\n"
+"\n"
+" print([6, 10, 6].all(func(number): return number > 5)) # 输出 True。与上"
+"é¢çš„第一行相åŒï¼Œä½†ä½¿ç”¨ lambda 函数。\n"
+"\n"
+"func greater_than_5(number):\n"
+" return number > 5\n"
+"[/codeblock]\n"
+"å¦è¯·å‚è§ [method any]ã€[method filter]ã€[method map] å’Œ [method reduce]。\n"
+"[b]注æ„:[/b]与ä¾èµ– [method filter] 返回的数组大å°ä¸åŒï¼Œæ­¤æ–¹æ³•ä¼šå°½å¯èƒ½æ—©åœ°è¿”"
+"回以æ高性能(尤其是对于大型数组)。\n"
+"[b]注æ„:[/b]对于空数组,此方法 [url=https://en.wikipedia.org/wiki/"
+"Vacuous_truth]总是[/url] 返回 [code]true[/code]。"
+
+msgid ""
+"Calls the provided [Callable] on each element in the array and returns "
+"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or "
+"more[/i] elements in the array. If the [Callable] returns [code]false[/code] "
+"for all elements in the array, this method returns [code]false[/code].\n"
+"The callable's method should take one [Variant] parameter (the current array "
+"element) and return a boolean value.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([6, 10, 6].any(greater_than_5)) # Prints True (3 elements "
+"evaluate to `true`).\n"
+" print([4, 10, 4].any(greater_than_5)) # Prints True (1 elements "
+"evaluate to `true`).\n"
+" print([4, 4, 4].any(greater_than_5)) # Prints False (0 elements "
+"evaluate to `true`).\n"
+" print([].any(greater_than_5)) # Prints False (0 elements evaluate to "
+"`true`).\n"
+"\n"
+" print([6, 10, 6].any(func(number): return number > 5)) # Prints True. "
+"Same as the first line above, but using lambda function.\n"
+"\n"
+"func greater_than_5(number):\n"
+" return number > 5\n"
+"[/codeblock]\n"
+"See also [method all], [method filter], [method map] and [method reduce].\n"
+"[b]Note:[/b] Unlike relying on the size of an array returned by [method "
+"filter], this method will return as early as possible to improve performance "
+"(especially with large arrays).\n"
+"[b]Note:[/b] For an empty array, this method always returns [code]false[/"
+"code]."
+msgstr ""
+"对数组中的æ¯ä¸ªå…ƒç´ è°ƒç”¨æ供的 [Callable],如果 [Callable] 为数组中的 [i] 一个"
+"或多个 [/i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 "
+"[Callable] 为数组中的所有元素返回 [code]false[/code],则此方法返回 "
+"[code]false[/code]。\n"
+"å¯è°ƒç”¨çš„方法应采用一个 [Variant] å‚数(当å‰æ•°ç»„元素)并返回一个布尔值。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([6, 10, 6].any(greater_than_5)) # 输出 True(3 个元素评估为 "
+"`true`)。\n"
+" print([4, 10, 4].any(greater_than_5)) # 输出 True(1 个元素评估为 "
+"`true`)。\n"
+" print([4, 4, 4].any(greater_than_5)) # 输出 False(0 个元素评估为 "
+"`true`)。\n"
+" print([].any(greater_than_5)) # 输出 False(0 个元素评估为 `true`)。\n"
+"\n"
+" print([6, 10, 6].any(func(number): return number > 5)) # 输出 True。与上"
+"é¢çš„第一行相åŒï¼Œä½†ä½¿ç”¨ lambda 函数。\n"
+"\n"
+"func greater_than_5(number):\n"
+" return number > 5\n"
+"[/codeblock]\n"
+"å¦è¯·å‚阅 [method all]ã€[method filter]ã€[method map] å’Œ [method reduce]。\n"
+"[b]注æ„:[/b]与ä¾èµ– [method filter] 返回的数组大å°ä¸åŒï¼Œæ­¤æ–¹æ³•ä¼šå°½å¯èƒ½æ—©åœ°è¿”"
+"回以æ高性能(尤其是对于大型数组)。\n"
+"[b]注æ„:[/b]对于一个空数组,这个方法总是返回 [code]false[/code]。"
+
msgid ""
"Appends an element at the end of the array (alias of [method push_back])."
msgstr "å‘数组末尾追加一个元素([method push_back] 的别å)。"
@@ -3533,12 +8972,12 @@ msgid ""
"print(array1) # Prints [1, 2, 3, 4, 5, 6].\n"
"[/codeblock]"
msgstr ""
-"在此数组的末尾追加å¦ä¸€ä¸ªæ•°ç»„。\n"
+"在该数组的末尾追加其他数组。\n"
"[codeblock]\n"
"var array1 = [1, 2, 3]\n"
"var array2 = [4, 5, 6]\n"
"array1.append_array(array2)\n"
-"print(array1) # æ‰“å° [1, 2, 3, 4, 5, 6].\n"
+"print(array1) # 输出 [1, 2, 3, 4, 5, 6].\n"
"[/codeblock]"
msgid ""
@@ -3562,6 +9001,97 @@ msgid "Returns the number of times an element is in the array."
msgstr "返回元素在数组中出现的次数。"
msgid ""
+"Removes the first occurrence of a value from the array. If the value does "
+"not exist in the array, nothing happens. To remove an element by index, use "
+"[method remove_at] instead.\n"
+"[b]Note:[/b] This method acts in-place and doesn't return a value.\n"
+"[b]Note:[/b] On large arrays, this method will be slower if the removed "
+"element is close to the beginning of the array (index 0). This is because "
+"all elements placed after the removed element have to be reindexed.\n"
+"[b]Note:[/b] Do not erase entries while iterating over the array."
+msgstr ""
+"从数组中移除第一个匹é…的值。如果数组中ä¸å­˜åœ¨è¯¥å€¼ï¼Œåˆ™ä»€ä¹ˆä¹Ÿä¸ä¼šå‘生。è¦é€šè¿‡ç´¢"
+"引移除元素,请改用 [method remove_at]。\n"
+"[b]注æ„:[/b]这个方法是就地æ“作的,ä¸è¿”回值。\n"
+"[b]注æ„:[/b]在大型数组上,如果移除的元素é è¿‘数组的开头(索引 0),则此方法会"
+"较慢。这是因为所有放置在移除元素之åŽçš„元素都必须é‡æ–°ç´¢å¼•ã€‚\n"
+"[b]注æ„:[/b]在é历数组时ä¸è¦ç§»é™¤æ¡ç›®ã€‚"
+
+msgid ""
+"Assigns the given value to all elements in the array. This can typically be "
+"used together with [method resize] to create an array with a given size and "
+"initialized elements:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = []\n"
+"array.resize(10)\n"
+"array.fill(0) # Initialize the 10 elements to 0.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array();\n"
+"array.Resize(10);\n"
+"array.Fill(0); // Initialize the 10 elements to 0.\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] If [param value] is of a reference type ([Object]-derived, "
+"[Array], [Dictionary], etc.) then the array is filled with the references to "
+"the same object, i.e. no duplicates are created."
+msgstr ""
+"将该数组中的所有元素都设置为给定的值。通常与 [method resize] 一起使用,用于创"
+"建给定大å°çš„数组并对其元素进行åˆå§‹åŒ–:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = []\n"
+"array.resize(10)\n"
+"array.fill(0) # å°† 10 个元素都åˆå§‹åŒ–为 0。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array();\n"
+"array.Resize(10);\n"
+"array.Fill(0); // å°† 10 个元素都åˆå§‹åŒ–为 0。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]如果 [param value] 为引用类型(派生自 [Object]ã€[Array]ã€"
+"[Dictionary] 等),那么会用åŒä¸€ä¸ªå¯¹è±¡çš„引用填充该数组,å³ä¸ä¼šåˆ›å»ºå‰¯æœ¬ã€‚"
+
+msgid ""
+"Calls the provided [Callable] on each element in the array and returns a new "
+"array with the elements for which the method returned [code]true[/code].\n"
+"The callable's method should take one [Variant] parameter (the current array "
+"element) and return a boolean value.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([1, 2, 3].filter(remove_1)) # Prints [2, 3].\n"
+" print([1, 2, 3].filter(func(number): return number != 1)) # Same as "
+"above, but using lambda function.\n"
+"\n"
+"func remove_1(number):\n"
+" return number != 1\n"
+"[/codeblock]\n"
+"See also [method any], [method all], [method map] and [method reduce]."
+msgstr ""
+"在数组中的æ¯ä¸ªå…ƒç´ ä¸Šè°ƒç”¨æ供的 [Callable],并返回一个新数组,其中包å«è°ƒç”¨æ–¹æ³•"
+"åŽè¿”回值为 [code]true[/code] 的元素。\n"
+"å¯è°ƒç”¨çš„方法应该采用一个 [Variant] å‚数(当å‰æ•°ç»„元素)并返回一个布尔值。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([1, 2, 3].filter(remove_1)) # æ‰“å° [2, 3]。\n"
+" print([1, 2, 3].filter(func(number): return number != 1)) # åŒä¸Šï¼Œä½†ä½¿ç”¨ "
+"lambda 函数。\n"
+"\n"
+"func remove_1(number):\n"
+" return number != 1\n"
+"[/codeblock]\n"
+"å¦è¯·å‚è§ [method any]ã€[method all]ã€[method map] å’Œ [method reduce]。"
+
+msgid ""
+"Searches the array for a value and returns its index or [code]-1[/code] if "
+"not found. Optionally, the initial search index can be passed."
+msgstr ""
+"在数组中æœç´¢å€¼å¹¶è¿”回其索引,如果未找到则返回 [code]-1[/code] 。å¯é€‰åœ°ï¼Œå¯ä»¥ä¼ "
+"递起始æœç´¢ç´¢å¼•ã€‚"
+
+msgid ""
"Returns the first element of the array. Prints an error and returns "
"[code]null[/code] if the array is empty.\n"
"[b]Note:[/b] Calling this function is not the same as writing [code]array[0]"
@@ -3603,6 +9133,37 @@ msgid "Returns [code]true[/code] if the array is empty."
msgstr "该数组为空时,返回 [code]true[/code]。"
msgid ""
+"Calls the provided [Callable] for each element in the array and returns a "
+"new array filled with values returned by the method.\n"
+"The callable's method should take one [Variant] parameter (the current array "
+"element) and can return any [Variant].\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([1, 2, 3].map(negate)) # Prints [-1, -2, -3].\n"
+" print([1, 2, 3].map(func(number): return -number)) # Same as above, but "
+"using lambda function.\n"
+"\n"
+"func negate(number):\n"
+" return -number\n"
+"[/codeblock]\n"
+"See also [method filter], [method reduce], [method any] and [method all]."
+msgstr ""
+"为数组中的æ¯ä¸ªå…ƒç´ è°ƒç”¨æ供的 [Callable] 并返回一个新数组,其中填充了该调用方"
+"法返回的值。\n"
+"å¯è°ƒç”¨çš„方法应该采用一个 [Variant] å‚数(当å‰æ•°ç»„元素)并且å¯ä»¥è¿”å›žä»»æ„ "
+"[Variant]。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" print([1, 2, 3].map(negate)) # æ‰“å° [-1, -2, -3].\n"
+" print([1, 2, 3].map(func(number): return -number)) # åŒä¸Šï¼Œä½†ä½¿ç”¨ lambda "
+"函数。\n"
+"\n"
+"func negate(number):\n"
+" return -number\n"
+"[/codeblock]\n"
+"å¦è¯·å‚è§ [method filter]ã€[method reduce]ã€[method any] å’Œ [method all]。"
+
+msgid ""
"Returns the maximum value contained in the array if all elements are of "
"comparable types. If the elements can't be compared, [code]null[/code] is "
"returned."
@@ -3619,12 +9180,37 @@ msgstr ""
"[code]null[/code]。"
msgid ""
+"Returns a random value from the target array.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array: Array[int] = [1, 2, 3, 4]\n"
+"print(array.pick_random()) # Prints either of the four numbers.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n"
+"GD.Print(array.PickRandom()); // Prints either of the four numbers.\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"从目标数组中返回一个éšæœºå€¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array: Array[int] = [1, 2, 3, 4]\n"
+"print(array.pick_random()) # 输出四个数字中的任何一个。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n"
+"GD.Print(array.PickRandom()); // 输出四个数字中的任何一个。\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Removes and returns the last element of the array. Returns [code]null[/code] "
"if the array is empty, without printing an error message. See also [method "
"pop_front]."
msgstr ""
-"移除并返回数组中的末尾元素。数组为空时,返回 [code]null[/code]。å¦è¯·å‚阅 "
-"[method pop_front]。"
+"移除并返回数组中的末尾元素。如果数组为空,则返回 [code]null[/code],而ä¸æ‰“å°"
+"错误消æ¯ã€‚å¦è§[method pop_front]。"
msgid ""
"Removes and returns the first element of the array. Returns [code]null[/"
@@ -3680,19 +9266,328 @@ msgstr ""
msgid "Reverses the order of the elements in the array."
msgstr "将数组中的元素逆åºæŽ’列。"
+msgid ""
+"Searches the array in reverse order. Optionally, a start search index can be "
+"passed. If negative, the start index is considered relative to the end of "
+"the array."
+msgstr ""
+"逆åºæœç´¢æ•°ç»„。还å¯ä»¥ä¼ é€’起始æœç´¢ä½ç½®ç´¢å¼•ã€‚如果为负,则起始索引被视为相对于数"
+"组的结尾。"
+
+msgid ""
+"Shuffles the array such that the items will have a random order. This method "
+"uses the global random number generator common to methods such as [method "
+"@GlobalScope.randi]. Call [method @GlobalScope.randomize] to ensure that a "
+"new seed will be used each time if you want non-reproducible shuffling."
+msgstr ""
+"将数组打乱,元素éšæœºæŽ’列。该方法使用全局éšæœºæ•°ç”Ÿæˆå™¨ï¼Œä¸Ž [method "
+"@GlobalScope.randi] 等方法一致。如果你想æ¯æ¬¡éƒ½ä½¿ç”¨æ–°çš„ç§å­ï¼Œè®©æ‰“乱无法é‡çŽ°ï¼Œ"
+"则å¯ä»¥è°ƒç”¨ [method @GlobalScope.randomize]。"
+
msgid "Returns the number of elements in the array."
msgstr "返回数组中元素的个数。"
msgid ""
+"Sorts the array.\n"
+"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/"
+"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values "
+"considered equal may have their order changed when using [method sort].\n"
+"[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural "
+"order). This may lead to unexpected behavior when sorting an array of "
+"strings ending with a sequence of numbers. Consider the following example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort()\n"
+"print(strings) # Prints [string1, string10, string11, string2]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var strings = new Godot.Collections.Array { \"string1\", \"string2\", "
+"\"string10\", \"string11\" };\n"
+"strings.Sort();\n"
+"GD.Print(strings); // Prints [string1, string10, string11, string2]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"To perform natural order sorting, you can use [method sort_custom] with "
+"[method String.naturalnocasecmp_to] as follows:\n"
+"[codeblock]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n"
+"print(strings) # Prints [string1, string2, string10, string11]\n"
+"[/codeblock]"
+msgstr ""
+"对数组进行排åºã€‚\n"
+"[b]注æ„:[/b]排åºæ‰€ä½¿ç”¨çš„算法并ä¸[url=https://zh.wikipedia.org/wiki/"
+"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。"
+"也就是说,使用 [method sort] 时相等的值之间的顺åºå¯èƒ½ä¼šæ”¹å˜ã€‚\n"
+"[b]注æ„:[/b]字符串按字æ¯é¡ºåºæŽ’åºï¼ˆä¸Žè‡ªç„¶é¡ºåºç›¸å)。当对一个以数字åºåˆ—结尾的"
+"字符串数组进行排åºæ—¶ï¼Œè¿™å¯èƒ½ä¼šå¯¼è‡´æ„外的行为。请看下é¢çš„例å­ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort()\n"
+"print(strings) # 输出 [string1, string10, string11, string2]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var strings = new Godot.Collections.Array { \"string1\", \"string2\", "
+"\"string10\", \"string11\" };\n"
+"strings.Sort();\n"
+"GD.Print(strings); // 输出 [string1, string10, string11, string2]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"è¦æ‰§è¡Œè‡ªç„¶é¡ºåºæŽ’åºï¼Œå¯ä»¥ä½¿ç”¨ [method sort_custom] å’Œ [method String."
+"naturalnocasecmp_to],如下所示:\n"
+"[codeblock]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n"
+"print(strings) # 输出 [string1, string2, string10, string11]\n"
+"[/codeblock]"
+
+msgid ""
+"Sorts the array using a custom method. The custom method receives two "
+"arguments (a pair of elements from the array) and must return either "
+"[code]true[/code] or [code]false[/code]. For two elements [code]a[/code] and "
+"[code]b[/code], if the given method returns [code]true[/code], element "
+"[code]b[/code] will be after element [code]a[/code] in the array.\n"
+"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/"
+"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values "
+"considered equal may have their order changed when using [method "
+"sort_custom].\n"
+"[b]Note:[/b] You cannot randomize the return value as the heapsort algorithm "
+"expects a deterministic result. Randomizing the return value will result in "
+"unexpected behavior.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func sort_ascending(a, b):\n"
+" if a[0] < b[0]:\n"
+" return true\n"
+" return false\n"
+"\n"
+"func _ready():\n"
+" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n"
+" my_items.sort_custom(sort_ascending)\n"
+" print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n"
+"\n"
+" # Descending, lambda version.\n"
+" my_items.sort_custom(func(a, b): return a[0] > b[0])\n"
+" print(my_items) # Prints [[9, Rice], [5, Potato], [4, Tomato]].\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// There is no custom sort support for Godot.Collections.Array\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"使用自定义的方法对数组进行排åºã€‚自定义方法接å—两个å‚数(数组中的一对元素),"
+"并且必须返回 [code]true[/code] 或者 [code]false[/code]。对于两个元素 "
+"[code]a[/code] 和 [code]b[/code],如果给定的方法返回 [code]true[/code],数组"
+"中的元素 [code]b[/code] 将排在元素 [code]a[/code] 之åŽã€‚\n"
+"[b]注æ„:[/b]排åºæ‰€ä½¿ç”¨çš„算法并ä¸[url=https://zh.wikipedia.org/wiki/"
+"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。"
+"也就是说,使用 [method sort_custom] 时相等的值之间的顺åºå¯èƒ½ä¼šæ”¹å˜ã€‚\n"
+"[b]注æ„:[/b]您ä¸èƒ½éšæœºåŒ–返回值,因为堆排åºç®—法期望确定的结果。éšæœºåŒ–返回值将"
+"导致æ„外行为。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func sort_ascending(a, b):\n"
+" if a[0] < b[0]:\n"
+" return true\n"
+" return false\n"
+"\n"
+"func _ready():\n"
+" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n"
+" my_items.sort_custom(sort_ascending)\n"
+" print(my_items) # 输出 [[4, Tomato], [5, Potato], [9, Rice]].\n"
+"\n"
+" # Descending, lambda version.\n"
+" my_items.sort_custom(func(a, b): return a[0] > b[0])\n"
+" print(my_items) # 输出 [[9, Rice], [5, Potato], [4, Tomato]].\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Godot.Collections.Array ä¸æ”¯æŒè‡ªå®šä¹‰æŽ’åº\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Compares the left operand [Array] against the [param right] [Array]. Returns "
+"[code]true[/code] if the sizes and contents of the arrays are equal, "
+"[code]false[/code] otherwise."
+msgstr ""
+"将左æ“作数 [Array] 与 [param right] [Array] 进行比较。如果数组的大å°å’Œå†…容相"
+"等,则返回 [code]true[/code],å¦åˆ™è¿”回 [code]false[/code]。"
+
+msgid ""
"[Mesh] type that provides utility for constructing a surface from arrays."
msgstr "[Mesh] 网格类型,æ供了用于从数组构造表é¢çš„工具。"
msgid ""
+"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes "
+"as arrays.\n"
+"The most basic example is the creation of a single triangle:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var vertices = PackedVector3Array()\n"
+"vertices.push_back(Vector3(0, 1, 0))\n"
+"vertices.push_back(Vector3(1, 0, 0))\n"
+"vertices.push_back(Vector3(0, 0, 1))\n"
+"\n"
+"# Initialize the ArrayMesh.\n"
+"var arr_mesh = ArrayMesh.new()\n"
+"var arrays = []\n"
+"arrays.resize(Mesh.ARRAY_MAX)\n"
+"arrays[Mesh.ARRAY_VERTEX] = vertices\n"
+"\n"
+"# Create the Mesh.\n"
+"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n"
+"var m = MeshInstance3D.new()\n"
+"m.mesh = arr_mesh\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var vertices = new Vector3[]\n"
+"{\n"
+" new Vector3(0, 1, 0),\n"
+" new Vector3(1, 0, 0),\n"
+" new Vector3(0, 0, 1),\n"
+"};\n"
+"\n"
+"// Initialize the ArrayMesh.\n"
+"var arrMesh = new ArrayMesh();\n"
+"var arrays = new Godot.Collections.Array();\n"
+"arrays.Resize((int)Mesh.ArrayType.Max);\n"
+"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n"
+"\n"
+"// Create the Mesh.\n"
+"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n"
+"var m = new MeshInstance3D();\n"
+"m.Mesh = arrMesh;\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The [MeshInstance3D] is ready to be added to the [SceneTree] to be shown.\n"
+"See also [ImmediateMesh], [MeshDataTool] and [SurfaceTool] for procedural "
+"geometry generation.\n"
+"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-"
+"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
+"primitive modes."
+msgstr ""
+"[ArrayMesh] 是用æ¥æž„造 [Mesh] 的,其属性指定为数组。\n"
+"最基本的例å­æ˜¯åˆ›å»ºå•ä¸ªä¸‰è§’形:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var vertices = PackedVector3Array()\n"
+"vertices.push_back(Vector3(0, 1, 0))\n"
+"vertices.push_back(Vector3(1, 0, 0))\n"
+"vertices.push_back(Vector3(0, 0, 1))\n"
+"\n"
+"# åˆå§‹åŒ– ArrayMesh。\n"
+"var arr_mesh = ArrayMesh.new()\n"
+"var arrays = []\n"
+"arrays.resize(Mesh.ARRAY_MAX)\n"
+"arrays[Mesh.ARRAY_VERTEX] = vertices\n"
+"\n"
+"# 创建 Mesh。\n"
+"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n"
+"var m = MeshInstance3D.new()\n"
+"m.mesh = arr_mesh\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var vertices = new Vector3[]\n"
+"{\n"
+" new Vector3(0, 1, 0),\n"
+" new Vector3(1, 0, 0),\n"
+" new Vector3(0, 0, 1),\n"
+"};\n"
+"\n"
+"// åˆå§‹åŒ– ArrayMesh。\n"
+"var arrMesh = new ArrayMesh();\n"
+"var arrays = new Godot.Collections.Array();\n"
+"arrays.Resize((int)Mesh.ArrayType.Max);\n"
+"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n"
+"\n"
+"// 创建 Mesh。\n"
+"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n"
+"var m = new MeshInstance3D();\n"
+"m.Mesh = arrMesh;\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"这个 [MeshInstance3D] å°±å¯ä»¥æ·»åŠ åˆ°è¦æ˜¾ç¤ºçš„ [SceneTree] 中了。\n"
+"程åºå‡ ä½•ä½“生æˆè¯·å‚阅 [ImmediateMesh]ã€[MeshDataTool]ã€[SurfaceTool]。\n"
+"[b]注æ„:[/b]Godot 对三角形图元模å¼çš„æ­£é¢ä½¿ç”¨é¡ºæ—¶é’ˆ[url=https://learnopengl-"
+"cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/]环绕顺åº[/url]。"
+
+msgid "Procedural geometry using the ArrayMesh"
+msgstr "使用 ArrayMesh 的程åºåŒ–几何体"
+
+msgid ""
"Adds name for a blend shape that will be added with [method "
"add_surface_from_arrays]. Must be called before surface is added."
msgstr ""
-"为混åˆå½¢çŠ¶æ·»åŠ å称,该å称将用[method add_surface_from_arrays]添加。必须在添"
-"加曲é¢ä¹‹å‰è°ƒç”¨ã€‚"
+"为混åˆå½¢çŠ¶æ·»åŠ å称,该形状将用 [method add_surface_from_arrays] 添加。必须在"
+"添加é¢ä¹‹å‰è°ƒç”¨ã€‚"
+
+msgid ""
+"Creates a new surface. [method Mesh.get_surface_count] will become the "
+"[code]surf_idx[/code] for this new surface.\n"
+"Surfaces are created to be rendered using a [param primitive], which may be "
+"any of the values defined in [enum Mesh.PrimitiveType].\n"
+"The [param arrays] argument is an array of arrays. Each of the [constant "
+"Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for "
+"this surface as described by the corresponding member of [enum Mesh."
+"ArrayType] or [code]null[/code] if it is not used by the surface. For "
+"example, [code]arrays[0][/code] is the array of vertices. That first vertex "
+"sub-array is always required; the others are optional. Adding an index array "
+"puts this surface into \"index mode\" where the vertex and other arrays "
+"become the sources of data and the index array defines the vertex order. All "
+"sub-arrays must have the same length as the vertex array (or be an exact "
+"multiple of the vertex array's length, when multiple elements of a sub-array "
+"correspond to a single vertex) or be empty, except for [constant Mesh."
+"ARRAY_INDEX] if it is used.\n"
+"The [param blend_shapes] argument is an array of vertex data for each blend "
+"shape. Each element is an array of the same structure as [param arrays], but "
+"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant "
+"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] "
+"and all other entries are [code]null[/code].\n"
+"The [param lods] argument is a dictionary with [float] keys and "
+"[PackedInt32Array] values. Each entry in the dictionary represents a LOD "
+"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] "
+"array to use for the LOD level and the key is roughly proportional to the "
+"distance at which the LOD stats being used. I.e., increasing the key of a "
+"LOD also increases the distance that the objects has to be from the camera "
+"before the LOD is used.\n"
+"The [param flags] argument is the bitwise or of, as required: One value of "
+"[enum Mesh.ArrayCustomFormat] left shifted by "
+"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, "
+"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh."
+"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh."
+"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n"
+"[b]Note:[/b] When using indices, it is recommended to only use points, "
+"lines, or triangles."
+msgstr ""
+"创建一个新的表é¢ã€‚[method Mesh.get_surface_count] å°†æˆä¸ºè¿™ä¸ªæ–°è¡¨é¢çš„ "
+"[code]surf_idx[/code]。\n"
+"创建表é¢ä»¥ä½¿ç”¨ [param primitive] 进行渲染,它å¯ä»¥æ˜¯ [enum Mesh."
+"PrimitiveType] 中定义的任何值。\n"
+"[param arrays] å‚数是数组的数组。æ¯ä¸ª [constant Mesh.ARRAY_MAX] 元素都包å«ä¸€"
+"个数组,其中包å«æ­¤è¡¨é¢çš„一些网格数æ®ï¼Œå¦‚ [enum Mesh.ArrayType] 的相应æˆå‘˜æ‰€æ"
+"述的一样;如果它未被使用,则为 [code]null[/code]。例如,[code]arrays[0][/"
+"code] 是顶点数组。始终需è¦ç¬¬ä¸€ä¸ªé¡¶ç‚¹å­æ•°ç»„;其他的是å¯é€‰çš„。添加索引数组会将"
+"此表é¢ç½®äºŽâ€œç´¢å¼•æ¨¡å¼â€ï¼Œå…¶ä¸­é¡¶ç‚¹å’Œå…¶ä»–数组æˆä¸ºæ•°æ®æºï¼Œç´¢å¼•æ•°ç»„定义顶点顺åºã€‚所"
+"有å­æ•°ç»„的长度必须与顶点数组的长度相åŒï¼ˆæˆ–者是顶点数组长度的精确å€æ•°ï¼Œå½“å­æ•°"
+"组的多个元素对应于å•ä¸ªé¡¶ç‚¹æ—¶ï¼‰ï¼›æˆ–者为空,如果使用了 [constant Mesh."
+"ARRAY_INDEX ] 则除外。\n"
+"[param blend_shapes] å‚数是æ¯ä¸ªæ··åˆå½¢çŠ¶çš„顶点数æ®æ•°ç»„。 æ¯ä¸ªå…ƒç´ éƒ½æ˜¯ä¸Ž "
+"[param arrays] 具有相åŒç»“构的数组,但是 [constant Mesh.ARRAY_VERTEX]ã€"
+"[constant Mesh.ARRAY_NORMAL] å’Œ [constant Mesh.ARRAY_TANGENT] 这些æ¡ç›®ï¼Œå½“且"
+"仅当在 [param arrays] 被设置且所有其他æ¡ç›®éƒ½æ˜¯ [code]null[/code] 时,会被设"
+"置。\n"
+"[param lods] å‚数是一个带有 [float] 键和 [PackedInt32Array] 值的字典。字典中"
+"çš„æ¯ä¸ªæ¡ç›®ä»£è¡¨äº†è¡¨é¢çš„一个 LOD 级别,其中值是用于 LOD 级别的 [constant Mesh."
+"ARRAY_INDEX] 数组,键大致与使用 LOD 统计信æ¯çš„è·ç¦»æˆæ­£æ¯”。å³ï¼Œå¢žåŠ  LOD 的关键"
+"点也会增加在使用 LOD 之å‰å¯¹è±¡å¿…须与相机的è·ç¦»ã€‚\n"
+"[param flags] å‚数是根æ®éœ€è¦æŒ‰ä½æˆ–的:[enum Mesh.ArrayCustomFormat] 的一个值"
+"左移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用于æ¯ä¸ªæ­£åœ¨ä½¿ç”¨çš„自定义通é“,"
+"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]ã€[constant Mesh."
+"ARRAY_FLAG_USE_8_BONE_WEIGHTS]ã€æˆ– [constant Mesh."
+"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n"
+"[b]注æ„:[/b]使用索引时,建议åªä½¿ç”¨ç‚¹ã€çº¿æˆ–三角形。"
msgid "Removes all blend shapes from this [ArrayMesh]."
msgstr "移除此 [ArrayMesh] 的所有混åˆå½¢çŠ¶ã€‚"
@@ -3701,12 +9596,22 @@ msgid "Removes all surfaces from this [ArrayMesh]."
msgstr "移除此 [ArrayMesh] 的所有表é¢ã€‚"
msgid "Returns the number of blend shapes that the [ArrayMesh] holds."
-msgstr "返回[ArrayMesh]æŒæœ‰çš„æ··åˆå½¢çŠ¶çš„æ•°é‡ã€‚"
+msgstr "返回 [ArrayMesh] æŒæœ‰çš„æ··åˆå½¢çŠ¶çš„æ•°é‡ã€‚"
msgid "Returns the name of the blend shape at this index."
msgstr "返回此索引处的混åˆå½¢çŠ¶çš„å称。"
msgid ""
+"Performs a UV unwrap on the [ArrayMesh] to prepare the mesh for lightmapping."
+msgstr "在 [ArrayMesh] 上执行 UV 展开,为光照贴图准备该网格。"
+
+msgid "Regenerates tangents for each of the [ArrayMesh]'s surfaces."
+msgstr "为æ¯ä¸ª [ArrayMesh] 的表é¢é‡æ–°ç”Ÿæˆåˆ‡çº¿ã€‚"
+
+msgid "Sets the name of the blend shape at this index."
+msgstr "在此索引处设置混åˆå½¢çŠ¶çš„å称。"
+
+msgid ""
"Returns the index of the first surface with this name held within this "
"[ArrayMesh]. If none are found, -1 is returned."
msgstr ""
@@ -3716,8 +9621,7 @@ msgid ""
"Returns the length in indices of the index array in the requested surface "
"(see [method add_surface_from_arrays])."
msgstr ""
-"返回请求的曲é¢çš„索引数组的长度,以指数为å•ä½ï¼ˆè§ [method "
-"add_surface_from_arrays])。"
+"返回所请求的é¢ä¸­ç´¢å¼•æ•°ç»„的索引长度(å‚è§ [method add_surface_from_arrays])。"
msgid ""
"Returns the length in vertices of the vertex array in the requested surface "
@@ -3752,6 +9656,30 @@ msgstr ""
"用用户定义的用于使用视锥剔除的一ç§æ›¿ä»£ [AABB]。在使用ç€è‰²å™¨å移顶点时,é¿å…éž"
"预期的剔除特别有用。"
+msgid ""
+"An optional mesh which is used for rendering shadows and can be used for the "
+"depth prepass. Can be used to increase performance of shadow rendering by "
+"using a mesh that only contains vertex position data (without normals, UVs, "
+"colors, etc.)."
+msgstr ""
+"用于渲染阴影并å¯ç”¨äºŽæ·±åº¦é¢„通é“çš„å¯é€‰ç½‘格。å¯ç”¨äºŽé€šè¿‡ä½¿ç”¨ä»…包å«é¡¶ç‚¹ä½ç½®æ•°æ®"
+"(ä¸å«æ³•çº¿ã€UVã€é¢œè‰²ç­‰ï¼‰çš„网格æ¥æ高阴影渲染的性能。"
+
+msgid ""
+"3D polygon shape for use with occlusion culling in [OccluderInstance3D]."
+msgstr "用于与 [OccluderInstance3D] 中的é®æŒ¡å‰”除一起使用的 3D 多边形形状。"
+
+msgid ""
+"[ArrayOccluder3D] stores an arbitrary 3D polygon shape that can be used by "
+"the engine's occlusion culling system. This is analogous to [ArrayMesh], but "
+"for occluders.\n"
+"See [OccluderInstance3D]'s documentation for instructions on setting up "
+"occlusion culling."
+msgstr ""
+"[ArrayOccluder3D] 存储一个任æ„çš„ 3D 多边形形状,å¯ä¾›å¼•æ“Žçš„é®æŒ¡å‰”除系统使用。"
+"这类似于 [ArrayMesh],但适用于é®æŒ¡ç‰©ã€‚\n"
+"有关设置é®æŒ¡å‰”除的说明,请å‚阅 [OccluderInstance3D] 的文档。"
+
msgid "Container that preserves its child controls' aspect ratio."
msgstr "ä¿ç•™å…¶å­æŽ§ä»¶é•¿å®½æ¯”的容器。"
@@ -3799,6 +9727,19 @@ msgid ""
msgstr "å­æŽ§ä»¶çš„边界矩形会自动调整以适应容器,åŒæ—¶ä¿æŒé•¿å®½æ¯”。"
msgid ""
+"The width and height of child controls is automatically adjusted to make "
+"their bounding rectangle cover the entire area of the container while "
+"keeping the aspect ratio.\n"
+"When the bounding rectangle of child controls exceed the container's size "
+"and [member Control.clip_contents] is enabled, this allows to show only the "
+"container's area restricted by its own bounding rectangle."
+msgstr ""
+"å­æŽ§ä»¶çš„宽度和高度被自动调整,以使其边框覆盖容器的整个区域,åŒæ—¶ä¿æŒé•¿å®½"
+"比。\n"
+"当å­æŽ§ä»¶çš„边界矩形超过容器的大å°ï¼Œå¹¶ä¸” [member Control.clip_contents] 被å¯ç”¨"
+"时,这å…许仅显示å—其自身边界矩形é™åˆ¶çš„容器区域。"
+
+msgid ""
"Aligns child controls with the beginning (left or top) of the container."
msgstr "å°†å­æŽ§ä»¶ä¸Žå®¹å™¨çš„开头对é½ï¼ˆå·¦ä¾§æˆ–顶部)。"
@@ -3812,11 +9753,16 @@ msgid "AStar class representation that uses 2D vectors as edges."
msgstr "使用 2D å‘é‡ä½œä¸ºè¾¹ç¼˜çš„ AStar 类表示。"
msgid ""
+"This is a wrapper for the [AStar3D] class which uses 2D vectors instead of "
+"3D vectors."
+msgstr "这是 [AStar3D] 类的包装,它使用 2D å‘é‡è€Œä¸æ˜¯ 3D å‘é‡ã€‚"
+
+msgid ""
"Called when computing the cost between two connected points.\n"
"Note that this function is hidden in the default [code]AStar2D[/code] class."
msgstr ""
"计算两个连接点之间的æˆæœ¬æ—¶è°ƒç”¨ã€‚\n"
-"注æ„这个函数éšè—在默认的[code]AStar2D[/code]类中。"
+"注æ„这个函数éšè—在默认的 [code]AStar2D[/code] 类中。"
msgid ""
"Called when estimating the cost between a point and the path's ending "
@@ -3826,35 +9772,814 @@ msgstr ""
"当估计一个点和路径终点之间的æˆæœ¬æ—¶è°ƒç”¨ã€‚\n"
"请注æ„,这个函数éšè—在默认的 [code]AStar2D[/code] 类中。"
+msgid ""
+"Adds a new point at the given position with the given identifier. The [param "
+"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or "
+"greater.\n"
+"The [param weight_scale] is multiplied by the result of [method "
+"_compute_cost] when determining the overall cost of traveling across a "
+"segment from a neighboring point to this point. Thus, all else being equal, "
+"the algorithm prefers points with lower [param weight_scale]s to form a "
+"path.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with "
+"weight_scale 4 and id 1\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with "
+"weight_scale 4 and id 1\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"If there already exists a point for the given [param id], its position and "
+"weight scale are updated to the given values."
+msgstr ""
+"在具有给定标识符的给定ä½ç½®æ·»åŠ ä¸€ä¸ªæ–°ç‚¹ã€‚[param id] 必须为 0 或更大,[param "
+"weight_scale] 必须为 0.0 或更大。\n"
+"在确定从相邻点到此点的一段路程的总æˆæœ¬æ—¶ï¼Œ[param weight_scale] è¦ä¹˜ä»¥ "
+"[method _compute_cost] 的结果。因此,在其他æ¡ä»¶ç›¸åŒçš„情况下,算法优先选择 "
+"[param weight_scale] 较低的点æ¥å½¢æˆè·¯å¾„。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 0), 4) # 添加点 (1, 0)ã€æƒé‡ä¸º 4ã€ID 为 1\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(1, 0), 4); // 添加点 (1, 0)ã€æƒé‡ä¸º 4ã€ID 为 "
+"1\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果已ç»å­˜åœ¨ä¸€ä¸ªç»™å®š [param id] 的点,则它的ä½ç½®å’Œæƒé‡ç¼©æ”¾å°†è¢«æ›´æ–°ä¸ºç»™å®šå€¼ã€‚"
+
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[param bidirectional] is [code]false[/code], returns whether movement from "
+"[param id] to [param to_id] is possible through this segment."
+msgstr ""
+"返回两个给定点之间是å¦å­˜åœ¨è¿žæŽ¥/线段。如果 [param bidirectional] 为 "
+"[code]false[/code],则返回是å¦å¯ä»¥é€šè¿‡æ­¤æ®µä»Ž [param id] 移动到 [param "
+"to_id]。"
+
msgid "Clears all the points and segments."
msgstr "清除所有点和线段。"
+msgid ""
+"Creates a segment between the given points. If [param bidirectional] is "
+"[code]false[/code], only movement from [param id] to [param to_id] is "
+"allowed, not the reverse direction.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 1))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(1, 1));\n"
+"astar.AddPoint(2, new Vector2(0, 5));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在给定的点之间创建一个线段。如果 [param bidirectional] 为 [code]false[/"
+"code],则åªå…许从 [param id] 到 [param to_id] 的移动,而ä¸å…许åå‘移动。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 1))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(1, 1));\n"
+"astar.AddPoint(2, new Vector2(0, 5));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Deletes the segment between the given points. If [param bidirectional] is "
+"[code]false[/code], only movement from [param id] to [param to_id] is "
+"prevented, and a unidirectional segment possibly remains."
+msgstr ""
+"删除给定点之间的线段。如果 [param bidirectional] 为 [code]false[/code],则仅"
+"阻止从 [param id] 到 [param to_id] 的移动,并且å¯èƒ½ä¼šä¿ç•™ä¸€ä¸ªå•å‘线段。"
+
msgid "Returns the next available point ID with no point associated to it."
-msgstr "返回没有关è”的下一个å¯ç”¨ç‚¹çš„ID。"
+msgstr "返回下一个没有关è”点的å¯ç”¨ç‚¹ ID。"
msgid ""
-"Returns the capacity of the structure backing the points, useful in "
-"conjunction with [code]reserve_space[/code]."
-msgstr "返回支æŒç‚¹çš„结构的容é‡ï¼Œä¸Ž [code]reserve_space[/code] é…åˆä½¿ç”¨ã€‚"
+"Returns the ID of the closest point to [param to_position], optionally "
+"taking disabled points into account. Returns [code]-1[/code] if there are no "
+"points in the points pool.\n"
+"[b]Note:[/b] If several points are the closest to [param to_position], the "
+"one with the smallest ID will be returned, ensuring a deterministic result."
+msgstr ""
+"返回è·ç¦» [param to_position] 最近的点的 ID,å¯ä»¥é€‰æ‹©å°†ç¦ç”¨çš„点考虑在内。如果"
+"点池中没有点,则返回 [code]-1[/code]。\n"
+"[b]注æ„:[/b]如果有多个点è·ç¦» [param to_position] 最近,则返回 ID 最å°çš„那个"
+"点,以ä¿è¯ç»“果的确定性。"
+
+msgid ""
+"Returns the closest position to [param to_position] that resides inside a "
+"segment between two connected points.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, "
+"3)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 5));\n"
+"astar.ConnectPoints(1, 2);\n"
+"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // "
+"Returns (0, 3)\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The result is in the segment that goes from [code]y = 0[/code] to [code]y = "
+"5[/code]. It's the closest position in the segment to the given point."
+msgstr ""
+"返回最接近 [param to_position] çš„ä½ç½®ï¼Œè¯¥ä½ç½®ä½äºŽä¸¤ä¸ªè¿žæŽ¥ç‚¹ä¹‹é—´çš„线段内。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # 返回 (0, "
+"3)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 5));\n"
+"astar.ConnectPoints(1, 2);\n"
+"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // 返回 "
+"(0, 3)\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"结果ä½äºŽä»Ž [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中è·ç»™"
+"定点最近的ä½ç½®ã€‚"
+
+msgid ""
+"Returns an array with the IDs of the points that form the path found by "
+"AStar2D between the given points. The array is ordered from the starting "
+"point to the ending point of the path.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1\n"
+"astar.AddPoint(3, new Vector2(1, 1));\n"
+"astar.AddPoint(4, new Vector2(2, 0));\n"
+"\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"astar.ConnectPoints(2, 3, false);\n"
+"astar.ConnectPoints(4, 3, false);\n"
+"astar.ConnectPoints(1, 4, false);\n"
+"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"If you change the 2nd point's weight to 3, then the result will be [code][1, "
+"4, 3][/code] instead, because now even though the distance is longer, it's "
+"\"easier\" to get through point 4 than through point 2."
+msgstr ""
+"返回一个数组,其中包å«æž„æˆç”± AStar2D 在给定点之间找到的路径的点的 ID。数组从"
+"路径的起点到终点进行排åºã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1), 1) # 默认æƒé‡ä¸º 1\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 1), 1); // 默认æƒé‡ä¸º 1\n"
+"astar.AddPoint(3, new Vector2(1, 1));\n"
+"astar.AddPoint(4, new Vector2(2, 0));\n"
+"\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"astar.ConnectPoints(2, 3, false);\n"
+"astar.ConnectPoints(4, 3, false);\n"
+"astar.ConnectPoints(1, 4, false);\n"
+"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果将第2个点的æƒé‡æ›´æ”¹ä¸º 3,则结果将改为 [code][1, 4, 3][/code],因为现在å³"
+"使è·ç¦»æ›´é•¿ï¼Œé€šè¿‡ç¬¬ 4 点也比通过第 2 点“更容易â€ã€‚"
+
+msgid ""
+"Returns an array with the IDs of the points that form the connection with "
+"the given point.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1))\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, true)\n"
+"astar.connect_points(1, 3, true)\n"
+"\n"
+"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 1));\n"
+"astar.AddPoint(3, new Vector2(1, 1));\n"
+"astar.AddPoint(4, new Vector2(2, 0));\n"
+"\n"
+"astar.ConnectPoints(1, 2, true);\n"
+"astar.ConnectPoints(1, 3, true);\n"
+"\n"
+"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回一个数组,其中包å«ä¸Žç»™å®šç‚¹å½¢æˆè¿žæŽ¥çš„点的 ID。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1))\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, true)\n"
+"astar.connect_points(1, 3, true)\n"
+"\n"
+"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar2D();\n"
+"astar.AddPoint(1, new Vector2(0, 0));\n"
+"astar.AddPoint(2, new Vector2(0, 1));\n"
+"astar.AddPoint(3, new Vector2(1, 1));\n"
+"astar.AddPoint(4, new Vector2(2, 0));\n"
+"\n"
+"astar.ConnectPoints(1, 2, true);\n"
+"astar.ConnectPoints(1, 3, true);\n"
+"\n"
+"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]"
msgid "Returns the number of points currently in the points pool."
-msgstr "返回当å‰ç§¯åˆ†æ± ä¸­çš„积分数é‡ã€‚"
+msgstr "返回点池中当å‰çš„点数。"
+
+msgid "Returns an array of all point IDs."
+msgstr "返回所有点 ID 的数组。"
+
+msgid ""
+"Returns an array with the points that are in the path found by AStar2D "
+"between the given points. The array is ordered from the starting point to "
+"the ending point of the path.\n"
+"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
+"will return an empty [PackedVector2Array] and will print an error message."
+msgstr ""
+"è¿”å›žä¸€ä¸ªæ•°ç»„ï¼Œå…¶ä¸­åŒ…å« AStar2D 在给定点之间找到的路径中的点。数组从路径的起点"
+"到终点进行排åºã€‚\n"
+"[b]注æ„:[/b] 该方法ä¸æ˜¯çº¿ç¨‹å®‰å…¨çš„。如果从 [Thread] 调用,它将返回一个空的 "
+"[PackedVector2Array] 并打å°ä¸€æ¡é”™è¯¯æ¶ˆæ¯ã€‚"
+
+msgid "Returns the position of the point associated with the given [param id]."
+msgstr "返回与给定 [param id] 相关è”的点的ä½ç½®ã€‚"
+
+msgid ""
+"Returns the weight scale of the point associated with the given [param id]."
+msgstr "返回与给定 [param id] å…³è”的点的æƒé‡æ¯”例。"
+
+msgid "Returns whether a point associated with the given [param id] exists."
+msgstr "返回与给定 [param id] 相关è”的点是å¦å­˜åœ¨ã€‚"
msgid ""
"Returns whether a point is disabled or not for pathfinding. By default, all "
"points are enabled."
-msgstr "返回是å¦ç¦ç”¨ç‚¹ä»¥è¿›è¡Œå¯»è·¯ã€‚默认情况下,所有点å‡å¤„于å¯ç”¨çŠ¶æ€ã€‚"
+msgstr "返回用于寻路时点是å¦è¢«ç¦ç”¨ã€‚默认情况下,所有点å‡è¢«å¯ç”¨ã€‚"
+
+msgid ""
+"Removes the point associated with the given [param id] from the points pool."
+msgstr "从点池中移除与给定 [param id] å…³è”的点。"
+
+msgid ""
+"Reserves space internally for [param num_nodes] points, useful if you're "
+"adding a known large number of points at once, such as points on a grid. New "
+"capacity must be greater or equals to old capacity."
+msgstr ""
+"在内部为 [param num_nodes] 个点ä¿ç•™ç©ºé—´ï¼Œå¦‚果你想è¦ä¸€æ¬¡æ€§æ·»åŠ å¤§é‡çš„点且数é‡å·²"
+"知,例如网格,那么就会很有用。新容é‡å¿…须大于或等于旧容é‡ã€‚"
msgid ""
"Disables or enables the specified point for pathfinding. Useful for making a "
"temporary obstacle."
-msgstr "ç¦ç”¨æˆ–å¯ç”¨æŒ‡å®šç‚¹çš„寻路功能。用于制作临时障ç¢ç‰©ã€‚"
+msgstr "用于寻路时ç¦ç”¨æˆ–å¯ç”¨æŒ‡å®šçš„点。适用于制作临时障ç¢ç‰©ã€‚"
+
+msgid "Sets the [param position] for the point with the given [param id]."
+msgstr "为具有给定 [param id] 的点设置ä½ç½® [param position]。"
+
+msgid ""
+"Sets the [param weight_scale] for the point with the given [param id]. The "
+"[param weight_scale] is multiplied by the result of [method _compute_cost] "
+"when determining the overall cost of traveling across a segment from a "
+"neighboring point to this point."
+msgstr ""
+"为给定的 [param id] 的点设置 [param weight_scale]。在确定从邻接点到这个点的一"
+"段路程的总æˆæœ¬æ—¶ï¼Œ[param weight_scale] è¦ä¹˜ä»¥ [method _compute_cost] 的结果。"
msgid ""
"An implementation of A* to find the shortest paths among connected points in "
"space."
msgstr "A* 的一ç§å®žçŽ°ï¼Œç”¨äºŽå¯»æ‰¾ç©ºé—´ä¸­è¿žæŽ¥ç‚¹ä¹‹é—´çš„最短路径。"
+msgid ""
+"A* (A star) is a computer algorithm that is widely used in pathfinding and "
+"graph traversal, the process of plotting short paths among vertices "
+"(points), passing through a given set of edges (segments). It enjoys "
+"widespread use due to its performance and accuracy. Godot's A* "
+"implementation uses points in three-dimensional space and Euclidean "
+"distances by default.\n"
+"You must add points manually with [method add_point] and create segments "
+"manually with [method connect_points]. Then you can test if there is a path "
+"between two points with the [method are_points_connected] function, get a "
+"path containing indices by [method get_id_path], or one containing actual "
+"coordinates with [method get_point_path].\n"
+"It is also possible to use non-Euclidean distances. To do so, create a class "
+"that extends [code]AStar3D[/code] and override methods [method "
+"_compute_cost] and [method _estimate_cost]. Both take two indices and return "
+"a length, as is shown in the following example.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class MyAStar:\n"
+" extends AStar3D\n"
+"\n"
+" func _compute_cost(u, v):\n"
+" return abs(u - v)\n"
+"\n"
+" func _estimate_cost(u, v):\n"
+" return min(0, abs(u - v) - 1)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public partial class MyAStar : AStar3D\n"
+"{\n"
+" public override float _ComputeCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Abs((int)(fromId - toId));\n"
+" }\n"
+"\n"
+" public override float _EstimateCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[method _estimate_cost] should return a lower bound of the distance, i.e. "
+"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a "
+"hint to the algorithm because the custom [code]_compute_cost[/code] might be "
+"computation-heavy. If this is not the case, make [method _estimate_cost] "
+"return the same value as [method _compute_cost] to provide the algorithm "
+"with the most accurate information.\n"
+"If the default [method _estimate_cost] and [method _compute_cost] methods "
+"are used, or if the supplied [method _estimate_cost] method returns a lower "
+"bound of the cost, then the paths returned by A* will be the lowest-cost "
+"paths. Here, the cost of a path equals the sum of the [method _compute_cost] "
+"results of all segments in the path multiplied by the [code]weight_scale[/"
+"code]s of the endpoints of the respective segments. If the default methods "
+"are used and the [code]weight_scale[/code]s of all points are set to "
+"[code]1.0[/code], then this equals the sum of Euclidean distances of all "
+"segments in the path."
+msgstr ""
+"A*(A 星)是一ç§è®¡ç®—机算法,广泛用于寻路和图é历,是通过一组给定的边(线"
+"段),在顶点(点)之间绘制短路径的过程。由于其性能和准确性,它被广泛使用。"
+"Godot çš„ A* 实现默认使用三维空间中的点和欧几里得è·ç¦»ã€‚\n"
+"您需è¦ä½¿ç”¨ [method add_point] 手动添加点,并使用 [method connect_points] 手动"
+"创建线段。然åŽï¼Œå¯ä»¥ä½¿ç”¨ [method are_points_connected] 函数,测试两点之间是å¦"
+"存在路径,通过 [method get_id_path] 获å–包å«ç´¢å¼•çš„路径,或使用 [method "
+"get_point_path] 获å–包å«å®žé™…å标的路径。\n"
+"也å¯ä»¥ä½¿ç”¨éžæ¬§å‡ é‡Œå¾—è·ç¦»ã€‚为此,创建一个扩展 [code]AStar3D[/code] 的类,并é‡"
+"写方法 [method _compute_cost] å’Œ [method _estimate_cost]。两者都接å—两个索引"
+"并返回一个长度,如以下示例所示。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class MyAStar:\n"
+" extends AStar3D\n"
+"\n"
+" func _compute_cost(u, v):\n"
+" return abs(u - v)\n"
+"\n"
+" func _estimate_cost(u, v):\n"
+" return min(0, abs(u - v) - 1)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public partial class MyAStar : AStar3D\n"
+"{\n"
+" public override float _ComputeCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Abs((int)(fromId - toId));\n"
+" }\n"
+"\n"
+" public override float _EstimateCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[method _estimate_cost] 应该返回è·ç¦»çš„下é™ï¼Œå³ [code]_estimate_cost(u, v) <= "
+"_compute_cost(u, v)[/code]。这å¯ä»¥ä½œä¸ºç®—法的æ示,因为自定义 "
+"[code]_compute_cost[/code] å¯èƒ½è®¡ç®—é‡å¾ˆå¤§ã€‚如果ä¸æ˜¯è¿™ç§æƒ…况,请使 [method "
+"_estimate_cost] 返回与 [method _compute_cost] 相åŒçš„值,以便为算法æ供最准确"
+"çš„ä¿¡æ¯ã€‚\n"
+"如果使用默认的 [method _estimate_cost] 和 [method _compute_cost] 方法,或者如"
+"æžœæ供的 [method _estimate_cost] 方法返回æˆæœ¬çš„下é™ï¼Œåˆ™ A* 返回的路径将是æˆæœ¬"
+"最低的路径。这里,路径的代价等于路径中所有段的 [method _compute_cost] 结果乘"
+"以å„个段端点的æƒé‡ [code]weight_scale[/code] 之和。如果使用默认方法,并且所有"
+"点的 [code]weight_scale[/code] 设置为 [code]1.0[/code],则这等于路径中所有段"
+"的欧几里得è·ç¦»ä¹‹å’Œã€‚"
+
+msgid ""
+"Called when computing the cost between two connected points.\n"
+"Note that this function is hidden in the default [code]AStar3D[/code] class."
+msgstr ""
+"在计算两个连接点之间的æˆæœ¬æ—¶è°ƒç”¨ã€‚\n"
+"请注æ„,此函数éšè—在默认的 [code]AStar3D[/code] 类中。"
+
+msgid ""
+"Called when estimating the cost between a point and the path's ending "
+"point.\n"
+"Note that this function is hidden in the default [code]AStar3D[/code] class."
+msgstr ""
+"在估算一个点和路径终点之间的æˆæœ¬æ—¶è°ƒç”¨ã€‚\n"
+"请注æ„,此函数éšè—在默认的 [code]AStar3D[/code] 类中。"
+
+msgid ""
+"Adds a new point at the given position with the given identifier. The [param "
+"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or "
+"greater.\n"
+"The [param weight_scale] is multiplied by the result of [method "
+"_compute_cost] when determining the overall cost of traveling across a "
+"segment from a neighboring point to this point. Thus, all else being equal, "
+"the algorithm prefers points with lower [param weight_scale]s to form a "
+"path.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with "
+"weight_scale 4 and id 1\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with "
+"weight_scale 4 and id 1\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"If there already exists a point for the given [param id], its position and "
+"weight scale are updated to the given values."
+msgstr ""
+"在给定的ä½ç½®æ·»åŠ ä¸€ä¸ªæ–°çš„点,并使用给定的标识符。[param id] 必须大于等于 0,"
+"[param weight_scale] 必须大于等于 0.0。\n"
+"在确定从邻点到此点的一段路程的总æˆæœ¬æ—¶ï¼Œ[param weight_scale] è¦ä¹˜ä»¥ [method "
+"_compute_cost] 的结果。因此,在其他æ¡ä»¶ç›¸åŒçš„情况下,算法优先选择 [param "
+"weight_scale] 较低的点æ¥å½¢æˆè·¯å¾„。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(1, 0, 0), 4) # 添加点 (1, 0, 0),其 weight_scale "
+"为 4 且 id 为 1\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // 添加点 (1, 0, 0),其 "
+"weight_scale 为 4 且 id 为 1\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果对于给定的 [param id] å·²ç»å­˜åœ¨ä¸€ä¸ªç‚¹ï¼Œå®ƒçš„ä½ç½®å’Œæƒé‡å°†è¢«æ›´æ–°ä¸ºç»™å®šçš„值。"
+
+msgid ""
+"Creates a segment between the given points. If [param bidirectional] is "
+"[code]false[/code], only movement from [param id] to [param to_id] is "
+"allowed, not the reverse direction.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(1, 1, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 5, 0));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在给定的点之间创建一æ¡çº¿æ®µã€‚如果 [param bidirectional] 为 [code]false[/"
+"code],则åªå…许从 [param id] 到 [param to_id] 的移动,而ä¸å…许åå‘移动。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(1, 1, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2, false)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 5, 0));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the closest position to [param to_position] that resides inside a "
+"segment between two connected points.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns "
+"(0, 3, 0)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 5, 0));\n"
+"astar.ConnectPoints(1, 2);\n"
+"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // "
+"Returns (0, 3, 0)\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The result is in the segment that goes from [code]y = 0[/code] to [code]y = "
+"5[/code]. It's the closest position in the segment to the given point."
+msgstr ""
+"返回ä½äºŽä¸¤ä¸ªè¿žæŽ¥ç‚¹ä¹‹é—´çš„线段中离 [param to_position] 最近的ä½ç½®ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 5, 0))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # 返回 (0, "
+"3, 0)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 5, 0));\n"
+"astar.ConnectPoints(1, 2);\n"
+"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // è¿”"
+"回 (0, 3, 0)\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"结果是在从 [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中è·ç¦»"
+"给定点最近的ä½ç½®ã€‚"
+
+msgid ""
+"Returns an array with the IDs of the points that form the path found by "
+"AStar3D between the given points. The array is ordered from the starting "
+"point to the ending point of the path.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1\n"
+"astar.AddPoint(3, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(4, new Vector3(2, 0, 0));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"astar.ConnectPoints(2, 3, false);\n"
+"astar.ConnectPoints(4, 3, false);\n"
+"astar.ConnectPoints(1, 4, false);\n"
+"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"If you change the 2nd point's weight to 3, then the result will be [code][1, "
+"4, 3][/code] instead, because now even though the distance is longer, it's "
+"\"easier\" to get through point 4 than through point 2."
+msgstr ""
+"返回一个数组,其中包å«æž„æˆ AStar3D 在给定点之间找到的路径中的点的 ID。数组从"
+"路径的起点到终点排åºã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0), 1) # 默认æƒé‡ä¸º 1\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // 默认æƒé‡ä¸º 1\n"
+"astar.AddPoint(3, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(4, new Vector3(2, 0, 0));\n"
+"astar.ConnectPoints(1, 2, false);\n"
+"astar.ConnectPoints(2, 3, false);\n"
+"astar.ConnectPoints(4, 3, false);\n"
+"astar.ConnectPoints(1, 4, false);\n"
+"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果将第2个点的æƒé‡æ›´æ”¹ä¸º 3,则结果将改为 [code][1, 4, 3][/code],因为现在å³"
+"使è·ç¦»æ›´é•¿ï¼Œä½†é€šè¿‡ç¬¬ 4 点也比通过第 2 点“更容易â€ã€‚"
+
+msgid ""
+"Returns the capacity of the structure backing the points, useful in "
+"conjunction with [code]reserve_space[/code]."
+msgstr "返回支æŒç‚¹çš„结构的容é‡ï¼Œä¸Ž [code]reserve_space[/code] é…åˆä½¿ç”¨ã€‚"
+
+msgid ""
+"Returns an array with the IDs of the points that form the connection with "
+"the given point.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0))\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 0))\n"
+"\n"
+"astar.connect_points(1, 2, true)\n"
+"astar.connect_points(1, 3, true)\n"
+"\n"
+"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 1, 0));\n"
+"astar.AddPoint(3, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(4, new Vector3(2, 0, 0));\n"
+"astar.ConnectPoints(1, 2, true);\n"
+"astar.ConnectPoints(1, 3, true);\n"
+"\n"
+"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回一个数组,其中包å«ä¸Žç»™å®šç‚¹å½¢æˆè¿žæŽ¥çš„点的 ID。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var astar = AStar3D.new()\n"
+"astar.add_point(1, Vector3(0, 0, 0))\n"
+"astar.add_point(2, Vector3(0, 1, 0))\n"
+"astar.add_point(3, Vector3(1, 1, 0))\n"
+"astar.add_point(4, Vector3(2, 0, 0))\n"
+"\n"
+"astar.connect_points(1, 2, true)\n"
+"astar.connect_points(1, 3, true)\n"
+"\n"
+"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var astar = new AStar3D();\n"
+"astar.AddPoint(1, new Vector3(0, 0, 0));\n"
+"astar.AddPoint(2, new Vector3(0, 1, 0));\n"
+"astar.AddPoint(3, new Vector3(1, 1, 0));\n"
+"astar.AddPoint(4, new Vector3(2, 0, 0));\n"
+"astar.ConnectPoints(1, 2, true);\n"
+"astar.ConnectPoints(1, 3, true);\n"
+"\n"
+"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns an array with the points that are in the path found by AStar3D "
+"between the given points. The array is ordered from the starting point to "
+"the ending point of the path.\n"
+"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
+"will return an empty [PackedVector3Array] and will print an error message."
+msgstr ""
+"è¿”å›žä¸€ä¸ªæ•°ç»„ï¼Œå…¶ä¸­åŒ…å« AStar3D 在给定点之间找到的路径中的点。数组从路径的起点"
+"到终点进行排åºã€‚\n"
+"[b]注æ„:[/b]è¿™ç§æ–¹æ³•ä¸æ˜¯çº¿ç¨‹å®‰å…¨çš„。如果从 [Thread] 调用,它将返回一个空的 "
+"[PackedVector3Array],并打å°ä¸€æ¡é”™è¯¯æ¶ˆæ¯ã€‚"
+
+msgid ""
+"A* (or \"A-Star\") pathfinding tailored to find the shortest paths on 2D "
+"grids."
+msgstr "A*(或“A 星â€ï¼‰å¯»è·¯ï¼Œä¸ºå¯»æ‰¾ 2D 网格上的最短路径定制。"
+
+msgid ""
+"Returns an array with the IDs of the points that form the path found by "
+"AStar2D between the given points. The array is ordered from the starting "
+"point to the ending point of the path."
+msgstr ""
+"返回一个数组,其中包å«å½¢æˆ AStar2D 在给定点之间找到的路径的点的 ID。该数组从"
+"路径的起点到终点排åºã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the [param x] and [param y] is a valid grid "
+"coordinate (id)."
+msgstr ""
+"如果 [param x] å’Œ [param y] 是有效的网格å标(ID),则返回 [code]true[/"
+"code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [param id] vector is a valid grid "
+"coordinate."
+msgstr "如果 [param id] å‘é‡æ˜¯æœ‰æ•ˆçš„网格å标,则返回 [code]true[/code]。"
+
+msgid ""
+"Disables or enables the specified point for pathfinding. Useful for making "
+"an obstacle. By default, all points are enabled.\n"
+"[b]Note:[/b] Calling [method update] is not needed after the call of this "
+"function."
+msgstr ""
+"ç¦ç”¨æˆ–å¯ç”¨æŒ‡å®šçš„寻路点。用于制造障ç¢ç‰©ã€‚默认情况下,å¯ç”¨æ‰€æœ‰ç‚¹ã€‚\n"
+"[b]注æ„:[/b]调用该函数åŽä¸éœ€è¦è°ƒç”¨ [method update]。"
+
+msgid ""
+"Sets the [param weight_scale] for the point with the given [param id]. The "
+"[param weight_scale] is multiplied by the result of [method _compute_cost] "
+"when determining the overall cost of traveling across a segment from a "
+"neighboring point to this point.\n"
+"[b]Note:[/b] Calling [method update] is not needed after the call of this "
+"function."
+msgstr ""
+"为具有给定 [param id] 的点设置 [param weight_scale]。在确定从相邻点到该点穿越"
+"路段的总æˆæœ¬æ—¶ï¼Œ[param weight_scale] è¦ä¹˜ä»¥ [method _compute_cost] 的结果。\n"
+"[b]注æ„:[/b]调用该函数åŽä¸éœ€è¦è°ƒç”¨ [method update]。"
+
+msgid "Represents the size of the [enum Heuristic] enum."
+msgstr "代表 [enum Heuristic] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum DiagonalMode] enum."
+msgstr "代表 [enum DiagonalMode] 枚举的大å°ã€‚"
+
+msgid "A texture that crops out part of another Texture2D."
+msgstr "è£å‰ªå…¶ä»– Texture2D 的纹ç†ã€‚"
+
+msgid ""
+"The texture that contains the atlas. Can be any type inheriting from "
+"[Texture2D], including another [AtlasTexture]."
+msgstr ""
+"包å«è¯¥å›¾é›†çš„纹ç†ã€‚å¯ä»¥æ˜¯ä»»ä½•ç»§æ‰¿è‡ª [Texture2D] 的类型,包括其他 "
+"[AtlasTexture]。"
+
+msgid "The region used to draw the [member atlas]."
+msgstr "用于绘制 [member atlas] 的区域。"
+
msgid "Stores information about the audio buses."
msgstr "存储有关音频总线的信æ¯ã€‚"
@@ -3866,7 +10591,7 @@ msgstr ""
"è§ [AudioServer] 。"
msgid "Audio effect for audio."
-msgstr "音频效果的音频。"
+msgstr "用于音频的音频效果。"
msgid ""
"Base resource for audio bus. Applies an audio effect on the bus that the "
@@ -3876,6 +10601,9 @@ msgstr "音频总线的基础资æºã€‚在该资æºæ‰€åº”用的总线上应用音
msgid "Audio Mic Record Demo"
msgstr "音频麦克风录音演示"
+msgid "Adds an amplifying audio effect to an audio bus."
+msgstr "å‘音频总线添加一个放大的音频效果。"
+
msgid "Increases or decreases the volume being routed through the audio bus."
msgstr "增加或å‡å°‘通过音频总线传é€çš„音é‡ã€‚"
@@ -3954,13 +10682,13 @@ msgid "The voice's signal delay."
msgstr "声音的信å·å»¶è¿Ÿã€‚"
msgid "The voice filter's depth."
-msgstr "声音滤镜的深度。"
+msgstr "声音过滤器的深度。"
msgid "The voice's volume."
msgstr "声音的音é‡ã€‚"
msgid "The voice's pan level."
-msgstr "声音的声相级别。"
+msgstr "声音的声相电平。"
msgid "The voice's filter rate."
msgstr "声音过滤比率。"
@@ -4036,7 +10764,7 @@ msgstr "使用å¦ä¸€æ¡éŸ³é¢‘总线进行阈值检测,é™ä½Žå£°éŸ³çº§åˆ«ã€‚"
msgid ""
"The level above which compression is applied to the audio. Value can range "
"from -60 to 0."
-msgstr "对音频进行压缩的级别。数值范围从 -60 到 0。"
+msgstr "超过该电平,压缩将应用于音频。值的范围å¯ä»¥ä»Ž -60 到 0。"
msgid ""
"Adds a delay audio effect to an audio bus. Plays input signal back after a "
@@ -4087,7 +10815,7 @@ msgstr ""
"[code]tap1[/code] 的平移ä½ç½®ã€‚å–值范围为 -1(完全å‘左)到 1(完全å‘å³ï¼‰ã€‚"
msgid "If [code]true[/code], [code]tap2[/code] will be enabled."
-msgstr "如果为 [code]true[/code],将å¯ç”¨[code]tap2[/code]。"
+msgstr "如果为 [code]true[/code],将å¯ç”¨ [code]tap2[/code]。"
msgid "[b]Tap2[/b] delay time in milliseconds."
msgstr "[b]Tap2[/b] 延迟时间,å•ä½ä¸ºæ¯«ç§’。"
@@ -4112,7 +10840,17 @@ msgstr ""
"20000。"
msgid "Distortion type."
-msgstr "失真类型."
+msgstr "失真类型。"
+
+msgid ""
+"Increases or decreases the volume after the effect, in decibels. Value can "
+"range from -80 to 24."
+msgstr "在效果åŽå¢žåŠ æˆ–å‡å°‘的音é‡ï¼Œå•ä½ä¸ºåˆ†è´ã€‚å–值范围从 -80 到 24。"
+
+msgid ""
+"Increases or decreases the volume before the effect, in decibels. Value can "
+"range from -60 to 60."
+msgstr "在效果å‰å¢žåŠ æˆ–å‡å°‘的音é‡ï¼Œå•ä½ä¸ºåˆ†è´ã€‚å–值范围从 -60 到 60。"
msgid ""
"Digital distortion effect which cuts off peaks at the top and bottom of the "
@@ -4130,8 +10868,8 @@ msgid ""
"or [AudioEffectEQ21] don't fit your needs."
msgstr ""
"音频å‡è¡¡å™¨çš„基础类。让你å¯ä»¥æŽ§åˆ¶é¢‘率。\n"
-"如果 [AudioEffectEQ6]ã€[AudioEffectEQ10] 或 [AudioEffectEQ21]ä¸ç¬¦åˆæ‚¨çš„需求,"
-"请使用它æ¥åˆ›å»ºä¸€ä¸ªè‡ªå®šä¹‰å‡è¡¡å™¨ã€‚"
+"如果 [AudioEffectEQ6]ã€[AudioEffectEQ10] 或 [AudioEffectEQ21] ä¸ç¬¦åˆæ‚¨çš„需"
+"求,请使用它æ¥åˆ›å»ºä¸€ä¸ªè‡ªå®šä¹‰å‡è¡¡å™¨ã€‚"
msgid ""
"AudioEffectEQ gives you control over frequencies. Use it to compensate for "
@@ -4160,7 +10898,7 @@ msgid ""
"Each frequency can be modulated between -60/+24 dB."
msgstr ""
"为音频总线添加 10 段å‡è¡¡å™¨éŸ³é¢‘效果。让你控制 31Hz 到 16000Hz 的频率。\n"
-"æ¯ä¸ªé¢‘率å¯ä»¥åœ¨ -60/+24dB 之间进行调制。"
+"æ¯ä¸ªé¢‘率å¯ä»¥åœ¨ -60/+24 dB 之间进行调制。"
msgid ""
"Frequency bands:\n"
@@ -4194,8 +10932,9 @@ msgid ""
"over frequencies from 22 Hz to 22000 Hz.\n"
"Each frequency can be modulated between -60/+24 dB."
msgstr ""
-"为音频总线添加21段å‡è¡¡å™¨éŸ³é¢‘效果。让你控制22Hz到22000Hz的频率。\n"
-"æ¯ä¸ªé¢‘率å¯ä»¥åœ¨-60/+24dB之间进行调制。"
+"å‘音频总线添加一个 21 频段å‡è¡¡å™¨éŸ³é¢‘效果。使您å¯ä»¥æŽ§åˆ¶ä»Ž 22 Hz 到 22000 Hz çš„"
+"频率。\n"
+"æ¯ä¸ªé¢‘率都å¯ä»¥åœ¨ -60/+24 dB 之间进行调制。"
msgid ""
"Frequency bands:\n"
@@ -4247,6 +10986,15 @@ msgstr ""
"å¦è¯·å‚阅 [AudioEffectEQ]ã€[AudioEffectEQ6]ã€[AudioEffectEQ10]。"
msgid ""
+"Adds a 6-band equalizer audio effect to an audio bus. Gives you control over "
+"frequencies from 32 Hz to 10000 Hz.\n"
+"Each frequency can be modulated between -60/+24 dB."
+msgstr ""
+"å‘音频总线添加一个 6 频段å‡è¡¡å™¨éŸ³é¢‘效果。使您å¯ä»¥æŽ§åˆ¶ä»Ž 32 Hz 到 10000 Hz çš„"
+"频率。\n"
+"æ¯ä¸ªé¢‘率都å¯ä»¥åœ¨ -60/+24 dB 之间进行调制。"
+
+msgid ""
"Frequency bands:\n"
"Band 1: 32 Hz\n"
"Band 2: 100 Hz\n"
@@ -4280,12 +11028,18 @@ msgstr "滤波åŽé¢‘率的增益é‡ã€‚"
msgid "Amount of boost in the frequency range near the cutoff frequency."
msgstr "在截断频率附近的频率范围内的æå‡é‡ã€‚"
+msgid "Adds a high-pass filter to the audio bus."
+msgstr "å‘音频总线添加一个高通滤波器。"
+
msgid ""
"Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and "
"allows higher frequencies to pass."
msgstr ""
"削å‡æ¯” [member AudioEffectFilter.cutoff_hz] 更低的频率,å…许更高的频率通过。"
+msgid "Adds a high-shelf filter to the audio bus."
+msgstr "å‘音频总线添加一个高架滤波器。"
+
msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]."
msgstr "é™ä½Žæ‰€æœ‰é«˜äºŽ [member AudioEffectFilter.cutoff_hz] 的频率。"
@@ -4313,7 +11067,7 @@ msgstr "波形的最大å…许值,å•ä½æ˜¯åˆ†è´ã€‚数值范围从 -20 到 -0.
msgid ""
"Applies a gain to the limited waves, in decibels. Value can range from 0 to "
"6."
-msgstr "将增益应用于有é™çš„波,以分è´ä¸ºå•ä½ã€‚å–值范围是 0 到 6。"
+msgstr "将增益应用于被é™åˆ¶çš„波,以分è´ä¸ºå•ä½ã€‚å–值范围是 0 到 6。"
msgid ""
"Threshold from which the limiter begins to be active, in decibels. Value can "
@@ -4329,6 +11083,9 @@ msgid ""
msgstr ""
"削å‡æ¯” [member AudioEffectFilter.cutoff_hz] 更低的频率,å…许更高的频率通过。"
+msgid "Adds a low-shelf filter to the audio bus."
+msgstr "å‘音频总线添加一个低架滤波器。"
+
msgid "Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz]."
msgstr "é™ä½Ž [member AudioEffectFilter.cutoff_hz] 以下的所有频率。"
@@ -4342,6 +11099,9 @@ msgstr ""
"è¡°å‡ [member AudioEffectFilter.cutoff_hz] 周围窄带的频率,并切断这个范围以外"
"的频率。"
+msgid "Adds a panner audio effect to an audio bus. Pans sound left or right."
+msgstr "å‘音频总线添加一个声相器音频效果。å‘左或å‘å³å¹³ç§»å£°éŸ³ã€‚"
+
msgid ""
"Determines how much of an audio signal is sent to the left and right buses."
msgstr "决定å‘å·¦å³æ€»çº¿å‘é€çš„音频信å·é‡ã€‚"
@@ -4350,6 +11110,14 @@ msgid "Pan position. Value can range from -1 (fully left) to 1 (fully right)."
msgstr "平移ä½ç½®ã€‚值的范围å¯ä»¥ä»Ž -1(完全左)到1(完全å³ï¼‰ã€‚"
msgid ""
+"Adds a phaser audio effect to an audio bus.\n"
+"Combines the original signal with a copy that is slightly out of phase with "
+"the original."
+msgstr ""
+"å‘音频总线添加一个移相器音频效果。\n"
+"将原始信å·å’Œä¸ŽåŽŸå§‹ä¿¡å·ç¨æœ‰ç›¸ä½å差的副本组åˆåœ¨ä¸€èµ·ã€‚"
+
+msgid ""
"Combines phase-shifted signals with the original signal. The movement of the "
"phase-shifted signals is controlled using a low-frequency oscillator."
msgstr "将相移信å·ä¸ŽåŽŸå§‹ä¿¡å·ç›¸ç»“åˆã€‚使用低频振è¡å™¨æŽ§åˆ¶ç›¸ç§»ä¿¡å·çš„移动。"
@@ -4359,7 +11127,7 @@ msgid ""
"affect bass frequencies. High value can sweep high into the treble. Value "
"can range from 0.1 to 4."
msgstr ""
-"控制滤波器频率扫æ的频率。较低的值将主è¦å½±å“低音频率。高值å¯ä»¥æŽ¨é«˜é«˜éŸ³ã€‚值的"
+"控制滤波器频率扫æ的高度。较低的值将主è¦å½±å“低音频率。高值å¯ä»¥æŽ¨é«˜é«˜éŸ³ã€‚值的"
"范围å¯ä»¥ä»Ž 0.1 到 4。"
msgid "Output percent of modified sound. Value can range from 0.1 to 0.9."
@@ -4381,6 +11149,13 @@ msgid ""
msgstr "以 Hz 为å•ä½è°ƒæ•´æ•ˆæžœåœ¨æ•´ä¸ªé¢‘率范围内上下扫æ的速度。"
msgid ""
+"Adds a pitch-shifting audio effect to an audio bus.\n"
+"Raises or lowers the pitch of original sound."
+msgstr ""
+"为音频总线添加音高å˜æ¢çš„音频效果。\n"
+"å‡é«˜æˆ–é™ä½ŽåŽŸå§‹å£°éŸ³çš„音高。"
+
+msgid ""
"Allows modulation of pitch independently of tempo. All frequencies can be "
"increased/decreased with minimal effect on transients."
msgstr "å…许独立于速度调制音高。所有频率都å¯ä»¥å¢žåŠ æˆ–å‡å°‘,而对瞬æ€çš„å½±å“最å°ã€‚"
@@ -4418,7 +11193,7 @@ msgid ""
"Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, "
"but least stable over time."
msgstr ""
-"使用 256 个样å“的缓冲器进行快速傅里å¶å˜æ¢ã€‚最低延迟,但éšç€æ—¶é—´çš„推移最ä¸ç¨³"
+"使用 256 个样本的缓冲器进行快速傅里å¶å˜æ¢ã€‚最低延迟,但éšç€æ—¶é—´çš„推移最ä¸ç¨³"
"定。"
msgid ""
@@ -4431,22 +11206,25 @@ msgid ""
"Use a buffer of 1024 samples for the Fast Fourier transform. This is a "
"compromise between latency and stability over time."
msgstr ""
-"使用 1024 个样本的缓冲器进行快速傅里å¶å˜æ¢ã€‚éšç€æ—¶é—´çš„推移,这是延迟和稳定性"
+"使用 1024 个样本的缓冲器进行快速傅里å¶å˜æ¢ã€‚这是延迟和éšç€æ—¶é—´çš„推移的稳定性"
"之间的折衷。"
msgid ""
"Use a buffer of 2048 samples for the Fast Fourier transform. High latency, "
"but stable over time."
msgstr ""
-"使用 2048 个样å“的缓冲器进行快速傅里å¶å˜æ¢ã€‚éšç€æ—¶é—´çš„推移,延迟高但稳定。"
+"使用 2048 个样本的缓冲器进行快速傅里å¶å˜æ¢ã€‚高延迟,但éšç€æ—¶é—´çš„推移稳定。"
msgid ""
"Use a buffer of 4096 samples for the Fast Fourier transform. Highest "
"latency, but most stable over time."
msgstr ""
-"使用 4096 个样å“的缓冲器进行快速傅里å¶å˜æ¢ã€‚éšç€æ—¶é—´çš„推移,延迟最高但最稳"
+"使用 4096 个样本的缓冲器进行快速傅里å¶å˜æ¢ã€‚延迟最高,但éšç€æ—¶é—´çš„推移最稳"
"定。"
+msgid "Represents the size of the [enum FFTSize] enum."
+msgstr "代表 [enum FFTSize] 枚举的大å°ã€‚"
+
msgid "Audio effect used for recording the sound from an audio bus."
msgstr "用于录制æ¥è‡ªéŸ³é¢‘总线的声音的音频效果。"
@@ -4481,6 +11259,20 @@ msgstr ""
"本。"
msgid ""
+"Specifies the format in which the sample will be recorded. See [enum "
+"AudioStreamWAV.Format] for available formats."
+msgstr ""
+"指定样本将被记录的格å¼ã€‚有关å¯ç”¨æ ¼å¼ï¼Œè¯·å‚阅 [enum AudioStreamWAV.Format]。"
+
+msgid "Adds a reverberation audio effect to an Audio bus."
+msgstr "å‘音频总线添加一个混å“音频效果。"
+
+msgid ""
+"Simulates the sound of acoustic environments such as rooms, concert halls, "
+"caverns, or an open spaces."
+msgstr "模拟房间ã€éŸ³ä¹åŽ…ã€æ´žç©´æˆ–开放空间等声学环境的声音。"
+
+msgid ""
"Defines how reflective the imaginary room's walls are. Value can range from "
"0 to 1."
msgstr "定义虚拟房间墙å£çš„å射程度。值的范围是 0 到 1。"
@@ -4562,12 +11354,74 @@ msgstr "用平å‡å€¼ä½œä¸ºå¹…度。"
msgid "Use the maximum value as magnitude."
msgstr "用最大值作为幅度。"
+msgid ""
+"An audio effect that can be used to adjust the intensity of stereo panning."
+msgstr "一ç§å¯ç”¨äºŽè°ƒæ•´ç«‹ä½“声声相强度的音频效果。"
+
msgid "Overrides the location sounds are heard from."
msgstr "覆盖å¬åˆ°å£°éŸ³çš„ä½ç½®ã€‚"
+msgid ""
+"Once added to the scene tree and enabled using [method make_current], this "
+"node will override the location sounds are heard from. Only one "
+"[AudioListener2D] can be current. Using [method make_current] will disable "
+"the previous [AudioListener2D].\n"
+"If there is no active [AudioListener2D] in the current [Viewport], center of "
+"the screen will be used as a hearing point for the audio. [AudioListener2D] "
+"needs to be inside [SceneTree] to function."
+msgstr ""
+"一旦被添加到场景树并使用 [method make_current] å¯ç”¨ï¼Œæ­¤èŠ‚点将覆盖å¬åˆ°å£°éŸ³çš„ä½"
+"置。åªæœ‰ä¸€ä¸ª [AudioListener2D] å¯ä»¥æ˜¯å½“å‰çš„。使用 [method make_current] å°†ç¦"
+"用之å‰çš„ [AudioListener2D]。\n"
+"å¦‚æžœå½“å‰ [Viewport] 中没有活动的 [AudioListener2D],则å±å¹•ä¸­å¿ƒå°†ç”¨ä½œéŸ³é¢‘çš„è†"
+"å¬ç‚¹ã€‚[AudioListener2D] 需è¦åœ¨ [SceneTree] 内æ‰èƒ½èµ·ä½œç”¨ã€‚"
+
+msgid ""
+"Disables the [AudioListener2D]. If it's not set as current, this method will "
+"have no effect."
+msgstr "ç¦ç”¨ [AudioListener2D]。如果未设置为当å‰ï¼Œåˆ™æ­¤æ–¹æ³•æ— æ•ˆã€‚"
+
+msgid ""
+"Returns [code]true[/code] if this [AudioListener2D] is currently active."
+msgstr "如果该 [AudioListener2D] 当å‰å¤„于激活状æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Makes the [AudioListener2D] active, setting it as the hearing point for the "
+"sounds. If there is already another active [AudioListener2D], it will be "
+"disabled.\n"
+"This method will have no effect if the [AudioListener2D] is not added to "
+"[SceneTree]."
+msgstr ""
+"激活该 [AudioListener2D],将其设置为声音的è†å¬ç‚¹ã€‚如果已ç»æœ‰å¦ä¸€ä¸ªæ¿€æ´»çš„ "
+"[AudioListener2D],它将被ç¦ç”¨ã€‚\n"
+"如果 [AudioListener2D] 未添加到 [SceneTree],则该方法无效。"
+
+msgid ""
+"Once added to the scene tree and enabled using [method make_current], this "
+"node will override the location sounds are heard from. This can be used to "
+"listen from a location different from the [Camera3D]."
+msgstr ""
+"一旦添加到场景树并使用 [method make_current] å¯ç”¨ï¼Œè¯¥èŠ‚点将覆盖å¬åˆ°å£°éŸ³çš„ä½"
+"置。这å¯ç”¨äºŽä»Žä¸Ž [Camera3D] ä¸åŒçš„ä½ç½®è†å¬ã€‚"
+
msgid "Disables the listener to use the current camera's listener instead."
msgstr "ç¦ç”¨è¯¥ç›‘å¬å™¨ï¼Œç”¨å½“å‰ç›¸æœºçš„监å¬å™¨ä»£æ›¿ã€‚"
+msgid "Returns the listener's global orthonormalized [Transform3D]."
+msgstr "返回该监å¬å™¨çš„全局正交归一化 [Transform3D]。"
+
+msgid ""
+"Returns [code]true[/code] if the listener was made current using [method "
+"make_current], [code]false[/code] otherwise.\n"
+"[b]Note:[/b] There may be more than one AudioListener3D marked as "
+"\"current\" in the scene tree, but only the one that was made current last "
+"will be used."
+msgstr ""
+"如果使用 [method make_current] 将监å¬å™¨è®¾ä¸ºå½“å‰ï¼Œåˆ™è¿”回 [code]true[/code],å¦"
+"则返回 [code]false[/code]。\n"
+"[b]注æ„:[/b] 场景树中标记为“当å‰â€çš„ AudioListener3D å¯èƒ½ä¸æ­¢ä¸€ä¸ªï¼Œä½†åªä¼šä½¿ç”¨"
+"最åŽè¢«è®¾ç½®ä¸ºå½“å‰çš„那个。"
+
msgid "Enables the listener. This will override the current camera's listener."
msgstr "å¯ç”¨è¯¥ç›‘å¬å™¨ã€‚将覆盖当å‰ç›¸æœºçš„监å¬å™¨ã€‚"
@@ -4585,18 +11439,56 @@ msgstr ""
msgid "Audio Device Changer Demo"
msgstr "音频设备切æ¢æ¼”示"
+msgid "Adds a bus at [param at_position]."
+msgstr "在 [param at_position] 处添加一æ¡æ€»çº¿ã€‚"
+
+msgid ""
+"Adds an [AudioEffect] effect to the bus [param bus_idx] at [param "
+"at_position]."
+msgstr ""
+"为在 [param at_position] 处索引为 [param bus_idx] 的总线添加 [AudioEffect] 效"
+"果。"
+
msgid "Generates an [AudioBusLayout] using the available buses and effects."
msgstr "使用å¯ç”¨çš„总线和效果æ¥ç”Ÿæˆ [AudioBusLayout]。"
+msgid "Returns the number of channels of the bus at index [param bus_idx]."
+msgstr "返回索引为 [param bus_idx] 的总线的通é“数。"
+
+msgid ""
+"Returns the [AudioEffect] at position [param effect_idx] in bus [param "
+"bus_idx]."
+msgstr ""
+"返回索引为 [param bus_idx] 的总线中ä½äºŽ [param effect_idx] çš„ [AudioEffect]。"
+
+msgid "Returns the number of effects on the bus at [param bus_idx]."
+msgstr "返回索引为 [param bus_idx] 的总线上的效果数。"
+
msgid ""
"Returns the [AudioEffectInstance] assigned to the given bus and effect "
"indices (and optionally channel)."
msgstr ""
-"返回分é…给给定总线和效果指数(以åŠå¯é€‰çš„通é“)的 [AudioEffectInstance]。"
+"返回分é…给给定总线和效果索引(以åŠå¯é€‰çš„通é“)的[AudioEffectInstance]。"
+
+msgid "Returns the index of the bus with the name [param bus_name]."
+msgstr "返回å称为 [param bus_name] 的总线的索引。"
+
+msgid "Returns the name of the bus with the index [param bus_idx]."
+msgstr "返回索引为 [param bus_idx] 的总线的å称。"
+
+msgid ""
+"Returns the name of the bus that the bus at index [param bus_idx] sends to."
+msgstr "返回索引为 [param bus_idx] 的总线的å‘é€ç›®æ ‡æ€»çº¿çš„å称。"
+
+msgid "Returns the volume of the bus at index [param bus_idx] in dB."
+msgstr "返回索引为 [param bus_idx] 的总线的音é‡ï¼Œå•ä½ä¸º dB。"
msgid "Returns the sample rate at the output of the [AudioServer]."
msgstr "返回 [AudioServer] 输出的采样率。"
+msgid "Returns the names of all audio output devices detected on the system."
+msgstr "返回系统中检测到的所有音频输出设备的å称。"
+
msgid "Returns the audio driver's output latency."
msgstr "返回音频驱动器的输出延迟。"
@@ -4610,15 +11502,59 @@ msgid "Returns the relative time until the next mix occurs."
msgstr "返回下一次混åˆä¹‹å‰çš„相对时间。"
msgid ""
+"If [code]true[/code], the bus at index [param bus_idx] is bypassing effects."
+msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线会绕过效果。"
+
+msgid ""
+"If [code]true[/code], the effect at index [param effect_idx] on the bus at "
+"index [param bus_idx] is enabled."
+msgstr ""
+"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线上å¯ç”¨äº†ç´¢å¼•ä¸º "
+"[param effect_idx] 的效果。"
+
+msgid "If [code]true[/code], the bus at index [param bus_idx] is muted."
+msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线已é™éŸ³ã€‚"
+
+msgid "If [code]true[/code], the bus at index [param bus_idx] is in solo mode."
+msgstr ""
+"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线处于独å¥æ¨¡å¼ã€‚"
+
+msgid ""
"Locks the audio driver's main loop.\n"
"[b]Note:[/b] Remember to unlock it afterwards."
msgstr ""
"é”定音频驱动程åºçš„主循环。\n"
-"[b]注æ„:[/b]记得事åŽè§£é”。"
+"[b]注æ„:[/b]之åŽè®°å¾—解é”。"
+
+msgid "Moves the bus from index [param index] to index [param to_index]."
+msgstr "将总线从索引 [param index] 移动到索引 [param to_index]。"
+
+msgid "Removes the bus at index [param index]."
+msgstr "移除索引 [param index] 处的总线。"
+
+msgid ""
+"Removes the effect at index [param effect_idx] from the bus at index [param "
+"bus_idx]."
+msgstr "将索引 [param effect_idx] 的效果从索引 [param bus_idx] 的总线上移除。"
msgid "Overwrites the currently used [AudioBusLayout]."
msgstr "覆盖当å‰ä½¿ç”¨çš„ [AudioBusLayout]。"
+msgid "Sets the name of the bus at index [param bus_idx] to [param name]."
+msgstr "将索引为 [param bus_idx] 的总线的å称设为 [param name]。"
+
+msgid ""
+"Connects the output of the bus at [param bus_idx] to the bus named [param "
+"send]."
+msgstr "将索引为 [param bus_idx] 处的总线输出连接到å为 [param send] 的总线。"
+
+msgid ""
+"Sets the volume of the bus at index [param bus_idx] to [param volume_db]."
+msgstr "将索引为 [param bus_idx] 的总线的音é‡è®¾ä¸º [param volume_db]。"
+
+msgid "Swaps the position of two effects in bus [param bus_idx]."
+msgstr "在索引为 [param bus_idx] 的总线中交æ¢ä¸¤ä¸ªæ•ˆæžœçš„ä½ç½®ã€‚"
+
msgid ""
"Unlocks the audio driver's main loop. (After locking it, you should always "
"unlock it.)"
@@ -4645,6 +11581,14 @@ msgstr "检测到 7.1 声é“环绕声设置。"
msgid "Base class for audio streams."
msgstr "音频æµçš„基类。"
+msgid ""
+"Base class for audio streams. Audio streams are used for sound effects and "
+"music playback, and support WAV (via [AudioStreamWAV]) and Ogg (via "
+"[AudioStreamOggVorbis]) file formats."
+msgstr ""
+"音频æµçš„基类。音频æµç”¨äºŽæ’­æ”¾éŸ³æ•ˆå’ŒéŸ³ä¹ï¼Œæ”¯æŒ WAV(通过 [AudioStreamWAV])和 "
+"Ogg(通过 [AudioStreamOggVorbis])文件格å¼ã€‚"
+
msgid "Audio streams"
msgstr "音频æµ"
@@ -4687,9 +11631,9 @@ msgstr ""
"code]。\n"
"æ ¹æ®[url=https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86]"
"奈奎斯特–香农采样定ç†[/url],当超过 40000 赫兹时,人类的å¬è§‰æ²¡æœ‰è´¨é‡ä¸Šçš„差别"
-"(因为大多数人åªèƒ½å¬åˆ° ~20000 赫兹,往往更少)。如果你è¦ç”Ÿæˆè¯­éŸ³ç­‰éŸ³é«˜è¾ƒä½Žçš„"
-"声音,则å¯ä»¥ä½¿ç”¨ [code]32000[/code] 或 [code]22050[/code] 等较低的采样率,ä¸"
-"会é™ä½Žè´¨é‡ã€‚"
+"(因为大多数人最多åªèƒ½å¬åˆ° ~20000 赫兹,往往更少)。如果你è¦ç”Ÿæˆè¯­éŸ³ç­‰éŸ³é«˜è¾ƒ"
+"低的声音,则å¯ä»¥ä½¿ç”¨ [code]32000[/code] 或 [code]22050[/code] 等较低的采样"
+"率,ä¸ä¼šé™ä½Žè´¨é‡ã€‚"
msgid "Plays back audio generated using [AudioStreamGenerator]."
msgstr "播放使用 [AudioStreamGenerator] 生æˆçš„音频。"
@@ -4717,6 +11661,58 @@ msgid "MP3 audio stream driver."
msgstr "MP3 音频æµé©±åŠ¨ç¨‹åºã€‚"
msgid ""
+"MP3 audio stream driver. See [member data] if you want to load an MP3 file "
+"at run-time."
+msgstr ""
+"MP3 音频æµé©±åŠ¨ç¨‹åºã€‚如果è¦åœ¨è¿è¡Œæ—¶åŠ è½½ MP3 文件,请å‚阅 [member data]。"
+
+msgid ""
+"Contains the audio data in bytes.\n"
+"You can load a file without having to import it beforehand using the code "
+"snippet below. Keep in mind that this snippet loads the whole file into "
+"memory and may not be ideal for huge files (hundreds of megabytes or more).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func load_mp3(path):\n"
+" var file = FileAccess.open(path, FileAccess.READ)\n"
+" var sound = AudioStreamMP3.new()\n"
+" sound.data = file.get_buffer(file.get_length())\n"
+" return sound\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public AudioStreamMP3 LoadMP3(string path)\n"
+"{\n"
+" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
+" var sound = new AudioStreamMP3();\n"
+" sound.Data = file.GetBuffer(file.GetLength());\n"
+" return sound;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"包å«ä»¥å­—节为å•ä½çš„音频数æ®ã€‚\n"
+"您å¯ä»¥ä½¿ç”¨ä¸‹é¢çš„代ç ç‰‡æ®µï¼ŒåŠ è½½æ–‡ä»¶è€Œæ— éœ€äº‹å…ˆå¯¼å…¥å®ƒã€‚请记ä½ï¼Œæ­¤ä»£ç æ®µå°†æ•´ä¸ªæ–‡"
+"件加载到内存中,对于大文件(数百兆字节或更多)å¯èƒ½å¹¶ä¸ç†æƒ³ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func load_mp3(path):\n"
+" var file = FileAccess.open(path, FileAccess.READ)\n"
+" var sound = AudioStreamMP3.new()\n"
+" sound.data = file.get_buffer(file.get_length())\n"
+" return sound\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public AudioStreamMP3 LoadMP3(string path)\n"
+"{\n"
+" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
+" var sound = new AudioStreamMP3();\n"
+" sound.Data = file.GetBuffer(file.GetLength());\n"
+" return sound;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"If [code]true[/code], the stream will automatically loop when it reaches the "
"end."
msgstr "如果为 [code]true[/code],当æµåˆ°è¾¾æœ«å°¾æ—¶å°†è‡ªåŠ¨å¾ªçŽ¯ã€‚"
@@ -4724,9 +11720,36 @@ msgstr "如果为 [code]true[/code],当æµåˆ°è¾¾æœ«å°¾æ—¶å°†è‡ªåŠ¨å¾ªçŽ¯ã€‚"
msgid "Time in seconds at which the stream starts after being looped."
msgstr "循环时,æµå¼€å§‹çš„时间,å•ä½ä¸ºç§’。"
+msgid "Contains the raw Ogg data for this stream."
+msgstr "包å«ç”¨äºŽè¿™ä¸ªæµçš„原始 Ogg æ•°æ®ã€‚"
+
msgid "Meta class for playing back audio."
msgstr "播放音频的元类。"
+msgid "Playback instance for [AudioStreamPolyphonic]."
+msgstr "[AudioStreamPolyphonic] 的播放实例。"
+
+msgid ""
+"Playback instance for [AudioStreamPolyphonic]. After setting the "
+"[code]stream[/code] property of [AudioStreamPlayer], [AudioStreamPlayer2D], "
+"or [AudioStreamPlayer3D], the playback instance can be obtained by calling "
+"[method AudioStreamPlayer.get_stream_playback], [method AudioStreamPlayer2D."
+"get_stream_playback] or [method AudioStreamPlayer3D.get_stream_playback] "
+"methods."
+msgstr ""
+"[AudioStreamPolyphonic] 的播放实例。设置 [AudioStreamPlayer]ã€"
+"[AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 的 [code]stream[/code] 属性"
+"åŽï¼Œå¯ä»¥é€šè¿‡è°ƒç”¨ [method AudioStreamPlayer.get_stream_playback]ã€[method "
+"AudioStreamPlayer2D.get_stream_playback] 或 [method AudioStreamPlayer3D."
+"get_stream_playback] 方法获å–播放实例。"
+
+msgid ""
+"Stop a stream. The [param stream] argument is an integer ID returned by "
+"[method play_stream], which becomes invalid after calling this function."
+msgstr ""
+"åœæ­¢æŸä¸ªæµã€‚[param stream] å‚数是由 [method play_stream] 返回的整数 ID,在调"
+"用这个函数åŽå¤±æ•ˆã€‚"
+
msgid "Plays back audio non-positionally."
msgstr "播放音频,ä¸è€ƒè™‘所处ä½ç½®ã€‚"
@@ -4747,6 +11770,9 @@ msgid ""
"[AudioStreamPlayer]."
msgstr "返回与此 [AudioStreamPlayer] å…³è”çš„ [AudioStreamPlayback] 对象。"
+msgid "Plays the audio from the given [param from_position], in seconds."
+msgstr "从给定的ä½ç½® [param from_position] 播放音频,以秒为å•ä½ã€‚"
+
msgid "Sets the position from which audio will be played, in seconds."
msgstr "设置音频的播放ä½ç½®ï¼Œä»¥ç§’为å•ä½ã€‚"
@@ -4821,6 +11847,13 @@ msgid ""
msgstr "返回与该 [AudioStreamPlayer2D] 相关è”çš„ [AudioStreamPlayback] 对象。"
msgid ""
+"Queues the audio to play on the next physics frame, from the given position "
+"[param from_position], in seconds."
+msgstr ""
+"å°†è¦æ’­æ”¾çš„音频入队,将在下一物ç†å¸§ä»Žç»™å®šçš„ä½ç½® [param from_position] 开始播"
+"放,å•ä½ä¸ºç§’。"
+
+msgid ""
"Determines which [Area2D] layers affect the sound for reverb and audio bus "
"effects. Areas can be used to redirect [AudioStream]s so that they play in a "
"certain audio bus. An example of how you might use this is making a "
@@ -4834,6 +11867,16 @@ msgstr ""
msgid "Maximum distance from which audio is still hearable."
msgstr "音频ä»å¯å¬åˆ°çš„最大è·ç¦»ã€‚"
+msgid ""
+"If [code]true[/code], audio is playing or is queued to be played (see "
+"[method play])."
+msgstr ""
+"如果为 [code]true[/code]ï¼Œåˆ™éŸ³é¢‘æ­£åœ¨æ’­æ”¾ï¼Œæˆ–è€…å·²åŠ å…¥æ’­æ”¾é˜Ÿåˆ—ï¼ˆè§ [method "
+"play])。"
+
+msgid "Base volume before attenuation."
+msgstr "è¡°å‡å‰çš„基础音é‡ã€‚"
+
msgid "Plays positional sound in 3D space."
msgstr "在 3D 空间中播放与ä½ç½®ç›¸å…³çš„声音。"
@@ -4891,9 +11934,58 @@ msgid ""
"over a larger distance."
msgstr "è¡°å‡æ•ˆæžœçš„系数。更高的值使声音在更远的è·ç¦»å¯ä»¥å¬åˆ°ã€‚"
+msgid "Attenuation of loudness according to linear distance."
+msgstr "æ ¹æ®è·ç¦»å¯¹å“度进行线性衰å‡ã€‚"
+
+msgid "Attenuation of loudness according to squared distance."
+msgstr "æ ¹æ®è·ç¦»å¯¹å“度进行平方衰å‡ã€‚"
+
+msgid "Attenuation of loudness according to logarithmic distance."
+msgstr "æ ¹æ®è·ç¦»å¯¹å“度进行对数衰å‡ã€‚"
+
+msgid ""
+"No attenuation of loudness according to distance. The sound will still be "
+"heard positionally, unlike an [AudioStreamPlayer]. [constant "
+"ATTENUATION_DISABLED] can be combined with a [member max_distance] value "
+"greater than [code]0.0[/code] to achieve linear attenuation clamped to a "
+"sphere of a defined size."
+msgstr ""
+"ä¸æ ¹æ®è·ç¦»è¡°å‡å“度。与 [AudioStreamPlayer] ä¸åŒï¼Œå£°éŸ³ä»ä¼šåœ¨ä½ç½®ä¸Šè¢«å¬åˆ°ã€‚"
+"[constant ATTENUATION_DISABLED] å¯ä»¥ä¸Žå¤§äºŽ [code]0.0[/code] çš„ [member "
+"max_distance] 值结åˆä½¿ç”¨ï¼Œä»¥å®žçŽ°çº¿æ€§è¡°å‡ï¼Œé™åˆ¶åœ¨å®šä¹‰çš„çƒä½“大å°ã€‚"
+
msgid "Disables doppler tracking."
msgstr "ç¦ç”¨å¤šæ™®å‹’跟踪。"
+msgid "Executes doppler tracking in idle step."
+msgstr "在空闲步骤中执行多普勒跟踪。"
+
+msgid "Executes doppler tracking in physics step."
+msgstr "在物ç†æ­¥éª¤ä¸­æ‰§è¡Œå¤šæ™®å‹’跟踪。"
+
+msgid "Returns the stream at the specified index."
+msgstr "返回指定索引处的æµã€‚"
+
+msgid "Move a stream from one index to another."
+msgstr "å°†æµä»Žä¸€ä¸ªç´¢å¼•ç§»åŠ¨åˆ°å¦ä¸€ä¸ªç´¢å¼•ã€‚"
+
+msgid "Remove the stream at the specified index."
+msgstr "移除指定索引处的æµã€‚"
+
+msgid "Set the AudioStream at the specified index."
+msgstr "设置指定索引处的 AudioStream。"
+
+msgid ""
+"The intensity of random pitch variation. A value of 1 means no variation."
+msgstr "éšæœºéŸ³é«˜å˜åŒ–的强度。值为 1 表示没有å˜åŒ–。"
+
+msgid ""
+"The intensity of random volume variation. A value of 0 means no variation."
+msgstr "éšæœºéŸ³é‡å˜åŒ–的强度。值为 0 表示没有å˜åŒ–。"
+
+msgid "The number of streams in the stream pool."
+msgstr "æµæ± ä¸­æµçš„æ•°é‡ã€‚"
+
msgid "Stores audio data loaded from WAV files."
msgstr "存储从 WAV 文件加载的音频数æ®ã€‚"
@@ -5069,6 +12161,9 @@ msgstr ""
"[b]注æ„:[/b]该属性åªå½±å“按钮的视觉表现。无论该属性的值是多少,信å·éƒ½ä¼šåœ¨åŒä¸€"
"时刻å‘出。"
+msgid "[Shortcut] associated to the button."
+msgstr "与该按钮关è”çš„ [Shortcut]。"
+
msgid ""
"If [code]true[/code], the button will add information about its shortcut in "
"the tooltip."
@@ -5136,6 +12231,9 @@ msgstr ""
"è¿™æ供了一个默认的æ质,具有多ç§æ¸²æŸ“功能和属性,无需编写ç€è‰²å™¨ä»£ç ã€‚详情请看"
"下é¢çš„教程。"
+msgid "Standard Material 3D"
+msgstr "标准 3D æè´¨"
+
msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled."
msgstr "如果指定的 [enum Feature] 被å¯ç”¨ï¼Œè¿”回 [code]true[/code]。"
@@ -5158,6 +12256,15 @@ msgstr ""
"用或ç¦ç”¨å¤šä¸ªæ ‡å¿—。也å¯ä»¥é€šè¿‡å°†ç›¸åº”æˆå‘˜è®¾ç½®ä¸º [code]true[/code] æ¥å¯ç”¨æ ‡å¿—。选"
"é¡¹è§ [enum Flags] 枚举值。"
+msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]."
+msgstr "è¦åº”用的 Alpha æŠ—é”¯é½¿ç±»åž‹ã€‚è§ [enum AlphaAntiAliasing]。"
+
+msgid ""
+"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] "
+"and [code]2[/code]."
+msgstr ""
+"Alpha Hash 的哈希比例。推è [code]0[/code] å’Œ [code]2[/code] 之间的值。"
+
msgid ""
"The strength of the anisotropy effect. This is multiplied by [member "
"anisotropy_flowmap]'s alpha channel if a texture is defined there and the "
@@ -5167,6 +12274,24 @@ msgstr ""
"纹ç†ï¼Œé‚£ä¹ˆè¿™ä¸ªå€¼ä¼šä¸Žå…¶ Alpha 通é“相乘。"
msgid ""
+"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of "
+"the specular blob and aligns it to tangent space. This is useful for brushed "
+"aluminium and hair reflections.\n"
+"[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh "
+"does not contain tangents, the anisotropy effect will appear broken.\n"
+"[b]Note:[/b] Material anisotropy should not to be confused with anisotropic "
+"texture filtering, which can be enabled by setting [member texture_filter] "
+"to [constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]."
+msgstr ""
+"如果为 [code]true[/code],则å¯ç”¨å„å‘异性。å„å‘异性会改å˜é•œé¢å射斑点的形状并"
+"将其与切线空间对é½ã€‚å¯ç”¨äºŽæ‹‰ä¸é“æ和毛å‘å射。\n"
+"[b]注æ„:[/b]å„å‘异性需è¦ç½‘格切线æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚如果网格中ä¸åŒ…å«åˆ‡çº¿ï¼Œåˆ™å„å‘异"
+"性效果会显得破碎。\n"
+"[b]注æ„:[/b]æ质的å„å‘异性ä¸åº”与å„å‘异性纹ç†è¿‡æ»¤ç›¸æ··æ·†ï¼ŒåŽè€…å¯ä»¥é€šè¿‡å°† "
+"[member texture_filter] 设置为 [constant "
+"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] æ¥å¯ç”¨ã€‚"
+
+msgid ""
"Texture that offsets the tangent map for anisotropy calculations and "
"optionally controls the anisotropy effect (if an alpha channel is present). "
"The flowmap texture is expected to be a derivative map, with the red channel "
@@ -5343,9 +12468,6 @@ msgid ""
"distance."
msgstr "如果为 [code]true[/code],则无论è·ç¦»è¿œè¿‘,对象都以相åŒçš„尺寸呈现。"
-msgid "Grows object vertices in the direction of their normals."
-msgstr "沿ç€æ³•çº¿çš„æ–¹å‘生长对象顶点。"
-
msgid ""
"A high value makes the material appear more like a metal. Non-metals use "
"their albedo as the diffuse color and add diffuse to the specular "
@@ -5379,14 +12501,14 @@ msgstr ""
"效果的信æ¯æ—¶ï¼Œè¿™å¾ˆæœ‰ç”¨ã€‚例如,如果您将金属效果存储在红色通é“中,将粗糙度存储"
"在è“色通é“中,将环境é®æŒ¡å­˜å‚¨åœ¨ç»¿è‰²é€šé“中,就å¯ä»¥å‡å°‘您使用的纹ç†æ•°é‡ã€‚"
+msgid "The width of the shape outine."
+msgstr "形状轮廓的宽度。"
+
msgid ""
"If [code]true[/code], depth testing is disabled and the object will be drawn "
"in render order."
msgstr "如果为 [code]true[/code],深度测试被ç¦ç”¨ï¼Œå¯¹è±¡å°†æŒ‰æ¸²æŸ“顺åºç»˜åˆ¶ã€‚"
-msgid "If [code]true[/code], normal mapping is enabled."
-msgstr "如果为 [code]true[/code],则å¯ç”¨æ³•çº¿æ˜ å°„。"
-
msgid "The strength of the normal map's effect."
msgstr "法线贴图的效果强度。"
@@ -5464,6 +12586,22 @@ msgstr ""
"subsurf_scatter_strength] 相乘。"
msgid ""
+"Filter flags for the texture. See [enum TextureFilter] for options.\n"
+"[b]Note:[/b] [member heightmap_texture] is always sampled with linear "
+"filtering, even if nearest-neighbor filtering is selected here. This is to "
+"ensure the heightmap effect looks as intended. If you need sharper height "
+"transitions between pixels, resize the heightmap texture in an image editor "
+"with nearest-neighbor filtering."
+msgstr ""
+"纹ç†çš„过滤标志。å¯é€‰é¡¹è§ [enum TextureFilter]。\n"
+"[b]注æ„:[/b]å³ä¾¿è¿™é‡Œé€‰æ‹©äº†æœ€è¿‘邻过滤,[member heightmap_texture] 也始终使用"
+"线性过滤采样。这是为了确ä¿é«˜åº¦å›¾æ•ˆæžœçœ‹èµ·æ¥ç¬¦åˆé¢„期。如果您需è¦åƒç´ ä¹‹é—´çš„高度"
+"过渡更加清晰,请在图åƒç¼–辑器中使用最近邻过滤调整高度图纹ç†çš„大å°ã€‚"
+
+msgid "Repeat flags for the texture. See [enum TextureFilter] for options."
+msgstr "纹ç†çš„é‡å¤æ ‡å¿—。å¯é€‰é¡¹è§ [enum TextureFilter]。"
+
+msgid ""
"If [code]true[/code], instead of using [code]UV[/code] textures will use a "
"triplanar texture lookup to determine how to apply textures. Triplanar uses "
"the orientation of the object's surface to blend between texture "
@@ -5517,13 +12655,13 @@ msgid "Texture specifying per-pixel emission color."
msgstr "指定æ¯ä¸ªåƒç´ å‘射颜色的纹ç†ã€‚"
msgid "Texture specifying per-pixel normal vector."
-msgstr "指定æ¯åƒç´ æ³•å‘é‡çš„纹ç†ã€‚"
+msgstr "指定æ¯ä¸ªåƒç´ æ³•å‘é‡çš„纹ç†ã€‚"
msgid "Texture specifying per-pixel rim value."
msgstr "指定æ¯ä¸ªåƒç´ è¾¹ç¼˜å€¼çš„纹ç†ã€‚"
msgid "Texture specifying per-pixel clearcoat value."
-msgstr "指定æ¯åƒç´ æ¸…漆值的纹ç†ã€‚"
+msgstr "指定æ¯ä¸ªåƒç´ æ¸…漆值的纹ç†ã€‚"
msgid ""
"Texture specifying per-pixel flowmap direction for use with [member "
@@ -5533,14 +12671,23 @@ msgstr "指定æ¯ä¸ªåƒç´ æµå›¾æ–¹å‘的纹ç†ï¼Œç”¨äºŽ [member anisotropy]。"
msgid "Texture specifying per-pixel ambient occlusion value."
msgstr "指定æ¯ä¸ªåƒç´ çŽ¯å¢ƒå…‰é®è”½çš„纹ç†ã€‚"
+msgid "Texture specifying per-pixel height."
+msgstr "指定æ¯ä¸ªåƒç´ é«˜åº¦çš„纹ç†ã€‚"
+
msgid "Texture specifying per-pixel subsurface scattering."
-msgstr "指定æ¯ä¸ªåƒç´ çš„次表é¢æ•£å°„的纹ç†ã€‚"
+msgstr "指定æ¯ä¸ªåƒç´ æ¬¡è¡¨é¢æ•£å°„的纹ç†ã€‚"
+
+msgid "Texture specifying per-pixel transmittance for subsurface scattering."
+msgstr "指定æ¯ä¸ªåƒç´ ç”¨äºŽæ¬¡è¡¨é¢æ•£å°„çš„é€å°„率的纹ç†ã€‚"
+
+msgid "Texture specifying per-pixel backlight color."
+msgstr "指定æ¯ä¸ªåƒç´ èƒŒå…‰é¢œè‰²çš„纹ç†ã€‚"
msgid "Texture specifying per-pixel refraction strength."
msgstr "指定æ¯ä¸ªåƒç´ æŠ˜å°„强度的纹ç†ã€‚"
msgid "Texture specifying per-pixel detail mask blending value."
-msgstr "指定æ¯åƒç´ ç»†èŠ‚蒙版混åˆå€¼çš„纹ç†ã€‚"
+msgstr "指定æ¯ä¸ªåƒç´ ç»†èŠ‚蒙版混åˆå€¼çš„纹ç†ã€‚"
msgid "Texture specifying per-pixel detail color."
msgstr "指定æ¯ä¸ªåƒç´ ç»†èŠ‚颜色的纹ç†ã€‚"
@@ -5548,8 +12695,69 @@ msgstr "指定æ¯ä¸ªåƒç´ ç»†èŠ‚颜色的纹ç†ã€‚"
msgid "Texture specifying per-pixel detail normal."
msgstr "指定æ¯ä¸ªåƒç´ ç»†èŠ‚法线的纹ç†ã€‚"
+msgid "Texture holding ambient occlusion, roughness, and metallic."
+msgstr "ä¿å­˜çŽ¯å¢ƒå…‰é®è”½ã€ç²—糙度和金属度信æ¯çš„纹ç†ã€‚"
+
msgid "Represents the size of the [enum TextureParam] enum."
-msgstr "表示 [enum TextureParam] 枚举的大å°ã€‚"
+msgstr "代表 [enum TextureParam] 枚举的大å°ã€‚"
+
+msgid ""
+"The texture filter reads from the nearest pixel only. The simplest and "
+"fastest method of filtering, but the texture will look pixelized."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨ä»…读å–最邻近的åƒç´ ã€‚最简å•å¿«é€Ÿçš„过滤方法,但纹ç†çœ‹èµ·æ¥ä¼šåƒç´ åŒ–。"
+
+msgid ""
+"The texture filter blends between the nearest 4 pixels. Use this when you "
+"want to avoid a pixelated style, but do not want mipmaps."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨åœ¨æœ€é‚»è¿‘çš„ 4 个åƒç´ ä¹‹é—´æ··åˆã€‚如果你想è¦é¿å…åƒç´ åŒ–风格,但åˆä¸æƒ³ä½¿"
+"用 mipmap,那么请使用这个选项。"
+
+msgid ""
+"The texture filter reads from the nearest pixel in the nearest mipmap. The "
+"fastest way to read from textures with mipmaps."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨è¯»å–最邻近的 mipmap 中的最邻近的åƒç´ ã€‚带有 mipmap 的纹ç†çš„最快读å–"
+"方法。"
+
+msgid ""
+"The texture filter blends between the nearest 4 pixels and between the "
+"nearest 2 mipmaps. Use this for most cases as mipmaps are important to "
+"smooth out pixels that are far from the camera."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨åœ¨æœ€é‚»è¿‘çš„ 4 个åƒç´ å’Œæœ€é‚»è¿‘çš„ 2 个 mipmap 之间混åˆã€‚请在大多数情况"
+"下使用,因为 mipmap 对于平滑远离相机的åƒç´ å¾ˆé‡è¦ã€‚"
+
+msgid ""
+"The texture filter reads from the nearest pixel, but selects a mipmap based "
+"on the angle between the surface and the camera view. This reduces artifacts "
+"on surfaces that are almost in line with the camera. The anisotropic "
+"filtering level can be changed by adjusting [member ProjectSettings."
+"rendering/textures/default_filters/anisotropic_filtering_level]."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨è¯»å–最邻近的åƒç´ ï¼Œä½†ä¼šæ ¹æ®è¡¨é¢å’Œç›¸æœºè§†å›¾ä¹‹é—´çš„夹角选择 mipmap。å¯ä»¥"
+"å‡å°‘几乎与相机æˆä¸€ç›´çº¿çš„表é¢çš„ä¸è‡ªç„¶æƒ…况。å„å‘异性过滤级别å¯ä»¥é€šè¿‡è°ƒæ•´ "
+"[member ProjectSettings.rendering/textures/default_filters/"
+"anisotropic_filtering_level] æ¥æ”¹å˜ã€‚"
+
+msgid ""
+"The texture filter blends between the nearest 4 pixels and selects a mipmap "
+"based on the angle between the surface and the camera view. This reduces "
+"artifacts on surfaces that are almost in line with the camera. This is the "
+"slowest of the filtering options, but results in the highest quality "
+"texturing. The anisotropic filtering level can be changed by adjusting "
+"[member ProjectSettings.rendering/textures/default_filters/"
+"anisotropic_filtering_level]."
+msgstr ""
+"纹ç†è¿‡æ»¤å™¨åœ¨æœ€é‚»è¿‘çš„ 4 个åƒç´ ä¹‹é—´è¿›è¡Œæ··åˆï¼Œå¹¶ä¼šæ ¹æ®è¡¨é¢å’Œç›¸æœºè§†å›¾ä¹‹é—´çš„夹角选"
+"æ‹© mipmap。å¯ä»¥å‡å°‘几乎与相机æˆä¸€ç›´çº¿çš„表é¢çš„ä¸è‡ªç„¶æƒ…况。这是过滤选项中最慢的"
+"一个,但å¯ä»¥å¾—到最高质é‡çš„纹ç†ã€‚å„å‘异性过滤级别å¯ä»¥é€šè¿‡è°ƒæ•´ [member "
+"ProjectSettings.rendering/textures/default_filters/"
+"anisotropic_filtering_level] æ¥æ”¹å˜ã€‚"
+
+msgid "Represents the size of the [enum TextureFilter] enum."
+msgstr "代表 [enum TextureFilter] 枚举的大å°ã€‚"
msgid "Use [code]UV[/code] with the detail texture."
msgstr "使用 [code]UV[/code] 与细节纹ç†ã€‚"
@@ -5557,6 +12765,12 @@ msgstr "使用 [code]UV[/code] 与细节纹ç†ã€‚"
msgid "Use [code]UV2[/code] with the detail texture."
msgstr "使用 [code]UV2[/code] 与细节纹ç†ã€‚"
+msgid "Represents the size of the [enum Transparency] enum."
+msgstr "代表 [enum Transparency] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum ShadingMode] enum."
+msgstr "代表 [enum ShadingMode] 枚举的大å°ã€‚"
+
msgid "Constant for setting [member emission_enabled]."
msgstr "用于设置 [member emission_enabled] 的常é‡ã€‚"
@@ -5575,9 +12789,18 @@ msgstr "用于设置 [member anisotropy_enabled] 的常é‡ã€‚"
msgid "Constant for setting [member ao_enabled]."
msgstr "用于设置 [member ao_enabled] 的常é‡ã€‚"
+msgid "Constant for setting [member heightmap_enabled]."
+msgstr "用于设置 [member heightmap_enabled] 的常é‡ã€‚"
+
msgid "Constant for setting [member subsurf_scatter_enabled]."
msgstr "用于设置 [member subsurf_scatter_enabled] 的常é‡ã€‚"
+msgid "Constant for setting [member subsurf_scatter_transmittance_enabled]."
+msgstr "用于设置 [member subsurf_scatter_transmittance_enabled] 的常é‡ã€‚"
+
+msgid "Constant for setting [member backlight_enabled]."
+msgstr "用于设置 [member backlight_enabled] 的常é‡ã€‚"
+
msgid "Constant for setting [member refraction_enabled]."
msgstr "用于设置 [member refraction_enabled] 的常é‡ã€‚"
@@ -5585,7 +12808,7 @@ msgid "Constant for setting [member detail_enabled]."
msgstr "用于设置 [member detail_enabled] 的常é‡ã€‚"
msgid "Represents the size of the [enum Feature] enum."
-msgstr "表示 [enum Feature] 枚举的大å°ã€‚"
+msgstr "代表 [enum Feature] 枚举的大å°ã€‚"
msgid ""
"Default blend mode. The color of the object is blended over the background "
@@ -5601,8 +12824,22 @@ msgstr "从背景中å‡åŽ»å¯¹è±¡çš„颜色。"
msgid "The color of the object is multiplied by the background."
msgstr "对象的颜色与背景相乘。"
-msgid "No culling is performed."
-msgstr "ä¸è¿›è¡Œå‰”除。"
+msgid "Disables Alpha AntiAliasing for the material."
+msgstr "ç¦ç”¨è¯¥æ质的 Alpha 抗锯齿。"
+
+msgid ""
+"Enables AlphaToCoverage. Alpha values in the material are passed to the "
+"AntiAliasing sample mask."
+msgstr ""
+"å¯ç”¨ AlphaToCoverage。æ质中的 Alpha 值会被传递到 AntiAliasing 采样é®ç½©ã€‚"
+
+msgid ""
+"Enables AlphaToCoverage and forces all non-zero alpha values to [code]1[/"
+"code]. Alpha values in the material are passed to the AntiAliasing sample "
+"mask."
+msgstr ""
+"å¯ç”¨ AlphaToCoverage 并将所有éžé›¶çš„ alpha 值强制设为 [code]1[/code]。æ质中"
+"çš„ Alpha 值会被传递到 AntiAliasing 采样é®ç½©ã€‚"
msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh."
msgstr "å°† [code]ALBEDO[/code] 设置为网格中指定的æ¯é¡¶ç‚¹é¢œè‰²ã€‚"
@@ -5648,7 +12885,7 @@ msgid "Enables the shadow to opacity feature."
msgstr "å¯ç”¨é˜´å½±åˆ°ä¸é€æ˜Žåº¦åŠŸèƒ½ã€‚"
msgid "Represents the size of the [enum Flags] enum."
-msgstr "表示 [enum Flags] 枚举的大å°ã€‚"
+msgstr "代表 [enum Flags] 枚举的大å°ã€‚"
msgid "Default diffuse scattering algorithm."
msgstr "默认的漫å射散射算法。"
@@ -5668,9 +12905,6 @@ msgstr "默认镜é¢å射斑点。"
msgid "Toon blob which changes size based on roughness."
msgstr "基于粗糙度更改大å°çš„ Toon 斑点。"
-msgid "No specular blob."
-msgstr "æ— é•œé¢å射斑点。"
-
msgid "Billboard mode is disabled."
msgstr "广告牌模å¼è¢«ç¦ç”¨ã€‚"
@@ -5706,28 +12940,27 @@ msgid ""
"using the alpha channel."
msgstr "æ ¹æ®æ¯ä¸ªåƒç´ ä¸Žç›¸æœºçš„è·ç¦»ï¼Œä½¿ç”¨ Alpha 通é“平滑地淡化对象。"
-msgid ""
-"Smoothly fades the object out based on each pixel's distance from the camera "
-"using a dither approach. Dithering discards pixels based on a set pattern to "
-"smoothly fade without enabling transparency. On certain hardware this can be "
-"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
-msgstr ""
-"æ ¹æ®æ¯ä¸ªåƒç´ ä¸Žç›¸æœºçš„è·ç¦»ï¼Œä½¿ç”¨æŠ–动方法平滑地淡化对象。抖动会根æ®è®¾å®šçš„模å¼ä¸¢"
-"弃åƒç´ ï¼Œåœ¨ä¸å¯ç”¨é€æ˜Žçš„情况下平滑淡化。在æŸäº›ç¡¬ä»¶ä¸Šæ¯” [constant "
-"DISTANCE_FADE_PIXEL_ALPHA] 更快。"
+msgid "3×3 matrix datatype."
+msgstr "3×3 矩阵数æ®ç±»åž‹ã€‚"
msgid ""
-"Smoothly fades the object out based on the object's distance from the camera "
-"using a dither approach. Dithering discards pixels based on a set pattern to "
-"smoothly fade without enabling transparency. On certain hardware this can be "
-"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]."
+"3×3 matrix used for 3D rotation and scale. Almost always used as an "
+"orthogonal basis for a [Transform3D].\n"
+"Contains 3 vector fields X, Y and Z as its columns, which are typically "
+"interpreted as the local basis vectors of a transformation. For such use, it "
+"is composed of a scaling and a rotation matrix, in that order (M = R.S).\n"
+"Can also be accessed as array of 3D vectors. These vectors are normally "
+"orthogonal to each other, but are not necessarily normalized (due to "
+"scaling).\n"
+"For more information, read the \"Matrices and transforms\" documentation "
+"article."
msgstr ""
-"æ ¹æ®å¯¹è±¡ä¸Žç›¸æœºçš„è·ç¦»ï¼Œä½¿ç”¨æŠ–动的方法平滑地淡化对象。抖动根æ®è®¾å®šçš„模å¼ä¸¢å¼ƒåƒ"
-"素,在ä¸å¯ç”¨é€æ˜Žåº¦çš„情况下平滑淡化。在æŸäº›ç¡¬ä»¶ä¸Šå¯èƒ½æ¯” [constant "
-"DISTANCE_FADE_PIXEL_ALPHA] 更快。"
-
-msgid "3×3 matrix datatype."
-msgstr "3×3 矩阵数æ®ç±»åž‹ã€‚"
+"用于 3D 旋转和缩放的 3×3 矩阵。几乎总是用作 [Transform3D] 的正交基。\n"
+"åŒ…å« 3 个å‘é‡å­—段 Xã€Y å’Œ Z 作为其列,它们通常被解释为å˜æ¢çš„局部基å‘é‡ã€‚对于"
+"è¿™ç§ç”¨é€”,它由缩放和旋转矩阵组æˆï¼Œé¡ºåºä¸º (M = R.S)。\n"
+"也å¯ä»¥ä½œä¸º 3D å‘é‡æ•°ç»„访问。这些å‘é‡é€šå¸¸å½¼æ­¤æ­£äº¤ï¼Œä½†ä¸ä¸€å®šæ˜¯å½’一化的(由于缩"
+"放)。\n"
+"更多信æ¯è¯·é˜…读文档文章《矩阵与å˜æ¢ã€‹ã€‚"
msgid "Matrices and transforms"
msgstr "矩阵与å˜æ¢"
@@ -5741,11 +12974,21 @@ msgstr "矩阵å˜æ¢æ¼”示"
msgid "2.5D Demo"
msgstr "2.5D 演示"
+msgid "Constructs a default-initialized [Basis] set to [constant IDENTITY]."
+msgstr "构造默认åˆå§‹åŒ–为 [constant IDENTITY] çš„ [Basis] 。"
+
msgid "Constructs a [Basis] as a copy of the given [Basis]."
msgstr "构造给定 [Basis] 的副本。"
+msgid ""
+"Constructs a pure rotation basis matrix, rotated around the given [param "
+"axis] by [param angle] (in radians). The axis must be a normalized vector."
+msgstr ""
+"构造纯旋转的基矩阵,围绕给定的轴 [param axis] 旋转 [param angle](å•ä½ä¸ºå¼§"
+"度)。该轴必须是归一化å‘é‡ã€‚"
+
msgid "Constructs a pure rotation basis matrix from the given quaternion."
-msgstr "æ ¹æ®ç»™å®šçš„四元数构造一个纯旋转基矩阵。"
+msgstr "æ ¹æ®ç»™å®šçš„四元数构造纯旋转的基矩阵。"
msgid "Constructs a basis matrix from 3 axis vectors (matrix columns)."
msgstr "从 3 个轴å‘é‡ï¼ˆçŸ©é˜µåˆ—)构造一个基矩阵。"
@@ -5777,6 +13020,19 @@ msgid "Returns the inverse of the matrix."
msgstr "返回矩阵的逆值。"
msgid ""
+"Creates a Basis with a rotation such that the forward axis (-Z) points "
+"towards the [param target] position.\n"
+"The up axis (+Y) points as close to the [param up] vector as possible while "
+"staying perpendicular to the forward axis. The resulting Basis is "
+"orthonormalized. The [param target] and [param up] vectors cannot be zero, "
+"and cannot be parallel to each other."
+msgstr ""
+"创建一个旋转的 Basis,使å‰å‘è½´ (-Zï¼‰æŒ‡å‘ [param target] ä½ç½®ã€‚\n"
+"å‘上轴(+Y)指å‘å°½å¯èƒ½é è¿‘ [param up] å‘é‡ï¼ŒåŒæ—¶ä¿æŒåž‚直于å‰å‘轴。生æˆçš„ "
+"Basis 是正交归一化的。[param target] å’Œ [param up] å‘é‡ä¸èƒ½ä¸ºé›¶ï¼Œä¹Ÿä¸èƒ½ç›¸äº’å¹³"
+"行。"
+
+msgid ""
"Returns the orthonormalized version of the matrix (useful to call from time "
"to time to avoid rounding error for orthogonal matrices). This performs a "
"Gram-Schmidt orthonormalization on the basis of the matrix."
@@ -5846,6 +13102,9 @@ msgid ""
"transformation."
msgstr "在å˜æ¢ä¸­ä½¿ç”¨æ—¶ï¼Œä¼šæ²¿ Z 轴翻转æŸç‰©çš„基。"
+msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix."
+msgstr "使用给定的 [Basis] 矩阵å˜æ¢ï¼ˆä¹˜ï¼‰è¯¥ [Vector3]。"
+
msgid "Boolean matrix."
msgstr "布尔矩阵。"
@@ -5867,6 +13126,9 @@ msgstr "返回ä½å›¾åœ¨æŒ‡å®šä½ç½®çš„值。"
msgid "Returns bitmap's dimensions."
msgstr "返回ä½å›¾çš„尺寸。"
+msgid "Resizes the image to [param new_size]."
+msgstr "将该图åƒçš„大å°ä¿®æ”¹ä¸º [param new_size]。"
+
msgid ""
"Sets the bitmap's element at the specified position, to the specified value."
msgstr "å°†ä½å›¾ä¸­æŒ‡å®šä½ç½®çš„元素设置为指定值。"
@@ -5911,6 +13173,9 @@ msgstr ""
"如果节点没有父节点,返回节点的 [member rest] [code]Transform2D[/code],或者返"
"回它相对于父节点的放æ¾å§¿åŠ¿ã€‚"
+msgid "Sets the length of the bone in the [code]Bone2D[/code] node."
+msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。"
+
msgid ""
"Rest transform of the bone. You can reset the node's transforms to this "
"value using [method apply_rest]."
@@ -5920,12 +13185,248 @@ msgstr ""
msgid "A node that will attach to a bone."
msgstr "会附ç€åœ¨éª¨éª¼ä¸Šçš„节点。"
+msgid "The index of the attached bone."
+msgstr "所附ç€éª¨éª¼çš„索引。"
+
msgid "The name of the attached bone."
-msgstr "附ç€éª¨éª¼çš„å称。"
+msgstr "所附ç€éª¨éª¼çš„å称。"
+
+msgid "Bone map for retargeting."
+msgstr "用于é‡å®šå‘的骨骼映射。"
+
+msgid ""
+"This class contains a hashmap that uses a list of bone names in "
+"[SkeletonProfile] as key names.\n"
+"By assigning the actual [Skeleton3D] bone name as the key value, it maps the "
+"[Skeleton3D] to the [SkeletonProfile]."
+msgstr ""
+"这个类中有一个哈希表,使用 [SkeletonProfile] 中的骨骼å称作为键å。\n"
+"将实际的 [Skeleton3D] 骨骼å赋为键值åŽï¼Œå°±ä¼šå°† [Skeleton3D] 映射到 "
+"[SkeletonProfile]。"
+
+msgid "Retargeting 3D Skeletons"
+msgstr "é‡å®šå‘ 3D 骨架"
+
+msgid ""
+"Returns a skeleton bone name is mapped to [param profile_bone_name].\n"
+"In the retargeting process, the returned bone name is the bone name of the "
+"source skeleton."
+msgstr ""
+"返回与é…置中的æŸä¸ªéª¨éª¼å称 [param profile_bone_name] 映射的骨架中的骨骼å"
+"称。\n"
+"在é‡å®šå‘过程中,设置的骨骼å称是æºéª¨æž¶ä¸­éª¨éª¼çš„å称。"
+
+msgid ""
+"Maps a skeleton bone name to [param profile_bone_name].\n"
+"In the retargeting process, the setting bone name is the bone name of the "
+"source skeleton."
+msgstr ""
+"将骨架中的æŸä¸ªéª¨éª¼å称映射到é…置中的骨骼å称 [param profile_bone_name]。\n"
+"在é‡å®šå‘过程中,设置的骨骼å称是æºéª¨æž¶ä¸­éª¨éª¼çš„å称。"
+
+msgid ""
+"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are "
+"synchronized with it."
+msgstr "映射目标的 [SkeletonProfile]。[BoneMap] 中的键å与此åŒæ­¥ã€‚"
msgid "Boolean built-in type."
msgstr "布尔型内置型。"
+msgid ""
+"Boolean is a built-in type. There are two boolean values: [code]true[/code] "
+"and [code]false[/code]. You can think of it as a switch with on or off (1 or "
+"0) setting. Booleans are used in programming for logic in condition "
+"statements, like [code]if[/code] statements.\n"
+"Booleans can be directly used in [code]if[/code] statements. The code below "
+"demonstrates this on the [code]if can_shoot:[/code] line. You don't need to "
+"use [code]== true[/code], you only need [code]if can_shoot:[/code]. "
+"Similarly, use [code]if not can_shoot:[/code] rather than [code]== false[/"
+"code].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot:\n"
+" pass # Perform shooting actions here.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot)\n"
+" {\n"
+" // Perform shooting actions here.\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The following code will only create a bullet if both conditions are met: "
+"action \"shoot\" is pressed and if [code]can_shoot[/code] is [code]true[/"
+"code].\n"
+"[b]Note:[/b] [code]Input.is_action_pressed(\"shoot\")[/code] is also a "
+"boolean that is [code]true[/code] when \"shoot\" is pressed and [code]false[/"
+"code] when \"shoot\" isn't pressed.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n"
+" {\n"
+" CreateBullet();\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The following code will set [code]can_shoot[/code] to [code]false[/code] and "
+"start a timer. This will prevent player from shooting until the timer runs "
+"out. Next [code]can_shoot[/code] will be set to [code]true[/code] again "
+"allowing player to shoot once again.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"@onready var _cool_down = $CoolDownTimer\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+" _can_shoot = false\n"
+" _cool_down.start()\n"
+"\n"
+"func _on_cool_down_timer_timeout():\n"
+" _can_shoot = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"private Timer _coolDown;\n"
+"\n"
+"public override void _Ready()\n"
+"{\n"
+" _coolDown = GetNode<Timer>(\"CoolDownTimer\");\n"
+"}\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n"
+" {\n"
+" CreateBullet();\n"
+" _canShoot = false;\n"
+" _coolDown.Start();\n"
+" }\n"
+"}\n"
+"\n"
+"public void OnCoolDownTimerTimeout()\n"
+"{\n"
+" _canShoot = true;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"布尔是内置类型。布尔值有两个:[code]true[/code] å’Œ [code]false[/code]。你å¯ä»¥"
+"把它想象æˆå¼€å…³ï¼Œæœ‰å¼€å’Œå…³ï¼ˆ1 å’Œ 0)两ç§çŠ¶æ€ã€‚布尔型在编程中用于æ¡ä»¶è¯­å¥çš„逻"
+"辑,如 [code]if[/code] 语å¥ã€‚\n"
+"布尔型å¯ä»¥ç›´æŽ¥ç”¨äºŽ [code]if[/code] 语å¥ä¸­ã€‚下é¢çš„代ç åœ¨ [code]if can_shoot:[/"
+"code] 那一行进行了演示。你ä¸éœ€è¦ä½¿ç”¨ [code]== true[/code],你åªéœ€è¦ [code]if "
+"can_shoot:[/code]。åŒæ ·çš„,请使用 [code]if not can_shoot:[/code] 而ä¸æ˜¯ "
+"[code]== false[/code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot:\n"
+" pass # 在此执行射击。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot)\n"
+" {\n"
+" // 在此执行射击。\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"下é¢çš„代ç åªæœ‰åœ¨ä¸¤ä¸ªæ¡ä»¶éƒ½æ»¡è¶³çš„情况下æ‰ä¼šåˆ›å»ºå­å¼¹ï¼šåŠ¨ä½œâ€œshootâ€è¢«æŒ‰ä¸‹ï¼Œå¹¶ä¸” "
+"[code]can_shoot[/code] 为 [code]true[/code]。\n"
+"[b]注æ„:[/b][code]Input.is_action_pressed(\"shoot\")[/code] 也是布尔值,"
+"当“shootâ€è¢«æŒ‰ä¸‹æ—¶ä¸º [code]true[/code],当“shootâ€æ²¡æœ‰è¢«æŒ‰ä¸‹æ—¶ä¸º [code]false[/"
+"code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n"
+" {\n"
+" CreateBullet();\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"下é¢çš„代ç ä¼šå°† [code]can_shoot[/code] 设置为 [code]false[/code] 并å¯åŠ¨è®¡æ—¶"
+"器。这样就会在计时器结æŸå‰é˜»æ­¢çŽ©å®¶è¿›è¡Œå°„å‡»ã€‚ç„¶åŽ [code]can_shoot[/code] 就会"
+"å†æ¬¡è¢«è®¾ä¸º [code]true[/code],å†æ¬¡å…许玩家进行射击。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var _can_shoot = true\n"
+"@onready var _cool_down = $CoolDownTimer\n"
+"\n"
+"func shoot():\n"
+" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n"
+" create_bullet()\n"
+" _can_shoot = false\n"
+" _cool_down.start()\n"
+"\n"
+"func _on_cool_down_timer_timeout():\n"
+" _can_shoot = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"private bool _canShoot = true;\n"
+"private Timer _coolDown;\n"
+"\n"
+"public override void _Ready()\n"
+"{\n"
+" _coolDown = GetNode<Timer>(\"CoolDownTimer\");\n"
+"}\n"
+"\n"
+"public void Shoot()\n"
+"{\n"
+" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n"
+" {\n"
+" CreateBullet();\n"
+" _canShoot = false;\n"
+" _coolDown.Start();\n"
+" }\n"
+"}\n"
+"\n"
+"public void OnCoolDownTimerTimeout()\n"
+"{\n"
+" _canShoot = true;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "Constructs a [bool] as a copy of the given [bool]."
msgstr "构造给定 [bool] 的副本。"
@@ -5948,6 +13449,62 @@ msgstr ""
msgid "Base class for box containers."
msgstr "ç›’å¼å®¹å™¨çš„基类。"
+msgid ""
+"Arranges child [Control] nodes vertically or horizontally, and rearranges "
+"them automatically when their minimum size changes."
+msgstr ""
+"å°†å­çº§ [Control] 节点垂直或水平排列,在它们的最å°å°ºå¯¸å‘生å˜åŒ–时会自动é‡æ–°æŽ’"
+"列。"
+
+msgid ""
+"Adds a [Control] node to the box as a spacer. If [param begin] is "
+"[code]true[/code], it will insert the [Control] node in front of all other "
+"children."
+msgstr ""
+"添加 [Control] 节点作为间隔。如果 [param begin] 为 [code]true[/code],则会将"
+"该 [Control] 节点添加到所有其他节点之å‰ã€‚"
+
+msgid ""
+"The alignment of the container's children (must be one of [constant "
+"ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])."
+msgstr ""
+"该容器å­èŠ‚点的对é½æ–¹å¼ï¼ˆå¿…须是 [constant ALIGNMENT_BEGIN]ã€[constant "
+"ALIGNMENT_CENTER]ã€[constant ALIGNMENT_END] 之一)。"
+
+msgid ""
+"If [code]true[/code], the [BoxContainer] will arrange its children "
+"vertically, rather than horizontally.\n"
+"Can't be changed when using [HBoxContainer] and [VBoxContainer]."
+msgstr ""
+"如果为 [code]true[/code],则该 [BoxContainer] 会将å­èŠ‚点垂直排列,å¦åˆ™ä¼šæ°´å¹³"
+"排列。\n"
+"使用 [HBoxContainer] å’Œ [VBoxContainer] 时无法改å˜ã€‚"
+
+msgid ""
+"The child controls will be arranged at the beginning of the container, i.e. "
+"top if orientation is vertical, left if orientation is horizontal (right for "
+"RTL layout)."
+msgstr ""
+"å­æŽ§ä»¶ä¼šè¢«æŽ’列在该容器的开头,如果是垂直æœå‘则为顶部,如果是水平æœå‘则为左侧"
+"(RTL 布局时为å³ä¾§ï¼‰ã€‚"
+
+msgid "The child controls will be centered in the container."
+msgstr "å­æŽ§ä»¶ä¼šåœ¨è¯¥å®¹å™¨é‡Œå±…中。"
+
+msgid ""
+"The child controls will be arranged at the end of the container, i.e. bottom "
+"if orientation is vertical, right if orientation is horizontal (left for RTL "
+"layout)."
+msgstr ""
+"å­æŽ§ä»¶ä¼šè¢«æŽ’列在该容器的末尾,如果是垂直æœå‘则为底部,如果是水平æœå‘则为å³ä¾§"
+"(RTL 布局时为左侧)。"
+
+msgid "The space between the [BoxContainer]'s elements, in pixels."
+msgstr "[BoxContainer] 元素之间的è·ç¦»ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Generate an axis-aligned box [PrimitiveMesh]."
+msgstr "生æˆè½´å¯¹é½ç›’ [PrimitiveMesh]。"
+
msgid "Number of extra edge loops inserted along the Z axis."
msgstr "沿 Z è½´æ’入的é¢å¤–边缘环的数é‡ã€‚"
@@ -5963,6 +13520,81 @@ msgstr "3D 动力学角色演示"
msgid "Standard themed Button."
msgstr "标准主题按钮。"
+msgid ""
+"Button is the standard themed button. It can contain text and an icon, and "
+"will display them according to the current [Theme].\n"
+"[b]Example of creating a button and assigning an action when pressed by code:"
+"[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" var button = Button.new()\n"
+" button.text = \"Click me\"\n"
+" button.pressed.connect(self._button_pressed)\n"
+" add_child(button)\n"
+"\n"
+"func _button_pressed():\n"
+" print(\"Hello world!\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" var button = new Button();\n"
+" button.Text = \"Click me\";\n"
+" button.Pressed += ButtonPressed;\n"
+" AddChild(button);\n"
+"}\n"
+"\n"
+"private void ButtonPressed()\n"
+"{\n"
+" GD.Print(\"Hello world!\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Buttons (like all Control nodes) can also be created in the editor, but some "
+"situations may require creating them from code.\n"
+"See also [BaseButton] which contains common properties and methods "
+"associated with this node.\n"
+"[b]Note:[/b] Buttons do not interpret touch input and therefore don't "
+"support multitouch, since mouse emulation can only press one button at a "
+"given time. Use [TouchScreenButton] for buttons that trigger gameplay "
+"movement or actions, as [TouchScreenButton] supports multitouch."
+msgstr ""
+"Button 是标准的主题按钮。它å¯ä»¥åŒ…å«æ–‡å­—和图标,并根æ®å½“å‰çš„ [Theme] 显示。\n"
+"[b]通过代ç åˆ›å»ºä¸€ä¸ªæŒ‰é’®å¹¶æŒ‡å®šä¸€ä¸ªåœ¨æŒ‰ä¸‹æ—¶çš„动作的例å­ï¼š[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" var button = Button.new()\n"
+" button.text = \"Click me\"\n"
+" button.pressed.connect(self._button_pressed)\n"
+" add_child(button)\n"
+"\n"
+"func _button_pressed():\n"
+" print(\"Hello world!\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" var button = new Button();\n"
+" button.Text = \"Click me\";\n"
+" button.Pressed += ButtonPressed;\n"
+" AddChild(button);\n"
+"}\n"
+"\n"
+"private void ButtonPressed()\n"
+"{\n"
+" GD.Print(\"Hello world!\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"按钮(与所有控件节点一样)也å¯ä»¥åœ¨ç¼–辑器中创建,但æŸäº›æƒ…况下å¯èƒ½éœ€è¦ä»Žä»£ç ä¸­"
+"创建它们。\n"
+"å¦è¯·å‚阅 [BaseButton],其中包å«ä¸Žæ­¤èŠ‚点相关è”的通用属性和方法。\n"
+"[b]注æ„:[/b]按钮ä¸å¤„ç†è§¦æ‘¸è¾“入,因此ä¸æ”¯æŒå¤šç‚¹è§¦æŽ§ï¼Œå› ä¸ºæ¨¡æ‹Ÿé¼ æ ‡åœ¨ç»™å®šæ—¶é—´åª"
+"能按下一个按钮。将 [TouchScreenButton] 用于触å‘游æˆç§»åŠ¨æˆ–动作的按钮,因为 "
+"[TouchScreenButton] 支æŒå¤šç‚¹è§¦æŽ§ã€‚"
+
msgid "OS Test Demo"
msgstr "æ“作系统测试演示"
@@ -5982,43 +13614,106 @@ msgstr "å¯ç”¨åŽï¼ŒæŒ‰é’®çš„图标将展开/收缩以适应按钮的大å°ï¼Œå
msgid "Flat buttons don't display decoration."
msgstr "å¹³é¢æŒ‰é’®ä¸æ˜¾ç¤ºè£…饰。"
+msgid ""
+"Language code used for line-breaking and text shaping algorithms, if left "
+"empty current locale is used instead."
+msgstr "语言代ç ï¼Œç”¨äºŽæ–­è¡Œå’Œæ–‡æœ¬å¡‘形算法,如果留空则使用当å‰åŒºåŸŸè®¾ç½®ã€‚"
+
msgid "The button's text that will be displayed inside the button's area."
-msgstr "按钮的文字,将显示在按钮的区域内。"
+msgstr "该按钮的文本,将显示在按钮的区域内。"
+
+msgid "Base text writing direction."
+msgstr "基础文本书写方å‘。"
msgid "Default text [Color] of the [Button]."
-msgstr "[Button] 的默认文本 [Color]。"
+msgstr "该 [Button] 的默认文本 [Color]。"
msgid "Text [Color] used when the [Button] is disabled."
-msgstr "ç¦ç”¨ [Button] 时使用的文本 [Color]。"
+msgstr "该 [Button] 处于ç¦ç”¨çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„文本 [Color]。"
msgid ""
"Text [Color] used when the [Button] is focused. Only replaces the normal "
"text color of the button. Disabled, hovered, and pressed states take "
"precedence over this color."
msgstr ""
-"当 [Button] 获得焦点时使用的文本 [Color]。åªå–代按钮的正常文本颜色。ç¦ç”¨ã€æ‚¬"
-"åœå’ŒæŒ‰ä¸‹çŠ¶æ€ä¼˜å…ˆäºŽè¿™ä¸ªé¢œè‰²ã€‚"
+"该 [Button] 处于èšç„¦çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„文本 [Color]。åªæ›¿æ¢è¯¥æŒ‰é’®çš„正常文本颜色。"
+"ç¦ç”¨ã€æ‚¬åœã€æŒ‰ä¸‹çŠ¶æ€ä¼˜å…ˆäºŽè¿™ä¸ªé¢œè‰²ã€‚"
msgid "Text [Color] used when the [Button] is being hovered."
-msgstr "æ‚¬åœ [Button] 时使用的文本 [Color]。"
+msgstr "该 [Button] 处于悬åœçŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„文本 [Color]。"
+
+msgid "Text [Color] used when the [Button] is being hovered and pressed."
+msgstr "该 [Button] 处于悬åœå¹¶æŒ‰ä¸‹çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„文本 [Color]。"
+
+msgid "The tint of text outline of the [Button]."
+msgstr "该 [Button] 的文本轮廓的ç€è‰²ã€‚"
msgid "Text [Color] used when the [Button] is being pressed."
-msgstr "正在按下 [Button] 时使用的文本 [Color] 。"
+msgstr "该 [Button] 处于按下状æ€æ—¶ï¼Œä½¿ç”¨çš„文本 [Color] 。"
+
+msgid "Icon modulate [Color] used when the [Button] is disabled."
+msgstr "该 [Button] 处于ç¦ç”¨çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„图标调制 [Color]。"
+
+msgid ""
+"Icon modulate [Color] used when the [Button] is focused. Only replaces the "
+"normal modulate color of the button. Disabled, hovered, and pressed states "
+"take precedence over this color."
+msgstr ""
+"该 [Button] 处于èšç„¦çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„图标调制 [Color]。仅替æ¢è¯¥æŒ‰é’®çš„正常调制颜"
+"色。ç¦ç”¨ã€æ‚¬åœå’ŒæŒ‰ä¸‹çŠ¶æ€ä¼˜å…ˆäºŽè¿™ä¸ªé¢œè‰²ã€‚"
+
+msgid "Icon modulate [Color] used when the [Button] is being hovered."
+msgstr "该 [Button] 处于悬åœçŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„图标调制[Color]。"
+
+msgid ""
+"Icon modulate [Color] used when the [Button] is being hovered and pressed."
+msgstr "该 [Button] 处于悬åœå¹¶æŒ‰ä¸‹æŒ‰ä¸‹çŠ¶æ€æ—¶ï¼Œä½¿ç”¨çš„图标调制 [Color]。"
+
+msgid "Default icon modulate [Color] of the [Button]."
+msgstr "该 [Button] 的默认图标调制 [Color]。"
+
+msgid "Icon modulate [Color] used when the [Button] is being pressed."
+msgstr "该 [Button] 处于按下状æ€æ—¶ï¼Œä½¿ç”¨çš„图标调制 [Color]。"
+
+msgid ""
+"The horizontal space between [Button]'s icon and text. Negative values will "
+"be treated as [code]0[/code] when used."
+msgstr ""
+"[Button] 的图标和文本之间的水平间è·ã€‚使用时会将负值当作 [code]0[/code]。"
msgid "[Font] of the [Button]'s text."
-msgstr "[Button] 文本的 [Font]。"
+msgstr "该 [Button] 文本的 [Font]。"
+
+msgid "Font size of the [Button]'s text."
+msgstr "该 [Button] 文本的字体大å°ã€‚"
msgid "[StyleBox] used when the [Button] is disabled."
-msgstr "当 [Button] 被ç¦ç”¨æ—¶ï¼Œä½¿ç”¨çš„ [StyleBox]。"
+msgstr "该 [Button] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
+msgid ""
+"[StyleBox] used when the [Button] is focused. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"该 [Button] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] [StyleBox] 显"
+"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ [StyleBox],确ä¿åŸºç¡€ "
+"[StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥å¾ˆå¥½åœ°å®žçŽ°è¿™ä¸ªç›®çš„。è¦"
+"ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注æ„,ç¦ç”¨èšç„¦çš„视觉效果会"
+"å½±å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid "[StyleBox] used when the [Button] is being hovered."
-msgstr "æ‚¬åœ [Button] 时使用的 [StyleBox]。"
+msgstr "该 [Button] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "Default [StyleBox] for the [Button]."
-msgstr "[Button] 的默认 [StyleBox]。"
+msgstr "该 [Button] 的默认 [StyleBox]。"
msgid "[StyleBox] used when the [Button] is being pressed."
-msgstr "按下 [Button] 时使用的 [StyleBox]。"
+msgstr "该 [Button] 处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "Group of Buttons."
msgstr "按钮组。"
@@ -6029,20 +13724,343 @@ msgstr "返回当å‰æŒ‰ä¸‹çš„按钮。"
msgid "Emitted when one of the buttons of the group is pressed."
msgstr "当该组中的一个按钮被按下时触å‘。"
+msgid ""
+"Built-in type representing a method in an object instance or a standalone "
+"function."
+msgstr "内置类型,代表对象实例中的æŸä¸ªæ–¹æ³•ï¼Œæˆ–者æŸä¸ªç‹¬ç«‹å‡½æ•°ã€‚"
+
+msgid ""
+"[Callable] is a built-in [Variant] type that represents a function. It can "
+"either be a method within an [Object] instance, or a standalone function not "
+"related to any object, like a lambda function. Like all [Variant] types, it "
+"can be stored in variables and passed to other functions. It is most "
+"commonly used for signal callbacks.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func print_args(arg1, arg2, arg3 = \"\"):\n"
+" prints(arg1, arg2, arg3)\n"
+"\n"
+"func test():\n"
+" var callable = Callable(self, \"print_args\")\n"
+" callable.call(\"hello\", \"world\") # Prints \"hello world \".\n"
+" callable.call(Vector2.UP, 42, callable) # Prints \"(0, -1) 42 Node(node."
+"gd)::print_args\".\n"
+" callable.call(\"invalid\") # Invalid call, should have at least 2 "
+"arguments.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Default parameter values are not supported.\n"
+"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n"
+"{\n"
+" GD.PrintS(arg1, arg2, arg3);\n"
+"}\n"
+"\n"
+"public void Test()\n"
+"{\n"
+" // Invalid calls fail silently.\n"
+" Callable callable = new Callable(this, MethodName.PrintArgs);\n"
+" callable.Call(\"hello\", \"world\"); // Default parameter values are not "
+"supported, should have 3 arguments.\n"
+" callable.Call(Vector2.Up, 42, callable); // Prints \"(0, -1) 42 "
+"Node(Node.cs)::PrintArgs\".\n"
+" callable.Call(\"invalid\"); // Invalid call, should have 3 arguments.\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"In GDScript, it's possible to create lambda functions within a method. "
+"Lambda functions are custom callables that are not associated with an "
+"[Object] instance. Optionally, lambda functions can also be named. The name "
+"will be displayed in the debugger, or when calling [method get_method].\n"
+"[codeblock]\n"
+"func _init():\n"
+" var my_lambda = func (message):\n"
+" print(message)\n"
+"\n"
+" # Prints Hello everyone!\n"
+" my_lambda.call(\"Hello everyone!\")\n"
+"\n"
+" # Prints \"Attack!\", when the button_pressed signal is emitted.\n"
+" button_pressed.connect(func(): print(\"Attack!\"))\n"
+"[/codeblock]"
+msgstr ""
+"å¯è°ƒç”¨ä½“ [Callable] 是内置的 [Variant] 类型,代表æŸä¸ªå‡½æ•°ã€‚å¯ä»¥æ˜¯ [Object] 实"
+"例中的æŸä¸ªæ–¹æ³•ï¼Œä¹Ÿå¯ä»¥æ˜¯ä¸Žå¯¹è±¡æ— å…³çš„独立函数,比如 lambda 函数。和所有 "
+"[Variant] 类型一样å¯ä»¥ä¿å­˜åœ¨å˜é‡é‡Œï¼Œä¼ é€’给其他函数。最常用于信å·å›žè°ƒã€‚\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func print_args(arg1, arg2, arg3 = \"\"):\n"
+" prints(arg1, arg2, arg3)\n"
+"\n"
+"func test():\n"
+" var callable = Callable(self, \"print_args\")\n"
+" callable.call(\"hello\", \"world\") # 输出 \"hello world \".\n"
+" callable.call(Vector2.UP, 42, callable) # 输出 \"(0, -1) 42 Node(node."
+"gd)::print_args\".\n"
+" callable.call(\"invalid\") # 无效调用,应当至少有 2 个å‚数。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ä¸æ”¯æŒå‚数默认值。\n"
+"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n"
+"{\n"
+" GD.PrintS(arg1, arg2, arg3);\n"
+"}\n"
+"\n"
+"public void Test()\n"
+"{\n"
+" // Invalid calls fail silently.\n"
+" Callable callable = new Callable(this, MethodName.PrintArgs);\n"
+" callable.Call(\"hello\", \"world\"); // ä¸æ”¯æŒå‚数默认值,应当有 3 个å‚"
+"数。\n"
+" callable.Call(Vector2.Up, 42, callable); // 输出 \"(0, -1) 42 Node(Node."
+"cs)::PrintArgs\".\n"
+" callable.Call(\"invalid\"); // 无效调用,应当有 3 个å‚数。\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"GDScript 中å¯ä»¥åœ¨æ–¹æ³•é‡Œåˆ›å»º lambda 函数。Lambda 函数是自定义的å¯è°ƒç”¨ä½“,ä¸ä¸Ž "
+"[Object] 实例关è”。也å¯ä»¥ä¸º Lambda 函数命å。该å称会显示在调试器中,也会在 "
+"[method get_method] 中使用。\n"
+"[codeblock]\n"
+"func _init():\n"
+" var my_lambda = func (message):\n"
+" print(message)\n"
+"\n"
+" # 输出 大家好呀ï¼\n"
+" my_lambda.call(\"大家好呀ï¼\")\n"
+"\n"
+" # å‘出 button_pressed ä¿¡å·æ—¶è¾“出 \"全军出击ï¼\"。\n"
+" button_pressed.connect(func(): print(\"全军出击ï¼\"))\n"
+"[/codeblock]"
+
msgid "Constructs an empty [Callable], with no object nor method bound."
msgstr "构造空的 [Callable],没有绑定对象和方法。"
msgid "Constructs a [Callable] as a copy of the given [Callable]."
msgstr "构造给定 [Callable] 的副本。"
+msgid ""
+"Creates a new [Callable] for the method named [param method] in the "
+"specified [param object]."
+msgstr ""
+"创建新的 [Callable],使用指定对象 [param object] 中å为 [param method] çš„æ–¹"
+"法。"
+
+msgid ""
+"Returns a copy of this [Callable] with one or more arguments bound. When "
+"called, the bound arguments are passed [i]after[/i] the arguments supplied "
+"by [method call]."
+msgstr ""
+"返回该 [Callable] 的副本,绑定其中的一个或多个å‚数。调用时,被绑定的å‚数在æ"
+"供给 [method call] çš„å‚æ•°[i]之åŽ[/i]传递。"
+
+msgid ""
+"Returns a copy of this [Callable] with one or more arguments bound, reading "
+"them from an array. When called, the bound arguments are passed [i]after[/i] "
+"the arguments supplied by [method call]."
+msgstr ""
+"返回该 [Callable] 的副本,绑定其中的一个或多个å‚数,å‚数从数组中读å–。调用"
+"时,被绑定的å‚数在æ供给 [method call] çš„å‚æ•°[i]之åŽ[/i]传递。"
+
+msgid ""
+"Calls the method represented by this [Callable]. Arguments can be passed and "
+"should match the method's signature."
+msgstr ""
+"调用该 [Callable] 所代表的方法。å¯ä»¥ä¼ é€’å‚数,必须与该方法的签å相匹é…。"
+
+msgid ""
+"Calls the method represented by this [Callable] in deferred mode, i.e. "
+"during the idle frame. Arguments can be passed and should match the method's "
+"signature.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" grab_focus.call_deferred()\n"
+"[/codeblock]"
+msgstr ""
+"使用延迟模å¼è°ƒç”¨è¯¥ [Callable] 所代表的方法,å³åœ¨ç©ºé—²å¸§ä¸­è°ƒç”¨ã€‚å¯ä»¥ä¼ é€’å‚数,"
+"必须与该方法的签å相匹é…。\n"
+"[codeblock]\n"
+"func _ready():\n"
+" grab_focus.call_deferred()\n"
+"[/codeblock]"
+
+msgid ""
+"Calls the method represented by this [Callable]. Unlike [method call], this "
+"method expects all arguments to be contained inside the [param arguments] "
+"[Array]."
+msgstr ""
+"调用该 [Callable] 所代表的方法。与 [method call] ä¸åŒï¼Œè¿™ä¸ªæ–¹æ³•éœ€è¦æ‰€æœ‰å‚数都"
+"放在 [param arguments] [Array] 之中。"
+
+msgid ""
+"Return the bound arguments (as long as [method get_bound_arguments_count] is "
+"greater than zero), or empty (if [method get_bound_arguments_count] is less "
+"than or equal to zero)."
+msgstr ""
+"返回绑定的å‚数(åªè¦ [method get_bound_arguments_count] 大于零)或者空数组"
+"(如果 [method get_bound_arguments_count] å°äºŽç­‰äºŽé›¶ï¼‰ã€‚"
+
+msgid ""
+"Returns the total amount of arguments bound (or unbound) via successive "
+"[method bind] or [method unbind] calls. If the amount of arguments unbound "
+"is greater than the ones bound, this function returns a value less than zero."
+msgstr ""
+"返回通过æˆåŠŸè°ƒç”¨ [method bind] 或 [method unbind] 绑定(或解绑)å‚数的总数。"
+"如果解绑å‚数的总数比绑定å‚数大,则这个函数的返回值å°äºŽé›¶ã€‚"
+
+msgid ""
+"Returns the name of the method represented by this [Callable]. If the "
+"callable is a lambda function, returns the function's name."
+msgstr ""
+"返回该 [Callable] 所代表的方法的å称。如果该å¯è°ƒç”¨ä½“是 lambda 函数,则返回该"
+"函数的å称。"
+
+msgid "Returns the object on which this [Callable] is called."
+msgstr "返回该 [Callable] 所调用的对象。"
+
+msgid ""
+"Returns the ID of this [Callable]'s object (see [method Object."
+"get_instance_id])."
+msgstr "返回该 [Callable] 中对象的 IDï¼ˆè§ [method Object.get_instance_id])。"
+
+msgid ""
+"Returns the 32-bit hash value of this [Callable]'s object.\n"
+"[b]Note:[/b] [Callable]s with equal content will always produce identical "
+"hash values. However, the reverse is not true. Returning identical hash "
+"values does [i]not[/i] imply the callables are equal, because different "
+"callables can have identical hash values due to hash collisions. The engine "
+"uses a 32-bit hash algorithm for [method hash]."
+msgstr ""
+"返回该 [Callable] 对象的 32 ä½å“ˆå¸Œå€¼ã€‚\n"
+"[b]注æ„:[/b]内容相åŒçš„ [Callable] 哈希值始终相åŒã€‚å之则ä¸ç„¶ï¼Œè¿”回的哈希值相"
+"åŒ[i]并ä¸[/i]æ„味ç€å¯è°ƒç”¨ä½“相等,因为ä¸åŒçš„å¯è°ƒç”¨ä½“å¯èƒ½ç”±äºŽå“ˆå¸Œå†²çªè€Œå…·æœ‰ç›¸åŒ"
+"的哈希值。引擎在 [method hash] 中使用 32 ä½å“ˆå¸Œç®—法。"
+
+msgid ""
+"Returns [code]true[/code] if this [Callable] is a custom callable. Custom "
+"callables are created from [method bind] or [method unbind]. In GDScript, "
+"lambda functions are also custom callables."
+msgstr ""
+"如果该 [Callable] 为自定义å¯è°ƒç”¨ä½“,则返回 [code]true[/code]。自定义å¯è°ƒç”¨ä½“"
+"是由 [method bind] 或 [method unbind] 创建的。在 GDScript 中,lambda 函数也是"
+"自定义å¯è°ƒç”¨ä½“。"
+
+msgid ""
+"Returns [code]true[/code] if this [Callable] has no target to call the "
+"method on."
+msgstr "如果该 [Callable] 没有调用方法的目标,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [Callable] is a standard callable. This "
+"method is the opposite of [method is_custom]. Returns [code]false[/code] if "
+"this callable is a lambda function."
+msgstr ""
+"如果该 [Callable] 为标准å¯è°ƒç”¨ä½“,则返回 [code]true[/code]。这个方法与 "
+"[method is_custom] 相对。如果该å¯è°ƒç”¨ä½“为 lambda 函数,则返回 [code]false[/"
+"code]。"
+
+msgid ""
+"Returns [code]true[/code] if the callable's object exists and has a valid "
+"method name assigned, or is a custom callable."
+msgstr ""
+"如果该å¯è°ƒç”¨ä½“的对象存在,且分é…了有效的方法å,或者为自定义å¯è°ƒç”¨ä½“,则返回 "
+"[code]true[/code]。"
+
+msgid ""
+"Perform an RPC (Remote Procedure Call). This is used for multiplayer and is "
+"normally not available, unless the function being called has been marked as "
+"[i]RPC[/i]. Calling this method on unsupported functions will result in an "
+"error. See [method Node.rpc]."
+msgstr ""
+"执行 RPC(Remote Procedure Call,远程过程调用)。用于多人游æˆï¼Œä¸€èˆ¬ä¸å¯ç”¨ï¼Œé™¤"
+"éžæ‰€è°ƒç”¨çš„函数有 [i]RPC[/i] 标记。在ä¸æ”¯æŒçš„æ–¹æ³•ä¸Šè°ƒç”¨è¯¥æ–¹æ³•ä¼šå¯¼è‡´å‡ºé”™ã€‚è§ "
+"[method Node.rpc]。"
+
+msgid ""
+"Perform an RPC (Remote Procedure Call) on a specific peer ID (see "
+"multiplayer documentation for reference). This is used for multiplayer and "
+"is normally not available unless the function being called has been marked "
+"as [i]RPC[/i]. Calling this method on unsupported functions will result in "
+"an error. See [method Node.rpc_id]."
+msgstr ""
+"针对特定的对等体 ID(请å‚阅多人游æˆæ–‡æ¡£ï¼‰æ‰§è¡Œ RPC(Remote Procedure Call,远"
+"程过程调用)。用于多人游æˆï¼Œä¸€èˆ¬ä¸å¯ç”¨ï¼Œé™¤éžæ‰€è°ƒç”¨çš„函数有 [i]RPC[/i] 标记。"
+"在ä¸æ”¯æŒçš„æ–¹æ³•ä¸Šè°ƒç”¨è¯¥æ–¹æ³•ä¼šå¯¼è‡´å‡ºé”™ã€‚è§ [method Node.rpc_id]。"
+
+msgid ""
+"Returns a copy of this [Callable] with the arguments unbound, as defined by "
+"[param argcount]. Calling the returned [Callable] will call the method "
+"without the extra arguments that are supplied in the [Callable] on which you "
+"are calling this method."
+msgstr ""
+"返回该 [Callable] 的副本,解绑若干个å‚数,个数由 [param argcount] 定义。调用"
+"返回的 [Callable] 时,会去除所æä¾›å‚数中的é¢å¤–å‚数,å†å¯¹åŽŸ [Callable] 的方法"
+"进行调用。"
+
+msgid "Returns [code]true[/code] if both [Callable]s invoke different targets."
+msgstr "如果两个 [Callable] 调用的目标ä¸åŒï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if both [Callable]s invoke the same custom target."
+msgstr "如果两个 [Callable] 调用的自定义目标相åŒï¼Œåˆ™è¿”回 [code]true[/code]。"
+
msgid "Calls the specified method after optional delay."
msgstr "在å¯é€‰çš„延迟之åŽè°ƒç”¨æŒ‡å®šçš„方法。"
+msgid ""
+"Makes the callback call delayed by given time in seconds.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_callback(queue_free).set_delay(2) #this will call queue_free() "
+"after 2 seconds\n"
+"[/codeblock]"
+msgstr ""
+"让该回调延迟给定的时间,å•ä½ä¸ºç§’。\n"
+"[b]示例:[/b]\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_callback(queue_free).set_delay(2) # 会在 2 秒åŽè°ƒç”¨ "
+"queue_free()\n"
+"[/codeblock]"
+
msgid "Camera node for 2D scenes."
msgstr "2D 场景的相机节点。"
+msgid ""
+"Camera node for 2D scenes. It forces the screen (current layer) to scroll "
+"following this node. This makes it easier (and faster) to program scrollable "
+"scenes than manually changing the position of [CanvasItem]-based nodes.\n"
+"Cameras register themselves in the nearest [Viewport] node (when ascending "
+"the tree). Only one camera can be active per viewport. If no viewport is "
+"available ascending the tree, the camera will register in the global "
+"viewport.\n"
+"This node is intended to be a simple helper to get things going quickly, but "
+"more functionality may be desired to change how the camera works. To make "
+"your own custom camera node, inherit it from [Node2D] and change the "
+"transform of the canvas by setting [member Viewport.canvas_transform] in "
+"[Viewport] (you can obtain the current [Viewport] by using [method Node."
+"get_viewport]).\n"
+"Note that the [Camera2D] node's [code]position[/code] doesn't represent the "
+"actual position of the screen, which may differ due to applied smoothing or "
+"limits. You can use [method get_screen_center_position] to get the real "
+"position."
+msgstr ""
+"用于 2D 场景的相机节点。它强制å±å¹•ï¼ˆå½“å‰å±‚)跟éšè¯¥èŠ‚点滚动。与手动改å˜åŸºäºŽ "
+"[CanvasItem] 节点的å标相比,这使得对å¯æ»šåŠ¨åœºæ™¯è¿›è¡Œç¼–程更加容易和快æ·ã€‚\n"
+"相机会在最近的 [Viewport](在上层树时)节点中注册自己。æ¯ä¸ªè§†å£åªèƒ½æ¿€æ´»ä¸€ä¸ªç›¸"
+"机。如果树上没有å¯ç”¨çš„视å£ï¼Œç›¸æœºå°†åœ¨å…¨å±€è§†å£ä¸­æ³¨å†Œã€‚\n"
+"这个节点旨在æˆä¸ºç®€å•çš„辅助工具,让事情便æ·ï¼Œä½†å¯èƒ½éœ€è¦æ›´å¤šçš„功能æ¥æ”¹å˜ç›¸æœºçš„"
+"工作方å¼ã€‚è¦åˆ¶ä½œè‡ªå®šä¹‰ç›¸æœºèŠ‚点,则从 [Node2D] 继承,并通过设置 [Viewport] 中"
+"çš„ [member Viewport.canvas_transform] æ¥æ”¹å˜ç”»å¸ƒçš„å˜æ¢ï¼ˆä½ å¯ä»¥é€šè¿‡ä½¿ç”¨ "
+"[method Node.get_viewport] 获得当å‰çš„ [Viewport])。\n"
+"请注æ„,[Camera2D] 节点的 [code]position[/code] 并ä¸ä»£è¡¨å±å¹•çš„实际ä½ç½®ï¼Œè¿™å¯"
+"能会因应用的平滑或é™åˆ¶è€Œæœ‰æ‰€ä¸åŒã€‚å¯ä»¥ä½¿ç”¨ [method "
+"get_screen_center_position] 获å–真实ä½ç½®ã€‚"
+
msgid "2D Isometric Demo"
-msgstr "2D 等轴测演示"
+msgstr "2D 等轴演示"
msgid "2D HDR Demo"
msgstr "2D HDR 演示"
@@ -6053,6 +14071,22 @@ msgstr "将相机与跟踪的节点对é½ã€‚"
msgid "Forces the camera to update scroll immediately."
msgstr "强制相机立å³æ›´æ–°æ»šåŠ¨ã€‚"
+msgid ""
+"Returns the specified [enum Side]'s margin. See also [member "
+"drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], "
+"and [member drag_right_margin]."
+msgstr ""
+"返回指定边 [enum Side] çš„è¾¹è·ã€‚å¦è§ [member drag_bottom_margin]ã€[member "
+"drag_top_margin]ã€[member drag_left_margin] å’Œ [member drag_right_margin]。"
+
+msgid ""
+"Returns the camera limit for the specified [enum Side]. See also [member "
+"limit_bottom], [member limit_top], [member limit_left], and [member "
+"limit_right]."
+msgstr ""
+"返回指定边 [enum Side] 的相机æžé™ã€‚å¦è§ [member limit_bottom]ã€[member "
+"limit_top]ã€[member limit_left] å’Œ [member limit_right]。"
+
msgid "The Camera2D's anchor point. See [enum AnchorMode] constants."
msgstr "Camera2D çš„é”šç‚¹ã€‚è§ [enum AnchorMode] 常é‡ã€‚"
@@ -6095,6 +14129,21 @@ msgid "Camera node, displays from a point of view."
msgstr "相机节点,会从æŸä¸ªè§’度进行显示。"
msgid ""
+"[Camera3D] is a special node that displays what is visible from its current "
+"location. Cameras register themselves in the nearest [Viewport] node (when "
+"ascending the tree). Only one camera can be active per viewport. If no "
+"viewport is available ascending the tree, the camera will register in the "
+"global viewport. In other words, a camera just provides 3D display "
+"capabilities to a [Viewport], and, without one, a scene registered in that "
+"[Viewport] (or higher viewports) can't be displayed."
+msgstr ""
+"[Camera3D] 是一个特殊节点,用于显示从其当å‰ä½ç½®å¯è§çš„内容。相机在最近的 "
+"[Viewport] 节点中注册自己(当树上行)。æ¯ä¸ªè§†å£ä¸­åªèƒ½æœ‰ä¸€ä¸ªæ¿€æ´»çš„相机。如果在"
+"树上没有å¯ç”¨çš„视å£ï¼Œç›¸æœºå°†åœ¨å…¨å±€è§†å£ä¸­æ³¨å†Œã€‚æ¢å¥è¯è¯´ï¼Œç›¸æœºåªæ˜¯ç”¨æ¥ä¸º "
+"[Viewport] æä¾› 3D 显示能力的,如果没有,则在该 [Viewport](或更高层视å£ï¼‰ä¸­"
+"注册的场景无法显示。"
+
+msgid ""
"Returns the camera's frustum planes in world space units as an array of "
"[Plane]s in the following order: near, far, left, top, right, bottom. Not to "
"be confused with [member frustum_offset]."
@@ -6136,6 +14185,9 @@ msgstr ""
"返回世界空间中的 3D å标,å³é€šè¿‡é€†ç›¸æœºæŠ•å½±åœ¨ [Viewport] 矩形上投影一个点的结"
"果。这对于以原点ã€æ³•çº¿ï¼ŒæŠ•å°„光线形å¼ç”¨äºŽå¯¹è±¡ç›¸äº¤æˆ–拾å–很有用。"
+msgid "The [CameraAttributes] to use for this camera."
+msgstr "该相机所使用的 [CameraAttributes]。"
+
msgid ""
"The culling mask that describes which 3D render layers are rendered by this "
"camera."
@@ -6259,6 +14311,9 @@ msgstr ""
"url]。与这些物体相比,该相机的相对速度的å˜åŒ–会影å“音频的感知方å¼ï¼ˆæ”¹å˜éŸ³é¢‘çš„ "
"[member AudioStreamPlayer3D.pitch_scale])。"
+msgid "Parent class for camera settings."
+msgstr "相机设置的父类。"
+
msgid ""
"If [code]true[/code], enables the tonemapping auto exposure mode of the "
"scene renderer. If [code]true[/code], the renderer will automatically "
@@ -6278,6 +14333,9 @@ msgid ""
"camera to perform auto exposure."
msgstr "自动æ›å…‰æ•ˆæžœçš„速度。影å“相机执行自动æ›å…‰æ‰€éœ€çš„时间。"
+msgid "Physically-based camera settings."
+msgstr "基于物ç†çš„相机设置。"
+
msgid ""
"A camera feed gives you access to a single physical camera attached to your "
"device."
@@ -6401,6 +14459,65 @@ msgstr ""
"我们è¦è®¿é—® [CameraFeed] 中的哪个图åƒï¼Œå¦‚果相机图åƒè¢«åˆ†å‰²æˆ Y å’Œ CbCr 分é‡ï¼Œè¿™"
"一点很é‡è¦ã€‚"
+msgid ""
+"Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It "
+"allows to e.g. draw overlapping translucent 2D nodes without blending (set "
+"[member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this "
+"effect).\n"
+"[b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the "
+"backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] "
+"overrides the builtin shader. To duplicate the behavior of the builtin "
+"shader in a custom [Shader] use the following:\n"
+"[codeblock]\n"
+"shader_type canvas_item;\n"
+"render_mode unshaded;\n"
+"\n"
+"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, "
+"filter_nearest;\n"
+"\n"
+"void fragment() {\n"
+" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n"
+"\n"
+" if (c.a > 0.0001) {\n"
+" c.rgb /= c.a;\n"
+" }\n"
+"\n"
+" COLOR *= c;\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both "
+"utilize the backbuffer, children of a [CanvasGroup] who have their [member "
+"CanvasItem.clip_children] set to anything other than [constant CanvasItem."
+"CLIP_CHILDREN_DISABLED] will not function correctly."
+msgstr ""
+"[CanvasGroup] çš„æ‰€æœ‰å­ [CanvasItem] 节点会作为一个å•ç‹¬çš„对象绘制。它å…许在ä¸"
+"æ··åˆçš„情况下绘制é‡å çš„åŠé€æ˜Ž 2D 节点(设置 [CanvasGroup] çš„ [member "
+"CanvasItem.self_modulate] 属性æ¥å®žçŽ°è¿™ä¸€æ•ˆæžœï¼‰ã€‚\n"
+"[b]注æ„:[/b][CanvasGroup] 使用一个自定义ç€è‰²å™¨ä»ŽåŽå°ç¼“冲区读å–以绘制其å­èŠ‚"
+"点。为 [CanvasGroup] 指定一个 [Material] 会覆盖内置ç€è‰²å™¨ã€‚è¦åœ¨è‡ªå®šä¹‰ "
+"[Shader] 中å¤åˆ¶å†…ç½®ç€è‰²å™¨çš„行为,请使用以下方法:\n"
+"[codeblock]\n"
+"shader_type canvas_item;\n"
+"render_mode unshaded;\n"
+"\n"
+"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, "
+"filter_nearest;\n"
+"\n"
+"void fragment() {\n"
+" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n"
+"\n"
+" if (c.a > 0.0001) {\n"
+" c.rgb /= c.a;\n"
+" }\n"
+"\n"
+" COLOR *= c;\n"
+"}\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]由于 [CanvasGroup] å’Œ [member CanvasItem.clip_children] 都使用åŽ"
+"å°ç¼“冲区,因此 [CanvasGroup] çš„å­çº§å¦‚果将其 [member CanvasItem."
+"clip_children] 设置为 [constant CanvasItem.CLIP_CHILDREN_DISABLED] 以外的其他"
+"值将无法正常工作。"
+
msgid "Base class of anything 2D."
msgstr "任何 2D 对象的基类。"
@@ -6410,6 +14527,19 @@ msgstr "Viewport 和画布å˜æ¢"
msgid "Custom drawing in 2D"
msgstr "2D 中的自定义绘图"
+msgid "Draws a string first character using a custom font."
+msgstr "使用自定义字体绘制字符串的第一个字符。"
+
+msgid "Draws a string first character outline using a custom font."
+msgstr "使用自定义字体绘制字符串中第一个字符的轮廓。"
+
+msgid ""
+"Draws a colored, filled circle. See also [method draw_arc], [method "
+"draw_polyline] and [method draw_polygon]."
+msgstr ""
+"绘制彩色的实心圆。å¦è§ [method draw_arc]ã€[method draw_polyline] å’Œ [method "
+"draw_polygon]。"
+
msgid ""
"Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for "
"related documentation."
@@ -6436,15 +14566,64 @@ msgstr ""
"draw_polygon]ã€[method draw_rect]。"
msgid ""
-"Sets a custom transform for drawing via components. Anything drawn "
-"afterwards will be transformed by this."
-msgstr "设置通过组件进行绘图的自定义å˜æ¢ã€‚æ­¤åŽç»˜åˆ¶çš„任何东西都将被它å˜æ¢ã€‚"
-
-msgid ""
"Sets a custom transform for drawing via matrix. Anything drawn afterwards "
"will be transformed by this."
msgstr "设置通过矩阵绘制时的自定义å˜æ¢ã€‚æ­¤åŽç»˜åˆ¶çš„任何东西都将被它å˜æ¢ã€‚"
+msgid ""
+"Draws [param text] using the specified [param font] at the [param pos] "
+"(bottom-left corner using the baseline of the font). The text will have its "
+"color multiplied by [param modulate]. If [param width] is greater than or "
+"equal to 0, the text will be clipped if it exceeds the specified width.\n"
+"[b]Example using the default project font:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# If using this method in a script that redraws constantly, move the\n"
+"# `default_font` declaration to a member variable assigned in `_ready()`\n"
+"# so the Control is only created once.\n"
+"var default_font = ThemeDB.fallback_font\n"
+"var default_font_size = ThemeDB.fallback_font_size\n"
+"draw_string(default_font, Vector2(64, 64), \"Hello world\", "
+"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// If using this method in a script that redraws constantly, move the\n"
+"// `default_font` declaration to a member variable assigned in `_Ready()`\n"
+"// so the Control is only created once.\n"
+"Font defaultFont = ThemeDB.FallbackFont;\n"
+"int defaultFontSize = ThemeDB.FallbackFontSize;\n"
+"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", "
+"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"See also [method Font.draw_string]."
+msgstr ""
+"使用指定的 [param font] 在 [param pos](使用的字体的基线的左下角)处绘制 "
+"[param text]。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于等"
+"于 0,则文本超过指定宽度将被è£å‰ªã€‚\n"
+"[b]使用项目默认字体的例å­ï¼š[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 如果在ä¸æ–­é‡ç»˜çš„脚本中使用此方法,\n"
+"# 则将 `default_font` 声明移动到在 `_ready()` 中赋值的æˆå‘˜å˜é‡ä¸­\n"
+"# 这样 Control åªåˆ›å»ºä¸€æ¬¡ã€‚\n"
+"var default_font = ThemeDB.fallback_font\n"
+"var default_font_size = ThemeDB.fallback_font_size\n"
+"draw_string(default_font, Vector2(64, 64), \"Hello world\", "
+"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 如果在ä¸æ–­é‡ç»˜çš„脚本中使用此方法,\n"
+"// 则将 `default_font` 声明移动到在 `_ready()` 中赋值的æˆå‘˜å˜é‡ä¸­\n"
+"// 这样 Control åªåˆ›å»ºä¸€æ¬¡ã€‚\n"
+"Font defaultFont = ThemeDB.FallbackFont;\n"
+"int defaultFontSize = ThemeDB.FallbackFontSize;\n"
+"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", "
+"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"å¦è¯·å‚阅 [method Font.draw_string]。"
+
msgid "Draws a styled rectangle."
msgstr "绘制一个样å¼çŸ©å½¢ã€‚"
@@ -6480,6 +14659,9 @@ msgstr "返回此项目的å˜æ¢çŸ©é˜µã€‚"
msgid "Returns the viewport's boundaries as a [Rect2]."
msgstr "以 [Rect2] å½¢å¼è¿”回视å£çš„边界。"
+msgid "Returns an individual bit on the rendering visibility layer."
+msgstr "返回渲染å¯è§å±‚上的æŸä¸ªæ¯”特ä½ã€‚"
+
msgid "Returns the [World2D] where this item is in."
msgstr "返回此物å“所在的 [World2D]。"
@@ -6531,30 +14713,60 @@ msgstr ""
"å„ç§ [code]popup*()[/code] 函数的其中之一。"
msgid ""
+"Allows the current node to clip children nodes, essentially acting as a mask."
+msgstr "å…许当å‰èŠ‚点è£å‰ªå­èŠ‚点,本质上是充当é®ç½©ã€‚"
+
+msgid ""
"The rendering layers in which this [CanvasItem] responds to [Light2D] nodes."
-msgstr "æ­¤ [CanvasItem] 在其中å“应 [Light2D] 节点的渲染层。"
+msgstr "该 [CanvasItem] 的渲染层,用于å“应 [Light2D] 节点。"
msgid "The material applied to textures on this [CanvasItem]."
-msgstr "在此 [CanvasItem] 上应用于纹ç†çš„æ质。"
+msgstr "æ质,应用于该 [CanvasItem] 的纹ç†ã€‚"
msgid "The color applied to textures on this [CanvasItem]."
-msgstr "应用于此 [CanvasItem] 上纹ç†çš„颜色。"
+msgstr "颜色,应用于该 [CanvasItem] 的纹ç†ã€‚"
msgid ""
"The color applied to textures on this [CanvasItem]. This is not inherited by "
"children [CanvasItem]s."
-msgstr ""
-"应用于此 [CanvasItem] 上纹ç†çš„é¢œè‰²ã€‚å­ [CanvasItem] 节点ä¸ä¼šç»§æ‰¿è¿™ä¸ªé¢œè‰²ã€‚"
+msgstr "颜色,应用于该 [CanvasItem] 的纹ç†ã€‚ä¸ä¼šè¢«å­çº§ [CanvasItem] 继承。"
msgid "If [code]true[/code], the object draws behind its parent."
msgstr "如果为 [code]true[/code],则对象在其父对象åŽé¢ç»˜åˆ¶ã€‚"
+msgid "The texture filtering mode to use on this [CanvasItem]."
+msgstr "在该 [CanvasItem] 上使用的纹ç†è¿‡æ»¤æ¨¡å¼ã€‚"
+
+msgid "The texture repeating mode to use on this [CanvasItem]."
+msgstr "在该 [CanvasItem] 上使用的纹ç†é‡å¤æ¨¡å¼ã€‚"
+
+msgid ""
+"If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its "
+"transform from parent [CanvasItem]s. Its draw order will also be changed to "
+"make it draw on top of other [CanvasItem]s that do not have [member "
+"top_level] set to [code]true[/code]. The [CanvasItem] will effectively act "
+"as if it was placed as a child of a bare [Node]."
+msgstr ""
+"如果为 [code]true[/code],则该 [CanvasItem] [i]ä¸ä¼š[/i]继承父级 [CanvasItem] "
+"çš„å˜æ¢ã€‚它的绘制顺åºä¹Ÿä¼šå‘生改å˜ï¼Œä¼šåœ¨å…¶ä»–没有将 [member top_level] 设置为 "
+"[code]true[/code] 的 [CanvasItem] 之上绘制。效果和把该 [CanvasItem] 作为裸 "
+"[Node] çš„å­çº§ä¸€æ ·ã€‚"
+
msgid ""
"If [code]true[/code], the parent [CanvasItem]'s [member material] property "
"is used as this one's material."
msgstr ""
-"如果为 [code]true[/code],则将父级[CanvasItem]的[member material]属性用作此项"
-"çš„æ质。"
+"如果为 [code]true[/code],则将父级 [CanvasItem] 的 [member material] 属性用作"
+"此项的æ质。"
+
+msgid ""
+"The rendering layer in which this [CanvasItem] is rendered by [Viewport] "
+"nodes. A [Viewport] will render a [CanvasItem] if it and all its parents "
+"share a layer with the [Viewport]'s canvas cull mask."
+msgstr ""
+"[Viewport] 节点渲染该 [CanvasItem] 时所使用的渲染层。åªæœ‰ [CanvasItem] åŠå…¶æ‰€"
+"有父级å‡ä¸Ž [Viewport] 的画布剔除é®ç½©æœ‰äº¤é›†ï¼Œè¯¥ [Viewport] æ‰ä¼šæ¸²æŸ“æ­¤ "
+"[CanvasItem]。"
msgid ""
"If [code]true[/code], this [CanvasItem] is drawn. The node is only visible "
@@ -6571,6 +14783,21 @@ msgstr ""
"[code]popup*()[/code] 函数之一。"
msgid ""
+"If [code]true[/code], child nodes with the lowest Y position are drawn "
+"before those with a higher Y position. If [code]false[/code], Y-sorting is "
+"disabled. Y-sorting only affects children that inherit from [CanvasItem].\n"
+"You can nest nodes with Y-sorting. Child Y-sorted nodes are sorted in the "
+"same space as the parent Y-sort. This feature allows you to organize a scene "
+"better or divide it into multiple ones without changing your scene tree."
+msgstr ""
+"如果为 [code]true[/code],则会在绘制 Y ä½ç½®æœ€ä½Žçš„å­èŠ‚点之åŽå†ç»˜åˆ¶ Y ä½ç½®è¾ƒé«˜"
+"çš„å­èŠ‚点。如果为 [code]false[/code],则ç¦ç”¨ Y 排åºã€‚Y 排åºä»…å½±å“继承自 "
+"[CanvasItem] çš„å­èŠ‚点。\n"
+"å¯ä»¥å°† Y 排åºçš„节点进行嵌套。å­çº§ Y 排åºçš„节点,会与父级在åŒä¸€ç©ºé—´ä¸­è¿›è¡Œ Y 排"
+"åºã€‚此功能å¯ä»¥è®©ä½ åœ¨ä¸æ›´æ”¹åœºæ™¯æ ‘的情况下,更好地组织场景,或者将场景分为多个"
+"场景。"
+
+msgid ""
"If [code]true[/code], the node's Z index is relative to its parent's Z "
"index. If this node's Z index is 2 and its parent's effective Z index is 3, "
"then this node's effective Z index will be 2 + 3 = 5."
@@ -6580,6 +14807,23 @@ msgstr ""
"引将是 2 + 3 = 5。"
msgid ""
+"Z index. Controls the order in which the nodes render. A node with a higher "
+"Z index will display in front of others. Must be between [constant "
+"RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer."
+"CANVAS_ITEM_Z_MAX] (inclusive).\n"
+"[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing "
+"order, not the order in which input events are handled. This can be useful "
+"to implement certain UI animations, e.g. a menu where hovered items are "
+"scaled and should overlap others."
+msgstr ""
+"Z 索引。控制节点的渲染顺åºã€‚具有较高 Z 索引的节点将显示在其他节点的å‰é¢ã€‚å¿…é¡»"
+"在 [constant RenderingServer.CANVAS_ITEM_Z_MIN] 和 [constant RenderingServer."
+"CANVAS_ITEM_Z_MAX]之间(包å«ï¼‰ã€‚\n"
+"[b]注æ„:[/b]æ”¹å˜ [Control] çš„ Z 索引åªå½±å“绘图顺åºï¼Œä¸å½±å“处ç†è¾“入事件的顺"
+"åºã€‚å¯ç”¨äºŽå®žçŽ°æŸäº› UI 动画,例如对处于悬åœçŠ¶æ€çš„èœå•é¡¹è¿›è¡Œç¼©æ”¾ï¼Œæ­¤æ—¶ä¼šä¸Žå…¶ä»–"
+"内容é‡å ã€‚"
+
+msgid ""
"Emitted when the [CanvasItem] must redraw, [i]after[/i] the related "
"[constant NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] "
"is called.\n"
@@ -6593,6 +14837,14 @@ msgstr ""
msgid "Emitted when becoming hidden."
msgstr "当éšè—æ—¶å‘出。"
+msgid ""
+"Emitted when the item's [Rect2] boundaries (position or size) have changed, "
+"or when an action is taking place that may have impacted these boundaries (e."
+"g. changing [member Sprite2D.texture])."
+msgstr ""
+"当 CanvasItem çš„ [Rect2] 边界(ä½ç½®æˆ–大å°ï¼‰å‘生å˜åŒ–时,或者当å‘生å¯èƒ½å½±å“这些"
+"边界的æ“作(例如,更改 [member Sprite2D.texture])时å‘出。"
+
msgid "Emitted when the visibility (hidden/visible) changes."
msgstr "当å¯è§æ€§ï¼ˆéšè—/å¯è§ï¼‰æ›´æ”¹æ—¶å‘出。"
@@ -6622,6 +14874,38 @@ msgstr "该 [CanvasItem] 已进入画布。"
msgid "The [CanvasItem] has exited the canvas."
msgstr "该 [CanvasItem] 已退出画布。"
+msgid "The [CanvasItem] will inherit the filter from its parent."
+msgstr "该 [CanvasItem] 将从其父级继承过滤器。"
+
+msgid "Texture will not repeat."
+msgstr "纹ç†ä¸ä¼šé‡å¤ã€‚"
+
+msgid "Texture will repeat normally."
+msgstr "纹ç†å°†æ­£å¸¸é‡å¤ã€‚"
+
+msgid ""
+"Texture will repeat in a 2x2 tiled mode, where elements at even positions "
+"are mirrored."
+msgstr "纹ç†å°†ä»¥ 2x2 平铺模å¼é‡å¤ï¼Œå…¶ä¸­å¶æ•°ä½ç½®çš„元素会被镜åƒã€‚"
+
+msgid "Represents the size of the [enum TextureRepeat] enum."
+msgstr "代表 [enum TextureRepeat] 枚举的大å°ã€‚"
+
+msgid ""
+"Parent is used for the purposes of clipping only. Child is clipped to the "
+"parent's visible area, parent is not drawn."
+msgstr "父级仅用于è£å‰ªç›®çš„。å­çº§è¢«è£å‰ªåˆ°çˆ¶çº§çš„å¯è§åŒºåŸŸï¼Œä¸ç»˜åˆ¶çˆ¶çº§ã€‚"
+
+msgid ""
+"Parent is used for clipping child, but parent is also drawn underneath child "
+"as normal before clipping child to its visible area."
+msgstr ""
+"父级用于è£å‰ªå­çº§ï¼Œä½†åœ¨å°†å­çº§å‰ªè£åˆ°å…¶å¯è§åŒºåŸŸä¹‹å‰ï¼Œçˆ¶çº§ä¹Ÿåƒå¾€å¸¸ä¸€æ ·ç»˜åˆ¶åœ¨å­çº§"
+"下方。"
+
+msgid "Represents the size of the [enum ClipChildrenMode] enum."
+msgstr "代表 [enum ClipChildrenMode] 枚举的大å°ã€‚"
+
msgid "A material for [CanvasItem]s."
msgstr "[CanvasItem]çš„æ质。"
@@ -6643,13 +14927,51 @@ msgid "The manner in which material reacts to lighting."
msgstr "æ质对照明的å应方å¼ã€‚"
msgid ""
+"The number of columns in the spritesheet assigned as [Texture2D] for a "
+"[GPUParticles2D] or [CPUParticles2D].\n"
+"[b]Note:[/b] This property is only used and visible in the editor if [member "
+"particles_animation] is [code]true[/code]."
+msgstr ""
+"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] çš„ç²¾çµè¡¨ä¸­æ‹¥æœ‰çš„列"
+"数。\n"
+"[b]注æ„:[/b] 该属性åªæœ‰åœ¨ [member particles_animation] 为 [code]true[/code] "
+"时,æ‰ä¼šåœ¨ç¼–辑器中被使用和å¯è§ã€‚"
+
+msgid ""
"If [code]true[/code], the particles animation will loop.\n"
"[b]Note:[/b] This property is only used and visible in the editor if [member "
"particles_animation] is [code]true[/code]."
msgstr ""
"如果为 [code]true[/code],粒å­åŠ¨ç”»å°†å¾ªçŽ¯æ’­æ”¾ã€‚\n"
-"[b]注æ„:[/b]åªæœ‰å½“ [member particles_animation] 为 [code]true[/code] 时,该"
-"属性æ‰ä¼šåœ¨ç¼–辑器中使用并å¯è§ã€‚"
+"[b]注æ„:[/b] 该属性åªæœ‰åœ¨ [member particles_animation]为 [code]true[/code] "
+"时,æ‰ä¼šåœ¨ç¼–辑器中被使用和å¯è§ã€‚"
+
+msgid ""
+"The number of rows in the spritesheet assigned as [Texture2D] for a "
+"[GPUParticles2D] or [CPUParticles2D].\n"
+"[b]Note:[/b] This property is only used and visible in the editor if [member "
+"particles_animation] is [code]true[/code]."
+msgstr ""
+"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] çš„ç²¾çµè¡¨ä¸­æ‹¥æœ‰çš„è¡Œ"
+"数。\n"
+"[b]注æ„:[/b] 该属性åªæœ‰åœ¨ [member particles_animation] 为 [code]true[/code] "
+"时,æ‰ä¼šåœ¨ç¼–辑器中被使用和å¯è§ã€‚"
+
+msgid ""
+"If [code]true[/code], enable spritesheet-based animation features when "
+"assigned to [GPUParticles2D] and [CPUParticles2D] nodes. The [member "
+"ParticleProcessMaterial.anim_speed_max] or [member CPUParticles2D."
+"anim_speed_max] should also be set to a positive value for the animation to "
+"play.\n"
+"This property (and other [code]particles_anim_*[/code] properties that "
+"depend on it) has no effect on other types of nodes."
+msgstr ""
+"如果 [code]true[/code] ,在分é…ç»™ [GPUParticles2D] å’Œ [CPUParticles2D] 节点"
+"时,å¯ç”¨åŸºäºŽç²¾çµè¡¨çš„动画功能。[member ParticleProcessMaterial."
+"anim_speed_max] 或 [member CPUParticles2D.anim_speed_max] 也应该设置为正值,"
+"æ‰èƒ½æ’­æ”¾åŠ¨ç”»ã€‚\n"
+"这个属性(以åŠå…¶ä»–ä¾èµ–它的 [code]particles_anim_*[/code] 属性)对其他类型的节"
+"点没有影å“。"
msgid ""
"Mix blending mode. Colors are assumed to be independent of the alpha "
@@ -6684,6 +15006,24 @@ msgstr "å°†æ质渲染æˆåªæœ‰å…‰çš„æ ·å­ã€‚"
msgid "Canvas drawing layer."
msgstr "画布绘图层。"
+msgid ""
+"Canvas drawing layer. [CanvasItem] nodes that are direct or indirect "
+"children of a [CanvasLayer] will be drawn in that layer. The layer is a "
+"numeric index that defines the draw order. The default 2D scene renders with "
+"index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with "
+"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or "
+"above), or backgrounds (in layer -1 or below).\n"
+"Embedded [Window]s are placed in layer 1024. CanvasItems in layer 1025 or "
+"above appear in front of embedded windows, CanvasItems in layer 1023 or "
+"below appear behind embedded windows."
+msgstr ""
+"画布绘图层。[CanvasLayer] 的直接或间接å­çº§çš„ [CanvasItem] 节点将在该层中绘"
+"制。层是一个决定绘制顺åºçš„数字索引。默认 2D 场景的渲染索引为 0,因此索引为 "
+"-1 的 [CanvasLayer] 会在其下方绘制,索引为 1 的则会在其上方绘制。这对于 HUD"
+"(在 1+ 层或更高层中)或背景(在 -1 层或更低层中)éžå¸¸æœ‰ç”¨ã€‚\n"
+"内嵌 [Window] ä½äºŽ 1024 层。ä½äºŽ 1024 层åŠæ›´é«˜å±‚çš„ CanvasItem 会出现在内嵌窗"
+"å£ä¹‹å‰ï¼Œä½äºŽ 1024 层åŠæ›´ä½Žå±‚çš„ CanvasItem 会出现在内嵌窗å£ä¹‹åŽã€‚"
+
msgid "Canvas layers"
msgstr "画布层"
@@ -6722,9 +15062,6 @@ msgstr ""
"幕上的æŸä¸ªå›ºå®šä½ç½®ã€‚\n"
"与 [member follow_viewport_scale] é…åˆå¯ä»¥å®žçŽ°ä¼ª 3D 效果。"
-msgid "Layer index for draw order. Lower values are drawn first."
-msgstr "绘制顺åºçš„图层索引。首先绘制较低的值。"
-
msgid "The layer's base offset."
msgstr "图层的基本å移é‡ã€‚"
@@ -6797,6 +15134,9 @@ msgstr ""
msgid "Kinematic character (2D)"
msgstr "è¿åŠ¨å­¦è§’色(2D)"
+msgid "Using CharacterBody2D"
+msgstr "使用 CharacterBody2D"
+
msgid "2D Kinematic Character Demo"
msgstr "2D è¿åŠ¨å­¦è§’色演示"
@@ -6856,6 +15196,9 @@ msgstr ""
"1)}\n"
"[/codeblock]"
+msgid "Font resource used to render glyph."
+msgstr "用于渲染字形的字体资æºã€‚"
+
msgid ""
"Number of glyphs in the grapheme cluster. This value is set in the first "
"glyph of a cluster. Setting this property won't affect drawing."
@@ -6913,31 +15256,74 @@ msgstr "渲染å¤é€‰å›¾æ ‡æ—¶ä½¿ç”¨çš„åž‚ç›´å移é‡ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚"
msgid "The [Font] to use for the [CheckBox] text."
msgstr "该 [CheckBox] 的文本所使用的 [Font]。"
+msgid "Font size of the [CheckBox]'s text."
+msgstr "该 [CheckBox] 的文本字体大å°ã€‚"
+
msgid "The check icon to display when the [CheckBox] is checked."
-msgstr "该 [CheckBox] 被勾选时显示的å¤é€‰å›¾æ ‡ã€‚"
+msgstr "选中图标,该 [CheckBox] 处于选中状æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The check icon to display when the [CheckBox] is checked and is disabled."
+msgstr "选中图标,该 [CheckBox] 处于选中且ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The check icon to display when the [CheckBox] is configured as a radio "
+"button and is checked."
+msgstr "选中图标,该 [CheckBox] 被é…置为å•é€‰æŒ‰é’®å¹¶å¤„于选中状æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The check icon to display when the [CheckBox] is configured as a radio "
+"button, is disabled, and is unchecked."
+msgstr "选中图标,该 [CheckBox] 被é…置为å•é€‰æŒ‰é’®å¹¶å¤„于未选且ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The check icon to display when the [CheckBox] is configured as a radio "
+"button and is unchecked."
+msgstr "选中图标,该 [CheckBox] 被é…置为å•é€‰æŒ‰é’®å¹¶å¤„于未选状æ€æ—¶ä½¿ç”¨ã€‚"
msgid "The check icon to display when the [CheckBox] is unchecked."
-msgstr "该 [CheckBox] 未被勾选时显示的å¤é€‰å›¾æ ‡ã€‚"
+msgstr "选中图标,该 [CheckBox] 处于未选状æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The check icon to display when the [CheckBox] is unchecked and is disabled."
+msgstr "选中图标,该 [CheckBox] 处于未选状æ€æ—¶ä½¿ç”¨ã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is disabled."
-msgstr "该 [CheckBox] 被ç¦ç”¨æ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The [StyleBox] to display as a background when the [CheckBox] is focused. "
+"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base "
+"[StyleBox], so a partially transparent [StyleBox] should be used to ensure "
+"the base [StyleBox] remains visible. A [StyleBox] that represents an outline "
+"or an underline works well for this purpose. To disable the focus visual "
+"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus "
+"visual effect will harm keyboard/controller navigation usability, so this is "
+"not recommended for accessibility reasons."
+msgstr ""
+"作为背景显示的 [StyleBox],该 [CheckBox] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨ã€‚[code]focus[/"
+"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is hovered."
-msgstr "该 [CheckBox] 被悬åœæ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨ã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is hovered and "
"pressed."
-msgstr "该 [CheckBox] 被悬åœä¸”被按下时作为背景显示的 [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬åœä¸”按下状æ€æ—¶ä½¿ç”¨ã€‚"
msgid "The [StyleBox] to display as a background."
msgstr "作为背景显示的 [StyleBox]。"
msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is pressed."
-msgstr "该 [CheckBox] 被按下时作为背景显示的 [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于按下状æ€æ—¶ä½¿ç”¨ã€‚"
msgid "Checkable button. See also [CheckBox]."
msgstr "å¯å¤é€‰çš„按钮。å¦è¯·å‚阅 [CheckBox]。"
@@ -6969,24 +15355,88 @@ msgid "The vertical offset used when rendering the toggle icons (in pixels)."
msgstr "渲染切æ¢å›¾æ ‡æ—¶ä½¿ç”¨çš„åž‚ç›´å移é‡ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚"
msgid "The [Font] to use for the [CheckButton] text."
-msgstr "该 [CheckButton] 的文本所使用的 [Font]。"
+msgstr "该 [CheckButton] 文本所使用的 [Font]。"
+
+msgid "Font size of the [CheckButton]'s text."
+msgstr "该 [CheckButton] 文本的字体大å°ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is checked (for left-to-right "
+"layouts)."
+msgstr "显示的图标,用于该 [CheckButton] 的勾选状æ€ï¼ˆä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is checked and disabled (for left-"
+"to-right layouts)."
+msgstr ""
+"显示的图标,用于该 [CheckButton] 的勾选且ç¦ç”¨çŠ¶æ€ï¼ˆç”¨äºŽä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is checked and disabled (for "
+"right-to-left layouts)."
+msgstr ""
+"显示的图标,用于该 [CheckButton] 的勾选且ç¦ç”¨çŠ¶æ€ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is checked (for right-to-left "
+"layouts)."
+msgstr "显示的图标,用于该 [CheckButton] 的勾选状æ€ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is unchecked (for left-to-right "
+"layouts)."
+msgstr "显示的图标,用于该 [CheckButton] 的未选状æ€ï¼ˆç”¨äºŽä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is unchecked and disabled (for "
+"left-to-right layouts)."
+msgstr ""
+"显示的图标,用于该 [CheckButton] 的未选且ç¦ç”¨çŠ¶æ€ï¼ˆç”¨äºŽä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is unchecked and disabled (for "
+"right-to-left layouts)."
+msgstr ""
+"显示的图标,用于该 [CheckButton] 的未选且ç¦ç”¨çŠ¶æ€ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The icon to display when the [CheckButton] is unchecked (for right-to-left "
+"layouts)."
+msgstr "显示的图标,用于该 [CheckButton] 的未选状æ€ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckButton] is disabled."
-msgstr "该 [CheckButton] 被ç¦ç”¨æ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] çš„ç¦ç”¨çŠ¶æ€ã€‚"
+
+msgid ""
+"The [StyleBox] to display as a background when the [CheckButton] is focused. "
+"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base "
+"[StyleBox], so a partially transparent [StyleBox] should be used to ensure "
+"the base [StyleBox] remains visible. A [StyleBox] that represents an outline "
+"or an underline works well for this purpose. To disable the focus visual "
+"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus "
+"visual effect will harm keyboard/controller navigation usability, so this is "
+"not recommended for accessibility reasons."
+msgstr ""
+"作为背景显示的 [StyleBox],用于该 [CheckButton] çš„èšç„¦çŠ¶æ€ã€‚[code]focus[/"
+"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckButton] is hovered."
-msgstr "该 [CheckButton] 被悬åœæ—¶ä½œä¸ºèƒŒæ™¯æ˜¾ç¤ºçš„ [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬åœçŠ¶æ€ã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckButton] is hovered "
"and pressed."
-msgstr "该 [CheckButton] 被悬åœä¸”被按下时作为背景显示的 [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬åœä¸”按下状æ€ã€‚"
msgid ""
"The [StyleBox] to display as a background when the [CheckButton] is pressed."
-msgstr "该 [CheckButton] 被按下时作为背景显示的 [StyleBox]。"
+msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状æ€ã€‚"
msgid "The circle's radius."
msgstr "圆的åŠå¾„。"
@@ -7000,12 +15450,237 @@ msgstr "æ供对为æ¯ä¸ªå¯ç”¨ç±»å­˜å‚¨çš„元数æ®çš„访问。"
msgid "Returns the names of all the classes available."
msgstr "返回所有å¯ç”¨ç±»çš„å称。"
+msgid ""
+"Returns the names of all the classes that directly or indirectly inherit "
+"from [param class]."
+msgstr "返回所有直接或间接继承自 [param class] 的类的å称。"
+
+msgid "Returns the parent class of [param class]."
+msgstr "返回 [param class] 的父类。"
+
+msgid "Creates an instance of [param class]."
+msgstr "创建 [param class] 的实例。"
+
+msgid "Returns whether this [param class] is enabled or not."
+msgstr "返回这个 [param class] 是å¦å·²å¯ç”¨ã€‚"
+
+msgid ""
+"Returns whether [param inherits] is an ancestor of [param class] or not."
+msgstr "返回 [param inherits] 是å¦ä¸º [param class] 的祖先。"
+
+msgid ""
+"Override this method to define what items in [param candidates] should be "
+"displayed.\n"
+"Both [param candidates] and the return is a [Array] of [Dictionary], see "
+"[method get_code_completion_option] for [Dictionary] content."
+msgstr ""
+"覆盖此方法以确定应该显示 [param candidates] 中的哪些项。\n"
+"å‚æ•° [param candidates] 和返回值都是一个 [Array] çš„ [Dictionary],而 "
+"[Dictionary] çš„é”®å€¼ï¼Œè¯¦è§ [method get_code_completion_option]。"
+
+msgid ""
+"Override this method to define what happens when the user requests code "
+"completion. If [param force] is true, any checks should be bypassed."
+msgstr ""
+"覆盖此方法以定义当用户请求代ç å®Œæˆæ—¶å‘生的情况。如果 [param force] 为真,会绕"
+"过任何检查。"
+
+msgid ""
+"Adds a brace pair.\n"
+"Both the start and end keys must be symbols. Only the start key has to be "
+"unique."
+msgstr ""
+"添加一对大括å·ã€‚\n"
+"开始和结æŸé”®éƒ½å¿…须是符å·ã€‚åªæœ‰å¼€å§‹é”®å¿…须是唯一的。"
+
+msgid ""
+"Submits an item to the queue of potential candidates for the autocomplete "
+"menu. Call [method update_code_completion_options] to update the list.\n"
+"[b]Note:[/b] This list will replace all current candidates."
+msgstr ""
+"将补全项æ交到自动补全èœå•çš„潜在候选队列。调用 [method "
+"update_code_completion_options] æ¥æ›´æ–°åˆ—表。\n"
+"[b]注æ„:[/b] 此列表将替æ¢æ‰€æœ‰å½“å‰å€™é€‰ã€‚"
+
+msgid ""
+"Returns if the given line is foldable, that is, it has indented lines right "
+"below it or a comment / string block."
+msgstr ""
+"返回给定的行是å¦å¯æŠ˜å ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œå®ƒçš„正下方有缩进的行或注释 / 字符串å—。"
+
+msgid "Cancels the autocomplete menu."
+msgstr "å–消自动补全èœå•ã€‚"
+
+msgid "Clears all bookmarked lines."
+msgstr "清除所有书签行。"
+
+msgid "Clears all breakpointed lines."
+msgstr "清除所有断点行。"
+
+msgid "Removes all comment delimiters."
+msgstr "移除所有注释分隔符。"
+
+msgid "Clears all executed lines."
+msgstr "清除所有已执行的行。"
+
+msgid "Removes all string delimiters."
+msgstr "移除所有字符串分隔符。"
+
+msgid ""
+"Inserts the selected entry into the text. If [param replace] is true, any "
+"existing text is replaced rather then merged."
+msgstr ""
+"将选定的æ¡ç›®æ’入文本中。如果 [param replace] 为真,任何现有的文本都会被替æ¢ï¼Œ"
+"而ä¸æ˜¯åˆå¹¶ã€‚"
+
+msgid ""
+"Perform an indent as if the user activated the \"ui_text_indent\" action."
+msgstr "执行一个缩进,就åƒç”¨æˆ·è§¦å‘了“ui_text_indentâ€åŠ¨ä½œä¸€æ ·ã€‚"
+
+msgid ""
+"Folds all lines that are possible to be folded (see [method can_fold_line])."
+msgstr "折å æ‰€æœ‰å¯èƒ½è¢«æŠ˜å çš„行(å‚è§ [method can_fold_line])。"
+
+msgid "Folds the given line, if possible (see [method can_fold_line])."
+msgstr "如果å¯èƒ½ï¼ŒæŠ˜å ç»™å®šçš„行(å‚è§ [method can_fold_line])。"
+
+msgid "Gets all bookmarked lines."
+msgstr "获å–所有书签行。"
+
+msgid "Gets all breakpointed lines."
+msgstr "获å–所有断点行。"
+
+msgid ""
+"Gets the completion option at [param index]. The return [Dictionary] has the "
+"following key-values:\n"
+"[code]kind[/code]: [enum CodeCompletionKind]\n"
+"[code]display_text[/code]: Text that is shown on the autocomplete menu.\n"
+"[code]insert_text[/code]: Text that is to be inserted when this item is "
+"selected.\n"
+"[code]font_color[/code]: Color of the text on the autocomplete menu.\n"
+"[code]icon[/code]: Icon to draw on the autocomplete menu.\n"
+"[code]default_value[/code]: Value of the symbol."
+msgstr ""
+"获å–在 [param index] 处的补全选项。返回的 [Dictionary] 有以下键值。\n"
+"[code]kind[/code]:[enum CodeCompletionKind]\n"
+"[code]display_text[/code] :在自动补全èœå•ä¸Šæ˜¾ç¤ºçš„文本。\n"
+"[code]insert_text[/code] :当选中这个选项时è¦æ’入的文本。\n"
+"[code]font_color[/code]:自动补全èœå•ä¸Šæ–‡æœ¬çš„颜色。\n"
+"[code]icon[/code] :在自动补全èœå•ä¸Šç»˜åˆ¶çš„图标。\n"
+"[code]default_value[/code]:符å·çš„值。"
+
+msgid ""
+"Gets all completion options, see [method get_code_completion_option] for "
+"return content."
+msgstr "获å–æ‰€æœ‰è¡¥å…¨é€‰é¡¹ï¼Œè¿”å›žå€¼è§ [method get_code_completion_option]。"
+
+msgid "Gets the index of the current selected completion option."
+msgstr "获å–当å‰å·²é€‰å®šè¡¥å…¨é¡¹çš„索引。"
+
+msgid "Gets the end key for a string or comment region index."
+msgstr "获å–字符串或注释å—索引的结æŸé”®ã€‚"
+
+msgid "Gets the start key for a string or comment region index."
+msgstr "获å–字符串或注释å—索引的开始键。"
+
+msgid "Gets all executing lines."
+msgstr "获å–所有正在执行的行。"
+
+msgid "Returns all lines that are current folded."
+msgstr "返回当å‰æŠ˜å çš„所有行。"
+
+msgid ""
+"Returns the full text with char [code]0xFFFF[/code] at the caret location."
+msgstr "返回在æ’入符å·ä½ç½®å¸¦æœ‰ [code]0xFFFF[/code] 字符的全文。"
+
+msgid ""
+"Returns the full text with char [code]0xFFFF[/code] at the cursor location."
+msgstr "返回在光标ä½ç½®å¤„带有 [code]0xFFFF[/code] 字符的全文。"
+
+msgid "Returns [code]true[/code] if comment [param start_key] exists."
+msgstr "如果注释的 [param start_key] 存在,返回 [code]true[/code] 。"
+
+msgid "Returns [code]true[/code] if string [param start_key] exists."
+msgstr "如果字符串的 [param start_key] 存在,返回 [code]true[/code] 。"
+
+msgid ""
+"Indents selected lines, or in the case of no selection the caret line by one."
+msgstr "缩进选定的行,或者在没有选择的情况下,将光标行缩进一个。"
+
+msgid "Returns whether the line at the specified index is bookmarked or not."
+msgstr "返回指定索引处的行是å¦æ·»åŠ äº†ä¹¦ç­¾ã€‚"
+
+msgid "Returns whether the line at the specified index is breakpointed or not."
+msgstr "返回指定索引处的行是å¦æœ‰æ–­ç‚¹ã€‚"
+
+msgid ""
+"Returns whether the line at the specified index is marked as executing or "
+"not."
+msgstr "返回指定索引处的行是å¦æ ‡è®°ä¸ºæ­£åœ¨æ‰§è¡Œã€‚"
+
msgid "Returns whether the line at the specified index is folded or not."
msgstr "返回指定索引处的行是å¦æŠ˜å ã€‚"
+msgid "Removes the comment delimiter with [param start_key]."
+msgstr "移除带有 [param start_key] 的注释分隔符。"
+
+msgid "Removes the string delimiter with [param start_key]."
+msgstr "移除带有 [param start_key] 的字符串分隔符。"
+
+msgid ""
+"Emits [signal code_completion_requested], if [param force] is true will "
+"bypass all checks. Otherwise will check that the caret is in a word or in "
+"front of a prefix. Will ignore the request if all current options are of "
+"type file path, node path or signal."
+msgstr ""
+"å‘出 [signal code_completion_requested],如果 [param force] 为真将绕过所有检"
+"查。å¦åˆ™ï¼Œå°†æ£€æŸ¥å…‰æ ‡æ˜¯å¦åœ¨ä¸€ä¸ªè¯ä¸­æˆ–在一个å‰ç¼€çš„å‰é¢ã€‚如果当å‰æ‰€æœ‰é€‰é¡¹éƒ½æ˜¯æ–‡"
+"件路径ã€èŠ‚点路径或信å·ç±»åž‹ï¼Œå°†å¿½ç•¥è¯¥è¯·æ±‚。"
+
+msgid "Sets the current selected completion option."
+msgstr "设置当å‰é€‰å®šçš„补全选项。"
+
+msgid "Sets the code hint text. Pass an empty string to clear."
+msgstr "设置代ç æ示文本。传递一个空字符串æ¥æ¸…除。"
+
+msgid "Sets if the code hint should draw below the text."
+msgstr "设置代ç æ示是å¦åº”绘制在文本下方。"
+
+msgid "Sets the line as bookmarked."
+msgstr "将该行设置为书签。"
+
+msgid "Sets the line as breakpointed."
+msgstr "将该行设置为断点。"
+
+msgid "Sets the line as executing."
+msgstr "将该行设置为正在执行。"
+
msgid "Toggle the folding of the code block at the given line."
msgstr "在给定行切æ¢ä»£ç å—的折å ã€‚"
+msgid "Unfolds all lines, folded or not."
+msgstr "展开所有行,无论是å¦è¢«æŠ˜å ã€‚"
+
+msgid "Unfolds all lines that were previously folded."
+msgstr "展开之å‰è¢«æŠ˜å çš„所有行。"
+
+msgid ""
+"Unindents selected lines, or in the case of no selection the caret line by "
+"one. Same as performing \"ui_text_unindent\" action."
+msgstr ""
+"解除所选行的缩进,或者在没有选择的情况下,将光标行缩进一个。与触"
+"å‘“ui_text_unindent â€åŠ¨ä½œç›¸åŒã€‚"
+
+msgid ""
+"Submits all completion options added with [method "
+"add_code_completion_option]. Will try to force the autoccomplete menu to "
+"popup, if [param force] is [code]true[/code].\n"
+"[b]Note:[/b] This will replace all current candidates."
+msgstr ""
+"æ交所有用 [method add_code_completion_option] 添加的补全选项。如果 [param "
+"force] 是 [code]true[/code],将å°è¯•å¼ºåˆ¶å¼¹å‡ºè‡ªåŠ¨è¡¥å…¨èœå• 。\n"
+"[b]注æ„:[/b] 这将å–代所有当å‰çš„候补选项。"
+
msgid "Sets the font [Color]."
msgstr "设置字体颜色 [Color]。"
@@ -7018,6 +15693,46 @@ msgstr "设置行间è·ã€‚"
msgid "Sets the default [Font]."
msgstr "设置默认的字体 [Font]。"
+msgid "Sets default font size."
+msgstr "设置默认的字体大å°ã€‚"
+
+msgid ""
+"Sets a custom [Texture2D] to draw in the line folding gutter when a line is "
+"folded and can be unfolded."
+msgstr ""
+"当行被折å ä¸”å¯ä»¥å±•å¼€æ—¶ï¼Œè®¾ç½®è¦åœ¨è¡ŒæŠ˜å è£…订线中绘制的一个自定义 [Texture2D]。"
+
+msgid "Sets a custom [Texture2D] to draw at the end of a folded line."
+msgstr "设置è¦ç»˜åˆ¶åœ¨æŠ˜å è¡Œæœ«å°¾çš„一个自定义 [Texture2D]。"
+
+msgid "Sets a custom [Texture2D] for space text characters."
+msgstr "为空格文本字符,设置一个自定义 [Texture2D]。"
+
+msgid "Sets a custom [Texture2D] for tab text characters."
+msgstr "为制表符文本字符,设置一个自定义 [Texture2D]。"
+
+msgid "[StyleBox] for the code completion popup."
+msgstr "用于代ç è¡¥å…¨å¼¹çª—çš„ [StyleBox]。"
+
+msgid ""
+"Sets the [StyleBox] when in focus. The [code]focus[/code] [StyleBox] is "
+"displayed [i]over[/i] the base [StyleBox], so a partially transparent "
+"[StyleBox] should be used to ensure the base [StyleBox] remains visible. A "
+"[StyleBox] that represents an outline or an underline works well for this "
+"purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] "
+"resource. Note that disabling the focus visual effect will harm keyboard/"
+"controller navigation usability, so this is not recommended for "
+"accessibility reasons."
+msgstr ""
+"设置当获得焦点时的 [StyleBox]。该 [code]focus[/code] [StyleBox] 显示在基础 "
+"[StyleBox] [i]之上[/i],因此应使用部分é€æ˜Žçš„ [StyleBox] 以确ä¿åŸºç¡€ "
+"[StyleBox] ä¿æŒå¯è§ã€‚表示轮廓或下划线的 [StyleBox] éžå¸¸é€‚åˆæ­¤ç›®çš„。è¦ç¦ç”¨ç„¦ç‚¹"
+"视觉效果,请指定一个 [StyleBoxEmpty] 资æºã€‚请注æ„,ç¦ç”¨ç„¦ç‚¹è§†è§‰æ•ˆæžœä¼šç ´åé”®"
+"盘 / 控制器导航的å¯ç”¨æ€§ï¼Œå‡ºäºŽå¯è®¿é—®æ€§åŽŸå› ï¼Œä¸å»ºè®®è¿™æ ·åšã€‚"
+
+msgid "Sets the [StyleBox]."
+msgstr "设置该 [StyleBox]。"
+
msgid "Base node for 2D collision objects."
msgstr "2D 碰撞对象的基础节点。"
@@ -7039,6 +15754,18 @@ msgstr ""
"[CanvasLayer])。ä¸åŒç”»å¸ƒä¸­çš„对象之间的碰撞行为是未定义的。"
msgid ""
+"Accepts unhandled [InputEvent]s. [param shape_idx] is the child index of the "
+"clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily "
+"pick up these events.\n"
+"[b]Note:[/b] [method _input_event] requires [member input_pickable] to be "
+"[code]true[/code] and at least one [member collision_layer] bit to be set."
+msgstr ""
+"接收未处ç†çš„ [InputEvent]。[param shape_idx] 是被点击的 [Shape2D] çš„å­ç´¢å¼•ã€‚"
+"连接到 [code]input_event[/code] ä¿¡å·å³å¯è½»æ¾èŽ·å–这些事件。\n"
+"[b]注æ„:[/b][method _input_event] è¦æ±‚ [member input_pickable] 为 "
+"[code]true[/code],并且至少è¦è®¾ç½®ä¸€ä¸ª [member collision_layer] ä½ã€‚"
+
+msgid ""
"Creates a new shape owner for the given object. Returns [code]owner_id[/"
"code] of the new owner for future reference."
msgstr ""
@@ -7105,9 +15832,53 @@ msgstr ""
"进入/离开,鼠标ä½äºŽå…¶ä¸­æ—¶ï¼Œå°±ä¼šæŠ¥å‘Šè¾“入事件。è¦æ±‚至少设置一个 [member "
"collision_layer] ä½ã€‚"
+msgid ""
+"When [member Node.process_mode] is set to [constant Node."
+"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all "
+"physics interactions with this [CollisionObject2D].\n"
+"Automatically re-added to the physics simulation when the [Node] is "
+"processed again."
+msgstr ""
+"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] "
+"时,从物ç†ä»¿çœŸä¸­ç§»é™¤ï¼Œåœæ­¢ä¸Žæ­¤ [CollisionObject2D] 的所有物ç†äº¤äº’。\n"
+"当该 [Node] å†æ¬¡è¢«å¤„ç†æ—¶ï¼Œä¼šè‡ªåŠ¨é‡æ–°åŠ å…¥åˆ°ç‰©ç†ä»¿çœŸä¸­ã€‚"
+
+msgid ""
+"When [member Node.process_mode] is set to [constant Node."
+"PROCESS_MODE_DISABLED], do not affect the physics simulation."
+msgstr ""
+"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] "
+"时,ä¸å½±å“物ç†ä»¿çœŸã€‚"
+
msgid "Base node for collision objects."
msgstr "碰撞对象的基础节点。"
+msgid ""
+"Receives unhandled [InputEvent]s. [param position] is the location in world "
+"space of the mouse pointer on the surface of the shape with index [param "
+"shape_idx] and [param normal] is the normal vector of the surface at that "
+"point. Connect to the [signal input_event] signal to easily pick up these "
+"events.\n"
+"[b]Note:[/b] [method _input_event] requires [member input_ray_pickable] to "
+"be [code]true[/code] and at least one [member collision_layer] bit to be set."
+msgstr ""
+"接收未处ç†çš„ [InputEvent]。[param position] 是鼠标指针在索引为 [param "
+"shape_idx] 的形状表é¢ä¸Šçš„世界空间ä½ç½®ï¼Œ[param normal] 是该点表é¢çš„法å‘é‡ã€‚è¿ž"
+"接到 [signal input_event] ä¿¡å·å³å¯è½»æ¾èŽ·å–这些事件。\n"
+"[b]注æ„:[/b][method _input_event] è¦æ±‚ [member input_ray_pickable] 为 "
+"[code]true[/code],并且至少è¦è®¾ç½®ä¸€ä¸ª [member collision_layer] ä½ã€‚"
+
+msgid ""
+"When [member Node.process_mode] is set to [constant Node."
+"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all "
+"physics interactions with this [CollisionObject3D].\n"
+"Automatically re-added to the physics simulation when the [Node] is "
+"processed again."
+msgstr ""
+"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] "
+"时,从物ç†ä»¿çœŸä¸­ç§»é™¤ï¼Œåœæ­¢ä¸Žæ­¤ [CollisionObject3D] 的所有物ç†äº¤äº’。\n"
+"当该 [Node] å†æ¬¡è¢«å¤„ç†æ—¶ï¼Œä¼šè‡ªåŠ¨é‡æ–°åŠ å…¥åˆ°ç‰©ç†ä»¿çœŸä¸­ã€‚"
+
msgid "Defines a 2D collision polygon."
msgstr "定义 2D 碰撞多边形。"
@@ -7143,6 +15914,26 @@ msgid "Collisions will only include the polygon edges."
msgstr "碰撞将仅包括多边形边缘。"
msgid ""
+"Allows editing a concave or convex collision polygon's vertices on a "
+"selected plane. Can also set a depth perpendicular to that plane. This class "
+"is only available in the editor. It will not appear in the scene tree at run-"
+"time. Creates several [ConvexPolygonShape3D]s at run-time to represent the "
+"original polygon using convex decomposition.\n"
+"[b]Note:[/b] Since this is an editor-only helper, properties modified during "
+"gameplay will have no effect.\n"
+"[b]Warning:[/b] A non-uniformly scaled CollisionPolygon3D node will probably "
+"not function as expected. Please make sure to keep its scale uniform (i.e. "
+"the same on all axes), and change its [member polygon]'s vertices instead."
+msgstr ""
+"å…许在选定平é¢ä¸Šç¼–辑凹形或凸形碰撞多边形的顶点。也å¯ä»¥è®¾ç½®åž‚直于该平é¢çš„æ·±"
+"度。该类仅在编辑器中å¯ç”¨ã€‚它ä¸ä¼šåœ¨è¿è¡Œæ—¶å‡ºçŽ°åœ¨åœºæ™¯æ ‘中。在è¿è¡Œæ—¶åˆ›å»ºå¤šä¸ª "
+"[ConvexPolygonShape3D] 以使用凸分解表示原始多边形。\n"
+"[b]注æ„:[/b]由于这是一个仅é™ç¼–辑器的助手类,因此在游æˆè¿‡ç¨‹ä¸­ä¿®æ”¹çš„属性将无"
+"效。\n"
+"[b]警告:[/b]éžå‡åŒ€ç¼©æ”¾çš„ CollisionPolygon3D 节点å¯èƒ½æ— æ³•æŒ‰é¢„期è¿è¡Œã€‚请确ä¿ä¿"
+"æŒå…¶æ¯”例统一(å³åœ¨æ‰€æœ‰è½´ä¸Šç›¸åŒï¼‰ï¼Œå¹¶æ”¹ä¸ºæ›´æ”¹å…¶ [member polygon] 的顶点。"
+
+msgid ""
"Length that the resulting collision extends in either direction "
"perpendicular to its polygon."
msgstr "产生的碰撞在垂直于其多边形的任一方å‘上延伸的长度。"
@@ -7216,6 +16007,27 @@ msgid "Node that represents collision shape data in 3D space."
msgstr "表示 3D 空间中的碰撞形状数æ®çš„节点。"
msgid ""
+"Editor facility for creating and editing collision shapes in 3D space. Set "
+"the [member shape] property to configure the shape. [b]IMPORTANT[/b]: this "
+"is an Editor-only helper to create shapes, use [method CollisionObject3D."
+"shape_owner_get_shape] to get the actual shape.\n"
+"You can use this node to represent all sorts of collision shapes, for "
+"example, add this to an [Area3D] to give it a detection shape, or add it to "
+"a [PhysicsBody3D] to create a solid object.\n"
+"[b]Warning:[/b] A non-uniformly scaled CollisionShape3D node will probably "
+"not function as expected. Please make sure to keep its scale uniform (i.e. "
+"the same on all axes), and change the size of its [member shape] resource "
+"instead."
+msgstr ""
+"用于在 3D 空间中创建和编辑碰撞形状的编辑器工具。请设置 [member shape] 属性æ¥"
+"é…置形状。[b]é‡è¦[/b]:这是一个仅供编辑器使用的用于创建形状的助手类,使用 "
+"[method CollisionObject3D.shape_owner_get_shape] æ¥èŽ·å–实际形状。\n"
+"您å¯ä»¥ä½¿ç”¨æ­¤èŠ‚点æ¥è¡¨ç¤ºå„ç§ç¢°æ’žå½¢çŠ¶ï¼Œä¾‹å¦‚,将其添加到 [Area3D] 以为其æ供检测"
+"形状,或将其添加到 [PhysicsBody3D] 以创建实体对象。\n"
+"[b]警告:[/b]éžå‡åŒ€ç¼©æ”¾çš„ CollisionShape3D 节点å¯èƒ½æ— æ³•æŒ‰é¢„期è¿è¡Œã€‚请确ä¿ä¿æŒ"
+"其比例统一(å³åœ¨æ‰€æœ‰è½´ä¸Šç›¸åŒï¼‰ï¼Œå¹¶æ”¹ä¸ºæ›´æ”¹å…¶ [member shape] 资æºçš„大å°ã€‚"
+
+msgid ""
"If this method exists within a script it will be called whenever the shape "
"resource has been modified."
msgstr "如果脚本中存在此方法,则åªè¦ä¿®æ”¹å½¢çŠ¶èµ„æºï¼Œå°±ä¼šè°ƒç”¨è¯¥æ–¹æ³•ã€‚"
@@ -7223,6 +16035,42 @@ msgstr "如果脚本中存在此方法,则åªè¦ä¿®æ”¹å½¢çŠ¶èµ„æºï¼Œå°±ä¼šè°ƒ
msgid "A disabled collision shape has no effect in the world."
msgstr "ç¦ç”¨çš„碰撞形状对世界没有任何影å“。"
+msgid "Color built-in type, in RGBA format."
+msgstr "颜色内置类型,格å¼ä¸º RGBA。"
+
+msgid ""
+"A color represented in RGBA format by red ([member r]), green ([member g]), "
+"blue ([member b]), and alpha ([member a]) components. Each component is a 16-"
+"bit floating-point value, usually ranging from 0 to 1. Some properties (such "
+"as [member CanvasItem.modulate]) may support values greater than 1, for "
+"overbright or High Dynamic Range colors. If you want to supply values in a "
+"range of 0 to 255, you should use [method @GDScript.Color8].\n"
+"Colors can also be created by name from a set of standardized colors, "
+"through the [String] constructor, [method from_string], or by directly "
+"fetching the color constants documented here. The standardized color set is "
+"based on the [url=https://en.wikipedia.org/wiki/X11_color_names]X11 color "
+"names[/url], with the addition of [constant TRANSPARENT].\n"
+"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/"
+"code] if it's equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). "
+"Otherwise, a Color will always evaluate to [code]true[/code].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"color_constants.png]Color constants cheatsheet[/url]"
+msgstr ""
+"由红([member r])ã€ç»¿ï¼ˆ[member g])ã€è“([member b])和 alpha([member a])"
+"分é‡è¡¨ç¤ºçš„ RGBA æ ¼å¼çš„颜色。æ¯ä¸ªåˆ†é‡éƒ½æ˜¯ä¸€ä¸ª 16 ä½æµ®ç‚¹å€¼ï¼Œé€šå¸¸ä»‹äºŽ 0 到 1 之"
+"间。对于过亮或高动æ€èŒƒå›´é¢œè‰²ï¼ŒæŸäº›å±žæ€§ï¼ˆä¾‹å¦‚ [member CanvasItem.modulate])å¯"
+"能支æŒå¤§äºŽ 1 的值。使用 [method @GDScript.Color8] æä¾› 0 到 255 范围内的"
+"值。\n"
+"也å¯ä»¥é€šè¿‡ [String] 构造函数ã€[method from_string] 或通过直接获å–此处记录的颜"
+"色常é‡ï¼Œä»Žä¸€ç»„标准化颜色中按å称创建颜色。标准化颜色集基于 [url=https://en."
+"wikipedia.org/wiki/X11_color_names]X11 颜色å称[/url],并添加了 [constant "
+"TRANSPARENT]。\n"
+"[b]注æ„:[/b]在布尔上下文中,等于 [code]Color(0, 0, 0, 1)[/code](ä¸é€æ˜Žçš„黑"
+"色)的 Color 将被评估为 [code]false[/code]。å¦åˆ™ï¼ŒColor 将始终被评估为 "
+"[code]true[/code]。\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"color_constants.png]Color 常é‡é€ŸæŸ¥è¡¨[/url]"
+
msgid "2D GD Paint Demo"
msgstr "2D GD 画图演示"
@@ -7246,6 +16094,157 @@ msgid "Constructs a [Color] as a copy of the given [Color]."
msgstr "构造给定 [Color] 的副本。"
msgid ""
+"Constructs a [Color] from RGB values, typically between 0.0 and 1.0. [member "
+"a] is set to 1.0.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(0.2, 1.0, 0.7) # Similar to `Color8(51, 255, 178, 255)`\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(0.2f, 1.0f, 0.7f); // Similar to `Color.Color8(51, "
+"255, 178, 255)`\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"从通常介于 0.0 和 1.0 之间的 RGB 值构造一个 [Color]。[member a] 被设置为 "
+"1.0。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(0.2, 1.0, 0.7) # 类似于 `Color8(51, 255, 178, 255)`\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(0.2f, 1.0f, 0.7f); // 类似于 `Color.Color8(51, 255, "
+"178, 255)`\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Constructs a [Color] from RGBA values, typically between 0.0 and 1.0.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(0.2, 1.0, 0.7, 0.8) # Similar to `Color8(51, 255, 178, "
+"204)`\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // Similar to `Color."
+"Color8(51, 255, 178, 255, 204)`\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"从通常介于 0.0 和 1.0 之间的 RGBA 值构造一个 [Color]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(0.2, 1.0, 0.7, 0.8) # 类似于 `Color8(51, 255, 178, 204)`\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // 类似于 `Color.Color8(51, "
+"255, 178, 255, 204)`\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a new color resulting from overlaying this color over the given "
+"color. In a painting program, you can imagine it as the [param over] color "
+"painted over this color (including alpha).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n"
+"var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n"
+"var blended_color = bg.blend(fg) # Brown with alpha of 75%\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // Green with alpha of 50%\n"
+"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // Red with alpha of 50%\n"
+"Color blendedColor = bg.Blend(fg); // Brown with alpha of 75%\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回将该颜色混åˆåˆ°ç»™å®šé¢œè‰²ä¸Šæ‰€äº§ç”Ÿçš„新颜色。在绘画程åºä¸­ï¼Œæ‚¨å¯ä»¥å°†å…¶æƒ³è±¡ä¸ºåœ¨"
+"该颜色(包括 alpha)上绘制的 [param over] 颜色。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var bg = Color(0.0, 1.0, 0.0, 0.5) # 50% ä¸é€æ˜Žçš„绿色\n"
+"var fg = Color(1.0, 0.0, 0.0, 0.5) # 50% ä¸é€æ˜Žçš„红色\n"
+"var blended_color = bg.blend(fg) # 75% ä¸é€æ˜Žçš„棕色\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // 50% ä¸é€æ˜Žçš„绿色\n"
+"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // 50% ä¸é€æ˜Žçš„红色\n"
+"Color blendedColor = bg.Blend(fg); // 75% ä¸é€æ˜Žçš„棕色\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a new color resulting from making this color darker by the specified "
+"[param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var darkgreen = green.darkened(0.2) # 20% darker than regular green\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var green = new Color(0.0f, 1.0f, 0.0f);\n"
+"Color darkgreen = green.Darkened(0.2f); // 20% darker than regular green\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色å˜æš—而产生的新颜"
+"色。å¦è§ [method lightened]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var darkgreen = green.darkened(0.2) # 比普通的绿色深 20%\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var green = new Color(0.0f, 1.0f, 0.0f);\n"
+"Color darkgreen = green.Darkened(0.2f); // 比普通的绿色深 20%\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a new color from [param rgba], an HTML hexadecimal color string. "
+"[param rgba] is not case-sensitive, and may be prefixed by a hash sign "
+"([code]#[/code]).\n"
+"[param rgba] must be a valid three-digit or six-digit hexadecimal color "
+"string, and may contain an alpha channel value. If [param rgba] does not "
+"contain an alpha channel value, an alpha channel value of 1.0 is applied. If "
+"[param rgba] is invalid, returns an empty color.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var blue = Color.html(\"#0000ff\") # blue is Color(0.0, 0.0, 1.0, 1.0)\n"
+"var green = Color.html(\"#0F0\") # green is Color(0.0, 1.0, 0.0, 1.0)\n"
+"var col = Color.html(\"663399cc\") # col is Color(0.4, 0.2, 0.6, 0.8)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var blue = Color.FromHtml(\"#0000ff\"); // blue is Color(0.0, 0.0, 1.0, "
+"1.0)\n"
+"var green = Color.FromHtml(\"#0F0\"); // green is Color(0.0, 1.0, 0.0, "
+"1.0)\n"
+"var col = Color.FromHtml(\"663399cc\"); // col is Color(0.4, 0.2, 0.6, 0.8)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"从 HTML å六进制颜色字符串 [param rgba] 返回一个新颜色。[param rgba] ä¸åŒºåˆ†å¤§"
+"å°å†™ï¼Œå¯ä»¥ä½¿ç”¨å“ˆå¸Œç¬¦å·ï¼ˆ[code]#[/code])作为å‰ç¼€ã€‚\n"
+"[param rgba] 必须是有效的三ä½æˆ–å…­ä½å六进制颜色字符串,并且å¯ä»¥åŒ…å« alpha 通"
+"é“值。如果 [param rgba] ä¸åŒ…å« alpha 通é“值,则应用 alpha 通é“值 1.0。如果 "
+"[param rgba] 无效,则返回一个空颜色。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var blue = Color.html(\"#0000ff\") # blue 为 Color(0.0, 0.0, 1.0, 1.0)\n"
+"var green = Color.html(\"#0F0\") # green 为 Color(0.0, 1.0, 0.0, 1.0)\n"
+"var col = Color.html(\"663399cc\") # col 为 Color(0.4, 0.2, 0.6, 0.8)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var blue = Color.FromHtml(\"#0000ff\"); // blue 为 Color(0.0, 0.0, 1.0, "
+"1.0)\n"
+"var green = Color.FromHtml(\"#0F0\"); // green 为 Color(0.0, 1.0, 0.0, "
+"1.0)\n"
+"var col = Color.FromHtml(\"663399cc\"); // col 为 Color(0.4, 0.2, 0.6, 0.8)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns the linear interpolation between this color's components and [param "
"to]'s components. The interpolation factor [param weight] should be between "
"0.0 and 1.0 (inclusive). See also [method @GlobalScope.lerp].\n"
@@ -7291,6 +16290,233 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"Returns a new color resulting from making this color lighter by the "
+"specified [param amount], which should be a ratio from 0.0 to 1.0. See also "
+"[method darkened].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var light_green = green.lightened(0.2) # 20% lighter than regular green\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var green = new Color(0.0f, 1.0f, 0.0f);\n"
+"Color lightGreen = green.Lightened(0.2f); // 20% lighter than regular green\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色å˜äº®è€Œäº§ç”Ÿçš„新颜"
+"色。å¦è§ [method darkened]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var green = Color(0.0, 1.0, 0.0)\n"
+"var light_green = green.lightened(0.2) # 比普通的绿色è¦æ·¡ 20%\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var green = new Color(0.0f, 1.0f, 0.0f);\n"
+"Color lightGreen = green.Lightened(0.2f); // 比普通的绿色è¦æ·¡ 20%\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 32-bit integer in ABGR format (each "
+"component is 8 bits). ABGR is the reversed version of the default RGBA "
+"format.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr32()) # Prints 4281565439\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToAbgr32()); // Prints 4281565439\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º ABGR æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 8 ä½ï¼‰çš„ 32 ä½æ•´æ•°çš„颜色。ABGR 是默认 RGBA "
+"æ ¼å¼çš„å转版本。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr32()) # 输出 4281565439\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToAbgr32()); // 输出 4281565439\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 64-bit integer in ABGR format (each "
+"component is 16 bits). ABGR is the reversed version of the default RGBA "
+"format.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr64()) # Prints -225178692812801\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToAbgr64()); // Prints -225178692812801\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º ABGR æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 16 ä½ï¼‰çš„ 64 ä½æ•´æ•°çš„颜色。ABGR 是默认 RGBA "
+"æ ¼å¼çš„å转版本。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_abgr64()) # 输出 -225178692812801\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToAbgr64()); // 输出 -225178692812801\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 32-bit integer in ARGB format (each "
+"component is 8 bits). ARGB is more compatible with DirectX.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb32()) # Prints 4294934323\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToArgb32()); // Prints 4294934323\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º ARGB æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 8 ä½ï¼‰çš„ 32 ä½æ•´æ•°çš„颜色。ARGB 与 DirectX æ›´"
+"兼容。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb32()) # 输出 4294934323\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToArgb32()); // 输出 4294934323\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 64-bit integer in ARGB format (each "
+"component is 16 bits). ARGB is more compatible with DirectX.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb64()) # Prints -2147470541\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToArgb64()); // Prints -2147470541\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º ARGB æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 16 ä½ï¼‰çš„ 64 ä½æ•´æ•°çš„颜色。ARGB 与 DirectX "
+"更兼容。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_argb64()) # 输出 -2147470541\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1.0f, 0.5f, 0.2f);\n"
+"GD.Print(color.ToArgb64()); // 输出 -2147470541\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to an HTML hexadecimal color [String] in RGBA "
+"format, without the hash ([code]#[/code]) prefix.\n"
+"Setting [param with_alpha] to [code]false[/code], excludes alpha from the "
+"hexadecimal string, using RGB format instead of RGBA format.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var white = Color(1, 1, 1, 0.5)\n"
+"var with_alpha = white.to_html() # Returns \"ffffff7f\"\n"
+"var without_alpha = white.to_html(false) # Returns \"ffffff\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var white = new Color(1, 1, 1, 0.5f);\n"
+"string withAlpha = white.ToHtml(); // Returns \"ffffff7f\"\n"
+"string withoutAlpha = white.ToHtml(false); // Returns \"ffffff\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回将该颜色转æ¢ä¸º RGBA æ ¼å¼çš„ HTML å六进制颜色 [String],ä¸å¸¦ï¼ˆ[code]#[/"
+"code])å‰ç¼€ã€‚\n"
+"å°† [param with_alpha] 设置为 [code]false[/code],会从å六进制字符串中排除 "
+"alpha,使用 RGB æ ¼å¼è€Œä¸æ˜¯ RGBA æ ¼å¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var white = Color(1, 1, 1, 0.5)\n"
+"var with_alpha = white.to_html() # 返回 \"ffffff7f\"\n"
+"var without_alpha = white.to_html(false) # 返回 \"ffffff\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var white = new Color(1, 1, 1, 0.5f);\n"
+"string withAlpha = white.ToHtml(); // 返回 \"ffffff7f\"\n"
+"string withoutAlpha = white.ToHtml(false); // 返回 \"ffffff\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 32-bit integer in RGBA format (each "
+"component is 8 bits). RGBA is Godot's default format.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba32()) # Prints 4286526463\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1, 0.5f, 0.2f);\n"
+"GD.Print(color.ToRgba32()); // Prints 4286526463\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º RGBA æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 8 ä½ï¼‰çš„ 32 ä½æ•´æ•°çš„颜色。RGBA 是 Godot 的默"
+"认格å¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba32()) # 输出 4286526463\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1, 0.5f, 0.2f);\n"
+"GD.Print(color.ToRgba32()); // 输出 4286526463\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the color converted to a 64-bit integer in RGBA format (each "
+"component is 16 bits). RGBA is Godot's default format.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba64()) # Prints -140736629309441\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1, 0.5f, 0.2f);\n"
+"GD.Print(color.ToRgba64()); // Prints -140736629309441\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回转æ¢ä¸º RGBA æ ¼å¼ï¼ˆæ¯ä¸ªåˆ†é‡ä¸º 16 ä½ï¼‰çš„ 64 ä½æ•´æ•°çš„颜色。RGBA 是 Godot çš„"
+"默认格å¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var color = Color(1, 0.5, 0.2)\n"
+"print(color.to_rgba64()) # 输出 -140736629309441\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var color = new Color(1, 0.5f, 0.2f);\n"
+"GD.Print(color.ToRgba64()); // 输出 -140736629309441\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"The color's alpha component, typically on the range of 0 to 1. A value of 0 "
"means that the color is fully transparent. A value of 1 means that the color "
"is fully opaque."
@@ -7337,6 +16563,9 @@ msgstr "米黄色。"
msgid "Bisque color."
msgstr "橘黄色。"
+msgid "Black color. In GDScript, this is the default value of any color."
+msgstr "黑色。在 GDScript 中,这是所有颜色的默认值。"
+
msgid "Blue color."
msgstr "è“色。"
@@ -7703,6 +16932,9 @@ msgstr "蓟色。"
msgid "Tomato color."
msgstr "番茄色。"
+msgid "Transparent color (white with zero alpha)."
+msgstr "é€æ˜Žè‰²ï¼ˆAlpha 为零的白色)。"
+
msgid "Turquoise color."
msgstr "æ¾çŸ³ç»¿ã€‚"
@@ -7736,6 +16968,45 @@ msgstr "黄色。"
msgid "Yellow green color."
msgstr "黄绿色。"
+msgid ""
+"Returns [code]true[/code] if the colors are not exactly equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果颜色ä¸å®Œå…¨ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。\n"
+"[b]注æ„:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更å¯"
+"é ã€‚"
+
+msgid ""
+"Multiplies each component of the [Color] by the components of the given "
+"[Color]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Color] 的对应分é‡ã€‚"
+
+msgid "Multiplies each component of the [Color] by the given [float]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。"
+
+msgid "Multiplies each component of the [Color] by the given [int]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid ""
+"Adds each component of the [Color] with the components of the given [Color]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Color] 的对应分é‡ã€‚"
+
+msgid ""
+"Subtracts each component of the [Color] by the components of the given "
+"[Color]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Color] 的对应分é‡ã€‚"
+
+msgid ""
+"Divides each component of the [Color] by the components of the given [Color]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Color] çš„æ¯ä¸ªåˆ†é‡ã€‚"
+
+msgid "Divides each component of the [Color] by the given [float]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。"
+
+msgid "Divides each component of the [Color] by the given [int]."
+msgstr "将该 [Color] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
msgid "Color picker control."
msgstr "å–色器控件。"
@@ -7870,20 +17141,40 @@ msgstr "[ColorPickerButton] 的图标和文本之间的水平间è·ã€‚"
msgid "[Font] of the [ColorPickerButton]'s text."
msgstr "[ColorPickerButton] 文本的 [Font]。"
+msgid "Font size of the [ColorPickerButton]'s text."
+msgstr "[ColorPickerButton] 文本的字体大å°ã€‚"
+
msgid "The background of the color preview rect on the button."
msgstr "颜色预览的背景将在按钮上显示。"
msgid "[StyleBox] used when the [ColorPickerButton] is disabled."
-msgstr "当 [ColorPickerButton] 被ç¦ç”¨æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+msgstr "该 [ColorPickerButton] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
+msgid ""
+"[StyleBox] used when the [ColorPickerButton] is focused. The [code]focus[/"
+"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a "
+"partially transparent [StyleBox] should be used to ensure the base "
+"[StyleBox] remains visible. A [StyleBox] that represents an outline or an "
+"underline works well for this purpose. To disable the focus visual effect, "
+"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual "
+"effect will harm keyboard/controller navigation usability, so this is not "
+"recommended for accessibility reasons."
+msgstr ""
+"该 [ColorPickerButton] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] "
+"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid "[StyleBox] used when the [ColorPickerButton] is being hovered."
-msgstr "æ‚¬åœ [ColorPickerButton] 时使用的 [StyleBox]。"
+msgstr "该 [ColorPickerButton] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "Default [StyleBox] for the [ColorPickerButton]."
-msgstr "[ColorPickerButton] 的默认 [StyleBox]。"
+msgstr "该 [ColorPickerButton] 的默认 [StyleBox]。"
msgid "[StyleBox] used when the [ColorPickerButton] is being pressed."
-msgstr "按下 [ColorPickerButton] 时使用的 [StyleBox]。"
+msgstr "该 [ColorPickerButton] 处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "Colored rectangle."
msgstr "彩色矩形。"
@@ -7896,6 +17187,104 @@ msgstr ""
"[ReferenceRect] 代替。"
msgid ""
+"The fill color.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"$ColorRect.color = Color(1, 0, 0, 1) # Set ColorRect's color to red.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetNode<ColorRect>(\"ColorRect\").Color = new Color(1, 0, 0, 1); // Set "
+"ColorRect's color to red.\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"填充色。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"$ColorRect.color = Color(1, 0, 0, 1) # 将 ColorRect 的颜色设置为红色。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetNode<ColorRect>(\"ColorRect\").Color = new Color(1, 0, 0, 1); // å°† "
+"ColorRect 的颜色设置为红色。\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "6-sided texture typically used in 3D rendering, optionally compressed."
+msgstr "6 é¢çº¹ç†ï¼Œé€šå¸¸ç”¨äºŽ 3D 渲染,å¯é€‰æ‹©åŽ‹ç¼©ã€‚"
+
+msgid ""
+"Array of 6-sided textures typically used in 3D rendering, optionally "
+"compressed."
+msgstr "6 é¢çº¹ç†çš„数组,通常用于 3D 渲染,å¯é€‰æ‹©åŽ‹ç¼©ã€‚"
+
+msgid "Texture with 2 dimensions, optionally compressed."
+msgstr "二维纹ç†ï¼Œå¯é€‰æ‹©åŽ‹ç¼©ã€‚"
+
+msgid "Loads the texture from the specified [param path]."
+msgstr "从指定的路径 [param path] 加载纹ç†ã€‚"
+
+msgid "The [CompressedTexture2D]'s file path to a [code].ctex[/code] file."
+msgstr "该 [CompressedTexture2D] çš„æ–‡ä»¶è·¯å¾„ï¼ŒæŒ‡å‘ [code].ctex[/code] 文件。"
+
+msgid "Array of 2-dimensional textures, optionally compressed."
+msgstr "二维纹ç†çš„数组,å¯é€‰æ‹©åŽ‹ç¼©ã€‚"
+
+msgid "Texture with 3 dimensions, optionally compressed."
+msgstr "三维纹ç†ï¼Œå¯é€‰æ‹©åŽ‹ç¼©ã€‚"
+
+msgid "The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file."
+msgstr "该 [CompressedTexture3D] çš„æ–‡ä»¶è·¯å¾„ï¼ŒæŒ‡å‘ [code].ctex3d[/code] 文件。"
+
+msgid "Base class for texture arrays that can optionally be compressed."
+msgstr "å¯åŽ‹ç¼©çº¹ç†æ•°ç»„的基类。"
+
+msgid "Loads the texture at [param path]."
+msgstr "从路径 [param path] 加载纹ç†ã€‚"
+
+msgid ""
+"2D concave polygon shape to be added as a [i]direct[/i] child of a "
+"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. It is made out "
+"of segments and is optimal for complex polygonal concave collisions. "
+"However, it is not advised to use for [RigidBody2D] nodes. A "
+"CollisionPolygon2D in convex decomposition mode (solids) or several convex "
+"objects are advised for that instead. Otherwise, a concave polygon 2D shape "
+"is better for static collisions.\n"
+"The main difference between a [ConvexPolygonShape2D] and a "
+"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and "
+"uses a more complex method of collision detection, and a convex one forces "
+"itself to be convex to speed up collision detection.\n"
+"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the "
+"slowest collision shape to check collisions against. Its use should "
+"generally be limited to level geometry. For convex geometry, using "
+"[ConvexPolygonShape2D] will perform better. For dynamic physics bodies that "
+"need concave collision, several [ConvexPolygonShape2D]s can be used to "
+"represent its collision by using convex decomposition; see "
+"[ConvexPolygonShape2D]'s documentation for instructions. However, consider "
+"using primitive collision shapes such as [CircleShape2D] or "
+"[RectangleShape2D] first.\n"
+"[b]Warning:[/b] Using this shape for an [Area2D] (via a [CollisionShape2D] "
+"node) may give unexpected results: the area will only detect collisions with "
+"the segments in the [ConcavePolygonShape2D] (and not with any \"inside\" of "
+"the shape, for example)."
+msgstr ""
+"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] çš„[i]直接[/i]å­"
+"节点添加的 2D 凹多边形形状。它由线段组æˆï¼Œæœ€é€‚åˆå¤æ‚的多边形凹é¢ç¢°æ’žã€‚但是,"
+"ä¸å»ºè®®ç”¨äºŽ [RigidBody2D] 节点。建议改用凸分解模å¼ï¼ˆå®žä½“)的 "
+"CollisionPolygon2D 或多个凸对象。å¦åˆ™ï¼Œå‡¹å¤šè¾¹å½¢ 2D 形状更适åˆé™æ€ç¢°æ’žã€‚\n"
+"[ConvexPolygonShape2D] å’Œ [ConcavePolygonShape2D] 之间的主è¦åŒºåˆ«åœ¨äºŽï¼Œå‡¹å¤šè¾¹"
+"å½¢å‡è®¾å®ƒæ˜¯å‡¹çš„,并使用更å¤æ‚的碰撞检测方法,而凸多边形强制自身æˆä¸ºå‡¸é¢ä»¥åŠ é€Ÿ"
+"碰撞检测。\n"
+"[b]性能:[/b]由于其å¤æ‚性,[ConcavePolygonShape2D] 是检查碰撞时最慢的碰撞形"
+"状。它的使用通常应é™äºŽå…³å¡å‡ ä½•ã€‚对于凸几何,使用 [ConvexPolygonShape2D] 会表"
+"现更好。对于需è¦å‡¹ç¢°æ’žçš„动æ€ç‰©ç†å®žä½“,å¯ä»¥ç”¨å‡ ä¸ª [ConvexPolygonShape2D] æ¥è¡¨"
+"示它的碰撞,使用凸分解;有关说明,请å‚阅 [ConvexPolygonShape2D] 的文档。但"
+"是,请首先考虑使用原始碰撞形状,例如 [CircleShape2D] 或 "
+"[RectangleShape2D]。\n"
+"[b]警告:[/b]将该形状用于 [Area2D](通过 [CollisionShape2D] 节点)å¯èƒ½ä¼šäº§ç”Ÿ"
+"æ„想ä¸åˆ°çš„结果:该区域将仅检测与 [ConcavePolygonShape2D] 中的线段的碰撞(而éž"
+"任何诸如形状的“内部â€ï¼‰ã€‚"
+
+msgid ""
"The array of points that make up the [ConcavePolygonShape2D]'s line segments."
msgstr "ç»„æˆ [ConcavePolygonShape2D] 线段的点的数组。"
@@ -7934,7 +17323,7 @@ msgstr ""
"如果低于 0.05,则扭曲被é”定。"
msgid "Represents the size of the [enum Param] enum."
-msgstr "表示 [enum Param] 枚举的大å°ã€‚"
+msgstr "代表 [enum Param] 枚举的大å°ã€‚"
msgid "Helper class to handle INI-style files."
msgstr "ç”¨äºŽå¤„ç† INI æ ·å¼æ–‡ä»¶çš„辅助类。"
@@ -7982,6 +17371,32 @@ msgid "Dialog for confirmation of actions."
msgstr "确认动作的对è¯æ¡†ã€‚"
msgid ""
+"Dialog for confirmation of actions. This dialog inherits from "
+"[AcceptDialog], but has by default an OK and Cancel button (in host OS "
+"order).\n"
+"To get cancel action, you can use:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"get_cancel_button().pressed.connect(self.canceled)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetCancelButton().Pressed += Canceled;\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"用于确认æ“作的对è¯æ¡†ã€‚这个对è¯æ¡†ç»§æ‰¿è‡ª [AcceptDialog],但默认有一个确定和å–消"
+"按钮(按主机æ“作系统顺åºï¼‰ã€‚\n"
+"è¦èŽ·å¾—å–消æ“作,你å¯ä»¥ä½¿ç”¨\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"get_cancel_button().pressed.connect(self.canceled)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetCancelButton().Pressed += Canceled;\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns the cancel button.\n"
"[b]Warning:[/b] This is a required internal node, removing and freeing it "
"may cause a crash. If you wish to hide it or any of its children, use their "
@@ -8019,6 +17434,85 @@ msgid ""
"Notification for when sorting the children, it must be obeyed immediately."
msgstr "对å­èŠ‚点进行排åºæ—¶çš„通知,必须立å³æœä»Žã€‚"
+msgid ""
+"All user interface nodes inherit from Control. A control's anchors and "
+"offsets adapt its position and size relative to its parent."
+msgstr ""
+"所有用户界é¢èŠ‚点都继承自 Control(控件)。控件使用锚点和å移æ¥è°ƒæ•´ç›¸å¯¹äºŽçˆ¶çº§"
+"çš„ä½ç½®å’Œå¤§å°ã€‚"
+
+msgid ""
+"Base class for all UI-related nodes. [Control] features a bounding rectangle "
+"that defines its extents, an anchor position relative to its parent control "
+"or the current viewport, and offsets relative to the anchor. The offsets "
+"update automatically when the node, any of its parents, or the screen size "
+"change.\n"
+"For more information on Godot's UI system, anchors, offsets, and containers, "
+"see the related tutorials in the manual. To build flexible UIs, you'll need "
+"a mix of UI elements that inherit from [Control] and [Container] nodes.\n"
+"[b]User Interface nodes and input[/b]\n"
+"Godot propagates input events via viewports. Each [Viewport] is responsible "
+"for propagating [InputEvent]s to their child nodes. As the [member SceneTree."
+"root] is a [Window], this already happens automatically for all UI elements "
+"in your game.\n"
+"Input events are propagated through the [SceneTree] from the root node to "
+"all child nodes by calling [method Node._input]. For UI elements "
+"specifically, it makes more sense to override the virtual method [method "
+"_gui_input], which filters out unrelated input events, such as by checking z-"
+"order, [member mouse_filter], focus, or if the event was inside of the "
+"control's bounding box.\n"
+"Call [method accept_event] so no other node receives the event. Once you "
+"accept an input, it becomes handled so [method Node._unhandled_input] will "
+"not process it.\n"
+"Only one [Control] node can be in focus. Only the node in focus will receive "
+"events. To get the focus, call [method grab_focus]. [Control] nodes lose "
+"focus when another node grabs it, or if you hide the node in focus.\n"
+"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a "
+"[Control] node to ignore mouse or touch events. You'll need it if you place "
+"an icon on top of a button.\n"
+"[Theme] resources change the Control's appearance. If you change the [Theme] "
+"on a [Control] node, it affects all of its children. To override some of the "
+"theme's parameters, call one of the [code]add_theme_*_override[/code] "
+"methods, like [method add_theme_font_override]. You can override the theme "
+"with the Inspector.\n"
+"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you "
+"can't access their values using [method Object.get] and [method Object.set]. "
+"Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/"
+"code] methods provided by this class."
+msgstr ""
+"所有 UI 相关节点的基类。[Control] 具有定义其范围的边界矩形,相对于父控件或当"
+"å‰è§†å£çš„锚点ä½ç½®ï¼Œä»¥åŠç›¸å¯¹äºŽé”šç‚¹çš„å移。当节点ã€ä»»ä½•çˆ¶èŠ‚点或å±å¹•å°ºå¯¸å‘生å˜åŒ–"
+"时,å移就会自动更新。\n"
+"更多关于 Godot çš„ UI 系统ã€é”šç‚¹ã€å移和容器的信æ¯ï¼Œè¯·å‚阅手册中的相关教程。è¦"
+"构建çµæ´»çš„ UI,你需è¦æ··åˆä½¿ç”¨ä»Ž [Control] å’Œ [Container] 节点继承的 UI å…ƒ"
+"素。\n"
+"[b]用户界é¢èŠ‚点与输入[/b]\n"
+"Godot 使用视å£æ¥ä¼ æ’­è¾“入事件。视å£è´Ÿè´£å°† [InputEvent] 传播给它的å­èŠ‚点。因为 "
+"[member SceneTree.root] 是 [Window],所以游æˆä¸­çš„所有 UI 元素都会自动进行传"
+"播。\n"
+"输入事件通过调用 [method Node._input] 在 [SceneTree] 中传播,从根节点传播到所"
+"有å­èŠ‚点。对 UI 元素而言,覆盖的最好是 [method _gui_input],å¯ä»¥è¿‡æ»¤æŽ‰æ— å…³çš„"
+"输入事件,例如它会对 Z 顺åºã€[member mouse_filter]ã€ç„¦ç‚¹ã€äº‹ä»¶æ˜¯å¦åœ¨è¯¥æŽ§ä»¶çš„"
+"边界框内等æ¡ä»¶è¿›è¡Œæ£€æŸ¥ã€‚\n"
+"请调用 [method accept_event],这样其他节点就ä¸ä¼šæ”¶åˆ°è¯¥äº‹ä»¶ã€‚输入被接å—åŽï¼Œå°±"
+"会被标记为已处ç†ï¼Œ[method Node._unhandled_input] ä¸ä¼šå¯¹å®ƒè¿›è¡Œå¤„ç†ã€‚\n"
+"åªèƒ½æœ‰ä¸€ä¸ª [Control] 节点处于焦点。åªæœ‰å¤„于焦点的节点æ‰ä¼šæŽ¥æ”¶åˆ°äº‹ä»¶ã€‚è¦èŽ·å¾—焦"
+"点,请调用 [method grab_focus]。导致 [Control] 节点失去焦点的情况有:其他节点"
+"获得了焦点ã€éšè—了èšç„¦èŠ‚点。\n"
+"å°† [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE] å¯ä»¥è®© "
+"[Control] 节点忽略鼠标或触摸事件。如果你在按钮上放了一个图标,就会需è¦ç”¨"
+"到。\n"
+"[Theme] 资æºä¼šæ›´æ”¹æŽ§ä»¶çš„外观。如果你更改了 [Control] 节点上的 [Theme],则会影"
+"å“其所有å­èŠ‚点。è¦è¦†ç›–æŸäº›ä¸»é¢˜çš„å‚数,请调用 [code]add_theme_*_override[/"
+"code] 方法,例如 [method add_theme_font_override]。你å¯ä»¥ä½¿ç”¨æ£€æŸ¥å™¨è¦†ç›–主"
+"题。\n"
+"[b]注æ„:[/b]主题项[i]ä¸æ˜¯[/i] [Object] 的属性。这æ„味ç€ä½ æ— æ³•ä½¿ç”¨ [method "
+"Object.get] 和 [method Object.set] 访问它们的值。请改用这个类的 "
+"[code]get_theme_*[/code] 和 [code]add_theme_*_override[/code] 方法。"
+
+msgid "GUI documentation index"
+msgstr "GUI 文档索引"
+
msgid "Control node gallery"
msgstr "控件节点一览"
@@ -8026,6 +17520,333 @@ msgid "All GUI Demos"
msgstr "所有 GUI 演示"
msgid ""
+"Godot calls this method to test if [param data] from a control's [method "
+"_get_drag_data] can be dropped at [param at_position]. [param at_position] "
+"is local to this control.\n"
+"This method should only be used to test the data. Process the data in "
+"[method _drop_data].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _can_drop_data(position, data):\n"
+" # Check position if it is relevant to you\n"
+" # Otherwise, just check data\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override bool _CanDropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" // Check position if it is relevant to you\n"
+" // Otherwise, just check data\n"
+" return data.VariantType == Variant.Type.Dictionary && data."
+"AsGodotDictionary().Contains(\"expected\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"Godot 调用该方法æ¥æµ‹è¯•æ˜¯å¦å¯ä»¥å°†æŽ§ä»¶çš„ [method _get_drag_data] 中的 [param "
+"data] 放在 [param at_position] 处。[param at_position] 是该控件的局部ä½ç½®ã€‚\n"
+"此方法应仅用于测试数æ®ã€‚å¤„ç† [method _drop_data] 中的数æ®ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _can_drop_data(position, data):\n"
+" # 如果 position 与您相关则检查它\n"
+" # å¦åˆ™ï¼Œåªæ£€æŸ¥ data\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override bool _CanDropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" // 如果 position 与您相关则检查它\n"
+" // å¦åˆ™ï¼Œåªæ£€æŸ¥ data\n"
+" return data.VariantType == Variant.Type.Dictionary && data."
+"AsGodotDictionary().Contains(\"expected\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Godot calls this method to pass you the [param data] from a control's "
+"[method _get_drag_data] result. Godot first calls [method _can_drop_data] to "
+"test if [param data] is allowed to drop at [param at_position] where [param "
+"at_position] is local to this control.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _can_drop_data(position, data):\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n"
+"\n"
+"func _drop_data(position, data):\n"
+" var color = data[\"color\"]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override bool _CanDropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" return data.VariantType == Variant.Type.Dictionary && dict."
+"AsGodotDictionary().Contains(\"color\");\n"
+"}\n"
+"\n"
+"public override void _DropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"Godot 调用该方法从控件的 [method _get_drag_data] 结果中å‘您传递 [param "
+"data]。Godot 首先调用 [method _can_drop_data] æ¥æµ‹è¯•æ˜¯å¦å…许 [param data] 在 "
+"[param at_position] 处放置,其中 [param at_position] 是该控件的局部ä½ç½®ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _can_drop_data(position, data):\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n"
+"\n"
+"func _drop_data(position, data):\n"
+" var color = data[\"color\"]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override bool _CanDropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" return data.VariantType == Variant.Type.Dictionary && dict."
+"AsGodotDictionary().Contains(\"color\");\n"
+"}\n"
+"\n"
+"public override void _DropData(Vector2 atPosition, Variant data)\n"
+"{\n"
+" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Godot calls this method to get data that can be dragged and dropped onto "
+"controls that expect drop data. Returns [code]null[/code] if there is no "
+"data to drag. Controls that want to receive drop data should implement "
+"[method _can_drop_data] and [method _drop_data]. [param at_position] is "
+"local to this control. Drag may be forced with [method force_drag].\n"
+"A preview that will follow the mouse that should represent the data can be "
+"set with [method set_drag_preview]. A good time to set the preview is in "
+"this method.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_drag_data(position):\n"
+" var mydata = make_data() # This is your custom method generating the "
+"drag data.\n"
+" set_drag_preview(make_preview(mydata)) # This is your custom method "
+"generating the preview of the drag data.\n"
+" return mydata\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Variant _GetDragData(Vector2 atPosition)\n"
+"{\n"
+" var myData = MakeData(); // This is your custom method generating the "
+"drag data.\n"
+" SetDragPreview(MakePreview(myData)); // This is your custom method "
+"generating the preview of the drag data.\n"
+" return myData;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"Godot 调用该方法æ¥èŽ·å–å¯ä»¥æ‹–放到期望放置数æ®çš„控件上的数æ®ã€‚如果没有è¦æ‹–动的"
+"æ•°æ®ï¼Œåˆ™è¿”回 [code]null[/code]。想è¦æŽ¥æ”¶æ‹–放数æ®çš„控件应该实现 [method "
+"_can_drop_data] å’Œ [method _drop_data]。[param at_position] 是该控件的局部ä½"
+"置。å¯ä»¥ä½¿ç”¨ [method force_drag] 强制拖动。\n"
+"å¯ä»¥ä½¿ç”¨ [method set_drag_preview] 设置跟éšé¼ æ ‡æ˜¾ç¤ºæ•°æ®çš„预览。设置预览的好时"
+"机就是在这个方法中。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_drag_data(position):\n"
+" var mydata = make_data() # This is your custom method generating the "
+"drag data.\n"
+" set_drag_preview(make_preview(mydata)) # 这是您生æˆæ‹–动数æ®é¢„览的自定义方"
+"法。\n"
+" return mydata\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Variant _GetDragData(Vector2 atPosition)\n"
+"{\n"
+" var myData = MakeData(); // This is your custom method generating the "
+"drag data.\n"
+" SetDragPreview(MakePreview(myData)); // 这是您生æˆæ‹–动数æ®é¢„览的自定义方"
+"法。\n"
+" return myData;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Virtual method to be implemented by the user. Use this method to process and "
+"accept inputs on UI elements. See [method accept_event].\n"
+"[b]Example usage for clicking a control:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _gui_input(event):\n"
+" if event is InputEventMouseButton:\n"
+" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n"
+" print(\"I've been clicked D:\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _GuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseButton mb)\n"
+" {\n"
+" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n"
+" {\n"
+" GD.Print(\"I've been clicked D:\");\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The event won't trigger if:\n"
+"* clicking outside the control (see [method _has_point]);\n"
+"* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n"
+"* control is obstructed by another [Control] on top of it, which doesn't "
+"have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n"
+"* control's parent has [member mouse_filter] set to [constant "
+"MOUSE_FILTER_STOP] or has accepted the event;\n"
+"* it happens outside the parent's rectangle and the parent has either "
+"[member clip_contents] enabled.\n"
+"[b]Note:[/b] Event position is relative to the control origin."
+msgstr ""
+"由用户实现的虚方法。使用此方法处ç†å’ŒæŽ¥å— UI 元素上的输入。请å‚阅 [method "
+"accept_event]。\n"
+"[b]点击控件的用法示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _gui_input(event):\n"
+" if event is InputEventMouseButton:\n"
+" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n"
+" print(\"我已被点击 D:\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _GuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseButton mb)\n"
+" {\n"
+" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n"
+" {\n"
+" GD.Print(\"我已被点击 D:\");\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果出现以下情况,则ä¸ä¼šè§¦å‘该事件:\n"
+"* 在控件外点击(å‚阅[method _has_point]);\n"
+"* 控件将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE];\n"
+"* 控件被其上的å¦ä¸€ä¸ª [Control] 阻挡,该控件没有将 [member mouse_filter] 设置"
+"为 [constant MOUSE_FILTER_IGNORE];\n"
+"* 控件的父级已将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_STOP] 或"
+"已接å—该事件;\n"
+"* 它å‘生在父级的矩形之外,并且父级已å¯ç”¨ [member clip_contents]。\n"
+"[b]注æ„:[/b]事件ä½ç½®ç›¸å¯¹äºŽè¯¥æŽ§ä»¶åŽŸç‚¹ã€‚"
+
+msgid ""
+"Virtual method to be implemented by the user. Returns a [Control] node that "
+"should be used as a tooltip instead of the default one. The [param for_text] "
+"includes the contents of the [member tooltip_text] property.\n"
+"The returned node must be of type [Control] or Control-derived. It can have "
+"child nodes of any type. It is freed when the tooltip disappears, so make "
+"sure you always provide a new instance (if you want to use a pre-existing "
+"node from your scene tree, you can duplicate it and pass the duplicated "
+"instance). When [code]null[/code] or a non-Control node is returned, the "
+"default tooltip will be used instead.\n"
+"The returned node will be added as child to a [PopupPanel], so you should "
+"only provide the contents of that panel. That [PopupPanel] can be themed "
+"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] "
+"(see [member tooltip_text] for an example).\n"
+"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure "
+"it's fully visible, you might want to set its [member custom_minimum_size] "
+"to some non-zero value.\n"
+"[b]Note:[/b] The node (and any relevant children) should be [member "
+"CanvasItem.visible] when returned, otherwise, the viewport that instantiates "
+"it will not be able to calculate its minimum size reliably.\n"
+"[b]Example of usage with a custom-constructed node:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var label = Label.new()\n"
+" label.text = for_text\n"
+" return label\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Control _MakeCustomTooltip(string forText)\n"
+"{\n"
+" var label = new Label();\n"
+" label.Text = forText;\n"
+" return label;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Example of usage with a custom scene instance:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n"
+" tooltip.get_node(\"Label\").text = for_text\n"
+" return tooltip\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Control _MakeCustomTooltip(string forText)\n"
+"{\n"
+" Node tooltip = ResourceLoader.Load<PackedScene>(\"res://"
+"some_tooltip_scene.tscn\").Instantiate();\n"
+" tooltip.GetNode<Label>(\"Label\").Text = forText;\n"
+" return tooltip;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"由用户实现的虚方法。返回一个 [Control] 节点,该节点å–代默认节点以用作工具æ"
+"示。[param for_text] åŒ…å« [member tooltip_text] 属性的内容。\n"
+"返回的节点必须是 [Control] 类型或 Control 派生类型。它å¯ä»¥æœ‰ä»»ä½•ç±»åž‹çš„å­èŠ‚"
+"点。当工具æ示消失时它会被释放,因此请确ä¿æ‚¨å§‹ç»ˆæ供一个新实例(如果您想使用"
+"场景树中预先存在的节点,您å¯ä»¥å¤åˆ¶å®ƒå¹¶ä¼ é€’å¤åˆ¶çš„实例)。当返回 [code]null[/"
+"code] 或éžæŽ§åˆ¶èŠ‚点时,将使用默认的工具æ示。\n"
+"返回的节点将作为å­èŠ‚点添加到 [PopupPanel],因此您应该åªæ供该é¢æ¿çš„内容。该 "
+"[PopupPanel] å¯ä»¥ä½¿ç”¨ [method Theme.set_stylebox] 为类型 "
+"[code]\"TooltipPanel\"[/code] 设置主题(å‚è§ [member tooltip_text] 示例)。\n"
+"[b]注æ„:[/b]工具æ示会被缩å°åˆ°æœ€å°å¤§å°ã€‚如果您想确ä¿å®ƒå®Œå…¨å¯è§ï¼Œæ‚¨å¯èƒ½éœ€è¦å°†"
+"å…¶ [member custom_minimum_size] 设置为éžé›¶å€¼ã€‚\n"
+"[b]注æ„:[/b]返回时节点(和任何相关的å­èŠ‚点)应该是 [member CanvasItem."
+"visible],å¦åˆ™ï¼Œå®žä¾‹åŒ–它的视å£å°†æ— æ³•å¯é åœ°è®¡ç®—它的最å°å¤§å°ã€‚\n"
+"[b]自定义构造节点的用法示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var label = Label.new()\n"
+" label.text = for_text\n"
+" return label\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Control _MakeCustomTooltip(string forText)\n"
+"{\n"
+" var label = new Label();\n"
+" label.Text = forText;\n"
+" return label;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]自定义场景实例的使用示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _make_custom_tooltip(for_text):\n"
+" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n"
+" tooltip.get_node(\"Label\").text = for_text\n"
+" return tooltip\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Control _MakeCustomTooltip(string forText)\n"
+"{\n"
+" Node tooltip = ResourceLoader.Load<PackedScene>(\"res://"
+"some_tooltip_scene.tscn\").Instantiate();\n"
+" tooltip.GetNode<Label>(\"Label\").Text = forText;\n"
+" return tooltip;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Marks an input event as handled. Once you accept an input event, it stops "
"propagating, even to nodes listening to [method Node._unhandled_input] or "
"[method Node._unhandled_key_input]."
@@ -8034,6 +17855,87 @@ msgstr ""
"[method Node._unhandled_input] 和 [method Node._unhandled_key_input] 的节点。"
msgid ""
+"Creates a local override for a theme [Font] with the specified [param name]. "
+"Local overrides always take precedence when fetching theme items for the "
+"control. An override can be removed with [method "
+"remove_theme_font_override].\n"
+"See also [method get_theme_font]."
+msgstr ""
+"为具有指定 [param name] 的主题 [Font] 创建本地覆盖。在获å–控件的主题项时,本"
+"地覆盖始终优先。覆盖å¯ä»¥ä½¿ç”¨ [method remove_theme_font_override] 移除。\n"
+"å¦è§ [method get_theme_font]。"
+
+msgid ""
+"Creates a local override for a theme [StyleBox] with the specified [param "
+"name]. Local overrides always take precedence when fetching theme items for "
+"the control. An override can be removed with [method "
+"remove_theme_stylebox_override].\n"
+"See also [method get_theme_stylebox].\n"
+"[b]Example of modifying a property in a StyleBox by duplicating it:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# The snippet below assumes the child node MyButton has a StyleBoxFlat "
+"assigned.\n"
+"# Resources are shared across instances, so we need to duplicate it\n"
+"# to avoid modifying the appearance of all other buttons.\n"
+"var new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\")."
+"duplicate()\n"
+"new_stylebox_normal.border_width_top = 3\n"
+"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n"
+"$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n"
+"# Remove the stylebox override.\n"
+"$MyButton.remove_theme_stylebox_override(\"normal\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// The snippet below assumes the child node MyButton has a StyleBoxFlat "
+"assigned.\n"
+"// Resources are shared across instances, so we need to duplicate it\n"
+"// to avoid modifying the appearance of all other buttons.\n"
+"StyleBoxFlat newStyleboxNormal = GetNode<Button>(\"MyButton\")."
+"GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n"
+"newStyleboxNormal.BorderWidthTop = 3;\n"
+"newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n"
+"GetNode<Button>(\"MyButton\").AddThemeStyleboxOverride(\"normal\", "
+"newStyleboxNormal);\n"
+"// Remove the stylebox override.\n"
+"GetNode<Button>(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"使用指定的 [param name] 为主题 [StyleBox] 创建本地覆盖。在获å–控件的主题项"
+"时,本地覆盖始终优先。覆盖å¯ä»¥ä½¿ç”¨ [method remove_theme_stylebox_override] 移"
+"除。\n"
+"å¦è§ [method get_theme_stylebox]。\n"
+"[b]通过å¤åˆ¶æ¥ä¿®æ”¹ StyleBox 中的属性的示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 下é¢çš„代ç ç‰‡æ®µå‡è®¾å­èŠ‚点 MyButton 分é…了一个 StyleBoxFlat。\n"
+"# 资æºæ˜¯è·¨å®žä¾‹å…±äº«çš„,所以我们需è¦å¤åˆ¶å®ƒ\n"
+"# 以é¿å…修改所有其他按钮的外观。\n"
+"var new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\")."
+"duplicate()\n"
+"new_stylebox_normal.border_width_top = 3\n"
+"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n"
+"$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n"
+"# 移除样å¼ç›’覆盖。\n"
+"$MyButton.remove_theme_stylebox_override(\"normal\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 下é¢çš„代ç ç‰‡æ®µå‡è®¾å­èŠ‚点 MyButton 分é…了一个 StyleBoxFlat。\n"
+"// 资æºæ˜¯è·¨å®žä¾‹å…±äº«çš„,所以我们需è¦å¤åˆ¶å®ƒ\n"
+"// 以é¿å…修改所有其他按钮的外观。\n"
+"StyleBoxFlat newStyleboxNormal = GetNode<Button>(\"MyButton\")."
+"GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n"
+"newStyleboxNormal.BorderWidthTop = 3;\n"
+"newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n"
+"GetNode<Button>(\"MyButton\").AddThemeStyleboxOverride(\"normal\", "
+"newStyleboxNormal);\n"
+"// 移除样å¼ç›’覆盖。\n"
+"GetNode<Button>(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Finds the next (below in the tree) [Control] that can receive the focus."
msgstr "找到下一个å¯ä»¥æŽ¥å—焦点的 [Control],在树的下方。"
@@ -8053,12 +17955,262 @@ msgid "Returns the parent control node."
msgstr "返回父控制节点。"
msgid ""
+"Returns a [Color] from the first matching [Theme] in the tree if that "
+"[Theme] has a color item with the specified [param name] and [param "
+"theme_type]. If [param theme_type] is omitted the class name of the current "
+"control is used as the type, or [member theme_type_variation] if it is "
+"defined. If the type is a class name its parent classes are also checked, in "
+"order of inheritance. If the type is a variation its base types are checked, "
+"in order of dependency, then the control's class name and its parent classes "
+"are checked.\n"
+"For the current control its local overrides are considered first (see "
+"[method add_theme_color_override]), then its assigned [member theme]. After "
+"the current control, each parent control and its assigned [member theme] are "
+"considered; controls without a [member theme] assigned are skipped. If no "
+"matching [Theme] is found in the tree, the custom project [Theme] (see "
+"[member ProjectSettings.gui/theme/custom]) and the default [Theme] are used "
+"(see [ThemeDB]).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" # Get the font color defined for the current Control's class, if it "
+"exists.\n"
+" modulate = get_theme_color(\"font_color\")\n"
+" # Get the font color defined for the Button class.\n"
+" modulate = get_theme_color(\"font_color\", \"Button\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" // Get the font color defined for the current Control's class, if it "
+"exists.\n"
+" Modulate = GetThemeColor(\"font_color\");\n"
+" // Get the font color defined for the Button class.\n"
+" Modulate = GetThemeColor(\"font_color\", \"Button\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回 [Color],该 [Theme] 中应存在指定å称 [param "
+"name] 和主题类型 [param theme_type] 的颜色项。如果çœç•¥ [param theme_type] 则"
+"会使用当å‰æŽ§ä»¶çš„ç±»å,如果定义了 [member theme_type_variation] 则会优先使用。"
+"如果该类型为类å,则还会按照继承顺åºæ£€æŸ¥çˆ¶ç±»ã€‚如果该类型为å˜ç§ï¼Œåˆ™è¿˜ä¼šæŒ‰ç…§ä¾"
+"赖顺åºæ£€æŸ¥åŸºç¡€ç±»åž‹ï¼Œç„¶åŽå†æ£€æŸ¥è¯¥æŽ§ä»¶çš„ç±»ååŠå…¶çˆ¶ç±»ã€‚\n"
+"会首先考虑当å‰æŽ§ä»¶çš„æœ¬åœ°è¦†ç›–é¡¹ï¼ˆè§ [method add_theme_color_override]),然åŽ"
+"æ‰æ˜¯å…¶ [member theme]。å„个父控件åŠå…¶ [member theme] 在当å‰æŽ§ä»¶ä¹‹åŽè€ƒè™‘;会跳"
+"过没有 [member theme] 的控件。如果树中没有匹é…çš„ [Theme],则会使用自定义项目 "
+"[Theme]ï¼ˆè§ [member ProjectSettings.gui/theme/custom])和默认 [Theme]ï¼ˆè§ "
+"[ThemeDB])。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" # 获å–å½“å‰ Control 类中定义的字体颜色,å‰æ是存在。\n"
+" modulate = get_theme_color(\"font_color\")\n"
+" # èŽ·å– Button 类中定义的字体颜色。\n"
+" modulate = get_theme_color(\"font_color\", \"Button\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" // 获å–å½“å‰ Control 类中定义的字体颜色,å‰æ是存在。\n"
+" Modulate = GetThemeColor(\"font_color\");\n"
+" // èŽ·å– Button 类中定义的字体颜色。\n"
+" Modulate = GetThemeColor(\"font_color\", \"Button\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a constant from the first matching [Theme] in the tree if that "
+"[Theme] has a constant item with the specified [param name] and [param "
+"theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回常é‡ï¼Œè¯¥ [Theme] 中应存在指定å称 [param "
+"name] 和主题类型 [param theme_type] 的常é‡é¡¹ã€‚\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns the default base scale value from the first matching [Theme] in the "
+"tree if that [Theme] has a valid [member Theme.default_base_scale] value.\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回默认基础缩放值,该 [Theme] 中应存在有效的 "
+"[member Theme.default_base_scale] 值。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns the default font from the first matching [Theme] in the tree if that "
+"[Theme] has a valid [member Theme.default_font] value.\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回默认字体,该 [Theme] 中应存在有效的 [member "
+"Theme.default_font] 值。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns the default font size value from the first matching [Theme] in the "
+"tree if that [Theme] has a valid [member Theme.default_font_size] value.\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回默认字体大å°ï¼Œè¯¥ [Theme] 中应存在有效的 "
+"[member Theme.default_font_size] 值。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns a [Font] from the first matching [Theme] in the tree if that [Theme] "
+"has a font item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回 [Font],该 [Theme] 中应存在指定å称 [param "
+"name] 和主题类型 [param theme_type] 的字体项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns a font size from the first matching [Theme] in the tree if that "
+"[Theme] has a font size item with the specified [param name] and [param "
+"theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回字体大å°ï¼Œè¯¥ [Theme] 中应存在指定å称 [param "
+"name] 和主题类型 [param theme_type] 的字体大å°é¡¹ã€‚\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns an icon from the first matching [Theme] in the tree if that [Theme] "
+"has an icon item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回图标,该 [Theme] 中应存在指定å称 [param "
+"name] 和主题类型 [param theme_type] 的图标项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns a [StyleBox] from the first matching [Theme] in the tree if that "
+"[Theme] has a stylebox item with the specified [param name] and [param "
+"theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"从树中第一个匹é…çš„ [Theme] 返回 [StyleBox],该 [Theme] 中应存在指定å称 "
+"[param name] 和主题类型 [param theme_type] çš„æ ·å¼ç›’项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
"Returns [code]true[/code] if this is the current focused control. See "
"[member focus_mode]."
msgstr ""
"如果这是当å‰çš„焦点控件,则返回 [code]true[/code]ã€‚è§ [member focus_mode]。"
msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a color item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] 的颜色项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme [Color] "
+"with the specified [param name] in this [Control] node.\n"
+"See [method add_theme_color_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题 [Color] 本地覆盖项,"
+"则返回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_color_override]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a constant item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] 的常é‡é¡¹ã€‚\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme constant "
+"with the specified [param name] in this [Control] node.\n"
+"See [method add_theme_constant_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题常é‡æœ¬åœ°è¦†ç›–项,则返"
+"回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_constant_override]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a font item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] 的字体项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme [Font] "
+"with the specified [param name] in this [Control] node.\n"
+"See [method add_theme_font_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题 [Font] 本地覆盖项,则"
+"返回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_font_override]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a font size item with the specified [param name] and [param "
+"theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] 的字体大å°é¡¹ã€‚\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme font size "
+"with the specified [param name] in this [Control] node.\n"
+"See [method add_theme_font_size_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题字体大å°æœ¬åœ°è¦†ç›–项,则"
+"返回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_font_size_override]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has an icon item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] 的图标项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme icon with "
+"the specified [param name] in this [Control] node.\n"
+"See [method add_theme_icon_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题图标本地覆盖项,则返"
+"回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_icon_override]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a matching [Theme] in the tree that "
+"has a stylebox item with the specified [param name] and [param theme_type].\n"
+"See [method get_theme_color] for details."
+msgstr ""
+"如果树中存在匹é…çš„ [Theme] 则返回 [code]true[/code],该 [Theme] 中应存在指定"
+"å称 [param name] 和主题类型 [param theme_type] çš„æ ·å¼ç›’项。\n"
+"详情请å‚阅 [method get_theme_color]。"
+
+msgid ""
+"Returns [code]true[/code] if there is a local override for a theme "
+"[StyleBox] with the specified [param name] in this [Control] node.\n"
+"See [method add_theme_stylebox_override]."
+msgstr ""
+"如果该 [Control] 节点中存在å为指定 [param name] 的主题 [StyleBox] 本地覆盖"
+"项,则返回 [code]true[/code]。\n"
+"详情请å‚阅 [method add_theme_stylebox_override]。"
+
+msgid ""
"Returns [code]true[/code] if a drag operation is successful. Alternative to "
"[method Viewport.gui_is_drag_successful].\n"
"Best used with [constant Node.NOTIFICATION_DRAG_END]."
@@ -8067,6 +18219,91 @@ msgstr ""
"gui_is_drag_successful] 的替代方案。\n"
"建议与 [constant Node.NOTIFICATION_DRAG_END] é…åˆä½¿ç”¨ã€‚"
+msgid "Returns [code]true[/code] if layout is right-to-left."
+msgstr "如果布局是从å³è‡³å·¦çš„,则返回 [code]true[/code]。"
+
+msgid "Give up the focus. No other control will be able to receive input."
+msgstr "放弃焦点。ä¸ä¼šè®©å…¶ä»–控件能够接收键盘输入。"
+
+msgid ""
+"Removes a local override for a theme [Color] with the specified [param name] "
+"previously added by [method add_theme_color_override] or via the Inspector "
+"dock."
+msgstr ""
+"移除å为指定 [param name] 的主题 [Color] 本地覆盖项,该覆盖项由 [method "
+"add_theme_color_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Removes a local override for a theme constant with the specified [param "
+"name] previously added by [method add_theme_constant_override] or via the "
+"Inspector dock."
+msgstr ""
+"移除å为指定 [param name] 的主题常é‡æœ¬åœ°è¦†ç›–项,该覆盖项由 [method "
+"add_theme_constant_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Removes a local override for a theme [Font] with the specified [param name] "
+"previously added by [method add_theme_font_override] or via the Inspector "
+"dock."
+msgstr ""
+"移除å为指定 [param name] 的主题 [Font] 本地覆盖项,该覆盖项由 [method "
+"add_theme_font_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Removes a local override for a theme font size with the specified [param "
+"name] previously added by [method add_theme_font_size_override] or via the "
+"Inspector dock."
+msgstr ""
+"移除å为指定 [param name] 的主题字体大å°æœ¬åœ°è¦†ç›–项,该覆盖项由 [method "
+"add_theme_font_size_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Removes a local override for a theme icon with the specified [param name] "
+"previously added by [method add_theme_icon_override] or via the Inspector "
+"dock."
+msgstr ""
+"移除å为指定 [param name] 的主题图标本地覆盖项,该覆盖项由 [method "
+"add_theme_icon_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Removes a local override for a theme [StyleBox] with the specified [param "
+"name] previously added by [method add_theme_stylebox_override] or via the "
+"Inspector dock."
+msgstr ""
+"移除å为指定 [param name] 的主题 [StyleBox] 本地覆盖项,该覆盖项由 [method "
+"add_theme_stylebox_override] 或检查器é¢æ¿æ·»åŠ çš„。"
+
+msgid ""
+"Moves the mouse cursor to [param position], relative to [member position] of "
+"this [Control].\n"
+"[b]Note:[/b] [method warp_mouse] is only supported on Windows, macOS and "
+"Linux. It has no effect on Android, iOS and Web."
+msgstr ""
+"将鼠标光标移动到 [param position],相对于该 [Control] 的 [member "
+"position]。\n"
+"[b]注æ„:[/b][method warp_mouse] 仅在 Windowsã€macOS å’Œ Linux 上å—支æŒã€‚它在 "
+"Androidã€iOS å’Œ Web 上没有效果。"
+
+msgid ""
+"Toggles if any text should automatically change to its translated version "
+"depending on the current locale. Note that this will not affect any internal "
+"nodes (e.g. the popup of a [MenuButton]).\n"
+"Also decides if the node's strings should be parsed for POT generation."
+msgstr ""
+"切æ¢æ˜¯å¦æ‰€æœ‰æ–‡æœ¬éƒ½åº”该根æ®å½“å‰åŒºåŸŸè®¾ç½®è‡ªåŠ¨å˜ä¸ºç¿»è¯‘åŽçš„版本。请注æ„,内部节点"
+"ä¸å—å½±å“(例如 [MenuButton] 的弹出内容)。\n"
+"è¿˜ä¼šå†³å®šç”Ÿæˆ POT 时是å¦åº”解æžè¯¥èŠ‚点中的字符串。"
+
+msgid ""
+"Enables whether rendering of [CanvasItem] based children should be clipped "
+"to this control's rectangle. If [code]true[/code], parts of a child which "
+"would be visibly outside of this control's rectangle will not be rendered "
+"and won't receive input."
+msgstr ""
+"渲染基于 [CanvasItem] çš„å­èŠ‚点时,是å¦åº”剪è£åˆ°è¯¥æŽ§ä»¶çš„矩形中。如果为 "
+"[code]true[/code],则å­èŠ‚点显示在该控件的矩形范围之外的部分,ä¸ä¼šæ¸²æŸ“,也ä¸ä¼š"
+"接收输入。"
+
msgid ""
"The minimum size of the node's bounding rectangle. If you set it to a value "
"greater than (0, 0), the node's bounding rectangle will always have at least "
@@ -8078,6 +18315,83 @@ msgstr ""
"其内容,无论是纹ç†è¿˜æ˜¯å­èŠ‚点。"
msgid ""
+"Tells Godot which node it should give focus to if the user presses the down "
+"arrow on the keyboard or down on a gamepad by default. You can change the "
+"key by editing the [member ProjectSettings.input/ui_down] input action. The "
+"node must be a [Control]. If this property is not set, Godot will give focus "
+"to the closest [Control] to the bottom of this one."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的å‘下箭头或游æˆæ‰‹æŸ„上的å‘下键时,应"
+"将焦点交给哪个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_down] çš„"
+"输入动作æ¥æ›´æ”¹æŒ‰é”®ã€‚该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦"
+"点交给与该控件底部最接近的 [Control]。"
+
+msgid ""
+"Tells Godot which node it should give focus to if the user presses the left "
+"arrow on the keyboard or left on a gamepad by default. You can change the "
+"key by editing the [member ProjectSettings.input/ui_left] input action. The "
+"node must be a [Control]. If this property is not set, Godot will give focus "
+"to the closest [Control] to the left of this one."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的å‘左箭头或游æˆæ‰‹æŸ„上的å‘左键时,应"
+"将焦点交给哪个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_left] çš„"
+"输入动作æ¥æ›´æ”¹æŒ‰é”®ã€‚该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦"
+"点交给与该控件左侧最接近的 [Control]。"
+
+msgid ""
+"Tells Godot which node it should give focus to if the user presses the right "
+"arrow on the keyboard or right on a gamepad by default. You can change the "
+"key by editing the [member ProjectSettings.input/ui_right] input action. The "
+"node must be a [Control]. If this property is not set, Godot will give focus "
+"to the closest [Control] to the bottom of this one."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的å‘å³ç®­å¤´æˆ–游æˆæ‰‹æŸ„上的å‘å³é”®æ—¶ï¼Œåº”"
+"将焦点交给哪个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_right] çš„"
+"输入动作æ¥æ›´æ”¹æŒ‰é”®ã€‚该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦"
+"点交给与该控件å³ä¾§æœ€æŽ¥è¿‘çš„ [Control]。"
+
+msgid ""
+"Tells Godot which node it should give focus to if the user presses the top "
+"arrow on the keyboard or top on a gamepad by default. You can change the key "
+"by editing the [member ProjectSettings.input/ui_up] input action. The node "
+"must be a [Control]. If this property is not set, Godot will give focus to "
+"the closest [Control] to the bottom of this one."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的å‘上箭头或游æˆæ‰‹æŸ„上的å‘上键时,应"
+"将焦点交给哪个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_up] 的输"
+"入动作æ¥æ›´æ”¹æŒ‰é”®ã€‚该节点必须为 [Control]。如果未设置此属性,则 Godot 会将焦点"
+"交给与该控件顶部最接近的 [Control]。"
+
+msgid ""
+"Tells Godot which node it should give focus to if the user presses [kbd]Tab[/"
+"kbd] on a keyboard by default. You can change the key by editing the [member "
+"ProjectSettings.input/ui_focus_next] input action.\n"
+"If this property is not set, Godot will select a \"best guess\" based on "
+"surrounding nodes in the scene tree."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的 [kbd]Tab[/kbd] 时,应将焦点交给哪"
+"个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_focus_next] 的输入动"
+"作æ¥æ›´æ”¹æŒ‰é”®ã€‚\n"
+"如果未设置此属性,则 Godot 会将根æ®åœºæ™¯æ ‘中的附近节点选择一个“最佳猜测â€ã€‚"
+
+msgid ""
+"Tells Godot which node it should give focus to if the user presses "
+"[kbd]Shift + Tab[/kbd] on a keyboard by default. You can change the key by "
+"editing the [member ProjectSettings.input/ui_focus_prev] input action.\n"
+"If this property is not set, Godot will select a \"best guess\" based on "
+"surrounding nodes in the scene tree."
+msgstr ""
+"告诉 Godot 在默认情况下,当用户按下键盘上的 [kbd]Shift + Tab[/kbd] 时,应将焦"
+"点交给哪个节点。你å¯ä»¥é€šè¿‡ç¼–辑 [member ProjectSettings.input/ui_focus_prev] "
+"的输入动作æ¥æ›´æ”¹æŒ‰é”®ã€‚\n"
+"如果未设置此属性,则 Godot 会将根æ®åœºæ™¯æ ‘中的附近节点选择一个“最佳猜测â€ã€‚"
+
+msgid ""
+"The node's global position, relative to the world (usually to the "
+"[CanvasLayer])."
+msgstr "该节点的全局ä½ç½®ï¼Œç›¸å¯¹äºŽä¸–界(通常为 [CanvasLayer])。"
+
+msgid ""
"Controls the direction on the horizontal axis in which the control should "
"grow if its horizontal minimum size is changed to be greater than its "
"current size, as the control always has to be at least the minimum size."
@@ -8094,6 +18408,26 @@ msgstr ""
"沿该方å‘增大,因为控件始终必须至少为最å°å°ºå¯¸ã€‚"
msgid ""
+"Controls layout direction and text writing direction. Right-to-left layouts "
+"are necessary for certain languages (e.g. Arabic and Hebrew)."
+msgstr ""
+"控制布局方å‘和文本书写方å‘。æŸäº›è¯­è¨€éœ€è¦ä»Žå³è‡³å·¦çš„布局(例如阿拉伯语和希伯æ¥"
+"语)。"
+
+msgid ""
+"If [code]true[/code], automatically converts code line numbers, list "
+"indices, [SpinBox] and [ProgressBar] values from the Western Arabic (0..9) "
+"to the numeral systems used in current locale.\n"
+"[b]Note:[/b] Numbers within the text are not automatically converted, it can "
+"be done manually, using [method TextServer.format_number]."
+msgstr ""
+"如果为 [code]true[/code],则会自动将代ç è¡Œå·ã€åˆ—表索引å·ã€[SpinBox] å’Œ "
+"[ProgressBar] 的值,从阿拉伯数字(0..9)转æ¢ä¸ºå½“å‰åŒºåŸŸè®¾ç½®æ‰€ä½¿ç”¨çš„è®°æ•°ç³»"
+"统。\n"
+"[b]注æ„:[/b]ä¸ä¼šè‡ªåŠ¨è½¬æ¢æ–‡æœ¬ä¸­çš„数字,å¯ä»¥ä½¿ç”¨ [method TextServer."
+"format_number] 手动转æ¢ã€‚"
+
+msgid ""
"The default cursor shape for this control. Useful for Godot plugins and "
"applications or games that use the system's mouse cursors.\n"
"[b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the "
@@ -8114,6 +18448,90 @@ msgstr ""
"ä¿¡å·ã€‚å‚阅常é‡æ¥äº†è§£æ¯ä¸ªå¸¸é‡çš„作用。"
msgid ""
+"Distance between the node's bottom edge and its parent control, based on "
+"[member anchor_bottom].\n"
+"Offsets are often controlled by one or multiple parent [Container] nodes, so "
+"you should not modify them manually if your node is a direct child of a "
+"[Container]. Offsets update automatically when you move or resize the node."
+msgstr ""
+"该节点底部边缘与其父控件之间的è·ç¦»ï¼ŒåŸºäºŽ [member anchor_bottom]。\n"
+"å移é‡é€šå¸¸ç”±ä¸€ä¸ªæˆ–多个父 [Container] 节点控制,因此如果你的节点是 "
+"[Container] 的直接å­èŠ‚点,则ä¸åº”进行手动修改。移动节点或调整节点大å°æ—¶ï¼Œå移"
+"é‡ä¼šè‡ªåŠ¨æ›´æ–°ã€‚"
+
+msgid ""
+"Distance between the node's left edge and its parent control, based on "
+"[member anchor_left].\n"
+"Offsets are often controlled by one or multiple parent [Container] nodes, so "
+"you should not modify them manually if your node is a direct child of a "
+"[Container]. Offsets update automatically when you move or resize the node."
+msgstr ""
+"该节点左侧边缘与其父控件之间的è·ç¦»ï¼ŒåŸºäºŽ [member anchor_left]。\n"
+"å移é‡é€šå¸¸ç”±ä¸€ä¸ªæˆ–多个父 [Container] 节点控制,因此如果你的节点是 "
+"[Container] 的直接å­èŠ‚点,则ä¸åº”进行手动修改。移动节点或调整节点大å°æ—¶ï¼Œå移"
+"é‡ä¼šè‡ªåŠ¨æ›´æ–°ã€‚"
+
+msgid ""
+"Distance between the node's right edge and its parent control, based on "
+"[member anchor_right].\n"
+"Offsets are often controlled by one or multiple parent [Container] nodes, so "
+"you should not modify them manually if your node is a direct child of a "
+"[Container]. Offsets update automatically when you move or resize the node."
+msgstr ""
+"该节点å³ä¾§è¾¹ç¼˜ä¸Žå…¶çˆ¶æŽ§ä»¶ä¹‹é—´çš„è·ç¦»ï¼ŒåŸºäºŽ [member anchor_right]。\n"
+"å移é‡é€šå¸¸ç”±ä¸€ä¸ªæˆ–多个父 [Container] 节点控制,因此如果你的节点是 "
+"[Container] 的直接å­èŠ‚点,则ä¸åº”进行手动修改。移动节点或调整节点大å°æ—¶ï¼Œå移"
+"é‡ä¼šè‡ªåŠ¨æ›´æ–°ã€‚"
+
+msgid ""
+"Distance between the node's top edge and its parent control, based on "
+"[member anchor_top].\n"
+"Offsets are often controlled by one or multiple parent [Container] nodes, so "
+"you should not modify them manually if your node is a direct child of a "
+"[Container]. Offsets update automatically when you move or resize the node."
+msgstr ""
+"该节点顶部边缘与其父控件之间的è·ç¦»ï¼ŒåŸºäºŽ [member anchor_top]。\n"
+"å移é‡é€šå¸¸ç”±ä¸€ä¸ªæˆ–多个父 [Container] 节点控制,因此如果你的节点是 "
+"[Container] 的直接å­èŠ‚点,则ä¸åº”进行手动修改。移动节点或调整节点大å°æ—¶ï¼Œå移"
+"é‡ä¼šè‡ªåŠ¨æ›´æ–°ã€‚"
+
+msgid ""
+"By default, the node's pivot is its top-left corner. When you change its "
+"[member rotation] or [member scale], it will rotate or scale around this "
+"pivot. Set this property to [member size] / 2 to pivot around the Control's "
+"center."
+msgstr ""
+"默认情况下,该节点的轴心ä½äºŽå·¦ä¸Šè§’。更改 [member rotation] 或 [member scale] "
+"时,将围绕该轴心进行旋转或缩放。如果将该属性设置为 [member size] / 2,则围绕"
+"的是该控件的中心点。"
+
+msgid ""
+"The node's position, relative to its containing node. It corresponds to the "
+"rectangle's top-left corner. The property is not affected by [member "
+"pivot_offset]."
+msgstr ""
+"该节点的ä½ç½®ï¼Œç›¸å¯¹äºŽçˆ¶èŠ‚点。对应的是矩形的左上角。该属性ä¸å— [member "
+"pivot_offset] çš„å½±å“。"
+
+msgid ""
+"The node's rotation around its pivot, in radians. See [member pivot_offset] "
+"to change the pivot's position."
+msgstr ""
+"该节点围绕其轴心的旋转,å•ä½ä¸ºå¼§åº¦ã€‚更改轴心的ä½ç½®è¯·å‚阅 [member "
+"pivot_offset]。"
+
+msgid ""
+"Helper property to access [member rotation] in degrees instead of radians."
+msgstr "辅助属性,用于按度数访问 [member rotation] 而ä¸æ˜¯å¼§åº¦æ•°ã€‚"
+
+msgid ""
+"The size of the node's bounding rectangle, in the node's coordinate system. "
+"[Container] nodes update this property automatically."
+msgstr ""
+"该节点的边界矩形的大å°ï¼Œä½¿ç”¨è¯¥èŠ‚点的å标系。[Container] 节点会自动更新此属"
+"性。"
+
+msgid ""
"Tells the parent [Container] nodes how they should resize and place the node "
"on the X axis. Use one of the [enum SizeFlags] constants to change the "
"flags. See the constants to learn what each does."
@@ -8129,6 +18547,83 @@ msgstr ""
"告诉父 [Container] 节点应如何调整尺寸并将其放置在 X 轴上。使用 [enum "
"SizeFlags] 常é‡ä¹‹ä¸€æ›´æ”¹æ ‡å¿—。查看常é‡ä»¥äº†è§£æ¯ä¸ªå¸¸é‡çš„作用。"
+msgid ""
+"The [Theme] resource this node and all its [Control] and [Window] children "
+"use. If a child node has its own [Theme] resource set, theme items are "
+"merged with child's definitions having higher priority.\n"
+"[b]Note:[/b] [Window] styles will have no effect unless the window is "
+"embedded."
+msgstr ""
+"该节点åŠå…¶å­ [Control] å’Œ [Window] 所使用的 [Theme] 资æºã€‚如果å­èŠ‚点也设置了 "
+"[Theme] 资æºï¼Œåˆ™ä¼šåˆå¹¶ä¸»é¢˜é¡¹ï¼Œå­èŠ‚点的定义优先级更高。\n"
+"[b]注æ„:[/b]é™¤éž [Window] 为嵌入å¼ï¼Œå¦åˆ™çª—å£æ ·å¼æ— æ•ˆã€‚"
+
+msgid ""
+"The default tooltip text. The tooltip appears when the user's mouse cursor "
+"stays idle over this control for a few moments, provided that the [member "
+"mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. The time "
+"required for the tooltip to appear can be changed with the [member "
+"ProjectSettings.gui/timers/tooltip_delay_sec] option. See also [method "
+"get_tooltip].\n"
+"The tooltip popup will use either a default implementation, or a custom one "
+"that you can provide by overriding [method _make_custom_tooltip]. The "
+"default tooltip includes a [PopupPanel] and [Label] whose theme properties "
+"can be customized using [Theme] methods with the [code]\"TooltipPanel\"[/"
+"code] and [code]\"TooltipLabel\"[/code] respectively. For example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var style_box = StyleBoxFlat.new()\n"
+"style_box.set_bg_color(Color(1, 1, 0))\n"
+"style_box.set_border_width_all(2)\n"
+"# We assume here that the `theme` property has been assigned a custom Theme "
+"beforehand.\n"
+"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n"
+"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var styleBox = new StyleBoxFlat();\n"
+"styleBox.SetBgColor(new Color(1, 1, 0));\n"
+"styleBox.SetBorderWidthAll(2);\n"
+"// We assume here that the `Theme` property has been assigned a custom Theme "
+"beforehand.\n"
+"Theme.SetStyleBox(\"panel\", \"TooltipPanel\", styleBox);\n"
+"Theme.SetColor(\"font_color\", \"TooltipLabel\", new Color(0, 1, 1));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"默认工具æ示文本。如果 [member mouse_filter] 属性ä¸æ˜¯ [constant "
+"MOUSE_FILTER_IGNORE],则当用户的鼠标光标在此控件上åœç•™ç‰‡åˆ»æ—¶ï¼Œå°†å‡ºçŽ°å·¥å…·æ"
+"示。å¯ä»¥ä½¿ç”¨ [member ProjectSettings.gui/timers/tooltip_delay_sec] 选项更改工"
+"å…·æ示出现所需的时间。å¦è§ [method get_tooltip]。\n"
+"工具æ示弹出窗å£å°†ä½¿ç”¨é»˜è®¤å®žçŽ°ï¼Œæˆ–者使用通过覆盖 [method "
+"_make_custom_tooltip] æ供的自定义实现。默认工具æ示包括一个 [PopupPanel] å’Œ "
+"[Label],其主题属性å¯ä»¥ä½¿ç”¨ [Theme] 方法分别对 [code]\"TooltipPanel\"[/code] "
+"和 [code]\"TooltipLabel\"[/code] 进行自定义。例如:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var style_box = StyleBoxFlat.new()\n"
+"style_box.set_bg_color(Color(1, 1, 0))\n"
+"style_box.set_border_width_all(2)\n"
+"# 我们在这里å‡è®¾`Theme`属性已ç»è¢«äº‹å…ˆåˆ†é…了一个自定义的主题。\n"
+"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n"
+"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var styleBox = new StyleBoxFlat();\n"
+"styleBox.SetBgColor(new Color(1, 1, 0));\n"
+"styleBox.SetBorderWidthAll(2);\n"
+"// 我们在这里å‡è®¾`Theme`属性已ç»è¢«äº‹å…ˆåˆ†é…了一个自定义的主题。\n"
+"Theme.SetStyleBox(\"panel\", \"TooltipPanel\", styleBox);\n"
+"Theme.SetColor(\"font_color\", \"TooltipLabel\", new Color(0, 1, 1));\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "Emitted when the node gains focus."
+msgstr "当该节点获得焦点时å‘出。"
+
+msgid "Emitted when the node loses focus."
+msgstr "当该节点失去焦点时å‘出。"
+
msgid "Emitted when the node receives an [InputEvent]."
msgstr "当节点收到 [InputEvent] æ—¶å‘出。"
@@ -8188,6 +18683,9 @@ msgid ""
"scrolled."
msgstr "当此节点在已åœæ­¢æ»šåŠ¨çš„ [ScrollContainer] 内部时å‘é€ã€‚"
+msgid "Sent when control layout direction is changed."
+msgstr "当控件的布局方å‘改å˜æ—¶å‘é€ã€‚"
+
msgid ""
"Show the system's arrow mouse cursor when the user hovers the node. Use with "
"[member mouse_default_cursor_shape]."
@@ -8467,6 +18965,29 @@ msgstr ""
"[code]anchor_*[/code] æˆå‘˜å˜é‡ä¸­ä½¿ç”¨ï¼Œä¾‹å¦‚ [member anchor_left]。è¦ä¸€æ¬¡æ›´æ”¹å…¨"
"部 4 个锚点,请使用 [method set_anchors_preset]。"
+msgid "Left-to-right layout direction."
+msgstr "从左至å³çš„布局方å‘。"
+
+msgid "Right-to-left layout direction."
+msgstr "从å³è‡³å·¦çš„布局方å‘。"
+
+msgid "Text writing direction is the same as layout direction."
+msgstr "文字书写方å‘与布局方å‘相åŒã€‚"
+
+msgid ""
+"Automatic text writing direction, determined from the current locale and "
+"text content."
+msgstr "自动文本书写方å‘,根æ®å½“å‰åŒºåŸŸè®¾ç½®å’Œæ–‡æœ¬å†…容确定。"
+
+msgid "Left-to-right text writing direction."
+msgstr "从左至å³çš„文本书写方å‘。"
+
+msgid "Right-to-left text writing direction."
+msgstr "从å³è‡³å·¦çš„文本书写方å‘。"
+
+msgid "Convex polygon shape resource for 2D physics."
+msgstr "凸多边形形状资æºï¼Œç”¨äºŽ 2D 物ç†ã€‚"
+
msgid ""
"The polygon's list of vertices. Can be in either clockwise or "
"counterclockwise order. Only set this property with convex hull points, use "
@@ -8488,24 +19009,63 @@ msgstr "ç²’å­ç³»ç»Ÿï¼ˆ2D)"
msgid "Returns the [Curve] of the parameter specified by [enum Parameter]."
msgstr "返回由 [enum Parameter] 指定的å‚æ•°çš„ [Curve]。"
+msgid "Returns the maximum value range for the given parameter."
+msgstr "返回给定å‚数的最大值范围。"
+
+msgid "Returns the minimum value range for the given parameter."
+msgstr "返回给定å‚数的最å°å€¼èŒƒå›´ã€‚"
+
msgid "Restarts the particle emitter."
msgstr "é‡æ–°å¯åŠ¨ç²’å­å‘射器。"
msgid "Sets the [Curve] of the parameter specified by [enum Parameter]."
msgstr "设置 [enum Parameter] 指定的å‚æ•°çš„ [Curve]。"
+msgid "Sets the maximum value for the given parameter."
+msgstr "设置给定å‚数的最大值。"
+
+msgid "Sets the minimum value for the given parameter."
+msgstr "设置给定å‚数的最å°å€¼ã€‚"
+
+msgid ""
+"Enables or disables the given flag (see [enum ParticleFlags] for options)."
+msgstr "å¯ç”¨æˆ–ç¦ç”¨ç»™å®šçš„æ ‡å¿—ï¼ˆé€‰é¡¹è§ [enum ParticleFlags])。"
+
+msgid "Number of particles emitted in one emission cycle."
+msgstr "一个å‘射周期中å‘å°„çš„ç²’å­æ•°ã€‚"
+
msgid "Each particle's rotation will be animated along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„旋转将沿此 [Curve] 进行动画处ç†ã€‚"
+msgid "Maximum initial rotation applied to each particle, in degrees."
+msgstr "应用于æ¯ä¸ªç²’å­çš„最大åˆå§‹æ—‹è½¬ï¼ˆå•ä½ä¸ºåº¦ï¼‰ã€‚"
+
+msgid "Minimum equivalent of [member angle_max]."
+msgstr "[member angle_max] 的对应最å°å€¼ã€‚"
+
msgid "Each particle's angular velocity will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„角速度将沿此 [Curve] å˜åŒ–。"
+msgid ""
+"Maximum initial angular velocity (rotation speed) applied to each particle "
+"in [i]degrees[/i] per second."
+msgstr "应用于æ¯ä¸ªç²’å­çš„最大åˆå§‹è§’速度(旋转速度),å•ä½ä¸º[i]度[/i]æ¯ç§’。"
+
+msgid "Minimum equivalent of [member angular_velocity_max]."
+msgstr "[member angular_velocity_max] 的对应最å°å€¼ã€‚"
+
msgid "Each particle's animation offset will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„动画å移将沿此 [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member anim_offset_max]."
+msgstr "[member anim_offset_max] 的对应最å°å€¼ã€‚"
+
msgid "Each particle's animation speed will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„动画速度将沿此 [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member anim_speed_max]."
+msgstr "[member anim_speed_max] 的对应最å°å€¼ã€‚"
+
msgid ""
"Each particle's initial color. If [member texture] is defined, it will be "
"multiplied by this color."
@@ -8519,6 +19079,9 @@ msgstr "æ¯ä¸ªç²’å­çš„颜色将éšç€è¿™ä¸ª [Gradient] å˜åŒ–(与 [member col
msgid "Damping will vary along this [Curve]."
msgstr "阻尼将沿ç€è¿™æ¡ [Gradient] å˜åŒ–。"
+msgid "Minimum equivalent of [member damping_max]."
+msgstr "[member damping_max] 的对应最å°å€¼ã€‚"
+
msgid "Unit vector specifying the particles' emission direction."
msgstr "指定粒å­å‘å°„æ–¹å‘çš„å•ä½å‘é‡ã€‚"
@@ -8587,12 +19150,24 @@ msgstr "é‡åŠ›ä½œç”¨äºŽæ¯ä¸ªç²’å­ã€‚"
msgid "Each particle's hue will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„色相都将éšä¹‹å˜åŒ–。"
+msgid "Minimum equivalent of [member hue_variation_max]."
+msgstr "[member hue_variation_max] 对应的最å°å€¼ã€‚"
+
+msgid "Minimum equivalent of [member initial_velocity_max]."
+msgstr "[member initial_velocity_max] 的对应最å°å€¼ã€‚"
+
+msgid "Amount of time each particle will exist."
+msgstr "æ¯ä¸ªç²’å­å­˜åœ¨çš„时间。"
+
msgid "Particle lifetime randomness ratio."
msgstr "ç²’å­å¯¿å‘½éšæœºçŽ‡ã€‚"
msgid "Each particle's linear acceleration will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„线性加速度将沿此 [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member linear_accel_max]."
+msgstr "[member linear_accel_max] 的对应最å°å€¼ã€‚"
+
msgid ""
"If [code]true[/code], only one emission cycle occurs. If set [code]true[/"
"code] during a cycle, emission will stop at the cycle's end."
@@ -8603,6 +19178,9 @@ msgstr ""
msgid "Each particle's orbital velocity will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„轨é“速度将跟éšè¿™ä¸ª [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member orbit_velocity_max]."
+msgstr "[member orbit_velocity_max] 的对应最å°å€¼ã€‚"
+
msgid "Align Y axis of particle with the direction of its velocity."
msgstr "将粒å­çš„ Y 轴与其速度方å‘对é½ã€‚"
@@ -8612,16 +19190,39 @@ msgstr "ç²’å­ç³»ç»Ÿå¯åŠ¨æ—¶å°±å¥½åƒå·²ç»è¿è¡Œäº†è¿™ä¹ˆå¤šç§’一样。"
msgid "Each particle's radial acceleration will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„径å‘加速度将跟éšè¿™ä¸ª [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member radial_accel_max]."
+msgstr "[member radial_accel_max] 的对应最å°å€¼ã€‚"
+
msgid "Emission lifetime randomness ratio."
msgstr "å‘射寿命éšæœºçŽ‡ã€‚"
msgid "Each particle's scale will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„缩放将跟éšè¿™ä¸ª [Curve] å˜åŒ–。"
+msgid "Maximum initial scale applied to each particle."
+msgstr "应用于æ¯ä¸ªç²’å­çš„最大åˆå§‹ç¼©æ”¾ã€‚"
+
+msgid "Minimum equivalent of [member scale_amount_max]."
+msgstr "[member scale_amount_max] 的对应最å°å€¼ã€‚"
+
+msgid ""
+"Each particle's horizontal scale will vary along this [Curve].\n"
+"[member split_scale] must be enabled."
+msgstr ""
+"æ¯ä¸ªç²’å­çš„水平比例都会沿ç€è¿™æ¡ [Curve] å˜åŒ–。\n"
+"å¿…é¡»å¯ç”¨ [member split_scale]。"
+
+msgid ""
+"Each particle's vertical scale will vary along this [Curve].\n"
+"[member split_scale] must be enabled."
+msgstr ""
+"æ¯ä¸ªç²’å­çš„垂直比例都会沿ç€è¿™æ¡ [Curve] å˜åŒ–。\n"
+"å¿…é¡»å¯ç”¨ [member split_scale]。"
+
msgid ""
"Particle system's running speed scaling ratio. A value of [code]0[/code] can "
"be used to pause the particles."
-msgstr "ç²’å­ç³»ç»Ÿçš„è¿è¡Œé€Ÿåº¦ç¼©æ”¾æ¯”例。将值设为 [code]0[/code] å¯ç”¨äºŽæš‚åœç²’å­ã€‚"
+msgstr "ç²’å­ç³»ç»Ÿçš„è¿è¡Œé€Ÿåº¦ç¼©æ”¾æ¯”例。[code]0[/code]值å¯ç”¨äºŽæš‚åœç²’å­ã€‚"
msgid ""
"Each particle's initial direction range from [code]+spread[/code] to [code]-"
@@ -8632,6 +19233,9 @@ msgstr ""
msgid "Each particle's tangential acceleration will vary along this [Curve]."
msgstr "æ¯ä¸ªç²’å­çš„切å‘加速度将跟éšè¿™ä¸ª [Curve] å˜åŒ–。"
+msgid "Minimum equivalent of [member tangential_accel_max]."
+msgstr "[member tangential_accel_max] 的对应最å°å€¼ã€‚"
+
msgid "Particle texture. If [code]null[/code], particles will be squares."
msgstr "ç²’å­çº¹ç†ã€‚如果为 [code]null[/code],则粒å­å°†ä¸ºæ­£æ–¹å½¢ã€‚"
@@ -8641,12 +19245,104 @@ msgstr "ç²’å­æŒ‰å‘射顺åºç»˜åˆ¶ã€‚"
msgid "Particles are drawn in order of remaining lifetime."
msgstr "按照剩余寿命的顺åºç»˜åˆ¶ç²’å­ã€‚"
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set initial velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置åˆå§‹é€Ÿåº¦å±žæ€§ã€‚"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set angular velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置角速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set orbital velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置轨é“速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set linear acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置线性加速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set radial acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置径å‘加速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set tangential acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置切å‘加速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set damping properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置阻尼属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set angle properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置角度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set scale properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置缩放属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set hue variation properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置色相å˜åŒ–属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set animation speed properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置动画速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_curve] to set animation offset properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max]ã€[method set_param_curve] "
+"一起使用,设置动画å移属性。"
+
msgid "Represents the size of the [enum Parameter] enum."
-msgstr "表示 [enum Parameter] 枚举的大å°ã€‚"
+msgstr "代表 [enum Parameter] 枚举的大å°ã€‚"
+
+msgid ""
+"Use with [method set_particle_flag] to set [member particle_flag_align_y]."
+msgstr ""
+"与 [method set_particle_flag] 一起使用,设置 [member particle_flag_align_y]。"
msgid "Present for consistency with 3D particle nodes, not used in 2D."
msgstr "为了与 3D ç²’å­èŠ‚点ä¿æŒä¸€è‡´è€Œå­˜åœ¨ï¼Œåœ¨ 2D 中ä¸ä½¿ç”¨ã€‚"
+msgid "Represents the size of the [enum ParticleFlags] enum."
+msgstr "代表 [enum ParticleFlags] 枚举的大å°ã€‚"
+
msgid "All particles will be emitted from a single point."
msgstr "所有粒å­å°†ä»Žä¸€ä¸ªç‚¹å‘射。"
@@ -8677,11 +19373,32 @@ msgstr ""
"emission_colors] 进行调制。"
msgid "Represents the size of the [enum EmissionShape] enum."
-msgstr "表示 [enum EmissionShape] 枚举的大å°ã€‚"
+msgstr "代表 [enum EmissionShape] 枚举的大å°ã€‚"
msgid "CPU-based 3D particle emitter."
msgstr "基于 CPU çš„ 3D ç²’å­å‘射器。"
+msgid "Maximum angle."
+msgstr "最大角度。"
+
+msgid "Minimum angle."
+msgstr "最å°è§’度。"
+
+msgid "Maximum animation offset."
+msgstr "最大动画å移。"
+
+msgid "Minimum animation offset."
+msgstr "最å°åŠ¨ç”»å移。"
+
+msgid "Maximum particle animation speed."
+msgstr "最大粒å­åŠ¨ç”»é€Ÿåº¦ã€‚"
+
+msgid "Minimum particle animation speed."
+msgstr "最å°ç²’å­åŠ¨ç”»é€Ÿåº¦ã€‚"
+
+msgid "Maximum damping."
+msgstr "最大阻尼。"
+
msgid ""
"The rectangle's extents if [member emission_shape] is set to [constant "
"EMISSION_SHAPE_BOX]."
@@ -8720,11 +19437,56 @@ msgstr ""
"Y/Z å¹³é¢ä¸­çš„ [member spread] æ•°é‡ã€‚值 [code]1[/code] 将粒å­é™åˆ¶åœ¨ X/Z å¹³é¢"
"上。"
+msgid "Maximum hue variation."
+msgstr "最大色相å˜åŒ–。"
+
+msgid "Minimum hue variation."
+msgstr "最å°è‰²ç›¸å˜åŒ–。"
+
+msgid "Maximum value of the initial velocity."
+msgstr "åˆå§‹é€Ÿåº¦çš„最大值。"
+
+msgid "Minimum value of the initial velocity."
+msgstr "åˆå§‹é€Ÿåº¦çš„最å°å€¼ã€‚"
+
+msgid "Maximum linear acceleration."
+msgstr "最大线性加速度。"
+
+msgid "Minimum linear acceleration."
+msgstr "最å°çº¿æ€§åŠ é€Ÿåº¦ã€‚"
+
msgid ""
"The [Mesh] used for each particle. If [code]null[/code], particles will be "
"spheres."
msgstr "æ¯ä¸ªç²’å­ä½¿ç”¨çš„ [Mesh]。如果为 [code]null[/code],则粒å­å°†ä¸ºçƒå½¢ã€‚"
+msgid "Maximum orbit velocity."
+msgstr "最大轨é“速度。"
+
+msgid "Minimum orbit velocity."
+msgstr "最å°è½¨é“速度。"
+
+msgid "Maximum radial acceleration."
+msgstr "最大径å‘加速度。"
+
+msgid "Minimum radial acceleration."
+msgstr "最å°å¾„å‘加速度。"
+
+msgid "Maximum scale."
+msgstr "最大缩放。"
+
+msgid "Minimum scale."
+msgstr "最å°ç¼©æ”¾ã€‚"
+
+msgid "Curve for the scale over life, along the x axis."
+msgstr "生命周期内,沿 X 轴的缩放曲线。"
+
+msgid "Curve for the scale over life, along the y axis."
+msgstr "生命周期内,沿 Y 轴的缩放曲线。"
+
+msgid "Curve for the scale over life, along the z axis."
+msgstr "生命周期内,沿 Z 轴的缩放曲线。"
+
msgid ""
"Each particle's initial direction range from [code]+spread[/code] to [code]-"
"spread[/code] degrees. Applied to X/Z plane and Y/Z planes."
@@ -8732,12 +19494,33 @@ msgstr ""
"æ¯ä¸ªç²’å­çš„åˆå§‹æ–¹å‘范围为 [code]+spread[/code] 至 [code]-spread[/code] 度。适"
"用于 X/Z å¹³é¢å’Œ Y/Z å¹³é¢ã€‚"
+msgid "Maximum tangent acceleration."
+msgstr "最大切å‘加速度。"
+
+msgid "Minimum tangent acceleration."
+msgstr "最å°åˆ‡å‘加速度。"
+
msgid "Particles are drawn in order of depth."
msgstr "ç²’å­æŒ‰æ·±åº¦é¡ºåºç»˜åˆ¶ã€‚"
+msgid ""
+"Use with [method set_particle_flag] to set [member particle_flag_rotate_y]."
+msgstr ""
+"与 [method set_particle_flag] 一起使用,设置 [member "
+"particle_flag_rotate_y]。"
+
+msgid ""
+"Use with [method set_particle_flag] to set [member particle_flag_disable_z]."
+msgstr ""
+"与 [method set_particle_flag] 一起使用,设置[member "
+"particle_flag_disable_z]。"
+
msgid "Particles will be emitted in the volume of a sphere."
msgstr "ç²’å­å°†åœ¨çƒä½“的体积中å‘射。"
+msgid "Particles will be emitted on the surface of a sphere."
+msgstr "ç²’å­å°†åœ¨çƒä½“表é¢å‘射。"
+
msgid "Particles will be emitted in the volume of a box."
msgstr "ç²’å­å°†åœ¨ç›’å­çš„体积中å‘射。"
@@ -8747,9 +19530,232 @@ msgstr "ç²’å­å°†ä»¥çŽ¯å½¢æˆ–圆柱的形å¼å‘射出æ¥ã€‚"
msgid "Access to advanced cryptographic functionalities."
msgstr "访问高级加密功能。"
+msgid ""
+"The Crypto class allows you to access some more advanced cryptographic "
+"functionalities in Godot.\n"
+"For now, this includes generating cryptographically secure random bytes, RSA "
+"keys and self-signed X509 certificates generation, asymmetric key encryption/"
+"decryption, and signing/verification.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"\n"
+"var crypto = Crypto.new()\n"
+"var key = CryptoKey.new()\n"
+"var cert = X509Certificate.new()\n"
+"\n"
+"func _ready():\n"
+" # Generate new RSA key.\n"
+" key = crypto.generate_rsa(4096)\n"
+" # Generate new self-signed certificate with the given key.\n"
+" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com,"
+"O=My Game Company,C=IT\")\n"
+" # Save key and certificate in the user folder.\n"
+" key.save(\"user://generated.key\")\n"
+" cert.save(\"user://generated.crt\")\n"
+" # Encryption\n"
+" var data = \"Some data\"\n"
+" var encrypted = crypto.encrypt(key, data.to_utf8())\n"
+" # Decryption\n"
+" var decrypted = crypto.decrypt(key, encrypted)\n"
+" # Signing\n"
+" var signature = crypto.sign(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), key)\n"
+" # Verifying\n"
+" var verified = crypto.verify(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), signature, key)\n"
+" # Checks\n"
+" assert(verified)\n"
+" assert(data.to_utf8() == decrypted)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private Crypto _crypto = new Crypto();\n"
+" private CryptoKey _key = new CryptoKey();\n"
+" private X509Certificate _cert = new X509Certificate();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" // Generate new RSA key.\n"
+" _key = _crypto.GenerateRsa(4096);\n"
+" // Generate new self-signed certificate with the given key.\n"
+" _cert = _crypto.GenerateSelfSignedCertificate(_key, \"CN=mydomain."
+"com,O=My Game Company,C=IT\");\n"
+" // Save key and certificate in the user folder.\n"
+" _key.Save(\"user://generated.key\");\n"
+" _cert.Save(\"user://generated.crt\");\n"
+" // Encryption\n"
+" string data = \"Some data\";\n"
+" byte[] encrypted = _crypto.Encrypt(_key, data.ToUtf8());\n"
+" // Decryption\n"
+" byte[] decrypted = _crypto.Decrypt(_key, encrypted);\n"
+" // Signing\n"
+" byte[] signature = _crypto.Sign(HashingContext.HashType.Sha256, Data."
+"Sha256Buffer(), _key);\n"
+" // Verifying\n"
+" bool verified = _crypto.Verify(HashingContext.HashType.Sha256, Data."
+"Sha256Buffer(), signature, _key);\n"
+" // Checks\n"
+" Debug.Assert(verified);\n"
+" Debug.Assert(data.ToUtf8() == decrypted);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"Crypto ç±»å…许您访问 Godot 中一些更高级的加密功能。\n"
+"ç›®å‰ï¼Œè¿™åŒ…括生æˆåŠ å¯†å®‰å…¨éšæœºå­—节ã€RSA 密钥和自签å X509 è¯ä¹¦ç”Ÿæˆã€éžå¯¹ç§°å¯†é’¥"
+"加密/解密ã€ä»¥åŠç­¾å/验è¯ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"\n"
+"var crypto = Crypto.new()\n"
+"var key = CryptoKey.new()\n"
+"var cert = X509Certificate.new()\n"
+"\n"
+"func _ready():\n"
+" # 生æˆæ–°çš„ RSA 密钥。\n"
+" key = crypto.generate_rsa(4096)\n"
+" # 使用给定的密钥生æˆæ–°çš„自签åè¯ä¹¦ã€‚\n"
+" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com,"
+"O=My Game Company,C=IT\")\n"
+" # 将密钥和è¯ä¹¦ä¿å­˜åœ¨ç”¨æˆ·æ–‡ä»¶å¤¹ä¸­ã€‚\n"
+" key.save(\"user://generated.key\")\n"
+" cert.save(\"user://generated.crt\")\n"
+" # 加密\n"
+" var data = \"Some data\"\n"
+" var encrypted = crypto.encrypt(key, data.to_utf8())\n"
+" # 解密\n"
+" var decrypted = crypto.decrypt(key, encrypted)\n"
+" # ç­¾å\n"
+" var signature = crypto.sign(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), key)\n"
+" # 验è¯\n"
+" var verified = crypto.verify(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), signature, key)\n"
+" # 校验\n"
+" assert(verified)\n"
+" assert(data.to_utf8() == decrypted)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private Crypto _crypto = new Crypto();\n"
+" private CryptoKey _key = new CryptoKey();\n"
+" private X509Certificate _cert = new X509Certificate();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" // 生æˆæ–°çš„ RSA 密钥。\n"
+" _key = _crypto.GenerateRsa(4096);\n"
+" // 使用给定的密钥生æˆæ–°çš„自签åè¯ä¹¦ã€‚\n"
+" _cert = _crypto.GenerateSelfSignedCertificate(_key, \"CN=mydomain."
+"com,O=My Game Company,C=IT\");\n"
+" // 将密钥和è¯ä¹¦ä¿å­˜åœ¨ç”¨æˆ·æ–‡ä»¶å¤¹ä¸­ã€‚\n"
+" _key.Save(\"user://generated.key\");\n"
+" _cert.Save(\"user://generated.crt\");\n"
+" // 加密\n"
+" string data = \"Some data\";\n"
+" byte[] encrypted = _crypto.Encrypt(_key, data.ToUtf8());\n"
+" // 解密\n"
+" byte[] decrypted = _crypto.Decrypt(_key, encrypted);\n"
+" // ç­¾å\n"
+" byte[] signature = _crypto.Sign(HashingContext.HashType.Sha256, Data."
+"Sha256Buffer(), _key);\n"
+" // 验è¯\n"
+" bool verified = _crypto.Verify(HashingContext.HashType.Sha256, Data."
+"Sha256Buffer(), signature, _key);\n"
+" // 校验\n"
+" Debug.Assert(verified);\n"
+" Debug.Assert(data.ToUtf8() == decrypted);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Generates a self-signed [X509Certificate] from the given [CryptoKey] and "
+"[param issuer_name]. The certificate validity will be defined by [param "
+"not_before] and [param not_after] (first valid date and last valid date). "
+"The [param issuer_name] must contain at least \"CN=\" (common name, i.e. the "
+"domain name), \"O=\" (organization, i.e. your company name), "
+"\"C=\" (country, i.e. 2 lettered ISO-3166 code of the country the "
+"organization is based in).\n"
+"A small example to generate an RSA key and a X509 self-signed certificate.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var crypto = Crypto.new()\n"
+"# Generate 4096 bits RSA key.\n"
+"var key = crypto.generate_rsa(4096)\n"
+"# Generate self-signed certificate using the given key.\n"
+"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
+"Game Company,C=IT\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var crypto = new Crypto();\n"
+"// Generate 4096 bits RSA key.\n"
+"CryptoKey key = crypto.GenerateRsa(4096);\n"
+"// Generate self-signed certificate using the given key.\n"
+"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
+"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"æ ¹æ®ç»™å®šçš„ [CryptoKey] å’Œ [param issuer_name] 生æˆè‡ªç­¾åçš„ "
+"[X509Certificate]。è¯ä¹¦æœ‰æ•ˆæ€§å°†ç”± [param not_before] å’Œ [param not_after](第"
+"一个有效日期和最åŽä¸€ä¸ªæœ‰æ•ˆæ—¥æœŸï¼‰å®šä¹‰ã€‚[param issuer_name] 必须至少包"
+"å«â€œCN=â€ï¼ˆé€šç”¨å称,å³åŸŸå)ã€â€œO=â€ï¼ˆç»„织,å³æ‚¨çš„å…¬å¸å称)ã€â€œC=â€ï¼ˆå›½å®¶ï¼Œå³ 2 "
+"个字æ¯çš„该组织所在的国家/地区的 ISO-3166 代ç ï¼‰ã€‚\n"
+"ç”Ÿæˆ RSA 密钥和 X509 自签åè¯ä¹¦çš„å°ç¤ºä¾‹ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var crypto = Crypto.new()\n"
+"# ç”Ÿæˆ 4096 比特 RSA 密钥。\n"
+"var key = crypto.generate_rsa(4096)\n"
+"# 使用给定的密钥生æˆè‡ªç­¾åè¯ä¹¦ã€‚\n"
+"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
+"Game Company,C=IT\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var crypto = new Crypto();\n"
+"// ç”Ÿæˆ 4096 比特 RSA 密钥。\n"
+"CryptoKey key = crypto.GenerateRsa(4096);\n"
+"// 使用给定的密钥生æˆè‡ªç­¾åè¯ä¹¦ã€‚\n"
+"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
+"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "A cryptographic key (RSA)."
msgstr "加密密钥(RSA)。"
+msgid ""
+"The CryptoKey class represents a cryptographic key. Keys can be loaded and "
+"saved like any other [Resource].\n"
+"They can be used to generate a self-signed [X509Certificate] via [method "
+"Crypto.generate_self_signed_certificate] and as private key in [method "
+"StreamPeerTLS.accept_stream] along with the appropriate certificate."
+msgstr ""
+"CryptoKey 类表示加密密钥。密钥å¯ä»¥åƒå…¶ä»–任何 [Resource] 一样进行加载和ä¿"
+"存。\n"
+"密钥å¯ä»¥é€šè¿‡ [method Crypto.generate_self_signed_certificate] 生æˆè‡ªç­¾åçš„ "
+"[X509Certificate],并å¯ä½œä¸º [method StreamPeerTLS.accept_stream] 中相应的è¯ä¹¦"
+"çš„ç§é’¥ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if this CryptoKey only has the public part, and "
+"not the private one."
+msgstr ""
+"如果该 CryptoKey 仅具有公钥部分,没有ç§é’¥éƒ¨åˆ†ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
msgid "A CSG Box shape."
msgstr "CSG ç›’å­å½¢çŠ¶ã€‚"
@@ -9058,6 +20064,9 @@ msgstr ""
"Godot 版本中å¯ç”¨ã€‚\n"
"å¦è¯·å‚阅 [GodotSharp]。"
+msgid "C# documentation index"
+msgstr "C# 文档索引"
+
msgid "Returns a new instance of the script."
msgstr "返回该脚本的新实例。"
@@ -9150,6 +20159,20 @@ msgstr ""
"错误信æ¯ã€‚"
msgid ""
+"Returns a list of points along the curve, with almost uniform density. "
+"[param max_stages] controls how many subdivisions a curve segment may face "
+"before it is considered approximate enough. Each subdivision splits the "
+"segment in half, so the default 5 stages may mean up to 32 subdivisions per "
+"curve segment. Increase with care!\n"
+"[param tolerance_length] controls the maximal distance between two "
+"neighboring points, before the segment has to be subdivided."
+msgstr ""
+"返回沿曲线的点列表,具有几乎å‡åŒ€çš„密度。[param max_stages] 控制曲线段在被认为"
+"足够近似之å‰å¯èƒ½é¢ä¸´å¤šå°‘次细分。æ¯æ¬¡ç»†åˆ†å°†æ®µåˆ†æˆä¸¤åŠï¼Œå› æ­¤é»˜è®¤çš„ 5 个阶段å¯èƒ½"
+"æ„味ç€æ¯ä¸ªæ›²çº¿æ®µæœ€å¤š 32 个细分。请谨慎增加ï¼\n"
+"[param tolerance_length] 控制在必须细分线段之å‰ä¸¤ä¸ªç›¸é‚»ç‚¹ä¹‹é—´çš„最大è·ç¦»ã€‚"
+
+msgid ""
"The distance in pixels between two adjacent cached points. Changing it "
"forces the cache to be recomputed the next time the [method "
"get_baked_points] or [method get_baked_length] function is called. The "
@@ -9163,6 +20186,9 @@ msgstr ""
msgid "Describes a Bézier curve in 3D space."
msgstr "æè¿° 3D 空间的è´å…¹å°”曲线。"
+msgid "Returns the cache of points as a [PackedVector3Array]."
+msgstr "返回缓存的点,类型为 [PackedVector3Array]。"
+
msgid ""
"The distance in meters between two adjacent cached points. Changing it "
"forces the cache to be recomputed the next time the [method "
@@ -9188,6 +20214,15 @@ msgstr ""
"纹ç†å®½åº¦ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚较大的值能够更好地表示高频数æ®ï¼ˆä¾‹å¦‚æ–¹å‘çš„çªå˜ï¼‰ï¼Œä½†"
"会增加生æˆæ—¶é—´å’Œå†…å­˜å ç”¨ã€‚"
+msgid "The [Curve] that is rendered onto the texture's red channel."
+msgstr "渲染到该纹ç†çº¢è‰²é€šé“上的 [Curve]。"
+
+msgid "The [Curve] that is rendered onto the texture's green channel."
+msgstr "渲染到该纹ç†ç»¿è‰²é€šé“上的 [Curve]。"
+
+msgid "The [Curve] that is rendered onto the texture's blue channel."
+msgstr "渲染到该纹ç†è“色通é“上的 [Curve]。"
+
msgid "Class representing a cylindrical [PrimitiveMesh]."
msgstr "表示圆柱形 [PrimitiveMesh] 的类。"
@@ -9200,7 +20235,7 @@ msgstr ""
"bottom_radius] 属性设置为 [code]0.0[/code],这个类å¯ä»¥ç”¨æ¥åˆ›å»ºåœ†é”¥ä½“。"
msgid "Full height of the cylinder."
-msgstr "缸体的全高。"
+msgstr "圆柱体的全高。"
msgid ""
"Number of radial segments on the cylinder. Higher values result in a more "
@@ -9222,6 +20257,9 @@ msgstr ""
"产生更多的细分,这å¯ç”¨äºŽä½¿ç”¨ç€è‰²å™¨æˆ–程åºå¼ç½‘格工具创建更平滑的显示效果,但以"
"性能为代价。"
+msgid "Cylinder shape for 3D collisions."
+msgstr "圆柱体形状,用于 3D 碰撞。"
+
msgid "The cylinder's height."
msgstr "圆柱体的高度。"
@@ -9266,21 +20304,826 @@ msgstr ""
"该值越大,连接在关节上的机构å˜å½¢è¶Šå°ã€‚关节对å„机构施加一个相å的力,å³åˆšåº¦ä¹˜"
"以与其é™æ­¢é•¿åº¦çš„大å°å·®çš„乘积。"
+msgid "Node that projects a texture onto a [MeshInstance3D]."
+msgstr "将纹ç†æŠ•å½±åˆ° [MeshInstance3D] 上的节点。"
+
+msgid ""
+"Returns the [Texture2D] associated with the specified [enum DecalTexture]. "
+"This is a convenience method, in most cases you should access the texture "
+"directly.\n"
+"For example, instead of [code]albedo_tex = $Decal.get_texture(Decal."
+"TEXTURE_ALBEDO)[/code], use [code]albedo_tex = $Decal.texture_albedo[/"
+"code].\n"
+"One case where this is better than accessing the texture directly is when "
+"you want to copy one Decal's textures to another. For example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"for i in Decal.TEXTURE_MAX:\n"
+" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n"
+"{\n"
+" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")."
+"GetTexture(i));\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回与指定的 [enum DecalTexture] å…³è”çš„ [Texture2D]。这是一个便æ·æ–¹æ³•ï¼Œåœ¨å¤§å¤š"
+"数情况下,你应该直接访问纹ç†ã€‚\n"
+"例如,相比于 [code]albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO)[/"
+"code],请使用 [code]albedo_tex = $Decal.texture_albedo[/code]。\n"
+"有一ç§æƒ…况下这ç§å†™æ³•æ¯”直接访问纹ç†æ›´å¥½ï¼Œé‚£å°±æ˜¯å½“想è¦å°†è´´èŠ±çš„纹ç†å¤åˆ¶åˆ°å¦ä¸€ä¸ª"
+"贴花是。例如:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"for i in Decal.TEXTURE_MAX:\n"
+" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n"
+"{\n"
+" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")."
+"GetTexture(i));\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Sets the [Texture2D] associated with the specified [enum DecalTexture]. This "
+"is a convenience method, in most cases you should access the texture "
+"directly.\n"
+"For example, instead of [code]$Decal.set_texture(Decal.TEXTURE_ALBEDO, "
+"albedo_tex)[/code], use [code]$Decal.texture_albedo = albedo_tex[/code].\n"
+"One case where this is better than accessing the texture directly is when "
+"you want to copy one Decal's textures to another. For example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"for i in Decal.TEXTURE_MAX:\n"
+" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n"
+"{\n"
+" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")."
+"GetTexture(i));\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"设置与指定的 [enum DecalTexture] å…³è”çš„ [Texture2D]。这是一个便æ·æ–¹æ³•ï¼Œåœ¨å¤§å¤š"
+"数情况下,你应该直接访问纹ç†ã€‚\n"
+"例如,相比于 [code]albedo_tex = $Decal.set_texture(Decal.TEXTURE_ALBEDO, "
+"albedo_tex)[/code],请使用 [code]$Decal.texture_albedo = albedo_tex[/"
+"code]。\n"
+"有一ç§æƒ…况下这ç§å†™æ³•æ¯”直接访问纹ç†æ›´å¥½ï¼Œé‚£å°±æ˜¯å½“想è¦å°†è´´èŠ±çš„纹ç†å¤åˆ¶åˆ°å¦ä¸€ä¸ª"
+"贴花是。例如:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"for i in Decal.TEXTURE_MAX:\n"
+" $NewDecal.set_texture(i, $OldDecal.get_texture(i))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"for (int i = 0; i < (int)Decal.DecalTexture.Max; i++)\n"
+"{\n"
+" GetNode<Decal>(\"NewDecal\").SetTexture(i, GetNode<Decal>(\"OldDecal\")."
+"GetTexture(i));\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Blends the albedo [Color] of the decal with albedo [Color] of the underlying "
+"mesh. This can be set to [code]0.0[/code] to create a decal that only "
+"affects normal or ORM. In this case, an albedo texture is still required as "
+"its alpha channel will determine where the normal and ORM will be "
+"overridden. See also [member modulate]."
+msgstr ""
+"将该贴花的å照率 [Color] 与底层网格的å照率 [Color] æ··åˆã€‚å¯ä»¥å°†å…¶è®¾ç½®ä¸º "
+"[code]0.0[/code],从而创建仅影å“法线或 ORM 的贴花。这ç§æƒ…况下ä»ç„¶éœ€è¦å照率纹"
+"ç†ï¼Œå› ä¸ºå®ƒçš„ Alpha 通é“将决定覆盖法线和 ORM çš„ä½ç½®ã€‚å¦è§ [member modulate]。"
+
+msgid ""
+"Specifies which [member VisualInstance3D.layers] this decal will project on. "
+"By default, Decals affect all layers. This is used so you can specify which "
+"types of objects receive the Decal and which do not. This is especially "
+"useful so you can ensure that dynamic objects don't accidentally receive a "
+"Decal intended for the terrain under them."
+msgstr ""
+"指定此贴花将投射到哪些 [member VisualInstance3D.layers] 上。默认情况下,贴花"
+"会影å“所有图层。å¯ç”¨äºŽæŒ‡å®šå“ªäº›ç±»åž‹çš„对象接收该贴花ã€å“ªäº›ä¸æŽ¥æ”¶ã€‚这一点特别有"
+"用,你å¯ä»¥ç¡®ä¿åŠ¨æ€å¯¹è±¡ä¸ä¼šæ„外收到用于其下方地形的贴花。"
+
+msgid ""
+"The distance from the camera at which the Decal begins to fade away (in 3D "
+"units)."
+msgstr "与相机的è·ç¦»ï¼Œè´´èŠ±ä»Žè¯¥å¤„开始淡出(以 3D å•ä½è¡¨ç¤ºï¼‰ã€‚"
+
+msgid ""
+"If [code]true[/code], decals will smoothly fade away when far from the "
+"active [Camera3D] starting at [member distance_fade_begin]. The Decal will "
+"fade out over [member distance_fade_begin] + [member distance_fade_length], "
+"after which it will be culled and not sent to the shader at all. Use this to "
+"reduce the number of active Decals in a scene and thus improve performance."
+msgstr ""
+"如果为 [code]true[/code],贴花会在远离活动的 [Camera3D] 时平滑地淡出,从 "
+"[member distance_fade_begin] 开始。该贴花将在 [member distance_fade_begin] + "
+"[member distance_fade_length] 处消失,之åŽå°±ä¼šè¢«å‰”除,根本ä¸ä¼šå‘é€åˆ°ç€è‰²å™¨ã€‚"
+"请使用这个选项æ¥å‡å°‘场景中激活贴花的数é‡ï¼Œä»Žè€Œæ高性能。"
+
+msgid ""
+"The distance over which the Decal fades (in 3D units). The Decal becomes "
+"slowly more transparent over this distance and is completely invisible at "
+"the end. Higher values result in a smoother fade-out transition, which is "
+"more suited when the camera moves fast."
+msgstr ""
+"该贴花淡出的è·ç¦»ï¼ˆä»¥ 3D å•ä½è¡¨ç¤ºï¼‰ã€‚这段è·ç¦»å†…,该贴花会慢慢å˜å¾—é€æ˜Žï¼Œç›´è‡³å®Œ"
+"å…¨ä¸å¯è§ã€‚值越大,淡出过渡更平滑,更适åˆäºŽç›¸æœºå¿«é€Ÿç§»åŠ¨çš„情况。"
+
+msgid ""
+"Energy multiplier for the emission texture. This will make the decal emit "
+"light at a higher or lower intensity, independently of the albedo color. See "
+"also [member modulate]."
+msgstr ""
+"自å‘光纹ç†çš„能é‡å€æ•°ã€‚会使贴花以更高或更低的强度å‘光,与å照率颜色无关。å¦è§ "
+"[member modulate]。"
+
+msgid ""
+"Sets the curve over which the decal will fade as the surface gets further "
+"from the center of the [AABB]. Only positive values are valid (negative "
+"values will be clamped to [code]0.0[/code]). See also [member upper_fade]."
+msgstr ""
+"设置该贴花的淡出曲线,表示éšç€è¡¨é¢è¿œç¦» [AABB] 中心而é€æ¸æ·¡å‡ºã€‚仅正值有效(负"
+"值将被é™åˆ¶åˆ° [code]0.0[/code])。å¦è§ [member upper_fade]。"
+
+msgid ""
+"Changes the [Color] of the Decal by multiplying the albedo and emission "
+"colors with this value. The alpha component is only taken into account when "
+"multiplying the albedo color, not the emission color. See also [member "
+"emission_energy] and [member albedo_mix] to change the emission and albedo "
+"intensity independently of each other."
+msgstr ""
+"更改贴花的 [Color],将其å照率和自å‘光颜色乘以这个值。仅在与å照率颜色相乘时"
+"æ‰ä¼šè€ƒè™‘ Alpha 分é‡ï¼Œä¸Žè‡ªå‘光颜色相乘时则ä¸ä¼šã€‚如果è¦ç‹¬ç«‹æ›´æ”¹è‡ªå‘光和å照率强"
+"度,请å‚阅 [member emit_energy] å’Œ [member albedo_mix]。"
+
+msgid ""
+"Fades the Decal if the angle between the Decal's [AABB] and the target "
+"surface becomes too large. A value of [code]0[/code] projects the Decal "
+"regardless of angle, a value of [code]1[/code] limits the Decal to surfaces "
+"that are nearly perpendicular.\n"
+"[b]Note:[/b] Setting [member normal_fade] to a value greater than [code]0.0[/"
+"code] has a small performance cost due to the added normal angle "
+"computations."
+msgstr ""
+"如果贴花的 [AABB] 与目标表é¢ä¹‹é—´çš„角度å˜å¾—过大,则淡出贴花。值为 [code]0[/"
+"code] 时在投影贴花会忽略角度,值为 [code]1[/code] 时会将贴花é™åˆ¶åˆ°å‡ ä¹Žåž‚ç›´çš„"
+"表é¢ã€‚\n"
+"[b]注æ„:[/b]å°† [member normal_fade] 设置为大于 [code]0.0[/code] 的值会有较å°"
+"的性能æˆæœ¬ï¼Œå› ä¸ºå¢žåŠ äº†æ³•çº¿è§’度计算。"
+
+msgid ""
+"[Texture2D] with the base [Color] of the Decal. Either this or the [member "
+"texture_emission] must be set for the Decal to be visible. Use the alpha "
+"channel like a mask to smoothly blend the edges of the decal with the "
+"underlying object.\n"
+"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a "
+"per-material basis, the filter mode for [Decal] textures is set globally "
+"with [member ProjectSettings.rendering/textures/decals/filter]."
+msgstr ""
+"带有贴花的基础 [Color] 的 [Texture2D]。必须设置这个属性或者 [member "
+"texture_emission] 贴花æ‰å¯è§ã€‚è¦å°†è´´èŠ±çš„边缘与底层对象平滑地混åˆï¼Œè¯·åƒé®ç½©ä¸€"
+"样使用 Alpha 通é“。\n"
+"[b]注æ„:[/b][BaseMaterial3D] 的过滤模å¼å¯ä»¥å¯¹æ¯ä¸ªæ质进行调整,而 [Decal] 纹"
+"ç†çš„过滤模å¼æ˜¯é€šè¿‡ [member ProjectSettings.rendering/textures/decals/filter] "
+"全局设置的。"
+
+msgid ""
+"[Texture2D] with the per-pixel normal map for the decal. Use this to add "
+"extra detail to decals.\n"
+"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a "
+"per-material basis, the filter mode for [Decal] textures is set globally "
+"with [member ProjectSettings.rendering/textures/decals/filter].\n"
+"[b]Note:[/b] Setting this texture alone will not result in a visible decal, "
+"as [member texture_albedo] must also be set. To create a normal-only decal, "
+"load an albedo texture into [member texture_albedo] and set [member "
+"albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be "
+"used to determine where the underlying surface's normal map should be "
+"overridden (and its intensity)."
+msgstr ""
+"带有贴花的é€åƒç´ æ³•çº¿è´´å›¾çš„ [Texture2D]。å¯ç”¨äºŽä¸ºè´´èŠ±æ·»åŠ é¢å¤–的细节。\n"
+"[b]注æ„:[/b][BaseMaterial3D] 的过滤模å¼å¯ä»¥å¯¹æ¯ä¸ªæ质进行调整,而 [Decal] 纹"
+"ç†çš„过滤模å¼æ˜¯é€šè¿‡ [member ProjectSettings.rendering/textures/decals/filter] "
+"全局设置的。\n"
+"[b]注æ„:[/b]å•ç‹¬è®¾ç½®æ­¤çº¹ç†æ—¶è´´èŠ±ä¸å¯è§ï¼Œå› ä¸ºè¿˜å¿…须设置 [member "
+"texture_albedo]。è¦åˆ›å»ºä»…包å«æ³•çº¿çš„贴花,请将å照率纹ç†åŠ è½½åˆ° [member "
+"texture_albedo],并将 [member albedo_mix] 设置为 [code]0.0[/code]。å照率纹ç†"
+"çš„ Alpha 通é“将用于确定应在何处覆盖底层表é¢çš„法线贴图(åŠå…¶å¼ºåº¦ï¼‰ã€‚"
+
+msgid ""
+"[Texture2D] storing ambient occlusion, roughness, and metallic for the "
+"decal. Use this to add extra detail to decals.\n"
+"[b]Note:[/b] Unlike [BaseMaterial3D] whose filter mode can be adjusted on a "
+"per-material basis, the filter mode for [Decal] textures is set globally "
+"with [member ProjectSettings.rendering/textures/decals/filter].\n"
+"[b]Note:[/b] Setting this texture alone will not result in a visible decal, "
+"as [member texture_albedo] must also be set. To create a ORM-only decal, "
+"load an albedo texture into [member texture_albedo] and set [member "
+"albedo_mix] to [code]0.0[/code]. The albedo texture's alpha channel will be "
+"used to determine where the underlying surface's ORM map should be "
+"overridden (and its intensity)."
+msgstr ""
+"存有贴花的环境光é®è”½ã€ç²—糙度ã€é‡‘属性的 [Texture2D]。å¯ç”¨äºŽä¸ºè´´èŠ±æ·»åŠ é¢å¤–的细"
+"节。\n"
+"[b]注æ„:[/b][BaseMaterial3D] 的过滤模å¼å¯ä»¥å¯¹æ¯ä¸ªæ质进行调整,而 [Decal] 纹"
+"ç†çš„过滤模å¼æ˜¯é€šè¿‡ [member ProjectSettings.rendering/textures/decals/filter] "
+"全局设置的。\n"
+"[b]注æ„:[/b]å•ç‹¬è®¾ç½®æ­¤çº¹ç†æ—¶è´´èŠ±ä¸å¯è§ï¼Œå› ä¸ºè¿˜å¿…须设置 [member "
+"texture_albedo]。è¦åˆ›å»ºä»…åŒ…å« ORM 的贴花,请将å照率纹ç†åŠ è½½åˆ° [member "
+"texture_albedo],并将 [member albedo_mix] 设置为 [code]0.0[/code]。å照率纹ç†"
+"çš„ Alpha 通é“将用于确定应在何处覆盖底层表é¢çš„ ORM 贴图(åŠå…¶å¼ºåº¦ï¼‰ã€‚"
+
+msgid ""
+"Sets the curve over which the decal will fade as the surface gets further "
+"from the center of the [AABB]. Only positive values are valid (negative "
+"values will be clamped to [code]0.0[/code]). See also [member lower_fade]."
+msgstr ""
+"设置该贴花的淡出曲线,表示éšç€è¡¨é¢è¿œç¦» [AABB] 中心而é€æ¸æ·¡å‡ºã€‚仅正值有效(负"
+"值将被é™åˆ¶åˆ° [code]0.0[/code])。å¦è§ [member upper_fade]。"
+
+msgid "[Texture2D] corresponding to [member texture_albedo]."
+msgstr "与 [member texture_albedo] 对应的 [Texture2D]。"
+
+msgid "[Texture2D] corresponding to [member texture_normal]."
+msgstr "与 [member texture_normal] 对应的 [Texture2D]。"
+
+msgid "[Texture2D] corresponding to [member texture_orm]."
+msgstr "与 [member texture_orm] 对应的 [Texture2D]。"
+
+msgid "[Texture2D] corresponding to [member texture_emission]."
+msgstr "与 [member texture_emission] 对应的 [Texture2D]。"
+
+msgid "Max size of [enum DecalTexture] enum."
+msgstr "[enum DecalTexture] 枚举的最大大å°ã€‚"
+
msgid "Dictionary type."
msgstr "字典类型。"
+msgid ""
+"Dictionary type. Associative container, which contains values referenced by "
+"unique keys. Dictionaries are composed of pairs of keys (which must be "
+"unique) and values. Dictionaries will preserve the insertion order when "
+"adding new entries. In other programming languages, this data structure is "
+"sometimes referred to as a hash map or associative array.\n"
+"You can define a dictionary by placing a comma-separated list of [code]key: "
+"value[/code] pairs in curly braces [code]{}[/code].\n"
+"[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a "
+"dictionary which can be modified independently of the original dictionary, "
+"use [method duplicate].\n"
+"Creating a dictionary:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {} # Creates an empty dictionary.\n"
+"\n"
+"var dict_variable_key = \"Another key name\"\n"
+"var dict_variable_value = \"value2\"\n"
+"var another_dict = {\n"
+" \"Some key name\": \"value1\",\n"
+" dict_variable_key: dict_variable_value,\n"
+"}\n"
+"\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"\n"
+"# Alternative Lua-style syntax.\n"
+"# Doesn't require quotes around keys, but only string constants can be used "
+"as key names.\n"
+"# Additionally, key names must start with a letter or an underscore.\n"
+"# Here, `some_key` is a string literal, not a variable!\n"
+"another_dict = {\n"
+" some_key = 42,\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary(); // Creates an empty "
+"dictionary.\n"
+"var pointsDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"You can access a dictionary's value by referencing its corresponding key. In "
+"the above example, [code]points_dict[\"White\"][/code] will return [code]50[/"
+"code]. You can also write [code]points_dict.White[/code], which is "
+"equivalent. However, you'll have to use the bracket syntax if the key you're "
+"accessing the dictionary with isn't a fixed string (such as a number or "
+"variable).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"func _ready():\n"
+" # We can't use dot syntax here as `my_color` is a variable.\n"
+" var points = points_dict[my_color]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n"
+"public string MyColor { get; set; }\n"
+"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections."
+"Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"\n"
+"public override void _Ready()\n"
+"{\n"
+" int points = (int)_pointsDict[MyColor];\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"In the above code, [code]points[/code] will be assigned the value that is "
+"paired with the appropriate color selected in [code]my_color[/code].\n"
+"Dictionaries can contain more complex data:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {\n"
+" \"First Array\": [1, 2, 3, 4] # Assigns an Array to a String key.\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"To add a key to an existing dictionary, access it like an existing key and "
+"assign to it:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"points_dict[\"Blue\"] = 150 # Add \"Blue\" as a key and assign 150 as its "
+"value.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var pointsDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"pointsDict[\"Blue\"] = 150; // Add \"Blue\" as a key and assign 150 as its "
+"value.\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Finally, dictionaries can contain different types of keys and values in the "
+"same dictionary:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# This is a valid dictionary.\n"
+"# To access the string \"Nested value\" below, use `my_dict.sub_dict."
+"sub_key` or `my_dict[\"sub_dict\"][\"sub_key\"]`.\n"
+"# Indexing styles can be mixed and matched depending on your needs.\n"
+"var my_dict = {\n"
+" \"String Key\": 5,\n"
+" 4: [1, 2, 3],\n"
+" 7: \"Hello\",\n"
+" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// This is a valid dictionary.\n"
+"// To access the string \"Nested value\" below, use `((Godot.Collections."
+"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`.\n"
+"var myDict = new Godot.Collections.Dictionary {\n"
+" {\"String Key\", 5},\n"
+" {4, new Godot.Collections.Array{1,2,3}},\n"
+" {7, \"Hello\"},\n"
+" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested "
+"value\"}}}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The keys of a dictionary can be iterated with the [code]for[/code] keyword:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n"
+"for fruit in groceries:\n"
+" var amount = groceries[fruit]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, "
+"{\"Apple\", 2}, {\"Banana\", 4}};\n"
+"foreach (var (fruit, amount) in groceries)\n"
+"{\n"
+" // `fruit` is the key, `amount` is the value.\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Erasing elements while iterating over dictionaries is [b]not[/"
+"b] supported and will result in unpredictable behavior.\n"
+"[b]Note:[/b] When declaring a dictionary with [code]const[/code], the "
+"dictionary becomes read-only. A read-only Dictionary's entries cannot be "
+"overridden at run-time. This does [i]not[/i] affect nested [Array] and "
+"[Dictionary] values."
+msgstr ""
+"字典类型。关è”型容器,容器中的值(Value)由唯一的键(Key)引用。字典由若干键"
+"值对组æˆï¼ˆé”®å¿…须唯一,ä¸èƒ½é‡å¤ï¼‰ã€‚添加新æ¡ç›®æ—¶ï¼Œå­—典会ä¿æŒæ’入顺åºã€‚在其他编"
+"程语言中,这样的数æ®ç»“构有时也称为哈希表或关è”数组。\n"
+"ä½ å¯ä»¥ä½¿ç”¨å¤§æ‹¬å· [code]{}[/code] 中放置用逗å·åˆ†éš”的一对对 [code]é”®:值[/code] "
+"列表æ¥å®šä¹‰å­—典。\n"
+"[b]注æ„:[/b]字典始终按引用传递。è¦èŽ·å–字典的副本,能独立于原字典进行修改,请"
+"使用 [method duplicate]。\n"
+"字典的创建:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {} # 创建空字典。\n"
+"\n"
+"var dict_variable_key = \"Another key name\"\n"
+"var dict_variable_value = \"value2\"\n"
+"var another_dict = {\n"
+" \"Some key name\": \"value1\",\n"
+" dict_variable_key: dict_variable_value,\n"
+"}\n"
+"\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"\n"
+"# 备选 Lua 分隔语法。\n"
+"# ä¸éœ€è¦åœ¨é”®å‘¨å›´åŠ å¼•å·ï¼Œä½†é”®ååªèƒ½ä¸ºå­—符串常é‡ã€‚\n"
+"# å¦å¤–,键å必须以字æ¯æˆ–下划线开头。\n"
+"# 此处的 `some_key` 是字符串字é¢é‡ï¼Œä¸æ˜¯å˜é‡ï¼\n"
+"another_dict = {\n"
+" some_key = 42,\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary(); // 创建空字典。\n"
+"var pointsDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"ä½ å¯ä»¥é€šè¿‡é”®æ¥è®¿é—®å­—典中对应的值。上é¢çš„例å­ä¸­ï¼Œ[code]points_dict[\"White\"]"
+"[/code] 会返回 [code]50[/code]。你也å¯ä»¥å†™ [code]points_dict.White[/code],和"
+"å‰é¢çš„写法是等价的。ä¸è¿‡å¦‚果用æ¥è®¿é—®å­—典的键ä¸æ˜¯å›ºå®šå­—符串的è¯ï¼ˆä¾‹å¦‚数字或者"
+"å˜é‡ï¼‰ï¼Œé‚£ä¹ˆå°±åªèƒ½ä½¿ç”¨æ–¹æ‹¬å·è¯­æ³•ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"func _ready():\n"
+" # ä¸èƒ½ä½¿ç”¨ç‚¹è¯­æ³•ï¼Œå› ä¸º `my_color` 是å˜é‡ã€‚\n"
+" var points = points_dict[my_color]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n"
+"public string MyColor { get; set; }\n"
+"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections."
+"Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"\n"
+"public override void _Ready()\n"
+"{\n"
+" int points = (int)_pointsDict[MyColor];\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"在上é¢çš„代ç ä¸­ï¼Œ[code]points[/code] 会被赋值为与 [code]my_color[/code] 中选中"
+"的颜色相对应的值。\n"
+"å­—å…¸å¯ä»¥åŒ…å«æ›´å¤æ‚çš„æ•°æ®ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {\n"
+" \"First Array\": [1, 2, 3, 4] # 将 Array 赋给 String 键。\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"è¦å¾€å·²æœ‰å­—典中添加键,请åƒå·²æœ‰é”®ä¸€æ ·è¿›è¡Œè®¿é—®å¹¶èµ‹å€¼ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
+"points_dict[\"Blue\"] = 150 # 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var pointsDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" {\"White\", 50},\n"
+" {\"Yellow\", 75},\n"
+" {\"Orange\", 100}\n"
+"};\n"
+"pointsDict[\"Blue\"] = 150; // 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"最åŽï¼ŒåŒä¸€ä¸ªå­—典里å¯ä»¥åŒ…å«ä¸åŒç±»åž‹çš„键和值:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 这是有效的字典。\n"
+"# è¦è®¿é—®ä¸‹é¢çš„ \"Nested value\",请使用 `my_dict.sub_dict.sub_key` 或 "
+"`my_dict[\"sub_dict\"][\"sub_key\"]`。\n"
+"# 索引风格å¯ä»¥æŒ‰éœ€æ··åˆä½¿ç”¨ã€‚\n"
+"var my_dict = {\n"
+" \"String Key\": 5,\n"
+" 4: [1, 2, 3],\n"
+" 7: \"Hello\",\n"
+" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n"
+"}\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 这是有效的字典。\n"
+"// è¦è®¿é—®ä¸‹é¢çš„ \"Nested value\",请使用 `((Godot.Collections."
+"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`。\n"
+"var myDict = new Godot.Collections.Dictionary {\n"
+" {\"String Key\", 5},\n"
+" {4, new Godot.Collections.Array{1,2,3}},\n"
+" {7, \"Hello\"},\n"
+" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested "
+"value\"}}}\n"
+"};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"字典中的键å¯ä»¥ç”¨ [code]for[/code] 关键字进行é历:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n"
+"for fruit in groceries:\n"
+" var amount = groceries[fruit]\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, "
+"{\"Apple\", 2}, {\"Banana\", 4}};\n"
+"foreach (var (fruit, amount) in groceries)\n"
+"{\n"
+" // `fruit` 为键,`amount` 为值。\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b][b]ä¸æ”¯æŒ[/b]在é历字典时清除元素,å¯èƒ½é€ æˆæ— æ³•é¢„知的行为。\n"
+"[b]注æ„:[/b]使用 [code]const[/code] 声明字典时,字典会å˜ä¸ºåªè¯»ã€‚åªè¯»å­—典中的"
+"æ¡ç›®æ— æ³•åœ¨è¿è¡Œæ—¶è¦†ç›–。嵌套的 [Array] å’Œ [Dictionary] 值[i]ä¸å—å½±å“[/i]。"
+
msgid "GDScript basics: Dictionary"
msgstr "GDScript 基础:字典"
msgid "Constructs an empty [Dictionary]."
msgstr "构造空的 [Dictionary]。"
+msgid ""
+"Returns the same dictionary as [param from]. If you need a copy of the "
+"dictionary, use [method duplicate]."
+msgstr ""
+"返回与 [param from] 相åŒçš„字典。如果你需è¦è¯¥å­—典的副本,请使用 [method "
+"duplicate]。"
+
+msgid "Clears the dictionary, removing all entries from it."
+msgstr "清空该字典,移除其中的所有æ¡ç›®ã€‚"
+
+msgid ""
+"Creates and returns a new copy of the dictionary. If [param deep] is "
+"[code]true[/code], inner [Dictionary] and [Array] keys and values are also "
+"copied, recursively."
+msgstr ""
+"创建并返回该字典的副本。如果 [param deep] 为 [code]true[/code],内部的 "
+"[Dictionary] å’Œ [Array] 键和值也会被递归å¤åˆ¶ã€‚"
+
+msgid ""
+"Removes the dictionary entry by key, if it exists. Returns [code]true[/code] "
+"if the given [param key] existed in the dictionary, otherwise [code]false[/"
+"code].\n"
+"[b]Note:[/b] Do not erase entries while iterating over the dictionary. You "
+"can iterate over the [method keys] array instead."
+msgstr ""
+"如果字典中存在与键对应的æ¡ç›®ï¼Œåˆ™å°†å…¶ç§»é™¤ã€‚如果给定的键 [param key] 在字典中存"
+"在,则返回 [code]true[/code] ,å¦åˆ™è¿”回 [code]false[/code] 。\n"
+"[b]注æ„:[/b]请勿在é历字典时擦除æ¡ç›®ã€‚ä½ å¯ä»¥æ”¹ä¸ºé历 [method keys] 数组。"
+
+msgid ""
+"Finds and returns the first key whose associated value is equal to [param "
+"value], or [code]null[/code] if it is not found.\n"
+"[b]Note:[/b] [code]null[/code] is also a valid key. If inside the "
+"dictionary, [method find_key] may give misleading results."
+msgstr ""
+"找到并返回关è”值等于 [param value] 的第一个键,如果没有找到,则返回 "
+"[code]null[/code]。\n"
+"[b]注æ„:[/b][code]null[/code] 也是有效的键。如果字典中包å«è¿™ä¸ªé”®ï¼Œåˆ™ "
+"[method find_key] å¯èƒ½ä¼šç»™å‡ºè¯¯å¯¼æ€§çš„结果。"
+
+msgid ""
+"Returns the corresponding value for the given [param key] in the dictionary. "
+"If the [param key] does not exist, returns [param default], or [code]null[/"
+"code] if the parameter is omitted."
+msgstr ""
+"返回该字典中与给定的键 [parma key] 对应的值。如果 [param key] ä¸å­˜åœ¨ï¼Œåˆ™è¿”回 "
+"[param default],如果çœç•¥äº†è¯¥å‚数则返回 [code]null[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the dictionary contains an entry with the given "
+"[param key].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {\n"
+" \"Godot\" : 4,\n"
+" 210 : null,\n"
+"}\n"
+"\n"
+"print(my_dict.has(\"Godot\")) # Prints true\n"
+"print(my_dict.has(210)) # Prints true\n"
+"print(my_dict.has(4)) # Prints false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" { \"Godot\", 4 },\n"
+" { 210, default },\n"
+"};\n"
+"\n"
+"GD.Print(myDict.Contains(\"Godot\")); // Prints true\n"
+"GD.Print(myDict.Contains(210)); // Prints true\n"
+"GD.Print(myDict.Contains(4)); // Prints false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"In GDScript, this is equivalent to the [code]in[/code] operator:\n"
+"[codeblock]\n"
+"if \"Godot\" in {\"Godot\": 4}:\n"
+" print(\"The key is here!\") # Will be printed.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] This method returns [code]true[/code] as long as the [param "
+"key] exists, even if its corresponding value is [code]null[/code]."
+msgstr ""
+"如果该字典包å«ç»™å®šçš„é”® [param key],则返回 [code]true[/code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_dict = {\n"
+" \"Godot\" : 4,\n"
+" 210 : null,\n"
+"}\n"
+"\n"
+"print(my_dict.has(\"Godot\")) # 输出 true\n"
+"print(my_dict.has(210)) # 输出 true\n"
+"print(my_dict.has(4)) # 输出 false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myDict = new Godot.Collections.Dictionary\n"
+"{\n"
+" { \"Godot\", 4 },\n"
+" { 210, default },\n"
+"};\n"
+"\n"
+"GD.Print(myDict.Contains(\"Godot\")); // 输出 true\n"
+"GD.Print(myDict.Contains(210)); // 输出 true\n"
+"GD.Print(myDict.Contains(4)); // 输出 false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"在 GDScript 中等价于 [code]in[/code] è¿ç®—符:\n"
+"[codeblock]\n"
+"if \"Godot\" in {\"Godot\": 4}:\n"
+" print(\"这个键存在ï¼\") # 会进行输出。\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]åªè¦é”® [param key] 存在,该方法就会返回 [code]true[/code],å³ä¾¿"
+"这个键对应的值为 [code]null[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the dictionary contains all keys in the given "
+"[param keys] array.\n"
+"[codeblock]\n"
+"var data = {\"width\" : 10, \"height\" : 20}\n"
+"data.has_all([\"height\", \"width\"]) # Returns true\n"
+"[/codeblock]"
+msgstr ""
+"如果该字典包å«ç»™å®šæ•°ç»„ [param keys] 中的所有键,则返回 [code]true[/code]。\n"
+"[codeblock]\n"
+"var data = {\"width\" : 10, \"height\" : 20}\n"
+"data.has_all([\"height\", \"width\"]) # 返回 true\n"
+"[/codeblock]"
+
+msgid ""
+"Returns a hashed 32-bit integer value representing the dictionary contents.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var dict1 = {\"A\": 10, \"B\": 2}\n"
+"var dict2 = {\"A\": 10, \"B\": 2}\n"
+"\n"
+"print(dict1.hash() == dict2.hash()) # Prints true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n"
+"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n"
+"\n"
+"// Godot.Collections.Dictionary has no Hash() method. Use GD.Hash() "
+"instead.\n"
+"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // Prints true\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Dictionaries with the same entries but in a different order "
+"will not have the same hash.\n"
+"[b]Note:[/b] Dictionaries with equal hash values are [i]not[/i] guaranteed "
+"to be the same, because of hash collisions. On the countrary, dictionaries "
+"with different hash values are guaranteed to be different."
+msgstr ""
+"返回代表该字典内容的 32 ä½æ•´æ•°å“ˆå¸Œå€¼ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var dict1 = {\"A\": 10, \"B\": 2}\n"
+"var dict2 = {\"A\": 10, \"B\": 2}\n"
+"\n"
+"print(dict1.hash() == dict2.hash()) # 输出 true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var dict1 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n"
+"var dict2 = new Godot.Collections.Dictionary{{\"A\", 10}, {\"B\", 2}};\n"
+"\n"
+"// Godot.Collections.Dictionary 没有 Hash() 方法。请改用 GD.Hash()。\n"
+"GD.Print(GD.Hash(dict1) == GD.Hash(dict2)); // 输出 true\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]如果两个字典æ¡ç›®ç›¸åŒï¼Œä½†é¡ºåºä¸åŒï¼Œåˆ™å“ˆå¸Œå€¼ä¹Ÿä¸åŒã€‚\n"
+"[b]注æ„:[/b]哈希值相åŒçš„å­—å…¸[i]ä¸ä¿è¯[/i]相åŒï¼Œå› ä¸ºå¯èƒ½å­˜åœ¨å“ˆå¸Œç¢°æ’žã€‚相对"
+"地,哈希值ä¸åŒçš„å­—å…¸ä¿è¯ä¸åŒã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the dictionary is empty (its size is [code]0[/"
+"code]). See also [method size]."
+msgstr ""
+"如果该字典为空(大å°ä¸º [code]0[/code]),则返回 [code]true[/code]。å¦è§ "
+"[method size]。"
+
+msgid ""
+"Returns [code]true[/code] if the dictionary is read-only. See [method "
+"make_read_only]. Dictionaries are automatically read-only if declared with "
+"[code]const[/code] keyword."
+msgstr ""
+"如果该字典是åªè¯»çš„,则返回 [code]true[/code] ã€‚è§ [method set_read_only]。用 "
+"[code]const[/code] 关键字声明的字典自动åªè¯»ã€‚"
+
msgid "Returns the list of keys in the dictionary."
msgstr "返回该字典中的键列表。"
+msgid ""
+"Makes the dictionary read-only, i.e. disables modification of the "
+"dictionary's contents. Does not apply to nested content, e.g. content of "
+"nested dictionaries."
+msgstr ""
+"使该字典åªè¯»ï¼Œå³ç¦ç”¨å­—典内容的修改。ä¸é€‚用于嵌套内容,例如内嵌字典的内容。"
+
+msgid ""
+"Adds entries from [param dictionary] to this dictionary. By default, "
+"duplicate keys are not copied over, unless [param overwrite] is [code]true[/"
+"code]."
+msgstr ""
+"å°† [param dictionary] 中的æ¡ç›®æ·»åŠ åˆ°è¯¥å­—典中。默认ä¸å¤åˆ¶é‡å¤çš„é”®ï¼Œé™¤éž "
+"[param overwrite] 为 [code]true[/code]。"
+
+msgid ""
+"Returns the number of entries in the dictionary. Empty dictionaries ([code]"
+"{ }[/code]) always return [code]0[/code]. See also [method is_empty]."
+msgstr ""
+"返回该字典中æ¡ç›®çš„æ•°é‡ã€‚空字典([code]{ }[/code])始终返回 [code]0[/code]。å¦"
+"è§ [method is_empty]。"
+
msgid "Returns the list of values in this dictionary."
msgstr "返回该字典中的值列表。"
+msgid ""
+"Returns [code]true[/code] if the two dictionaries do not contain the same "
+"keys and values."
+msgstr "如果两个字典包å«çš„é”®ã€å€¼ä¸åŒï¼Œåˆ™è¿”回 [code]true[/code] 。"
+
+msgid ""
+"Returns [code]true[/code] if the two dictionaries contain the same keys and "
+"values. The order of the entries does not matter.\n"
+"[b]Note:[/b] In C#, by convention, this operator compares by [b]reference[/"
+"b]. If you need to compare by value, iterate over both dictionaries."
+msgstr ""
+"如果两个字典包å«çš„é”®ã€å€¼å¿ƒç›¸åŒï¼Œåˆ™è¿”回 [code]true[/code] 。æ¡ç›®é¡ºåºå¹¶ä¸é‡"
+"è¦ã€‚\n"
+"[b]注æ„:[/b]在 C# 中,按照惯例,这个æ“作符进行的是按[b]引用[/b]比较。如果你"
+"需è¦æŒ‰å€¼æ¯”较,请é历这两个字典。"
+
+msgid ""
+"Returns the corresponding value for the given [param key] in the dictionary. "
+"If the entry does not exist, fails and returns [code]null[/code]. For safe "
+"access, use [method get] or [method has]."
+msgstr ""
+"返回该字典中与给定的键 [parma key] 对应的值。如果æ¡ç›®ä¸å­˜åœ¨æˆ–者失败,则返回 "
+"[code]null[/code]。为了更安全的访问,请使用 [method get] 或 [method has]。"
+
msgid "Type used to handle the filesystem."
msgstr "用于处ç†æ–‡ä»¶ç³»ç»Ÿçš„类型。"
@@ -9288,6 +21131,25 @@ msgid "File system"
msgstr "文件系统"
msgid ""
+"Copies the [param from] file to the [param to] destination. Both arguments "
+"should be paths to files, either relative or absolute. If the destination "
+"file exists and is not access-protected, it will be overwritten.\n"
+"If [param chmod_flags] is different than [code]-1[/code], the Unix "
+"permissions for the destination path will be set to the provided value, if "
+"available on the current operating system.\n"
+"Returns one of the [enum Error] code constants ([constant OK] on success)."
+msgstr ""
+"å°† [param from] 文件å¤åˆ¶åˆ° [param to] 目标ä½ç½®ã€‚两个å‚数都应该是文件的路径,"
+"å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„,也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„。如果目标文件存在并且没有访问ä¿æŠ¤ï¼Œåˆ™å®ƒå°†è¢«"
+"覆盖。\n"
+"如果 [param chmod_flags] ä¸åŒäºŽ [code]-1[/code],且如果在当å‰æ“作系统上å¯ç”¨ï¼Œ"
+"目标路径的 Unix æƒé™å°†è®¾ç½®ä¸ºæ供的值。\n"
+"返回 [enum Error] 错误ç å¸¸é‡ä¹‹ä¸€ï¼ˆæˆåŠŸæ—¶ä¸º [constant OK])。"
+
+msgid "Static version of [method copy]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method copy]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid ""
"Returns whether the current item processed with the last [method get_next] "
"call is a directory ([code].[/code] and [code]..[/code] are considered "
"directories)."
@@ -9301,6 +21163,17 @@ msgid ""
msgstr ""
"返回目标目录是å¦å­˜åœ¨ã€‚å‚æ•°å¯ä»¥æ˜¯ç›¸å¯¹äºŽå½“å‰ç›®å½•çš„路径,也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„。"
+msgid "Static version of [method dir_exists]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method dir_exists]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid ""
+"Returns whether the target file exists. The argument can be relative to the "
+"current directory, or an absolute path.\n"
+"For a static equivalent, use [method FileAccess.file_exists]."
+msgstr ""
+"返回目标文件是å¦å­˜åœ¨ã€‚å‚æ•°å¯ä»¥æ˜¯ç›¸å¯¹äºŽå½“å‰ç›®å½•çš„路径,也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„。\n"
+"对于é™æ€ç­‰æ•ˆé¡¹ï¼Œè¯·ä½¿ç”¨ [method FileAccess.file_exists]。"
+
msgid ""
"Returns the absolute path to the currently opened directory (e.g. "
"[code]res://folder[/code] or [code]C:\\tmp\\folder[/code])."
@@ -9336,15 +21209,41 @@ msgstr ""
"在其他平å°ä¸Šï¼Œæˆ–者当请求的驱动器ä¸å­˜åœ¨æ—¶ï¼Œè¯¥æ–¹æ³•ä¼šè¿”回空的 String。"
msgid ""
+"Returns the result of the last [method open] call in the current thread."
+msgstr "返回当å‰çº¿ç¨‹ä¸­æœ€åŽä¸€æ¬¡ [method open] 调用的结果。"
+
+msgid ""
"Closes the current stream opened with [method list_dir_begin] (whether it "
"has been fully processed with [method get_next] does not matter)."
msgstr ""
"关闭用 [method list_dir_begin] 打开的当å‰æµï¼ˆå¹¶ä¸å…³æ³¨æ˜¯å¦å·²ç»ç”¨ [method "
"get_next] 完æˆå¤„ç†ï¼‰ã€‚"
+msgid "Static version of [method make_dir]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method make_dir]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid ""
+"Static version of [method make_dir_recursive]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method make_dir_recursive]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid "Static version of [method remove]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method remove]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid "Static version of [method rename]. Supports only absolute paths."
+msgstr "é™æ€ç‰ˆæœ¬çš„ [method rename]。仅支æŒç»å¯¹è·¯å¾„。"
+
+msgid "Directional 2D light from a distance."
+msgstr "æ¥è‡ªè¿œå¤„çš„ 2D 平行光。"
+
+msgid "2D lights and shadows"
+msgstr "2D ç¯å…‰å’Œé˜´å½±"
+
msgid "Directional light from a distance, as from the Sun."
msgstr "æ¥è‡ªè¿œå¤„的平行光,如太阳光。"
+msgid "Lights and shadows"
+msgstr "ç¯å…‰ä¸Žé˜´å½±"
+
msgid ""
"If [code]true[/code], shadow detail is sacrificed in exchange for smoother "
"transitions between splits. Enabling shadow blend splitting also has a "
@@ -9409,6 +21308,227 @@ msgstr ""
"将视图frustum分æˆ4个区域,æ¯ä¸ªåŒºåŸŸéƒ½æœ‰è‡ªå·±çš„阴影图。这是最慢的方å‘性阴影模"
"å¼ã€‚"
+msgid "Singleton for window management functions."
+msgstr "å•ä¾‹ï¼Œç”¨äºŽçª—å£ç®¡ç†ç­‰åŠŸèƒ½ã€‚"
+
+msgid ""
+"[DisplayServer] handles everything related to window management. This is "
+"separated from [OS] as a single operating system may support multiple "
+"display servers.\n"
+"[b]Headless mode:[/b] Starting the engine with the [code]--headless[/code] "
+"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line "
+"argument[/url] disables all rendering and window management functions. Most "
+"functions from [DisplayServer] will return dummy values in this case."
+msgstr ""
+"所有与窗å£ç®¡ç†ç›¸å…³çš„内容都由 [DisplayServer](显示æœåŠ¡å™¨ï¼‰å¤„ç†ã€‚因为一个æ“作"
+"系统å¯èƒ½æ”¯æŒå¤šä¸ªæ˜¾ç¤ºæœåŠ¡å™¨ï¼Œæ‰€ä»¥ä¸Ž [OS] 是分开的。\n"
+"[b]无头模å¼ï¼š[/b]如果使用 [code]--headless[/code] [url=$DOCS_URL/tutorials/"
+"editor/command_line_tutorial.html]命令行å‚æ•°[/url]å¯åŠ¨å¼•æ“Žï¼Œå°±ä¼šç¦ç”¨æ‰€æœ‰æ¸²æŸ“"
+"和窗å£ç®¡ç†åŠŸèƒ½ã€‚此时 [DisplayServer] 的大多数函数都会返回虚拟值。"
+
+msgid "Returns the user's clipboard as a string if possible."
+msgstr "如果å¯èƒ½ï¼Œå°†ç”¨æˆ·çš„剪贴æ¿ä½œä¸ºå­—符串返回。"
+
+msgid "Returns [code]true[/code] if there is content on the user's clipboard."
+msgstr "如果用户的剪贴æ¿ä¸­æœ‰å†…容,则返回 [code]true[/code]。"
+
+msgid "Sets the user's clipboard content to the given string."
+msgstr "将用户的剪贴æ¿å†…容设置为给定的字符串。"
+
+msgid ""
+"Returns the default mouse cursor shape set by [method cursor_set_shape]."
+msgstr "返回默认鼠标光标形状,由 [method cursor_set_shape] 设置。"
+
+msgid "Returns index of the primary screen."
+msgstr "返回主å±å¹•çš„索引。"
+
+msgid "Returns the number of displays available."
+msgstr "返回å¯ç”¨çš„显示器数é‡ã€‚"
+
+msgid "Returns index of the screen which contains specified rectangle."
+msgstr "返回包å«æŒ‡å®šçŸ©å½¢çš„å±å¹•çš„索引。"
+
+msgid ""
+"Returns the accelerator of the item at index [param idx]. Accelerators are "
+"special combinations of keys that activate the item, no matter which control "
+"is focused.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"返回索引 [param idx] 处项目的加速器。加速器是无论哪个控件获得焦点时激活项目的"
+"特殊键组åˆã€‚\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns the index of the item with the specified [param tag]. Index is "
+"automatically assigned to each item by the engine. Index can not be set "
+"manually.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"返回具有指定 [param tag] 的项的索引。索引由引擎自动分é…ç»™æ¯ä¸ªé¡¹ã€‚索引ä¸èƒ½è¢«æ‰‹"
+"动设置。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns the index of the item with the specified [param text]. Index is "
+"automatically assigned to each item by the engine. Index can not be set "
+"manually.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"返回具有指定 [param text] 的项的索引。索引由引擎自动分é…ç»™æ¯ä¸ªé¡¹ã€‚索引ä¸èƒ½è¢«"
+"手动设置。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns the submenu ID of the item at index [param idx]. See [method "
+"global_menu_add_submenu_item] for more info on how to add a submenu.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"返回索引 [param idx] 处项的å­èœå• ID。有关如何添加å­èœå•çš„更多信æ¯ï¼Œè¯·å‚阅 "
+"[method global_menu_add_submenu_item]。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns [code]true[/code] if the item at index [param idx] is disabled. When "
+"it is disabled it can't be selected, or its action invoked.\n"
+"See [method global_menu_set_item_disabled] for more info on how to disable "
+"an item.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"如果索引 [param idx] 处的项被ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。当它被ç¦ç”¨æ—¶ï¼Œå®ƒ"
+"ä¸èƒ½è¢«é€‰æ‹©ï¼Œæˆ–者它的动作被调用。\n"
+"有关如何ç¦ç”¨é¡¹çš„更多信æ¯ï¼Œè¯·å‚阅 [method global_menu_set_item_disabled]。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns [code]true[/code] if the item at index [param idx] has radio button-"
+"style checkability.\n"
+"[b]Note:[/b] This is purely cosmetic; you must add the logic for checking/"
+"unchecking items in radio groups.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"如果索引 [param idx] 处的项具有å•é€‰æŒ‰é’®æ ·å¼çš„å¯å‹¾é€‰æ€§ï¼Œåˆ™è¿”回 [code]true[/"
+"code]。\n"
+"[b]注æ„:[/b]这纯粹是装饰性的; 您必须添加用于勾选/å–消勾选å•é€‰ç»„中项的逻"
+"辑。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Removes the item at index [param idx] from the global menu [param "
+"menu_root].\n"
+"[b]Note:[/b] The indices of items after the removed item will be shifted by "
+"one.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"从全局èœå• [param menu_root] 中移除索引 [param idx] 处的项。\n"
+"[b]注æ„:[/b]被移除的项之åŽçš„项的索引将移动一ä½ã€‚\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Sets the callback of the item at index [param idx]. Callback is emitted when "
+"an item is pressed.\n"
+"[b]Note:[/b] The [param callback] Callable needs to accept exactly one "
+"Variant parameter, the parameter passed to the Callable will be the value "
+"passed to the tag parameter when the menu item was created.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"设置索引 [param idx] 处项的回调。按下项时å‘出回调。\n"
+"[b]注æ„:[/b][param callback] Callable 需è¦æ°å¥½æŽ¥å—一个 Variant å‚数,传递给 "
+"Callable çš„å‚数将是创建èœå•é¡¹æ—¶ä¼ é€’ç»™ tag å‚数的值。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Enables/disables the item at index [param idx]. When it is disabled, it "
+"can't be selected and its action can't be invoked.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"å¯ç”¨/ç¦ç”¨ç´¢å¼• [param idx] 处的项。当它被ç¦ç”¨æ—¶ï¼Œå®ƒä¸èƒ½è¢«é€‰æ‹©å¹¶ä¸”它的动作ä¸èƒ½"
+"被调用。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Sets the submenu of the item at index [param idx]. The submenu is the ID of "
+"a global menu root that would be shown when the item is clicked.\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"设置索引 [param idx] 处项目的å­èœå•ã€‚å­èœå•æ˜¯å…¨å±€èœå•æ ¹çš„ ID,å•å‡»è¯¥é¡¹ç›®æ—¶å°†"
+"显示该èœå•æ ¹ã€‚\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Sets the [String] tooltip of the item at the specified index [param idx].\n"
+"[b]Note:[/b] This method is implemented on macOS."
+msgstr ""
+"设置指定索引 [param idx] 处项的 [String] 工具æ示。\n"
+"[b]注æ„:[/b]该方法在 macOS 上实现。"
+
+msgid ""
+"Returns [code]true[/code] if OS is using dark mode.\n"
+"[b]Note:[/b] This method is implemented on macOS, Windows and Linux (X11)."
+msgstr ""
+"如果æ“作系统正在使用暗黑模å¼ï¼Œåˆ™è¿”回 [code]true[/code]。\n"
+"[b]注æ„:[/b]这个方法在 macOSã€Windows å’Œ Linux(X11)上实现。"
+
+msgid ""
+"Returns [code]true[/code] if OS supports dark mode.\n"
+"[b]Note:[/b] This method is implemented on macOS, Windows and Linux (X11)."
+msgstr ""
+"如果æ“作系统支æŒæš—黑模å¼ï¼Œåˆ™è¿”回 [code]true[/code]。\n"
+"[b]注æ„:[/b]这个方法在 macOSã€Windows å’Œ Linux(X11)上实现。"
+
+msgid ""
+"Returns active keyboard layout index.\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"返回激活的键盘布局的索引。\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Converts a physical (US QWERTY) [param keycode] to one in the active "
+"keyboard layout.\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"将物ç†ï¼ˆç¾Žå¼ QWERTYï¼‰é”®ç  [param keycode] 转æ¢ä¸ºæ¿€æ´»é”®ç›˜å¸ƒå±€ä¸­çš„é”®ç ã€‚\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Returns the number of keyboard layouts.\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"返回键盘布局的数é‡ã€‚\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Returns the ISO-639/BCP-47 language code of the keyboard layout at position "
+"[param index].\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"返回ä½äºŽ [param index] ä½ç½®çš„键盘布局的 ISO-639/BCP-47 语言代ç ã€‚\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Returns the localized name of the keyboard layout at position [param "
+"index].\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"返回ä½äºŽ [param index] ä½ç½®çš„键盘布局的本地化å称。\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Sets the active keyboard layout.\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"设置激活的键盘布局。\n"
+"[b]注æ„:[/b]本方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid "Returns the current mouse mode. See also [method mouse_set_mode]."
+msgstr "返回当å‰çš„鼠标模å¼ã€‚å¦è§ [method mouse_set_mode]。"
+
+msgid "Returns the mouse cursor's current position."
+msgstr "返回鼠标光标当å‰ä½ç½®ã€‚"
+
+msgid "Sets the current mouse mode. See also [method mouse_get_mode]."
+msgstr "设置当å‰çš„鼠标模å¼ã€‚å¦è§ [method mouse_get_mode]。"
+
msgid ""
"Returns the total number of available tablet drivers.\n"
"[b]Note:[/b] This method is implemented on Windows."
@@ -9432,15 +21552,785 @@ msgstr ""
msgid "Hides the virtual keyboard if it is shown, does nothing otherwise."
msgstr "如果虚拟键盘为显示状æ€åˆ™éšè—虚拟键盘,å¦åˆ™ä¸åšä»»ä½•æ“作。"
+msgid ""
+"Shows the virtual keyboard if the platform has one.\n"
+"[param existing_text] parameter is useful for implementing your own "
+"[LineEdit] or [TextEdit], as it tells the virtual keyboard what text has "
+"already been typed (the virtual keyboard uses it for auto-correct and "
+"predictions).\n"
+"[param position] parameter is the screen space [Rect2] of the edited text.\n"
+"[param type] parameter allows configuring which type of virtual keyboard to "
+"show.\n"
+"[param max_length] limits the number of characters that can be entered if "
+"different from [code]-1[/code].\n"
+"[param cursor_start] can optionally define the current text cursor position "
+"if [param cursor_end] is not set.\n"
+"[param cursor_start] and [param cursor_end] can optionally define the "
+"current text selection.\n"
+"[b]Note:[/b] This method is implemented on Android, iOS and Web."
+msgstr ""
+"如果该平å°æœ‰è™šæ‹Ÿé”®ç›˜ï¼Œåˆ™æ˜¾ç¤ºè™šæ‹Ÿé”®ç›˜ã€‚\n"
+"[param existing_text] å‚数对于实现您自己的 [LineEdit] 或 [TextEdit] 很有用,"
+"因为它告诉虚拟键盘已ç»è¾“入了哪些文本(虚拟键盘使用它进行自动更正和预测)。\n"
+"[param position] å‚数为编辑文本的å±å¹•ç©ºé—´ [Rect2]。\n"
+"[param type] å‚æ•°å…许é…ç½®è¦æ˜¾ç¤ºçš„虚拟键盘类型。\n"
+"[param max_length] 在当与 [code]-1[/code] ä¸åŒæ—¶ï¼Œé™åˆ¶å¯è¾“入的字符数。\n"
+"如果未设置 [param cursor_end],则å¯é€‰å‚æ•° [param cursor_start] å¯ä»¥å®šä¹‰å½“å‰æ–‡"
+"本光标ä½ç½®ã€‚\n"
+"å¯é€‰å‚æ•° [param cursor_start] å’Œ [param cursor_end],å¯ä»¥å®šä¹‰å½“å‰æ–‡æœ¬é€‰åŒºã€‚\n"
+"[b]注æ„:[/b]该方法在 Androidã€iOS å’Œ Web 上实现。"
+
+msgid ""
+"Sets the mouse cursor position to the given [param position] relative to an "
+"origin at the upper left corner of the currently focused game Window Manager "
+"window.\n"
+"[b]Note:[/b] [method warp_mouse] is only supported on Windows, macOS and "
+"Linux. It has no effect on Android, iOS and Web."
+msgstr ""
+"将鼠标光标ä½ç½®è®¾ç½®ä¸ºç›¸å¯¹äºŽå½“å‰èšç„¦çš„游æˆçª—å£ç®¡ç†å™¨çª—å£å·¦ä¸Šè§’的原点的给定 "
+"[param position]。\n"
+"[b]注æ„:[/b][method warp_mouse] 仅在 Windowsã€macOS å’Œ Linux 上å—支æŒã€‚它在 "
+"Androidã€iOS å’Œ Web 上无效。"
+
+msgid ""
+"Returns the window's maximum size (in pixels). See also [method "
+"window_set_max_size]."
+msgstr "返回该窗å£çš„最大尺寸,å•ä½ä¸ºåƒç´ ã€‚å¦è§ [member window_set_max_size]。"
+
+msgid ""
+"Returns the window's minimum size (in pixels). See also [method "
+"window_set_min_size]."
+msgstr "返回该窗å£çš„最å°å°ºå¯¸ï¼Œå•ä½ä¸ºåƒç´ ã€‚å¦è§ [member window_set_min_size]。"
+
+msgid "Returns the mode of the given window."
+msgstr "返回给定窗å£çš„模å¼ã€‚"
+
+msgid ""
+"Returns the position of the client area of the given window on the screen."
+msgstr "返回å±å¹•ä¸Šç»™å®šçª—å£çš„客户端区域ä½ç½®ã€‚"
+
+msgid "Returns the V-Sync mode of the given window."
+msgstr "返回给定窗å£çš„åž‚ç›´åŒæ­¥æ¨¡å¼ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the given window can be maximized (the maximize "
+"button is enabled)."
+msgstr ""
+"如果给定的窗å£èƒ½å¤Ÿæœ€å¤§åŒ–(最大化按钮已å¯ç”¨ï¼‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Sets the maximum size of the window specified by [param window_id] in "
+"pixels. Normally, the user will not be able to drag the window to make it "
+"smaller than the specified size. See also [method window_get_max_size].\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"max_size] instead.\n"
+"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
+"window geometry restrictions and therefore bypass this limit."
+msgstr ""
+"设置由 [param window_id] 指定的窗å£çš„最大大å°ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚通常,用户将无法"
+"拖动窗å£ä½¿å…¶å°äºŽæŒ‡å®šå¤§å°ã€‚å¦è§ [method window_get_max_size]。\n"
+"[b]注æ„:[/b]建议改用 [member Window.max_size] 更改此值。\n"
+"[b]注æ„:[/b]使用第三方工具,用户å¯ä»¥ç¦ç”¨çª—å£å‡ ä½•é™åˆ¶ï¼Œä»Žè€Œç»•è¿‡æ­¤é™åˆ¶ã€‚"
+
+msgid ""
+"Sets the minimum size for the given window to [param min_size] (in pixels). "
+"Normally, the user will not be able to drag the window to make it larger "
+"than the specified size. See also [method window_get_min_size].\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"min_size] instead.\n"
+"[b]Note:[/b] By default, the main window has a minimum size of "
+"[code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the "
+"window is resized to a near-zero size.\n"
+"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
+"window geometry restrictions and therefore bypass this limit."
+msgstr ""
+"将给定窗å£çš„最å°å¤§å°è®¾ç½®ä¸º [param min_size](å•ä½ä¸ºåƒç´ ï¼‰ã€‚通常,用户将无法拖"
+"动窗å£ä½¿å…¶å¤§äºŽæŒ‡å®šå¤§å°ã€‚å¦è§ [method window_get_min_size]。\n"
+"[b]注æ„:[/b]建议改用 [member Window.min_size] æ¥æ›´æ”¹æ­¤å€¼ã€‚\n"
+"[b]注æ„:[/b]默认情况下,主窗å£çš„最å°å¤§å°ä¸º [code]Vector2i(64, 64)[/code]。这"
+"å¯ä»¥é˜²æ­¢å°†çª—å£è°ƒæ•´ä¸ºæŽ¥è¿‘零的大å°æ—¶å¯èƒ½å‡ºçŽ°çš„问题。\n"
+"[b]注æ„:[/b]使用第三方工具,用户å¯ä»¥ç¦ç”¨çª—å£å‡ ä½•é™åˆ¶ï¼Œä»Žè€Œç»•è¿‡æ­¤é™åˆ¶ã€‚"
+
+msgid ""
+"Sets a polygonal region of the window which accepts mouse events. Mouse "
+"events outside the region will be passed through.\n"
+"Passing an empty array will disable passthrough support (all mouse events "
+"will be intercepted by the window, which is the default behavior).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set region, using Path2D node.\n"
+"DisplayServer.window_set_mouse_passthrough($Path2D.curve."
+"get_baked_points())\n"
+"\n"
+"# Set region, using Polygon2D node.\n"
+"DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)\n"
+"\n"
+"# Reset region to default.\n"
+"DisplayServer.window_set_mouse_passthrough([])\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set region, using Path2D node.\n"
+"DisplayServer.WindowSetMousePassthrough(GetNode<Path2D>(\"Path2D\").Curve."
+"GetBakedPoints());\n"
+"\n"
+"// Set region, using Polygon2D node.\n"
+"DisplayServer.WindowSetMousePassthrough(GetNode<Polygon2D>(\"Polygon2D\")."
+"Polygon);\n"
+"\n"
+"// Reset region to default.\n"
+"DisplayServer.WindowSetMousePassthrough(new Vector2[] {});\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] On Windows, the portion of a window that lies outside the "
+"region is not drawn, while on Linux (X11) and macOS it is.\n"
+"[b]Note:[/b] This method is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"设置一个接å—鼠标事件的窗å£çš„多边形区域。该区域外的鼠标事件将被传递出去。\n"
+"传递一个空数组将ç¦ç”¨ç©¿é€æ”¯æŒï¼ˆæ‰€æœ‰é¼ æ ‡äº‹ä»¶å°†è¢«çª—å£æ‹¦æˆªï¼Œè¿™æ˜¯é»˜è®¤è¡Œä¸ºï¼‰ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 设置区域,使用 Path2D 节点。\n"
+"DisplayServer.window_set_mouse_passthrough($Path2D.curve."
+"get_baked_points())\n"
+"\n"
+"# 设置区域,使用 Polygon2D 节点。\n"
+"DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)\n"
+"\n"
+"# é‡ç½®åŒºåŸŸä¸ºé»˜è®¤å€¼ã€‚\n"
+"DisplayServer.window_set_mouse_passthrough([])\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 设置区域,使用 Path2D 节点。\n"
+"DisplayServer.WindowSetMousePassthrough(GetNode<Path2D>(\"Path2D\").Curve."
+"GetBakedPoints());\n"
+"\n"
+"// 设置区域,使用 Polygon2D 节点。\n"
+"DisplayServer.WindowSetMousePassthrough(GetNode<Polygon2D>(\"Polygon2D\")."
+"Polygon);\n"
+"\n"
+"// é‡ç½®åŒºåŸŸä¸ºé»˜è®¤å€¼ã€‚\n"
+"DisplayServer.WindowSetMousePassthrough(new Vector2[] {});\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]在 Windows 上,ä¸ä¼šç»˜åˆ¶ä½äºŽåŒºåŸŸä¹‹å¤–的窗å£éƒ¨åˆ†ï¼Œè€Œåœ¨ Linux(X11)"
+"和 macOS 上则会绘制。\n"
+"[b]注æ„:[/b]该方法在 Linux(X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid ""
+"Sets the position of the given window to [param position]. On multi-monitor "
+"setups, the screen position is relative to the virtual desktop area. On "
+"multi-monitor setups with different screen resolutions or orientations, the "
+"origin may be located outside any display like this:\n"
+"[codeblock]\n"
+"* (0, 0) +-------+\n"
+" | |\n"
+"+-------------+ | |\n"
+"| | | |\n"
+"| | | |\n"
+"+-------------+ +-------+\n"
+"[/codeblock]\n"
+"See also [method window_get_position] and [method window_set_size].\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"position] instead."
+msgstr ""
+"将给定窗å£çš„ä½ç½®è®¾ç½®ä¸º [param position]。在多显示器设置中,å±å¹•ä½ç½®æ˜¯ç›¸å¯¹äºŽè™š"
+"æ‹Ÿæ¡Œé¢åŒºåŸŸçš„。在具有ä¸åŒå±å¹•åˆ†è¾¨çŽ‡æˆ–æ–¹å‘的多显示器设置中,原点å¯èƒ½ä½äºŽä»»ä½•æ˜¾"
+"示器之外,如下所示:\n"
+"[codeblock]\n"
+"* (0, 0) +-------+\n"
+" | |\n"
+"+-------------+ | |\n"
+"| | | |\n"
+"| | | |\n"
+"+-------------+ +-------+\n"
+"[/codeblock]\n"
+"å¦è§ [method window_get_position] å’Œ [method window_set_size]。\n"
+"[b]注æ„:[/b]建议改用 [member Window.position] 更改此值。"
+
+msgid ""
+"Sets the size of the given window to [param size] (in pixels). See also "
+"[method window_get_size] and [method window_get_position].\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"size] instead."
+msgstr ""
+"将给定窗å£çš„大å°è®¾ç½®ä¸º [param size](å•ä½ä¸ºåƒç´ ï¼‰ã€‚å¦è§ [method "
+"window_get_size] 和 [method window_get_position]。\n"
+"[b]注æ„:[/b]建议改用 [member Window.size] 更改此值。"
+
+msgid ""
+"Sets the title of the given window to [param title].\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"title] instead.\n"
+"[b]Note:[/b] Avoid changing the window title every frame, as this can cause "
+"performance issues on certain window managers. Try to change the window "
+"title only a few times per second at most."
+msgstr ""
+"将给定窗å£çš„标题设置为 [param title]。\n"
+"[b]注æ„:[/b]建议改用 [member Window.title] 更改此值。\n"
+"[b]注æ„:[/b]é¿å…æ¯ä¸€å¸§éƒ½æ›´æ”¹çª—å£æ ‡é¢˜ï¼Œå› ä¸ºè¿™ä¼šå¯¼è‡´æŸäº›çª—å£ç®¡ç†å™¨å‡ºçŽ°æ€§èƒ½é—®"
+"题。å°è¯•æ¯ç§’最多更改几次窗å£æ ‡é¢˜ã€‚"
+
+msgid ""
+"Sets window transient parent. Transient window is will be destroyed with its "
+"transient parent and will return focus to their parent when closed. The "
+"transient window is displayed on top of a non-exclusive full-screen parent "
+"window. Transient windows can't enter full-screen mode.\n"
+"[b]Note:[/b] It's recommended to change this value using [member Window."
+"transient] instead.\n"
+"[b]Note:[/b] The behavior might be different depending on the platform."
+msgstr ""
+"设置窗å£çž¬æ€çˆ¶çº§ã€‚瞬æ€çª—å£å°†ä¸Žå…¶çž¬æ€çˆ¶çº§ä¸€èµ·é”€æ¯ï¼Œå¹¶åœ¨å…³é—­æ—¶å°†ç„¦ç‚¹è¿”回到它们"
+"的父级。瞬æ€çª—å£æ˜¾ç¤ºåœ¨éžæŽ’他性全å±çˆ¶çª—å£çš„顶部。瞬æ€çª—å£æ— æ³•è¿›å…¥å…¨å±æ¨¡å¼ã€‚\n"
+"[b]注æ„:[/b]建议改用 [member Window.transient] 更改此值。\n"
+"[b]注æ„:[/b]行为å¯èƒ½å› å¹³å°è€Œå¼‚。"
+
+msgid ""
+"Display server supports global menu. This allows the application to display "
+"its menu items in the operating system's top bar. [b]macOS[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒå…¨å±€èœå•ã€‚能够让应用程åºåœ¨æ“作系统的顶部æ æ˜¾ç¤ºå…¶èœå•é¡¹ã€‚"
+"[b]macOS[/b]"
+
+msgid ""
+"Display server supports multiple windows that can be moved outside of the "
+"main window. [b]Windows, macOS, Linux (X11)[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒå¤šçª—å£ï¼Œå¯ä»¥ç§»åŠ¨åˆ°ä¸»çª—å£ä¹‹å¤–。[b]Windowsã€macOSã€Linux(X11)[/"
+"b]"
+
+msgid ""
+"Display server supports touchscreen input. [b]Windows, Linux (X11), Android, "
+"iOS, Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒè§¦å±è¾“入。[b]Windowsã€Linux(X11)ã€Androidã€iOSã€Web[/b]"
+
+msgid ""
+"Display server supports mouse input. [b]Windows, macOS, Linux (X11), "
+"Android, Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒé¼ æ ‡è¾“入。[b]Windowsã€macOSã€Linux(X11)ã€Androidã€Web[/b]"
+
+msgid ""
+"Display server supports setting and getting clipboard data. See also "
+"[constant FEATURE_CLIPBOARD_PRIMARY]. [b]Windows, macOS, Linux (X11), "
+"Android, iOS, Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒå‰ªè´´æ¿æ•°æ®çš„设置和获å–。å¦è§ [constant "
+"FEATURE_CLIPBOARD_PRIMARY]。[b]Windowsã€macOSã€Linux(X11)ã€Androidã€iOSã€"
+"Web[/b]"
+
+msgid ""
+"Display server supports popping up a virtual keyboard when requested to "
+"input text without a physical keyboard. [b]Android, iOS, Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒåœ¨è¯·æ±‚输入文本但没有物ç†é”®ç›˜æ—¶å¼¹å‡ºè™šæ‹Ÿé”®ç›˜ã€‚[b]Androidã€iOSã€"
+"Web[/b]"
+
+msgid ""
+"Display server supports setting the mouse cursor shape to be different from "
+"the default. [b]Windows, macOS, Linux (X11), Android, Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒå°†é¼ æ ‡å…‰æ ‡å½¢çŠ¶è®¾ç½®ä¸ºä¸Žé»˜è®¤ä¸åŒã€‚[b]Windowsã€macOSã€Linux"
+"(X11)ã€Androidã€Web[/b]"
+
+msgid ""
+"Display server supports setting the mouse cursor shape to a custom image. "
+"[b]Windows, macOS, Linux (X11), Web[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒå°†é¼ æ ‡å…‰æ ‡å½¢çŠ¶è®¾ç½®ä¸ºè‡ªå®šä¹‰å›¾åƒã€‚[b]Windowsã€macOSã€Linux"
+"(X11)ã€Web[/b]"
+
+msgid ""
+"Display server supports changing the window icon (usually displayed in the "
+"top-left corner). [b]Windows, macOS, Linux (X11)[/b]"
+msgstr ""
+"显示æœåŠ¡å™¨æ”¯æŒæ”¹å˜çª—å£å›¾æ ‡ï¼ˆé€šå¸¸æ˜¾ç¤ºåœ¨å·¦ä¸Šè§’)。[b]Windowsã€macOSã€Linux"
+"(X11)[/b]"
+
+msgid ""
+"Display server supports changing the window icon (usually displayed in the "
+"top-left corner). [b]Windows, macOS[/b]"
+msgstr "显示æœåŠ¡å™¨æ”¯æŒæ”¹å˜çª—å£å›¾æ ‡ï¼ˆé€šå¸¸æ˜¾ç¤ºåœ¨å·¦ä¸Šè§’)。[b]Windowsã€macOS[/b]"
+
+msgid ""
+"Display server supports changing the screen orientation. [b]Android, iOS[/b]"
+msgstr "显示æœåŠ¡å™¨æ”¯æŒæ”¹å˜å±å¹•æœå‘。[b]Androidã€iOS[/b]"
+
msgid "Makes the mouse cursor visible if it is hidden."
msgstr "如果鼠标光标处于éšè—状æ€ï¼Œåˆ™ä½¿å…¶å¯è§ã€‚"
msgid "Makes the mouse cursor hidden if it is visible."
msgstr "如果鼠标光标是å¯è§çš„,则使其éšè—。"
+msgid ""
+"Captures the mouse. The mouse will be hidden and its position locked at the "
+"center of the window manager's window.\n"
+"[b]Note:[/b] If you want to process the mouse's movement in this mode, you "
+"need to use [member InputEventMouseMotion.relative]."
+msgstr ""
+"æ•èŽ·é¼ æ ‡ã€‚鼠标将被éšè—,其ä½ç½®è¢«é”定在窗å£ç®¡ç†å™¨çª—å£çš„中心。\n"
+"[b]注æ„:[/b]如果你想在这ç§æ¨¡å¼ä¸‹å¤„ç†é¼ æ ‡çš„移动,则需è¦ä½¿ç”¨ [member "
+"InputEventMouseMotion.relative]。"
+
+msgid "Confines the mouse cursor to the game window, and make it visible."
+msgstr "将鼠标光标é™åˆ¶åœ¨æ¸¸æˆçª—å£å†…,并使其å¯è§ã€‚"
+
+msgid "Confines the mouse cursor to the game window, and make it hidden."
+msgstr "将鼠标光标é™åˆ¶åœ¨æ¸¸æˆçª—å£å†…,并使其éšè—。"
+
+msgid "Represents the primary screen."
+msgstr "代表主å±å¹•ã€‚"
+
+msgid ""
+"Represents the screen where the main window is located. This is usually the "
+"default value in functions that allow specifying one of several screens."
+msgstr "代表主窗å£æ‰€åœ¨çš„å±å¹•ã€‚如果函数å…许指定ä¸åŒçš„å±å¹•ï¼Œè¿™ä¸ªå€¼é€šå¸¸æ˜¯é»˜è®¤å€¼ã€‚"
+
+msgid "Default landscape orientation."
+msgstr "默认横å±æœå‘。"
+
+msgid "Default portrait orienstation."
+msgstr "默认竖å±æœå‘。"
+
+msgid "Reverse landscape orientation (upside down)."
+msgstr "倒横å±æœå‘(上下颠倒)。"
+
+msgid "Reverse portrait orientation (upside down)."
+msgstr "倒竖å±æœå‘(上下颠倒)。"
+
+msgid ""
+"Automatic landscape orientation (default or reverse depending on sensor)."
+msgstr "自动横å±æœå‘(传感器决定默认或倒å‘)。"
+
+msgid ""
+"Automatic portrait orientation (default or reverse depending on sensor)."
+msgstr "自动竖å±æœå‘(传感器决定默认或倒å‘)。"
+
+msgid ""
+"Automatic landscape or portrait orientation (default or reverse depending on "
+"sensor)."
+msgstr "自动横å±æˆ–ç«–å±æœå‘(传感器决定默认或倒å‘)。"
+
+msgid "Default text virtual keyboard."
+msgstr "默认文本虚拟键盘。"
+
+msgid "Multiline virtual keyboard."
+msgstr "多行虚拟键盘。"
+
+msgid "Virtual number keypad, useful for PIN entry."
+msgstr "虚拟数字键盘,å¯ç”¨äºŽ PIN 输入。"
+
+msgid "Virtual number keypad, useful for entering fractional numbers."
+msgstr "虚拟数字键盘,å¯ç”¨äºŽè¾“å…¥å°æ•°ã€‚"
+
+msgid "Virtual phone number keypad."
+msgstr "虚拟手机å·ç é”®ç›˜ã€‚"
+
+msgid ""
+"Virtual keyboard with additional keys to assist with typing email addresses."
+msgstr "带有附加键的虚拟键盘,å¯å¸®åŠ©è¾“入电å­é‚®ä»¶åœ°å€ã€‚"
+
+msgid ""
+"Virtual keyboard for entering a password. On most platforms, this should "
+"disable autocomplete and autocapitalization.\n"
+"[b]Note:[/b] This is not supported on Web. Instead, this behaves identically "
+"to [constant KEYBOARD_TYPE_DEFAULT]."
+msgstr ""
+"用于输入密ç çš„虚拟键盘。在大多数平å°ä¸Šï¼Œè¿™åº”该会ç¦ç”¨è‡ªåŠ¨å®Œæˆå’Œè‡ªåŠ¨é¦–å­—æ¯å¤§å†™"
+"功能。\n"
+"[b]注æ„:[/b]Web å¹³å°ä¸æ”¯æŒã€‚与 [constant KEYBOARD_TYPE_DEFAULT] 的行为相åŒã€‚"
+
+msgid "Virtual keyboard with additional keys to assist with typing URLs."
+msgstr "带有附加键的虚拟键盘,å¯å¸®åŠ©è¾“å…¥ URL。"
+
+msgid "Represents the size of the [enum CursorShape] enum."
+msgstr "代表 [enum CursorShape] 枚举的大å°ã€‚"
+
+msgid ""
+"Windowed mode, i.e. [Window] doesn't occupy the whole screen (unless set to "
+"the size of the screen)."
+msgstr "窗å£æ¨¡å¼ï¼Œå³ [Window] ä¸å æ®æ•´ä¸ªå±å¹•ï¼ˆé™¤éžè®¾ç½®ä¸ºå±å¹•çš„大å°ï¼‰ã€‚"
+
+msgid ""
+"Minimized window mode, i.e. [Window] is not visible and available on window "
+"manager's window list. Normally happens when the minimize button is pressed."
+msgstr ""
+"最å°åŒ–窗å£æ¨¡å¼ï¼Œå³ [Window] 在窗å£ç®¡ç†å™¨çš„窗å£åˆ—表中既ä¸å¯è§ä¹Ÿä¸å¯ç”¨ã€‚通常å‘"
+"生在按下最å°åŒ–按钮时。"
+
+msgid "Max value of the [enum WindowFlags]."
+msgstr "[enum WindowFlags] 的最大值。"
+
+msgid ""
+"Sent when the mouse pointer enters the window, see [method "
+"window_set_window_event_callback]."
+msgstr ""
+"当鼠标指针进入该窗å£æ—¶å‘é€ï¼Œè§ [method window_set_window_event_callback]。"
+
+msgid ""
+"Sent when the mouse pointer exits the window, see [method "
+"window_set_window_event_callback]."
+msgstr ""
+"当鼠标指针退出该窗å£æ—¶å‘é€ï¼Œè§ [method window_set_window_event_callback]。"
+
+msgid ""
+"Sent when the window grabs focus, see [method "
+"window_set_window_event_callback]."
+msgstr "当该窗å£èŽ·å¾—焦点时å‘é€ï¼Œè§ [method window_set_window_event_callback]。"
+
+msgid ""
+"Sent when the window loses focus, see [method "
+"window_set_window_event_callback]."
+msgstr "当该窗å£å¤±åŽ»ç„¦ç‚¹æ—¶å‘é€ï¼Œè§ [method window_set_window_event_callback]。"
+
msgid "Helper class to implement a DTLS server."
msgstr "实现 DTLS æœåŠ¡å™¨çš„辅助类。"
+msgid ""
+"This class is used to store the state of a DTLS server. Upon [method setup] "
+"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via "
+"[method take_connection] as DTLS clients. Under the hood, this class is used "
+"to store the DTLS state and cookies of the server. The reason of why the "
+"state and cookies are needed is outside of the scope of this documentation.\n"
+"Below a small example of how to use it:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# server_node.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := DTLSServer.new()\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+" var key = load(\"key.key\") # Your private key.\n"
+" var cert = load(\"cert.crt\") # Your X509 certificate.\n"
+" dtls.setup(key, cert)\n"
+"\n"
+"func _process(delta):\n"
+" while server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)\n"
+" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
+" continue # It is normal that 50% of the connections fails due to "
+"cookie exchange.\n"
+" print(\"Peer connected!\")\n"
+" peers.append(dtls_peer)\n"
+"\n"
+" for p in peers:\n"
+" p.poll() # Must poll to update the state.\n"
+" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" while p.get_available_packet_count() > 0:\n"
+" print(\"Received message from client: %s\" % p.get_packet()."
+"get_string_from_utf8())\n"
+" p.put_packet(\"Hello DTLS client\".to_utf8())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ServerNode.cs\n"
+"using Godot;\n"
+"\n"
+"public partial class ServerNode : Node\n"
+"{\n"
+" private DtlsServer _dtls = new DtlsServer();\n"
+" private UdpServer _server = new UdpServer();\n"
+" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
+"Collections.Array<PacketPeerDTLS>();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _server.Listen(4242);\n"
+" var key = GD.Load<CryptoKey>(\"key.key\"); // Your private key.\n"
+" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // Your X509 "
+"certificate.\n"
+" _dtls.Setup(key, cert);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" while (Server.IsConnectionAvailable())\n"
+" {\n"
+" PacketPeerUDP peer = _server.TakeConnection();\n"
+" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
+" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
+" {\n"
+" continue; // It is normal that 50% of the connections fails "
+"due to cookie exchange.\n"
+" }\n"
+" GD.Print(\"Peer connected!\");\n"
+" _peers.Add(dtlsPeer);\n"
+" }\n"
+"\n"
+" foreach (var p in _peers)\n"
+" {\n"
+" p.Poll(); // Must poll to update the state.\n"
+" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
+" {\n"
+" while (p.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"Received Message From Client: {p.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" p.PutPacket(\"Hello DTLS Client\".ToUtf8());\n"
+" }\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# client_node.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := PacketPeerDTLS.new()\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+" dtls.connect_to_peer(udp, false) # Use true in production for "
+"certificate validation!\n"
+"\n"
+"func _process(delta):\n"
+" dtls.poll()\n"
+" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" if !connected:\n"
+" # Try to contact server\n"
+" dtls.put_packet(\"The answer is... 42!\".to_utf8())\n"
+" while dtls.get_available_packet_count() > 0:\n"
+" print(\"Connected: %s\" % dtls.get_packet()."
+"get_string_from_utf8())\n"
+" connected = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ClientNode.cs\n"
+"using Godot;\n"
+"using System.Text;\n"
+"\n"
+"public partial class ClientNode : Node\n"
+"{\n"
+" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
+" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
+" private bool _connected = false;\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
+" _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in "
+"production for certificate validation!\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" _dtls.Poll();\n"
+" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
+" {\n"
+" if (!_connected)\n"
+" {\n"
+" // Try to contact server\n"
+" _dtls.PutPacket(\"The Answer Is..42!\".ToUtf8());\n"
+" }\n"
+" while (_dtls.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"Connected: {_dtls.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" _connected = true;\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"该类用于存储 DTLS æœåŠ¡å™¨çš„状æ€ã€‚在 [method setup] 之åŽï¼Œå®ƒå°†è¿žæŽ¥çš„ "
+"[PacketPeerUDP] 转æ¢ä¸º [PacketPeerDTLS],通过 [method take_connection] 接å—它"
+"们作为 DTLS 客户端。在底层,这个类用于存储æœåŠ¡å™¨çš„ DTLS 状æ€å’Œ cookie。为什么"
+"需è¦çŠ¶æ€å’Œ cookie 的原因ä¸åœ¨æœ¬æ–‡æ¡£çš„范围内。\n"
+"下é¢æ˜¯ä¸€ä¸ªå¦‚何使用它的å°ä¾‹å­ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# server_node.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := DTLSServer.new()\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+" var key = load(\"key.key\") # ä½ çš„ç§é’¥ã€‚\n"
+" var cert = load(\"cert.crt\") # ä½ çš„ X509 è¯ä¹¦ã€‚\n"
+" dtls.setup(key, cert)\n"
+"\n"
+"func _process(delta):\n"
+" while server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var dtls_peer : PacketPeerDTLS = dtls.take_connection(peer)\n"
+" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
+" continue # 由于 cookie 交æ¢ï¼Œ50% 的连接会失败,这是正常现象。\n"
+" print(\"对等体已连接ï¼\")\n"
+" peers.append(dtls_peer)\n"
+"\n"
+" for p in peers:\n"
+" p.poll() # Must poll to update the state.\n"
+" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" while p.get_available_packet_count() > 0:\n"
+" print(\"从客户端收到消æ¯ï¼š%s\" % p.get_packet()."
+"get_string_from_utf8())\n"
+" p.put_packet(\"你好 DTLS 客户端\".to_utf8())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ServerNode.cs\n"
+"using Godot;\n"
+"\n"
+"public partial class ServerNode : Node\n"
+"{\n"
+" private DtlsServer _dtls = new DtlsServer();\n"
+" private UdpServer _server = new UdpServer();\n"
+" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
+"Collections.Array<PacketPeerDTLS>();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _server.Listen(4242);\n"
+" var key = GD.Load<CryptoKey>(\"key.key\"); // ä½ çš„ç§é’¥ã€‚\n"
+" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // ä½ çš„ X509 è¯"
+"书。\n"
+" _dtls.Setup(key, cert);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" while (Server.IsConnectionAvailable())\n"
+" {\n"
+" PacketPeerUDP peer = _server.TakeConnection();\n"
+" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
+" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
+" {\n"
+" continue; // 由于 cookie 交æ¢ï¼Œ50% 的连接会失败,这是正常现"
+"象。\n"
+" }\n"
+" GD.Print(\"对等体已连接ï¼\");\n"
+" _peers.Add(dtlsPeer);\n"
+" }\n"
+"\n"
+" foreach (var p in _peers)\n"
+" {\n"
+" p.Poll(); // Must poll to update the state.\n"
+" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
+" {\n"
+" while (p.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"从客户端收到消æ¯ï¼š {p.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" p.PutPacket(\"你好 DTLS 客户端\".ToUtf8());\n"
+" }\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# client_node.gd\n"
+"extends Node\n"
+"\n"
+"var dtls := PacketPeerDTLS.new()\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+" dtls.connect_to_peer(udp, false) # 生产环境中请使用 true 进行è¯ä¹¦æ ¡éªŒï¼\n"
+"\n"
+"func _process(delta):\n"
+" dtls.poll()\n"
+" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
+" if !connected:\n"
+" # å°è¯•è”ç³»æœåŠ¡å™¨\n"
+" dtls.put_packet(\"回应是… 42ï¼\".to_utf8())\n"
+" while dtls.get_available_packet_count() > 0:\n"
+" print(\"已连接:%s\" % dtls.get_packet()."
+"get_string_from_utf8())\n"
+" connected = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ClientNode.cs\n"
+"using Godot;\n"
+"using System.Text;\n"
+"\n"
+"public partial class ClientNode : Node\n"
+"{\n"
+" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
+" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
+" private bool _connected = false;\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
+" _dtls.ConnectToPeer(_udp, validateCerts: false); // 生产环境中请使用 "
+"true 进行è¯ä¹¦æ ¡éªŒï¼\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" _dtls.Poll();\n"
+" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
+" {\n"
+" if (!_connected)\n"
+" {\n"
+" // å°è¯•è”ç³»æœåŠ¡å™¨\n"
+" _dtls.PutPacket(\"回应是… 42ï¼\".ToUtf8());\n"
+" }\n"
+" while (_dtls.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"已连接:{_dtls.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" _connected = true;\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "Godot editor's command palette."
+msgstr "Godot 编辑器的命令é¢æ¿ã€‚"
+
+msgid ""
+"Adds a custom command to EditorCommandPalette.\n"
+"- [param command_name]: [String] (Name of the [b]Command[/b]. This is "
+"displayed to the user.)\n"
+"- [param key_name]: [String] (Name of the key for a particular [b]Command[/"
+"b]. This is used to uniquely identify the [b]Command[/b].)\n"
+"- [param binded_callable]: [Callable] (Callable of the [b]Command[/b]. This "
+"will be executed when the [b]Command[/b] is selected.)\n"
+"- [param shortcut_text]: [String] (Shortcut text of the [b]Command[/b] if "
+"available.)"
+msgstr ""
+"å‘ EditorCommandPalette 添加自定义命令。\n"
+"- [param command_name]:[String]([b]Command[/b] çš„å称。这会显示给用户。)\n"
+"- [param key_name]:[String](特定 [b]Command[/b] 的密钥å称。这用于唯一标识 "
+"[b]Command[/b]。)\n"
+"- [param binded_callable]:[Callable]([b]Command[/b] 的 Callable。这将在选"
+"择 [b]Command[/b] 时执行。)\n"
+"- [param shortcut_text]:[String]([b]Command[/b] çš„å¿«æ·é”®æ–‡æœ¬ï¼Œå¦‚æžœå¯ç”¨ã€‚)"
+
+msgid ""
+"Returns an array of [EditorDebuggerSession] currently available to this "
+"debugger plugin.\n"
+"Note: Not sessions in the array may be inactive, check their state via "
+"[method EditorDebuggerSession.is_active]"
+msgstr ""
+"返回该调试器æ’件当å‰å¯ç”¨çš„ [EditorDebuggerSession] 数组。\n"
+"注æ„:ä¸æ˜¯æ•°ç»„中的会è¯å¯èƒ½å¤„于éžæ´»åŠ¨çŠ¶æ€ï¼Œé€šè¿‡ [method EditorDebuggerSession."
+"is_active] 检查它们的状æ€"
+
+msgid "A class to interact with the editor debugger."
+msgstr "与编辑器调试器交互的类。"
+
msgid "A script that is executed when exporting the project."
msgstr "在导出项目时执行的脚本。"
@@ -9491,7 +22381,7 @@ msgstr "在 [method _export_file] 中调用。跳过当å‰æ–‡ä»¶ï¼Œå› æ­¤å®ƒä¸å
msgid ""
"An editor feature profile which can be used to disable specific features."
-msgstr "编辑器功能é…置文件,å¯ç”¨äºŽç¦ç”¨ç‰¹å®šåŠŸèƒ½ã€‚"
+msgstr "编辑器功能é…置,å¯ç”¨äºŽç¦ç”¨ç‰¹å®šåŠŸèƒ½ã€‚"
msgid ""
"An editor feature profile can be used to disable specific features of the "
@@ -9503,28 +22393,31 @@ msgid ""
"To manage editor feature profiles visually, use [b]Editor > Manage Feature "
"Profiles...[/b] at the top of the editor window."
msgstr ""
-"编辑器功能é…置文件å¯ä»¥ç”¨æ¥ç¦ç”¨ Godot 编辑器的特定功能。当ç¦ç”¨æ—¶ï¼Œè¿™äº›åŠŸèƒ½å°†ä¸"
-"会出现在编辑器中,从而使编辑器ä¸é‚£ä¹ˆæ··ä¹±ã€‚这个设置使编辑器更简æ´ï¼Œåœ¨å›¢é˜Ÿä¸­å·¥"
-"作时。例如,游æˆç¾Žæœ¯å’Œå…³å¡è®¾è®¡å¸ˆå¯ä»¥ä½¿ç”¨ç¦ç”¨è„šæœ¬ç¼–辑器的功能é…置文件,以é¿å…"
-"æ„外地对他们ä¸åº”该编辑的文件进行更改。\n"
-"è¦å¯è§†åŒ–地管ç†ç¼–辑器功能é…置文件,请使用编辑器窗å£é¡¶éƒ¨çš„[b]编辑器 >管ç†åŠŸèƒ½é…"
-"置文件...[/b]。"
+"编辑器功能é…ç½®å¯ä»¥ç”¨æ¥ç¦ç”¨ Godot 编辑器的特定功能。当ç¦ç”¨æ—¶ï¼Œè¿™äº›åŠŸèƒ½å°†ä¸ä¼šå‡º"
+"现在编辑器中,从而使编辑器ä¸é‚£ä¹ˆæ··ä¹±ã€‚这个设置使编辑器更简æ´ï¼Œåœ¨å›¢é˜Ÿä¸­å·¥ä½œ"
+"时。例如,游æˆç¾Žæœ¯å’Œå…³å¡è®¾è®¡å¸ˆå¯ä»¥ä½¿ç”¨ç¦ç”¨è„šæœ¬ç¼–辑器的功能é…置,以é¿å…æ„外地"
+"对他们ä¸åº”该编辑的文件进行更改。\n"
+"è¦å¯è§†åŒ–地管ç†ç¼–辑器功能é…置,请使用编辑器窗å£é¡¶éƒ¨çš„[b]编辑器 >管ç†åŠŸèƒ½é…"
+"置...[/b]。"
+
+msgid "Returns the specified [param feature]'s human-readable name."
+msgstr "返回指定特性 [param feature] 的人类å¯è¯»å称。"
msgid ""
"Loads an editor feature profile from a file. The file must follow the JSON "
"format obtained by using the feature profile manager's [b]Export[/b] button "
"or the [method save_to_file] method."
msgstr ""
-"从文件中加载一个编辑器功能é…置文件。该文件必须éµå¾ª JSON æ ¼å¼ï¼Œé€šè¿‡ä½¿ç”¨åŠŸèƒ½é…"
-"置文件管ç†å™¨çš„[b]导出[/b]按钮或 [method save_to_file] 方法获得。"
+"从文件中加载一个编辑器功能é…置。该文件必须éµå¾ª JSON æ ¼å¼ï¼Œé€šè¿‡ä½¿ç”¨åŠŸèƒ½é…置管"
+"ç†å™¨çš„[b]导出[/b]按钮或 [method save_to_file] 方法获得。"
msgid ""
"Saves the editor feature profile to a file in JSON format. It can then be "
"imported using the feature profile manager's [b]Import[/b] button or the "
"[method load_from_file] method."
msgstr ""
-"将编辑器的功能é…ç½®ä¿å­˜åˆ° JSON æ ¼å¼çš„文件中。然åŽå¯ä»¥ä½¿ç”¨åŠŸèƒ½é…置文件管ç†å™¨çš„"
-"[b]导入[/b]按钮或 [method load_from_file] 方法导入它。"
+"将编辑器的功能é…ç½®ä¿å­˜åˆ° JSON æ ¼å¼çš„文件中。然åŽå¯ä»¥ä½¿ç”¨åŠŸèƒ½é…置管ç†å™¨çš„[b]导"
+"入[/b]按钮或 [method load_from_file] 方法导入它。"
msgid ""
"The 3D editor. If this feature is disabled, the 3D editor won't display but "
@@ -9563,11 +22456,24 @@ msgstr "文件系统é¢æ¿ã€‚如果ç¦ç”¨æ­¤åŠŸèƒ½ï¼Œåˆ™æ–‡ä»¶ç³»ç»Ÿé¢æ¿å°†ä¸
msgid ""
"The Import dock. If this feature is disabled, the Import dock won't be "
"visible."
-msgstr "导入扩展é¢æ¿ã€‚如果ç¦ç”¨æ­¤åŠŸèƒ½ï¼Œåˆ™å¯¼å…¥æ‰©å±•é¢æ¿å°†ä¸å¯è§ã€‚"
+msgstr "导入é¢æ¿ã€‚如果ç¦ç”¨æ­¤åŠŸèƒ½ï¼Œåˆ™å¯¼å…¥é¢æ¿å°†ä¸å¯è§ã€‚"
+
+msgid ""
+"The History dock. If this feature is disabled, the History dock won't be "
+"visible."
+msgstr "历å²é¢æ¿ã€‚如果ç¦ç”¨æ­¤åŠŸèƒ½ï¼Œåˆ™åŽ†å²é¢æ¿å°†ä¸å¯è§ã€‚"
msgid "A modified version of [FileDialog] used by the editor."
msgstr "编辑器使用的 [FileDialog] 的修改版。"
+msgid ""
+"[EditorFileDialog] is an enhanced version of [FileDialog] available only to "
+"editor plugins. Additional features include list of favorited/recent files "
+"and ability to see files as thumbnails grid instead of list."
+msgstr ""
+"[EditorFileDialog] 是 [FileDialog] 的增强版,åªå¯¹ç¼–辑器æ’件å¯ç”¨ã€‚é¢å¤–的功能包"
+"括收è—/最近文件列表和以缩略图网格而ä¸æ˜¯åˆ—表的形å¼æŸ¥çœ‹æ–‡ä»¶çš„能力。"
+
msgid "Removes all filters except for \"All Files (*)\"."
msgstr "移除“All Files(*)â€ç­›é€‰å™¨ä¹‹å¤–的所有筛选器。"
@@ -9705,6 +22611,18 @@ msgstr "扫æ文件系统的改动。"
msgid "Check if the source of any imported resource changed."
msgstr "检查是å¦æ›´æ”¹äº†å·²å¯¼å…¥èµ„æºçš„æ¥æºã€‚"
+msgid ""
+"Add a file in an existing directory, or schedule file information to be "
+"updated on editor restart. Can be used to update text files saved by an "
+"external program.\n"
+"This will not import the file. To reimport, call [method reimport_files] or "
+"[method scan] methods."
+msgstr ""
+"在现有目录中添加文件,或计划在编辑器é‡æ–°å¯åŠ¨æ—¶æ›´æ–°æ–‡ä»¶ä¿¡æ¯ã€‚å¯ç”¨äºŽæ›´æ–°ç”±å¤–部"
+"程åºä¿å­˜çš„文本文件。\n"
+"è¿™ä¸ä¼šå¯¼å…¥æ–‡ä»¶ã€‚è¦é‡æ–°å¯¼å…¥ï¼Œè¯·è°ƒç”¨ [method reimport_files] 或 [method scan] "
+"方法。"
+
msgid "Emitted if the filesystem changed."
msgstr "在文件系统更改的时候触å‘。"
@@ -9715,6 +22633,9 @@ msgid ""
"Emitted if at least one resource is reloaded when the filesystem is scanned."
msgstr "如果在扫æ文件系统的时候,至少有一个资æºè¢«é‡æ–°åŠ è½½ï¼Œåˆ™è§¦å‘该信å·ã€‚"
+msgid "Emitted when the list of global script classes gets updated."
+msgstr "更新全局脚本类列表时触å‘。"
+
msgid "Emitted if the source of any imported file changed."
msgstr "如果导入文件的æ¥æºå‘生å˜åŒ–,则触å‘。"
@@ -9724,9 +22645,38 @@ msgstr "资æºæ–‡ä»¶ç³»ç»Ÿçš„目录。"
msgid "A more generalized, low-level variation of the directory concept."
msgstr "目录概念的一个更概括的ã€ä½Žçº§çš„概念。"
+msgid ""
+"Returns the index of the directory with name [param name] or [code]-1[/code] "
+"if not found."
+msgstr "返回å为 [param name] 的目录索引,如果未找到返回 [code]-1[/code]。"
+
+msgid ""
+"Returns the index of the file with name [param name] or [code]-1[/code] if "
+"not found."
+msgstr "返回å为 [param name] 的文件索引,如果未找到返回 [code]-1[/code]。"
+
+msgid "Returns the name of the file at index [param idx]."
+msgstr "返回索引 [param idx] 处的文件å。"
+
msgid "Returns the number of files in this directory."
msgstr "返回目录里文件的数é‡ã€‚"
+msgid ""
+"Returns [code]true[/code] if the file at index [param idx] imported properly."
+msgstr "如果索引 [param idx] 处的文件正确导入,则返回 [code]true[/code]。"
+
+msgid "Returns the path to the file at index [param idx]."
+msgstr "返回索引 [param idx] 处的文件所在路径。"
+
+msgid ""
+"Returns the resource type of the file at index [param idx]. This returns a "
+"string such as [code]\"Resource\"[/code] or [code]\"GDScript\"[/code], "
+"[i]not[/i] a file extension such as [code]\".gd\"[/code]."
+msgstr ""
+"返回在索引 [code]idx[/code] 处文件的资æºç±»åž‹ã€‚这将返回字符串,如 "
+"[code]\"Resource\"[/code] 或 [code]\"GDScript\"[/code],[i]而ä¸æ˜¯[/i] 文件扩"
+"展å,如 [code]\".gd\"[/code]。"
+
msgid "Returns the name of this directory."
msgstr "返回这个目录的å字。"
@@ -9740,16 +22690,284 @@ msgstr ""
msgid "Returns the path to this directory."
msgstr "返回这个目录的路径。"
+msgid "Returns the subdirectory at index [param idx]."
+msgstr "返回在索引 [param idx] 处的å­ç›®å½•ã€‚"
+
msgid "Returns the number of subdirectories in this directory."
msgstr "返回这个目录的å­ç›®å½•çš„æ•°é‡ã€‚"
msgid ""
+"This class is used to query and configure a certain import format. It is "
+"used in conjunction with asset format import plugins."
+msgstr "该类用于查询和é…ç½®æŸç§å¯¼å…¥æ ¼å¼ã€‚它与资产格å¼å¯¼å…¥æ’件é…åˆä½¿ç”¨ã€‚"
+
+msgid "Return the file extensions supported."
+msgstr "返回支æŒçš„文件扩展å。"
+
+msgid "Return whether this importer is active."
+msgstr "返回此导入器是å¦å¤„于活动状æ€ã€‚"
+
+msgid ""
"Registers a custom resource importer in the editor. Use the class to parse "
"any file and import it as a new resource type."
msgstr ""
"在编辑器中注册一个自定义资æºå¯¼å…¥å™¨ã€‚使用该类æ¥è§£æžä»»ä½•æ–‡ä»¶ï¼Œå¹¶å°†å…¶ä½œä¸ºæ–°çš„资"
"æºç±»åž‹å¯¼å…¥ã€‚"
+msgid ""
+"[EditorImportPlugin]s provide a way to extend the editor's resource import "
+"functionality. Use them to import resources from custom files or to provide "
+"alternatives to the editor's existing importers.\n"
+"EditorImportPlugins work by associating with specific file extensions and a "
+"resource type. See [method _get_recognized_extensions] and [method "
+"_get_resource_type]. They may optionally specify some import presets that "
+"affect the import process. EditorImportPlugins are responsible for creating "
+"the resources and saving them in the [code].godot/imported[/code] directory "
+"(see [member ProjectSettings.application/config/"
+"use_hidden_project_data_directory]).\n"
+"Below is an example EditorImportPlugin that imports a [Mesh] from a file "
+"with the extension \".special\" or \".spec\":\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool\n"
+"extends EditorImportPlugin\n"
+"\n"
+"func _get_importer_name():\n"
+" return \"my.special.plugin\"\n"
+"\n"
+"func _get_visible_name():\n"
+" return \"Special Mesh\"\n"
+"\n"
+"func _get_recognized_extensions():\n"
+" return [\"special\", \"spec\"]\n"
+"\n"
+"func _get_save_extension():\n"
+" return \"mesh\"\n"
+"\n"
+"func _get_resource_type():\n"
+" return \"Mesh\"\n"
+"\n"
+"func _get_preset_count():\n"
+" return 1\n"
+"\n"
+"func _get_preset_name(i):\n"
+" return \"Default\"\n"
+"\n"
+"func _get_import_options(i):\n"
+" return [{\"name\": \"my_option\", \"default_value\": false}]\n"
+"\n"
+"func _import(source_file, save_path, options, platform_variants, "
+"gen_files):\n"
+" var file = FileAccess.open(source_file, FileAccess.READ)\n"
+" if file == null:\n"
+" return FAILED\n"
+" var mesh = ArrayMesh.new()\n"
+" # Fill the Mesh with data read in \"file\", left as an exercise to the "
+"reader.\n"
+"\n"
+" var filename = save_path + \".\" + _get_save_extension()\n"
+" return ResourceSaver.save(mesh, filename)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"public partial class MySpecialPlugin : EditorImportPlugin\n"
+"{\n"
+" public override string _GetImporterName()\n"
+" {\n"
+" return \"my.special.plugin\";\n"
+" }\n"
+"\n"
+" public override string _GetVisibleName()\n"
+" {\n"
+" return \"Special Mesh\";\n"
+" }\n"
+"\n"
+" public override string[] _GetRecognizedExtensions()\n"
+" {\n"
+" return new string[] { \"special\", \"spec\" };\n"
+" }\n"
+"\n"
+" public override string _GetSaveExtension()\n"
+" {\n"
+" return \"mesh\";\n"
+" }\n"
+"\n"
+" public override string _GetResourceType()\n"
+" {\n"
+" return \"Mesh\";\n"
+" }\n"
+"\n"
+" public override int _GetPresetCount()\n"
+" {\n"
+" return 1;\n"
+" }\n"
+"\n"
+" public override string _GetPresetName(int presetIndex)\n"
+" {\n"
+" return \"Default\";\n"
+" }\n"
+"\n"
+" public override Godot.Collections.Array<Godot.Collections.Dictionary> "
+"_GetImportOptions(string path, int presetIndex)\n"
+" {\n"
+" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n"
+" {\n"
+" new Godot.Collections.Dictionary\n"
+" {\n"
+" { \"name\", \"myOption\" },\n"
+" { \"defaultValue\", false },\n"
+" }\n"
+" };\n"
+" }\n"
+"\n"
+" public override int _Import(string sourceFile, string savePath, Godot."
+"Collections.Dictionary options, Godot.Collections.Array<string> "
+"platformVariants, Godot.Collections.Array<string> genFiles)\n"
+" {\n"
+" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags."
+"Read);\n"
+" if (file.GetError() != Error.Ok)\n"
+" {\n"
+" return (int)Error.Failed;\n"
+" }\n"
+"\n"
+" var mesh = new ArrayMesh();\n"
+" // Fill the Mesh with data read in \"file\", left as an exercise to "
+"the reader.\n"
+" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n"
+" return (int)ResourceSaver.Save(mesh, filename);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"To use [EditorImportPlugin], register it using the [method EditorPlugin."
+"add_import_plugin] method first."
+msgstr ""
+"[EditorImportPlugin] æ供了一ç§æ–¹æ³•æ¥æ‰©å±•ç¼–辑器的资æºå¯¼å…¥åŠŸèƒ½ã€‚使用它们从自定"
+"义文件中导入资æºï¼Œæˆ–为编辑器的现有导入器æ供替代方案。\n"
+"EditorImportPlugin 通过与特定的文件扩展å和资æºç±»åž‹ç›¸å…³è”æ¥å·¥ä½œã€‚请å‚è§ "
+"[method _get_recognized_extensions] å’Œ [method _get_resource_type]。它们å¯ä»¥"
+"选择性地指定一些影å“导入过程的导入预设。EditorImportPlugin 负责创建资æºå¹¶å°†å®ƒ"
+"们ä¿å­˜åœ¨ [code].godot/imported[/code] 目录中(å‚è§ [member ProjectSettings."
+"application/config/use_hidden_project_data_directory])。\n"
+"下é¢æ˜¯ä¸€ä¸ª EditorImportPlugin 的示例,它从扩展å为“.specialâ€æˆ–“.specâ€çš„文件中"
+"导入 [Mesh]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool\n"
+"extends EditorImportPlugin\n"
+"\n"
+"func _get_importer_name():\n"
+" return \"my.special.plugin\"\n"
+"\n"
+"func _get_visible_name():\n"
+" return \"Special Mesh\"\n"
+"\n"
+"func _get_recognized_extensions():\n"
+" return [\"special\", \"spec\"]\n"
+"\n"
+"func _get_save_extension():\n"
+" return \"mesh\"\n"
+"\n"
+"func _get_resource_type():\n"
+" return \"Mesh\"\n"
+"\n"
+"func _get_preset_count():\n"
+" return 1\n"
+"\n"
+"func _get_preset_name(i):\n"
+" return \"Default\"\n"
+"\n"
+"func _get_import_options(i):\n"
+" return [{\"name\": \"my_option\", \"default_value\": false}]\n"
+"\n"
+"func _import(source_file, save_path, options, platform_variants, "
+"gen_files):\n"
+" var file = FileAccess.open(source_file, FileAccess.READ)\n"
+" if file == null:\n"
+" return FAILED\n"
+" var mesh = ArrayMesh.new()\n"
+" # 使用从“fileâ€ä¸­è¯»å–çš„æ•°æ®å¡«å…… Mesh,留作读者的练习。\n"
+"\n"
+" var filename = save_path + \".\" + _get_save_extension()\n"
+" return ResourceSaver.save(mesh, filename)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"public partial class MySpecialPlugin : EditorImportPlugin\n"
+"{\n"
+" public override string _GetImporterName()\n"
+" {\n"
+" return \"my.special.plugin\";\n"
+" }\n"
+"\n"
+" public override string _GetVisibleName()\n"
+" {\n"
+" return \"Special Mesh\";\n"
+" }\n"
+"\n"
+" public override string[] _GetRecognizedExtensions()\n"
+" {\n"
+" return new string[] { \"special\", \"spec\" };\n"
+" }\n"
+"\n"
+" public override string _GetSaveExtension()\n"
+" {\n"
+" return \"mesh\";\n"
+" }\n"
+"\n"
+" public override string _GetResourceType()\n"
+" {\n"
+" return \"Mesh\";\n"
+" }\n"
+"\n"
+" public override int _GetPresetCount()\n"
+" {\n"
+" return 1;\n"
+" }\n"
+"\n"
+" public override string _GetPresetName(int presetIndex)\n"
+" {\n"
+" return \"Default\";\n"
+" }\n"
+"\n"
+" public override Godot.Collections.Array<Godot.Collections.Dictionary> "
+"_GetImportOptions(string path, int presetIndex)\n"
+" {\n"
+" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n"
+" {\n"
+" new Godot.Collections.Dictionary\n"
+" {\n"
+" { \"name\", \"myOption\" },\n"
+" { \"defaultValue\", false },\n"
+" }\n"
+" };\n"
+" }\n"
+"\n"
+" public override int _Import(string sourceFile, string savePath, Godot."
+"Collections.Dictionary options, Godot.Collections.Array<string> "
+"platformVariants, Godot.Collections.Array<string> genFiles)\n"
+" {\n"
+" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags."
+"Read);\n"
+" if (file.GetError() != Error.Ok)\n"
+" {\n"
+" return (int)Error.Failed;\n"
+" }\n"
+"\n"
+" var mesh = new ArrayMesh();\n"
+" // 使用从“fileâ€ä¸­è¯»å–çš„æ•°æ®å¡«å…… Mesh,留作读者的练习\n"
+" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n"
+" return (int)ResourceSaver.Save(mesh, filename);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"è¦ä½¿ç”¨ [EditorImportPlugin],请先使用 [method EditorPlugin."
+"add_import_plugin] 方法注册它。"
+
msgid "Import plugins"
msgstr "导入æ’件"
@@ -9779,6 +22997,14 @@ msgstr ""
msgid "Gets the unique name of the importer."
msgstr "获å–导入者的唯一å称。"
+msgid ""
+"Gets the number of initial presets defined by the plugin. Use [method "
+"_get_import_options] to get the default options for the preset and [method "
+"_get_preset_name] to get the name of the preset."
+msgstr ""
+"获å–æ’件定义的åˆå§‹é¢„设的数é‡ã€‚使用 [method _get_import_options] 获å–预设的默"
+"认选项,使用 [method _get_preset_name] 获å–预设的å称。"
+
msgid "Gets the name of the options preset at this index."
msgstr "获å–该索引处预设的选项å称。"
@@ -9804,15 +23030,107 @@ msgstr ""
"[code]\"Animation\"[/code]。"
msgid ""
+"Gets the extension used to save this resource in the [code].godot/imported[/"
+"code] directory (see [member ProjectSettings.application/config/"
+"use_hidden_project_data_directory])."
+msgstr ""
+"获å–用于在 [code].godot/imported[/code] 目录中ä¿å­˜æ­¤èµ„æºçš„扩展å(请å‚阅 "
+"[member ProjectSettings.application/config/"
+"use_hidden_project_data_directory])。"
+
+msgid ""
"Gets the name to display in the import window. You should choose this name "
"as a continuation to \"Import as\", e.g. \"Import as Special Mesh\"."
msgstr ""
"获å–在导入窗å£ä¸­æ˜¾ç¤ºçš„å称。你应该选择这个å字作为“导入为â€çš„延续,例如“导入"
"为 Special Meshâ€ã€‚"
+msgid ""
+"Imports [param source_file] into [param save_path] with the import [param "
+"options] specified. The [param platform_variants] and [param gen_files] "
+"arrays will be modified by this function.\n"
+"This method must be overridden to do the actual importing work. See this "
+"class' description for an example of overriding this method."
+msgstr ""
+"使用指定的导入选项 [code]options[/code] 将 [code]source_file[/code] 导入到 "
+"[code]save_path[/code] 中。此函数将修改[code]platform_variants[/code] 和 "
+"[code]gen_files[/code] 数组。\n"
+"å¿…é¡»é‡å†™è¿™ä¸ªæ–¹æ³•æ‰èƒ½å®Œæˆå®žé™…的导入工作。å‚阅本类的æ述以了解如何é‡å†™è¯¥æ–¹æ³•ã€‚"
+
msgid "A control used to edit properties of an object."
msgstr "用于编辑对象属性的控件。"
+msgid ""
+"This is the control that implements property editing in the editor's "
+"Settings dialogs, the Inspector dock, etc. To get the [EditorInspector] used "
+"in the editor's Inspector dock, use [method EditorInterface.get_inspector].\n"
+"[EditorInspector] will show properties in the same order as the array "
+"returned by [method Object.get_property_list].\n"
+"If a property's name is path-like (i.e. if it contains forward slashes), "
+"[EditorInspector] will create nested sections for \"directories\" along the "
+"path. For example, if a property is named [code]highlighting/gdscript/"
+"node_path_color[/code], it will be shown as \"Node Path Color\" inside the "
+"\"GDScript\" section nested inside the \"Highlighting\" section.\n"
+"If a property has [constant PROPERTY_USAGE_GROUP] usage, it will group "
+"subsequent properties whose name starts with the property's hint string. The "
+"group ends when a property does not start with that hint string or when a "
+"new group starts. An empty group name effectively ends the current group. "
+"[EditorInspector] will create a top-level section for each group. For "
+"example, if a property with group usage is named [code]Collide With[/code] "
+"and its hint string is [code]collide_with_[/code], a subsequent "
+"[code]collide_with_area[/code] property will be shown as \"Area\" inside the "
+"\"Collide With\" section. There is also a special case: when the hint string "
+"contains the name of a property, that property is grouped too. This is "
+"mainly to help grouping properties like [code]font[/code], [code]font_color[/"
+"code] and [code]font_size[/code] (using the hint string [code]font_[/"
+"code]).\n"
+"If a property has [constant PROPERTY_USAGE_SUBGROUP] usage, a subgroup will "
+"be created in the same way as a group, and a second-level section will be "
+"created for each subgroup.\n"
+"[b]Note:[/b] Unlike sections created from path-like property names, "
+"[EditorInspector] won't capitalize the name for sections created from "
+"groups. So properties with group usage usually use capitalized names instead "
+"of snake_cased names."
+msgstr ""
+"这是在编辑器的设置对è¯æ¡†ã€æ£€æŸ¥å™¨åœé é¢æ¿ç­‰ä¸­å®žçŽ°å±žæ€§ç¼–辑的控件。è¦èŽ·å–在编辑"
+"器的检查器åœé é¢æ¿ä¸­ä½¿ç”¨çš„ [EditorInspector],请使用 [method EditorInterface."
+"get_inspector]。\n"
+"[EditorInspector] 将按照与 [method Object.get_property_list] 返回的数组相åŒçš„"
+"顺åºæ˜¾ç¤ºå±žæ€§ã€‚\n"
+"如果属性的å称类似于路径(å³å¦‚果它包å«æ­£æ–œæ ï¼‰ï¼Œ[EditorInspector] 将沿路径为"
+"å„个“目录â€åˆ›å»ºåµŒå¥—的部分。例如,如果属性å为 [code]highlighting/gdscript/"
+"node_path_color[/code],则它将在嵌套在“Highlightingâ€éƒ¨åˆ†å†…的“GDScriptâ€éƒ¨åˆ†ä¸­"
+"显示为“Node Path Colorâ€ã€‚\n"
+"如果æŸä¸ªå±žæ€§å…·æœ‰ [constant PROPERTY_USAGE_GROUP] 用法,它将对å称以该属性的æ"
+"示字符串开头的åŽç»­å±žæ€§è¿›è¡Œåˆ†ç»„。当属性ä¸ä»¥è¯¥æ示字符串开头或新组开始时,该组"
+"结æŸã€‚空组å有效地结æŸäº†å½“å‰ç»„。[EditorInspector] 将为æ¯ä¸ªç»„创建一个顶级部"
+"分。例如,如果具有组用法的属性å为 [code]Collide With[/code],其æ示字符串为 "
+"[code]collide_with_[/code],则åŽç»­çš„ [code]collide_with_area[/code] 属性将显"
+"示为 “Collide With†部分内的 “Areaâ€ã€‚还有一ç§ç‰¹æ®Šæƒ…况:当æ示字符串包å«å±žæ€§å"
+"称时,该属性也被分组。这主è¦æ˜¯ä¸ºäº†å¸®åŠ©åˆ†ç»„属性,如 [code]font[/code]ã€"
+"[code]font_color[/code] å’Œ [code]font_size[/code](使用æ示字符串 "
+"[code]font_[/code])。\n"
+"如果属性具有 [constant PROPERTY_USAGE_SUBGROUP] 用法,则将以与组相åŒçš„æ–¹å¼åˆ›"
+"建å­ç»„,并为æ¯ä¸ªå­ç»„创建一个二级部分。\n"
+"[b]注æ„:[/b]与从类似路径的属性å称创建的部分ä¸åŒï¼Œ[EditorInspector] ä¸ä¼šå°†ä»Ž"
+"组创建的部分的å称的首字æ¯å¤§å†™ã€‚因此,具有组用法的属性通常使用首字æ¯å¤§å†™çš„å"
+"称而ä¸æ˜¯è›‡å½¢å称。"
+
+msgid "Gets the path of the currently selected property."
+msgstr "获å–当å‰é€‰å®šå±žæ€§çš„路径。"
+
+msgid "Emitted when the object being edited by the inspector has changed."
+msgstr "当检查器正在编辑的对象å‘生更改时触å‘。"
+
+msgid ""
+"Emitted when the Edit button of an [Object] has been pressed in the "
+"inspector. This is mainly used in the remote scene tree Inspector."
+msgstr ""
+"在检查器中按下 [Object] 的“编辑â€æŒ‰é’®æ—¶å‘出。这主è¦ç”¨äºŽè¿œç¨‹åœºæ™¯æ ‘检查器。"
+
+msgid "Emitted when a property is removed from the inspector."
+msgstr "当从检查器中移除属性时触å‘。"
+
msgid "Emitted when a property is edited in the inspector."
msgstr "在检查器中编辑属性时触å‘。"
@@ -9847,6 +23165,36 @@ msgid ""
msgstr ""
"在检查器中编辑需è¦é‡å¯åº”用的属性时触å‘。仅在项目设置和编辑器设置中使用。"
+msgid "Plugin for adding custom property editors on the inspector."
+msgstr "æ’件,用于在检查器上添加自定义属性编辑器。"
+
+msgid ""
+"[EditorInspectorPlugin] allows adding custom property editors to "
+"[EditorInspector].\n"
+"When an object is edited, the [method _can_handle] function is called and "
+"must return [code]true[/code] if the object type is supported.\n"
+"If supported, the function [method _parse_begin] will be called, allowing to "
+"place custom controls at the beginning of the class.\n"
+"Subsequently, the [method _parse_category] and [method _parse_property] are "
+"called for every category and property. They offer the ability to add custom "
+"controls to the inspector too.\n"
+"Finally, [method _parse_end] will be called.\n"
+"On each of these calls, the \"add\" functions can be called.\n"
+"To use [EditorInspectorPlugin], register it using the [method EditorPlugin."
+"add_inspector_plugin] method first."
+msgstr ""
+"[EditorInspectorPlugin] å…许将自定义属性编辑器添加到 [EditorInspector]。\n"
+"当编辑对象时,会调用 [method _can_handle] 函数,如果支æŒè¯¥å¯¹è±¡ç±»åž‹ï¼Œåˆ™å¿…须返"
+"回 [code]true[/code]。\n"
+"如果支æŒï¼Œå‡½æ•° [method _parse_begin] 将被调用,å…许在类的开头放置自定义控"
+"件。\n"
+"éšåŽï¼Œä¸ºæ¯ä¸ªç±»åˆ«å’Œå±žæ€§è°ƒç”¨ [method _parse_category] å’Œ [method "
+"_parse_property]。它们也æ供了å‘检查器添加自定义控件的能力。\n"
+"最åŽï¼Œå°†è°ƒç”¨ [method _parse_end]。\n"
+"在这些调用中的æ¯ä¸€ä¸ªï¼Œéƒ½å¯ä»¥è°ƒç”¨â€œaddâ€å‡½æ•°ã€‚\n"
+"è¦ä½¿ç”¨ [EditorInspectorPlugin],首先使用 [method EditorPlugin."
+"add_inspector_plugin] 方法注册它。"
+
msgid "Inspector plugins"
msgstr "检查器æ’件"
@@ -9913,6 +23261,9 @@ msgstr "返回在 [FileSystemDock] 中查看的当å‰è·¯å¾„。"
msgid "Returns the edited (current) scene's root [Node]."
msgstr "返回正在编辑的(当å‰ï¼‰åœºæ™¯çš„æ ¹ [Node]。"
+msgid "Returns the [EditorPaths] singleton."
+msgstr "返回 [EditorPaths] å•ä¾‹ã€‚"
+
msgid ""
"Returns the actual scale of the editor UI ([code]1.0[/code] being 100% "
"scale). This can be used to adjust position and dimensions of the UI added "
@@ -9994,6 +23345,21 @@ msgid "Reloads the scene at the given path."
msgstr "é‡æ–°åŠ è½½ç»™å®šè·¯å¾„的场景。"
msgid ""
+"Restarts the editor. This closes the editor and then opens the same project. "
+"If [param save] is [code]true[/code], the project will be saved before "
+"restarting."
+msgstr ""
+"é‡å¯ç¼–辑器。编辑器会关闭,然åŽå†æ‰“开相åŒé¡¹ç›®ã€‚如果 [param save] 为 "
+"[code]true[/code],则é‡å¯å‰ä¼šä¿å­˜é¡¹ç›®ã€‚"
+
+msgid ""
+"Saves the scene. Returns either [constant OK] or [constant ERR_CANT_CREATE]."
+msgstr "ä¿å­˜åœºæ™¯ã€‚返回 [constant OK] 或 [constant ERR_CANT_CREATE]。"
+
+msgid "Saves the scene as a file at [param path]."
+msgstr "将场景ä¿å­˜ä¸º [param path] 处的文件。"
+
+msgid ""
"Sets the enabled status of a plugin. The plugin name is the same as its "
"directory name."
msgstr "设置æ’件的å¯ç”¨çŠ¶æ€ã€‚æ’件å称与其目录å称相åŒã€‚"
@@ -10008,10 +23374,26 @@ msgstr ""
"如果为 [code]true[/code],将å¯ç”¨ä¸“注模å¼ï¼Œè¯¥æ¨¡å¼ä¼šéšè—侧边é¢æ¿ï¼Œå¢žåŠ ä¸»è§†å›¾çš„"
"å¯ç”¨ç©ºé—´ã€‚"
+msgid "Gizmo for editing Node3D objects."
+msgstr "用于编辑 Node3D 对象的å°å·¥å…·ã€‚"
+
+msgid ""
+"Gizmo that is used for providing custom visualization and editing (handles "
+"and subgizmos) for Node3D objects. Can be overridden to create custom "
+"gizmos, but for simple gizmos creating a [EditorNode3DGizmoPlugin] is "
+"usually recommended."
+msgstr ""
+"å°å·¥å…·å¯ç”¨äºŽä¸º Node3D 对象æ供自定义å¯è§†åŒ–和编辑功能(手柄和å­å·¥å…·ï¼‰ã€‚覆盖åŽ"
+"å¯ä»¥åˆ›å»ºè‡ªå®šä¹‰å°å·¥å…·ï¼Œä½†å¯¹äºŽç®€å•çš„å°å·¥å…·è€Œè¨€ï¼Œé€šå¸¸å»ºè®®åˆ›å»º "
+"[EditorNode3DGizmoPlugin]。"
+
msgid ""
"Removes everything in the gizmo including meshes, collisions and handles."
msgstr "移除å°å·¥å…·ä¸­çš„一切,包括网格ã€ç¢°æ’žå’Œæ‰‹æŸ„。"
+msgid "Returns the [Node3D] node associated with this gizmo."
+msgstr "返回与这个å°å·¥å…·å…³è”çš„ [Node3D] 节点。"
+
msgid ""
"Sets the gizmo's hidden state. If [code]true[/code], the gizmo will be "
"hidden. If [code]false[/code], it will be shown."
@@ -10019,6 +23401,12 @@ msgstr ""
"设置该å°å·¥å…·çš„éšè—状æ€ã€‚如果为 [code]true[/code],则该å°å·¥å…·å°†è¢«éšè—。如果为 "
"[code]false[/code] 则会显示。"
+msgid "Used by the editor to define Node3D gizmo types."
+msgstr "被编辑器用æ¥å®šä¹‰ Node3D å°å·¥å…·ç±»åž‹ã€‚"
+
+msgid "Node3D gizmo plugins"
+msgstr "Node3D å°å·¥å…·æ’件"
+
msgid ""
"Override this method to provide the name that will appear in the gizmo "
"visibility menu."
@@ -10031,6 +23419,11 @@ msgstr ""
"将新æ质添加到æ’件的内部æ’件列表中。然åŽå¯ä»¥ä½¿ç”¨[method get_material]访问它。"
"ä¸ä¼šè¯¥è¢«è¦†ç›–。"
+msgid ""
+"Editor-only singleton that returns paths to various OS-specific data folders "
+"and files."
+msgstr "编辑器专用å•ä¾‹ï¼Œè¿”回特定于æ“作系统的å„ç§æ•°æ®æ–‡ä»¶å¤¹å’Œæ–‡ä»¶çš„路径。"
+
msgid "Used by the editor to extend its functionality."
msgstr "由编辑器使用,用于扩展其功能。"
@@ -10043,6 +23436,9 @@ msgstr ""
"编辑器使用æ’件æ¥æ‰©å±•åŠŸèƒ½ã€‚最常è§çš„æ’件类型是编辑给定的节点或资æºç±»åž‹ã€å¯¼å…¥æ’"
"件和导出æ’件。å¦è¯·å‚阅 [EditorScript] å‘编辑器添加函数。"
+msgid "Editor plugins documentation index"
+msgstr "编辑器æ’件文档索引"
+
msgid ""
"This method is called when the editor is about to save the project, switch "
"to another tab, etc. It asks the plugin to apply any pending state changes "
@@ -10073,6 +23469,329 @@ msgid ""
msgstr "当用户在项目设置窗å£çš„æ’件选项å¡ä¸­å¯ç”¨[EditorPlugin]时,由引擎调用。"
msgid ""
+"Called by the engine when the 3D editor's viewport is updated. Use the "
+"[code]overlay[/code] [Control] for drawing. You can update the viewport "
+"manually by calling [method update_overlays].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _forward_3d_draw_over_viewport(overlay):\n"
+" # Draw a circle at cursor position.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n"
+"\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Redraw viewport when cursor is moved.\n"
+" update_overlays()\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP\n"
+" return EditorPlugin.AFTER_GUI_INPUT_PASS\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Forward3DDrawOverViewport(Control viewportControl)\n"
+"{\n"
+" // Draw a circle at cursor position.\n"
+" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, "
+"Colors.White);\n"
+"}\n"
+"\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"viewportCamera, InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" // Redraw viewport when cursor is moved.\n"
+" UpdateOverlays();\n"
+" return EditorPlugin.AfterGuiInput.Stop;\n"
+" }\n"
+" return EditorPlugin.AfterGuiInput.Pass;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"当 3D 编辑器的视å£æ›´æ–°æ—¶ç”±å¼•æ“Žè°ƒç”¨ã€‚使用 [code]overlay[/code] [Control] 进行"
+"绘制。您å¯ä»¥é€šè¿‡è°ƒç”¨ [method update_overlays] 手动更新视å£ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _forward_3d_draw_over_viewport(overlay):\n"
+" # 在光标ä½ç½®ç”»ä¸€ä¸ªåœ†ã€‚\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n"
+"\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" if event is InputEventMouseMotion:\n"
+" # 当光标被移动时,é‡ç»˜è§†å£ã€‚\n"
+" update_overlays()\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP\n"
+" return EditorPlugin.AFTER_GUI_INPUT_PASS\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Forward3DDrawOverViewport(Control viewportControl)\n"
+"{\n"
+" // 在光标ä½ç½®ç”»ä¸€ä¸ªåœ†ã€‚\n"
+" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, "
+"Colors.White);\n"
+"}\n"
+"\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"viewportCamera, InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" // 当光标被移动时,é‡ç»˜è§†å£ã€‚\n"
+" UpdateOverlays();\n"
+" return EditorPlugin.AfterGuiInput.Stop;\n"
+" }\n"
+" return EditorPlugin.AfterGuiInput.Pass;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Called when there is a root node in the current edited scene, [method "
+"_handles] is implemented, and an [InputEvent] happens in the 3D viewport. "
+"The return value decides whether the [InputEvent] is consumed or forwarded "
+"to other [EditorPlugin]s. See [enum AfterGUIInput] for options.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Prevents the InputEvent from reaching other Editor classes.\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Prevents the InputEvent from reaching other Editor classes.\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"camera, InputEvent @event)\n"
+"{\n"
+" return EditorPlugin.AfterGuiInput.Stop;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Must [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] in order to "
+"forward the [InputEvent] to other Editor classes.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Consumes InputEventMouseMotion and forwards other InputEvent types.\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP if event is "
+"InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Consumes InputEventMouseMotion and forwards other InputEvent types.\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"camera, InputEvent @event)\n"
+"{\n"
+" return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput."
+"Stop : EditorPlugin.AfterGuiInput.Pass;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在当å‰ç¼–辑的场景中有根节点时调用,实现 [method _handles] 并在3D视å£ä¸­äº§ç”Ÿ "
+"[InputEvent]。返回值决定 [InputEvent] 是被消费还是转å‘给其他 [EditorPlugin]。"
+"有关选项,请å‚阅 [enum AfterGUIInput]。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 阻止 InputEvent 到达其他编辑类。\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 阻止 InputEvent 到达其他编辑类。\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"camera, InputEvent @event)\n"
+"{\n"
+" return EditorPlugin.AfterGuiInput.Stop;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"必须为 [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] 以便将 "
+"[InputEvent] 转å‘给其他编辑器类。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 消耗 InputEventMouseMotion 并转å‘其他 InputEvent 类型。\n"
+"func _forward_3d_gui_input(camera, event):\n"
+" return EditorPlugin.AFTER_GUI_INPUT_STOP if event is "
+"InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 消耗 InputEventMouseMotion 并转å‘其他 InputEvent 类型。\n"
+"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D "
+"camera, InputEvent @event)\n"
+"{\n"
+" return @event is InputEventMouseMotion ? EditorPlugin.AfterGuiInput."
+"Stop : EditorPlugin.AfterGuiInput.Pass;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Called by the engine when the 2D editor's viewport is updated. Use the "
+"[code]overlay[/code] [Control] for drawing. You can update the viewport "
+"manually by calling [method update_overlays].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _forward_canvas_draw_over_viewport(overlay):\n"
+" # Draw a circle at cursor position.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color."
+"WHITE)\n"
+"\n"
+"func _forward_canvas_gui_input(event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Redraw viewport when cursor is moved.\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _ForwardCanvasDrawOverViewport(Control "
+"viewportControl)\n"
+"{\n"
+" // Draw a circle at cursor position.\n"
+" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, "
+"Colors.White);\n"
+"}\n"
+"\n"
+"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" // Redraw viewport when cursor is moved.\n"
+" UpdateOverlays();\n"
+" return true;\n"
+" }\n"
+" return false;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"当 2D 编辑器的视å£æ›´æ–°æ—¶ç”±å¼•æ“Žè°ƒç”¨ã€‚使用 [code]overlay[/code] [Control] 进行"
+"绘制。您å¯ä»¥é€šè¿‡è°ƒç”¨ [method update_overlays] 手动更新视å£ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _forward_canvas_draw_over_viewport(overlay):\n"
+" # 在光标ä½ç½®ç”»ä¸€ä¸ªåœ†ã€‚\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color."
+"WHITE)\n"
+"\n"
+"func _forward_canvas_gui_input(event):\n"
+" if event is InputEventMouseMotion:\n"
+" # 当光标被移动时,é‡ç»˜è§†å£ã€‚\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _ForwardCanvasDrawOverViewport(Control "
+"viewportControl)\n"
+"{\n"
+" // 在光标ä½ç½®ç”»ä¸€ä¸ªåœ†ã€‚\n"
+" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, "
+"Colors.White);\n"
+"}\n"
+"\n"
+"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" // 当光标被移动时,é‡ç»˜è§†å£ã€‚\n"
+" UpdateOverlays();\n"
+" return true;\n"
+" }\n"
+" return false;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Called when there is a root node in the current edited scene, [method "
+"_handles] is implemented and an [InputEvent] happens in the 2D viewport. "
+"Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] "
+"consumes the [param event], otherwise forwards [param event] to other Editor "
+"classes.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Prevents the InputEvent from reaching other Editor classes.\n"
+"func _forward_canvas_gui_input(event):\n"
+" return true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Prevents the InputEvent from reaching other Editor classes.\n"
+"public override bool ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" return true;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Must [code]return false[/code] in order to forward the [InputEvent] to other "
+"Editor classes.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Consumes InputEventMouseMotion and forwards other InputEvent types.\n"
+"func _forward_canvas_gui_input(event):\n"
+" if (event is InputEventMouseMotion):\n"
+" return true\n"
+" return false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Consumes InputEventMouseMotion and forwards other InputEvent types.\n"
+"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" return true;\n"
+" }\n"
+" return false;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在当å‰ç¼–辑的场景中有根节点时调用,实现 [method _handles] 并在2D视å£ä¸­äº§ç”Ÿ "
+"[InputEvent]。拦截 [InputEvent],如果 [code]return true[/code] "
+"[EditorPlugin] 消耗 [param event],å¦åˆ™å°† [param event] 转å‘给其他编辑器"
+"类。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 阻止 InputEvent 到达其他编辑类。\n"
+"func _forward_canvas_gui_input(event):\n"
+" return true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 阻止 InputEvent 到达其他编辑类。\n"
+"public override bool ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" return true;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"å¿…é¡» [code]return false[/code] æ‰èƒ½å°† [InputEvent] 转å‘到其他编辑器类。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 消耗 InputEventMouseMotion 并转å‘其他 InputEvent 类型。\n"
+"func _forward_canvas_gui_input(event):\n"
+" if (event is InputEventMouseMotion):\n"
+" return true\n"
+" return false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 消耗 InputEventMouseMotion 并转å‘其他 InputEvent 类型。\n"
+"public override bool _ForwardCanvasGuiInput(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseMotion)\n"
+" {\n"
+" return true;\n"
+" }\n"
+" return false;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"This is for editors that edit script-based objects. You can return a list of "
"breakpoints in the format ([code]script:line[/code]), for example: "
"[code]res://path_to_script.gd:25[/code]."
@@ -10081,6 +23800,61 @@ msgstr ""
"line[/code]),例如:[code]res://path_to_script.gd:25[/code]。"
msgid ""
+"Override this method in your plugin to return a [Texture2D] in order to give "
+"it an icon.\n"
+"For main screen plugins, this appears at the top of the screen, to the right "
+"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n"
+"Ideally, the plugin icon should be white with a transparent background and "
+"16x16 pixels in size.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_plugin_icon():\n"
+" # You can use a custom icon:\n"
+" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n"
+" # Or use a built-in icon:\n"
+" return get_editor_interface().get_base_control()."
+"get_theme_icon(\"Node\", \"EditorIcons\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Texture2D _GetPluginIcon()\n"
+"{\n"
+" // You can use a custom icon:\n"
+" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/"
+"my_plugin_icon.svg\");\n"
+" // Or use a built-in icon:\n"
+" return GetEditorInterface().GetBaseControl().GetThemeIcon(\"Node\", "
+"\"EditorIcons\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在您的æ’件中覆盖该方法以返回一个 [Texture2D] 以便为æ’件æ供一个图标。\n"
+"对于主界é¢æ’件,它出现在å±å¹•é¡¶éƒ¨ï¼Œâ€œ2Dâ€ã€â€œ3Dâ€ã€â€œè„šæœ¬â€å’Œ “AssetLib†按钮的å³"
+"侧。\n"
+"ç†æƒ³æƒ…况下,æ’件图标应为é€æ˜ŽèƒŒæ™¯çš„白色,大å°ä¸º 16x16 åƒç´ ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_plugin_icon():\n"
+" # ä½ å¯ä»¥ä½¿ç”¨ä¸€ä¸ªè‡ªå®šä¹‰çš„图标:\n"
+" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n"
+" # 或者使用一个内置的图标:\n"
+" return get_editor_interface().get_base_control()."
+"get_theme_icon(\"Node\", \"EditorIcons\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Texture2D _GetPluginIcon()\n"
+"{\n"
+" // ä½ å¯ä»¥ä½¿ç”¨ä¸€ä¸ªè‡ªå®šä¹‰çš„图标:\n"
+" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/"
+"my_plugin_icon.svg\");\n"
+" // 或者使用一个内置的图标:\n"
+" return GetEditorInterface().GetBaseControl().GetThemeIcon(\"Node\", "
+"\"EditorIcons\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Override this method in your plugin to provide the name of the plugin when "
"displayed in the Godot editor.\n"
"For main screen plugins, this appears at the top of the screen, to the right "
@@ -10148,6 +23922,33 @@ msgstr ""
"用[method Node.queue_free]释放它。"
msgid ""
+"Adds a custom type, which will appear in the list of nodes or resources. An "
+"icon can be optionally passed.\n"
+"When a given node or resource is selected, the base type will be "
+"instantiated (e.g. \"Node3D\", \"Control\", \"Resource\"), then the script "
+"will be loaded and set to this object.\n"
+"[b]Note:[/b] The base type is the base engine class which this type's class "
+"hierarchy inherits, not any custom type parent classes.\n"
+"You can use the virtual method [method _handles] to check if your custom "
+"object is being edited by checking the script or using the [code]is[/code] "
+"keyword.\n"
+"During run-time, this will be a simple object with a script so this function "
+"does not need to be called then.\n"
+"[b]Note:[/b] Custom types added this way are not true classes. They are just "
+"a helper to create a node with specific script."
+msgstr ""
+"添加一个自定义类型,它将出现在节点或资æºçš„列表中。å¯ä»¥é€‰æ‹©ä¼ é€’一个图标。\n"
+"选择给定的节点或资æºæ—¶ï¼Œå°†å®žä¾‹åŒ–基本类型(例"
+"如“Node3Dâ€ã€â€œControlâ€ã€â€œResourceâ€ï¼‰ï¼Œç„¶åŽè„šæœ¬å°†è¢«åŠ è½½å¹¶å°†å…¶è®¾ç½®ä¸ºè¯¥å¯¹è±¡ã€‚\n"
+"[b]注æ„:[/b]基本类型是该类型的类层次继承的基本引擎类,而ä¸æ˜¯ä»»ä½•è‡ªå®šä¹‰ç±»åž‹çš„"
+"父类。\n"
+"您å¯ä»¥ä½¿ç”¨è™šæ‹Ÿæ–¹æ³• [method _handles] 通过检查脚本或使用 [code]is[/code] 关键"
+"å­—æ¥æ£€æŸ¥æ‚¨çš„自定义对象是å¦æ­£åœ¨è¢«ç¼–辑。\n"
+"在è¿è¡Œæ—¶ï¼Œè¿™å°†æ˜¯ä¸€ä¸ªå¸¦æœ‰è„šæœ¬çš„简å•å¯¹è±¡ï¼Œå› æ­¤ä¸éœ€è¦è°ƒç”¨è¯¥å‡½æ•°ã€‚\n"
+"[b]注æ„:[/b]以这ç§æ–¹å¼æ·»åŠ çš„自定义类型ä¸æ˜¯çœŸæ­£çš„类。它们åªæ˜¯ä½¿ç”¨ç‰¹å®šè„šæœ¬åˆ›å»º"
+"节点的助手。"
+
+msgid ""
"Registers a new [EditorExportPlugin]. Export plugins are used to perform "
"tasks when the project is being exported.\n"
"See [method add_inspector_plugin] for an example of how to register a plugin."
@@ -10157,11 +23958,31 @@ msgstr ""
"å‚è§ [method add_inspector_plugin],了解如何注册一个æ’件的例å­ã€‚"
msgid ""
+"Registers a new [EditorImportPlugin]. Import plugins are used to import "
+"custom and unsupported assets as a custom [Resource] type.\n"
+"If [param first_priority] is [code]true[/code], the new import plugin is "
+"inserted first in the list and takes precedence over pre-existing plugins.\n"
+"[b]Note:[/b] If you want to import custom 3D asset formats use [method "
+"add_scene_format_importer_plugin] instead.\n"
+"See [method add_inspector_plugin] for an example of how to register a plugin."
+msgstr ""
+"注册一个新的 [EditorImportPlugin]。导入æ’件用于将自定义的和ä¸å—支æŒçš„资产,作"
+"为一ç§è‡ªå®šä¹‰ [Resource] 类型导入。\n"
+"如果 [param first_priority] 是 [code]true[/code],则该新的导入æ’件被首先æ’å…¥"
+"列表中,并优先于预先存在的æ’件。\n"
+"[b]注æ„:[/b]如果è¦å¯¼å…¥è‡ªå®šä¹‰ 3D 资产格å¼ï¼Œè¯·æ”¹ç”¨ [method "
+"add_scene_format_importer_plugin]。\n"
+"有关如何注册æ’件的示例,请å‚è§ [method add_inspector_plugin]。"
+
+msgid ""
"Returns the [EditorInterface] object that gives you control over Godot "
"editor's window and its functionalities."
msgstr ""
"返回 [EditorInterface] 对象,该对象使您å¯ä»¥æŽ§åˆ¶ Godot 编辑器的窗å£åŠå…¶åŠŸèƒ½ã€‚"
+msgid "Returns the [PopupMenu] under [b]Scene > Export As...[/b]."
+msgstr "返回[b]场景 > å¦å­˜ä¸º...[/b] 下的 [PopupMenu]。"
+
msgid ""
"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
@@ -10188,6 +24009,9 @@ msgstr "使底部é¢æ¿ä¸­çš„一个特定项目å¯è§ã€‚"
msgid "Queue save the project's editor layout."
msgstr "排队ä¿å­˜é¡¹ç›®çš„编辑器布局。"
+msgid "Removes an Autoload [param name] from the list."
+msgstr "从列表中删除自动加载 [param name]。"
+
msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
@@ -10215,6 +24039,12 @@ msgstr "删除由 [method add_import_plugin] 注册的导入æ’件。"
msgid "Removes an inspector plugin registered by [method add_import_plugin]"
msgstr "删除由 [method add_import_plugin] 注册的检查器æ’件"
+msgid "Removes a gizmo plugin registered by [method add_node_3d_gizmo_plugin]."
+msgstr "删除由 [method add_node_3d_gizmo_plugin] 注册的å°å·¥å…·æ’件。"
+
+msgid "Removes a menu [param name] from [b]Project > Tools[/b]."
+msgstr "从[b]项目 > 工具[/b]中移除èœå• [param name]。"
+
msgid ""
"Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/"
"b], [b]AssetLib[/b]). Also works with custom screens defined by plugins."
@@ -10235,8 +24065,74 @@ msgid ""
"scene."
msgstr "当用户关闭场景时触å‘。å‚数是关闭场景的文件路径。"
+msgid "Main editor toolbar, next to play buttons."
+msgstr "主编辑器的工具æ ï¼Œæ—边是è¿è¡ŒæŒ‰é’®ã€‚"
+
+msgid "The toolbar that appears when 3D editor is active."
+msgstr "3D 编辑器处于活动状æ€æ—¶å‡ºçŽ°çš„工具æ ã€‚"
+
+msgid "Left sidebar of the 3D editor."
+msgstr "3D 编辑器的左侧边æ ã€‚"
+
+msgid "Right sidebar of the 3D editor."
+msgstr "3D 编辑器的å³ä¾§è¾¹æ ã€‚"
+
+msgid "Bottom panel of the 3D editor."
+msgstr "3D 编辑器的底部é¢æ¿ã€‚"
+
+msgid "The toolbar that appears when 2D editor is active."
+msgstr "2D 编辑器处于活动状æ€æ—¶å‡ºçŽ°çš„工具æ¡ã€‚"
+
+msgid "Left sidebar of the 2D editor."
+msgstr "2D 编辑器的左侧边æ ã€‚"
+
+msgid "Right sidebar of the 2D editor."
+msgstr "2D 编辑器的å³ä¾§è¾¹æ ã€‚"
+
+msgid "Bottom panel of the 2D editor."
+msgstr "2D 编辑器的底部é¢æ¿ã€‚"
+
+msgid "Bottom section of the inspector."
+msgstr "检查器的底部。"
+
+msgid "Tab of Project Settings dialog, to the left of other tabs."
+msgstr "项目设置对è¯æ¡†ä¸­çš„选项å¡ï¼Œåœ¨å…¶ä»–选项å¡çš„左侧。"
+
+msgid "Tab of Project Settings dialog, to the right of other tabs."
+msgstr "项目设置对è¯æ¡†ä¸­çš„选项å¡ï¼Œåœ¨å…¶ä»–选项å¡çš„å³ä¾§ã€‚"
+
+msgid "Dock slot, left side, upper-left (empty in default layout)."
+msgstr "左侧åœé æ§½çš„左上(默认布局中为空)。"
+
+msgid "Dock slot, left side, bottom-left (empty in default layout)."
+msgstr "左侧åœé æ§½çš„左下(默认布局中为空)。"
+
+msgid ""
+"Dock slot, left side, upper-right (in default layout includes Scene and "
+"Import docks)."
+msgstr "左侧åœé æ§½çš„å³ä¸Šï¼ˆé»˜è®¤å¸ƒå±€ä¸­ä¸ºâ€œåœºæ™¯â€å’Œâ€œå¯¼å…¥â€é¢æ¿ï¼‰ã€‚"
+
+msgid ""
+"Dock slot, left side, bottom-right (in default layout includes FileSystem "
+"dock)."
+msgstr "左侧åœé æ§½çš„å³ä¸‹ï¼ˆé»˜è®¤å¸ƒå±€ä¸­ä¸ºâ€œæ–‡ä»¶ç³»ç»Ÿâ€é¢æ¿ï¼‰ã€‚"
+
+msgid "Dock slot, right side, upper-left (empty in default layout)."
+msgstr "å³ä¾§åœé æ§½çš„左上(默认布局中为空)。"
+
+msgid "Dock slot, right side, bottom-left (empty in default layout)."
+msgstr "å³ä¾§åœé æ§½çš„左下(默认布局中为空)。"
+
+msgid ""
+"Dock slot, right side, upper-right (in default layout includes Inspector, "
+"Node and History docks)."
+msgstr "å³ä¾§åœé æ§½çš„å³ä¸Šï¼ˆé»˜è®¤å¸ƒå±€ä¸­ä¸ºâ€œæ£€æŸ¥å™¨â€â€œèŠ‚点â€ä»¥åŠâ€œåŽ†å²â€é¢æ¿ï¼‰ã€‚"
+
+msgid "Dock slot, right side, bottom-right (empty in default layout)."
+msgstr "å³ä¾§åœé æ§½çš„å³ä¸‹ï¼ˆé»˜è®¤å¸ƒå±€ä¸­ä¸ºç©ºï¼‰ã€‚"
+
msgid "Represents the size of the [enum DockSlot] enum."
-msgstr "表示 [enum DockSlot] 枚举的大å°ã€‚"
+msgstr "代表 [enum DockSlot] 枚举的大å°ã€‚"
msgid "Custom control to edit properties for adding into the inspector."
msgstr "自定义控件属性添加到检查器中。"
@@ -10423,6 +24319,115 @@ msgid "Post-processes scenes after import."
msgstr "导入åŽå¯¹åœºæ™¯è¿›è¡ŒåŽå¤„ç†ã€‚"
msgid ""
+"Imported scenes can be automatically modified right after import by setting "
+"their [b]Custom Script[/b] Import property to a [code]tool[/code] script "
+"that inherits from this class.\n"
+"The [method _post_import] callback receives the imported scene's root node "
+"and returns the modified version of the scene. Usage example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool # Needed so it runs in editor.\n"
+"extends EditorScenePostImport\n"
+"\n"
+"# This sample changes all node names.\n"
+"# Called right after the scene is imported and gets the root node.\n"
+"func _post_import(scene):\n"
+" # Change all node names to \"modified_[oldnodename]\"\n"
+" iterate(scene)\n"
+" return scene # Remember to return the imported scene\n"
+"\n"
+"func iterate(node):\n"
+" if node != null:\n"
+" node.name = \"modified_\" + node.name\n"
+" for child in node.get_children():\n"
+" iterate(child)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"// This sample changes all node names.\n"
+"// Called right after the scene is imported and gets the root node.\n"
+"[Tool]\n"
+"public partial class NodeRenamer : EditorScenePostImport\n"
+"{\n"
+" public override GodotObject _PostImport(Node scene)\n"
+" {\n"
+" // Change all node names to \"modified_[oldnodename]\"\n"
+" Iterate(scene);\n"
+" return scene; // Remember to return the imported scene\n"
+" }\n"
+"\n"
+" public void Iterate(Node node)\n"
+" {\n"
+" if (node != null)\n"
+" {\n"
+" node.Name = $\"modified_{node.Name}\";\n"
+" foreach (Node child in node.GetChildren())\n"
+" {\n"
+" Iterate(child);\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"通过将[b]自定义脚本[/b]导入属性设置为从此类继承的 [code]tool[/code] 脚本,å¯"
+"以在导入åŽç«‹å³è‡ªåŠ¨ä¿®æ”¹å¯¼å…¥çš„场景。\n"
+"[method _post_import] 回调接收导入场景的根节点,并返回场景的修改版本。使用示"
+"例:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool # 需è¦å®ƒæ‰èƒ½åœ¨ç¼–辑器中è¿è¡Œã€‚\n"
+"extends EditorScenePostImport\n"
+"\n"
+"# 该示例更改所有节点å称。\n"
+"# 在导入场景并获å–根节点åŽç«‹å³è°ƒç”¨ã€‚\n"
+"func _post_import(scene):\n"
+" # 将所有节点å称更改为 “modified_[oldnodename]â€\n"
+" iterate(scene)\n"
+" return scene # 记得返回导入的场景\n"
+"\n"
+"func iterate(node):\n"
+" if node != null:\n"
+" node.name = \"modified_\" + node.name\n"
+" for child in node.get_children():\n"
+" iterate(child)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"// 该示例更改所有节点å称。\n"
+"// 在导入场景并获å–根节点åŽç«‹å³è°ƒç”¨ã€‚\n"
+"[Tool]\n"
+"public partial class NodeRenamer : EditorScenePostImport\n"
+"{\n"
+" public override GodotObject _PostImport(Node scene)\n"
+" {\n"
+" // 将所有节点å称更改为 “modified_[oldnodename]â€\n"
+" Iterate(scene);\n"
+" return scene; // 记得返回导入的场景\n"
+" }\n"
+"\n"
+" public void Iterate(Node node)\n"
+" {\n"
+" if (node != null)\n"
+" {\n"
+" node.Name = $\"modified_{node.Name}\";\n"
+" foreach (Node child in node.GetChildren())\n"
+" {\n"
+" Iterate(child);\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "Importing 3D scenes: Custom script"
+msgstr "导入 3D 场景:自定义脚本"
+
+msgid ""
"Called after the scene was imported. This method must return the modified "
"version of the scene."
msgstr "在场景被导入åŽè§¦å‘。本方法必须返回场景的修改版本。"
@@ -10435,6 +24440,74 @@ msgstr "返回导入的æºæ–‡ä»¶è·¯å¾„(如[code]res://scene.dae[/code])。"
msgid "Base script that can be used to add extension functions to the editor."
msgstr "å¯ç”¨äºŽä¸ºç¼–辑器添加扩展功能的基础脚本。"
+msgid ""
+"Scripts extending this class and implementing its [method _run] method can "
+"be executed from the Script Editor's [b]File > Run[/b] menu option (or by "
+"pressing [kbd]Ctrl + Shift + X[/kbd]) while the editor is running. This is "
+"useful for adding custom in-editor functionality to Godot. For more complex "
+"additions, consider using [EditorPlugin]s instead.\n"
+"[b]Note:[/b] Extending scripts need to have [code]tool[/code] mode enabled.\n"
+"[b]Example script:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool\n"
+"extends EditorScript\n"
+"\n"
+"func _run():\n"
+" print(\"Hello from the Godot Editor!\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[Tool]\n"
+"public partial class HelloEditor : EditorScript\n"
+"{\n"
+" public override void _Run()\n"
+" {\n"
+" GD.Print(\"Hello from the Godot Editor!\");\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] The script is run in the Editor context, which means the output "
+"is visible in the console window started with the Editor (stdout) instead of "
+"the usual Godot [b]Output[/b] dock.\n"
+"[b]Note:[/b] EditorScript is [RefCounted], meaning it is destroyed when "
+"nothing references it. This can cause errors during asynchronous operations "
+"if there are no references to the script."
+msgstr ""
+"扩展该类并实现其 [method _run] 方法的脚本å¯ä»¥åœ¨ç¼–辑器è¿è¡Œæ—¶é€šè¿‡è„šæœ¬ç¼–辑器的"
+"[b]文件 > è¿è¡Œ[/b]èœå•é€‰é¡¹ï¼ˆæˆ–按 [kbd]Ctrl + Shift + X[/kbd]ï¼‰æ‰§è¡Œã€‚è¿™å¯¹äºŽå‘ "
+"Godot 添加自定义的编辑内功能很有用。对于更å¤æ‚的添加,请考虑改用 "
+"[EditorPlugin]。\n"
+"[b]注æ„:[/b]扩展脚本需è¦å¯ç”¨ [code]tool[/code] 工具模å¼ã€‚\n"
+"[b]示例脚本:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"@tool\n"
+"extends EditorScript\n"
+"\n"
+"func _run():\n"
+" print(\"Hello from the Godot Editor!\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[Tool]\n"
+"public partial class HelloEditor : EditorScript\n"
+"{\n"
+" public override void _Run()\n"
+" {\n"
+" GD.Print(\"Hello from the Godot Editor!\");\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]脚本在编辑器上下文中è¿è¡Œï¼Œè¿™æ„味ç€è¾“出在使用编辑器(stdout)å¯åŠ¨"
+"的控制å°çª—å£ä¸­å¯è§ï¼Œè€Œä¸æ˜¯é€šå¸¸çš„ Godot [b]输出[/b]åœé é¢æ¿ã€‚\n"
+"[b]注æ„:[/b]EditorScript 是 [RefCounted],这æ„味ç€å®ƒä¸å†è¢«å¼•ç”¨æ—¶ä¼šè¢«é”€æ¯ã€‚如"
+"果没有对脚本的引用,这å¯èƒ½ä¼šåœ¨å¼‚æ­¥æ“作期间导致错误。"
+
msgid "This method is executed by the Editor when [b]File > Run[/b] is used."
msgstr "当使用[b]文件 > è¿è¡Œ[/b]时,此方法由编辑器执行。"
@@ -10562,6 +24635,141 @@ msgstr ""
"2D 骨架编辑器中,用于未选中骨骼的轮廓颜色。å¦è§ [member editors/2d/"
"bone_selected_color]。"
+msgid ""
+"The font to use for the script editor. Must be a resource of a [Font] type "
+"such as a [code].ttf[/code] or [code].otf[/code] font file."
+msgstr ""
+"脚本编辑器所使用的字体。必须是 [Font] 类型的资æºï¼Œä¾‹å¦‚ [code].ttf[/code] 或 "
+"[code].otf[/code] 字体文件。"
+
+msgid ""
+"The font ligatures to enable for the currently configured code font. Not all "
+"fonts include support for ligatures.\n"
+"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url]) has contextual ligatures in its font file."
+msgstr ""
+"è¦å¯ç”¨çš„字体连字,用于当å‰é…置的代ç å­—体。ä¸æ˜¯æ‰€æœ‰å­—体都支æŒè¿žå­—。\n"
+"[b]注æ„:[/b]默认的编辑器代ç å­—体([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url])的字体文件中有上下文连字。"
+
+msgid ""
+"List of custom OpenType features to use, if supported by the currently "
+"configured code font. Not all fonts include support for custom OpenType "
+"features. The string should follow the OpenType specification.\n"
+"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, "
+"but there is no documented list yet."
+msgstr ""
+"è¦ä½¿ç”¨çš„自定义 OpenType 特性列表,需è¦å½“å‰é…置的代ç å­—体支æŒã€‚ä¸æ˜¯æ‰€æœ‰å­—体都"
+"支æŒè‡ªå®šä¹‰ OpenType 特定。该字符串应éµå¾ª OpenType 规范。\n"
+"[b]注æ„:[/b]默认的编辑器代ç å­—体([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url])的字体文件中有自定义 OpenType 特性,但还没有文档"
+"进行列举。"
+
+msgid ""
+"List of alternative characters to use, if supported by the currently "
+"configured code font. Not all fonts include support for custom variations. "
+"The string should follow the OpenType specification.\n"
+"[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url]) has alternate characters in its font file, but "
+"there is no documented list yet."
+msgstr ""
+"è¦ä½¿ç”¨çš„备选字符列表,需è¦å½“å‰é…置的代ç å­—体支æŒã€‚ä¸æ˜¯æ‰€æœ‰å­—体都支æŒè‡ªå®šä¹‰å˜"
+"体。该字符串应éµå¾ª OpenType 规范。\n"
+"[b]注æ„:[/b]默认的编辑器代ç å­—体([url=https://www.jetbrains.com/lp/"
+"mono/]JetBrains Mono[/url])的字体文件中有备选字符,但还没有文档进行列举。"
+
+msgid ""
+"The language to use for the editor interface.\n"
+"Translations are provided by the community. If you spot a mistake, "
+"[url=$DOCS_URL/contributing/documentation/editor_and_docs_localization."
+"html]contribute to editor translations on Weblate![/url]"
+msgstr ""
+"用于编辑器界é¢çš„语言。\n"
+"翻译由社区æ供。如果您å‘现错误,[url=$DOCS_URL/contributing/documentation/"
+"editor_and_docs_localization.html]请在 Weblate 上为编辑器翻译作出贡献ï¼[/url]"
+
+msgid ""
+"Expanding main editor window content to the title, if supported by "
+"[DisplayServer]. See [constant DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE].\n"
+"Specific to the macOS platform."
+msgstr ""
+"将主编辑窗å£å†…å®¹æ‰©å±•åˆ°æ ‡é¢˜åŒºåŸŸï¼Œéœ€è¦ [DisplayServer] 支æŒã€‚è§ [constant "
+"DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE]。\n"
+"专用于 macOS å¹³å°ã€‚"
+
+msgid ""
+"FreeType's font anti-aliasing mode used to render the editor fonts. Most "
+"fonts are not designed to look good with anti-aliasing disabled, so it's "
+"recommended to leave this enabled unless you're using a pixel art font."
+msgstr ""
+"FreeType 的字体抗锯齿模å¼ï¼Œç”¨äºŽæ¸²æŸ“编辑器字体。大多数字体在ç¦ç”¨æŠ—锯齿的情况下"
+"并ä¸å¥½çœ‹ï¼Œæ‰€ä»¥å»ºè®®ä¿æŒå¯ç”¨ï¼Œé™¤éžä½ ä½¿ç”¨çš„是åƒç´ é£Žå­—体。"
+
+msgid ""
+"If [code]true[/code], editor main menu is using embedded [MenuBar] instead "
+"of system global menu.\n"
+"Specific to the macOS platform."
+msgstr ""
+"如果为 [code]true[/code],则编辑器的主èœå•ä½¿ç”¨åµŒå…¥å¼ [MenuBar],ä¸ä½¿ç”¨ç³»ç»Ÿå…¨"
+"å±€èœå•ã€‚\n"
+"专用于 macOS å¹³å°ã€‚"
+
+msgid ""
+"The TLS certificate bundle to use for HTTP requests made within the editor "
+"(e.g. from the AssetLib tab). If left empty, the [url=https://github.com/"
+"godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included "
+"Mozilla certificate bundle[/url] will be used."
+msgstr ""
+"用于在编辑器中å‘出的 HTTP 请求的 TLS è¯ä¹¦åŒ…(例如æ¥è‡ª AssetLib 选项å¡ï¼‰ã€‚如果"
+"留空,将使用 [url=https://github.com/godotengine/godot/blob/master/"
+"thirdparty/certs/ca-certificates.crt]包å«çš„ Mozilla è¯ä¹¦åŒ…[/url]。"
+
+msgid ""
+"If [code]true[/code], displays line length guidelines to help you keep line "
+"lengths in check. See also [member text_editor/appearance/guidelines/"
+"line_length_guideline_soft_column] and [member text_editor/appearance/"
+"guidelines/line_length_guideline_hard_column]."
+msgstr ""
+"如果为 [code]true[/code],则显示行长度å‚考线,帮助你控制行长度。å¦è¯·å‚阅 "
+"[member text_editor/appearance/guidelines/line_length_guideline_soft_column] "
+"和 [member text_editor/appearance/guidelines/"
+"line_length_guideline_hard_column]。"
+
+msgid "The width of the minimap in the script editor (in pixels)."
+msgstr "脚本编辑器中å°åœ°å›¾çš„宽度(å•ä½ä¸ºåƒç´ ï¼‰ã€‚"
+
+msgid "If [code]true[/code], allows scrolling past the end of the file."
+msgstr "如果为 [code]true[/code],则å…许滚动越过文件的末尾。"
+
+msgid ""
+"If [code]true[/code], prevents automatically switching between the Script "
+"and 2D/3D screens when selecting a node in the Scene tree dock."
+msgstr ""
+"如果为 [code]true[/code],å¯é˜²æ­¢åœ¨åœºæ™¯æ ‘é¢æ¿ä¸­é€‰æ‹©èŠ‚点时,自动在脚本和 2D/3D "
+"å±å¹•ä¹‹é—´åˆ‡æ¢ã€‚"
+
+msgid "The script editor's bookmark icon color (displayed in the gutter)."
+msgstr "脚本编辑器的书签图标颜色(在边æ ä¸­æ˜¾ç¤ºï¼‰ã€‚"
+
+msgid "The script editor's breakpoint icon color (displayed in the gutter)."
+msgstr "脚本编辑器的断点图标颜色(在边æ ä¸­æ˜¾ç¤ºï¼‰ã€‚"
+
+msgid ""
+"The script editor's caret background color.\n"
+"[b]Note:[/b] This setting has no effect as it's currently unused."
+msgstr ""
+"脚本编辑器的光标背景色。\n"
+"[b]注æ„:[/b]此设置无效,因为当å‰æœªä½¿ç”¨ã€‚"
+
+msgid "The script editor's caret color."
+msgstr "脚本编辑器的光标颜色。"
+
+msgid ""
+"The script editor's color for the code folding icon (displayed in the "
+"gutter)."
+msgstr "脚本编辑器的代ç æŠ˜å å›¾æ ‡é¢œè‰²ï¼ˆåœ¨è¾¹æ ä¸­æ˜¾ç¤ºï¼‰ã€‚"
+
msgid "Emitted after any editor setting has changed."
msgstr "在编辑器设置改å˜åŽè§¦å‘。"
@@ -10818,6 +25026,15 @@ msgstr "在未暂存区域é‡åˆ°äº†æ–‡ä»¶ã€‚"
msgid "Holds a reference to an [Object]'s instance ID."
msgstr "ä¿å­˜å¯¹ [Object] 实例 ID 的引用。"
+msgid "API documentation on the ENet website"
+msgstr "ENet 网站上的 API 文档"
+
+msgid "Adjusts the bandwidth limits of a host."
+msgstr "调整主机的带宽é™åˆ¶ã€‚"
+
+msgid "Destroys the host and all resources associated with it."
+msgstr "销æ¯ä¸»æœºå’Œä¸Žå…¶å…³è”的所有资æºã€‚"
+
msgid ""
"No compression. This uses the most bandwidth, but has the upside of "
"requiring the fewest CPU resources. This option may also be used to make "
@@ -10833,6 +25050,27 @@ msgstr ""
"ENet 的内置范围编ç ã€‚适用于å°æ•°æ®åŒ…,但对于大于 4 KB çš„æ•°æ®åŒ…ä¸æ˜¯æœ€æœ‰æ•ˆçš„ç®—"
"法。"
+msgid ""
+"[url=https://facebook.github.io/zstd/]Zstandard[/url] compression. Note that "
+"this algorithm is not very efficient on packets smaller than 4 KB. "
+"Therefore, it's recommended to use other compression algorithms in most "
+"cases."
+msgstr ""
+"[url=https://facebook.github.io/zstd/]Zstandard[/url]压缩。请注æ„,此算法对å°"
+"于 4 KB çš„æ•°æ®åŒ…效率ä¸é«˜ã€‚因此,建议在大多数情况下使用其他压缩算法。"
+
+msgid "Total data sent."
+msgstr "å‘é€æ•°æ®çš„总数。"
+
+msgid "Total UDP packets sent."
+msgstr "å‘é€ UDP æ•°æ®åŒ…的总数。"
+
+msgid "Total data received."
+msgstr "接收数æ®çš„总数。"
+
+msgid "Total UDP packets received."
+msgstr "接收 UDP æ•°æ®åŒ…的总数。"
+
msgid "High-level multiplayer"
msgstr "高级多人游æˆ"
@@ -10919,6 +25157,24 @@ msgid ""
msgstr "如果游æˆåœ¨æ¸¸æˆå¾ªçŽ¯çš„固定过程和物ç†é˜¶æ®µå†…,返回 [code]true[/code]。"
msgid ""
+"Controls the maximum number of physics steps that can be simulated each "
+"rendered frame. The default value is tuned to avoid \"spiral of death\" "
+"situations where expensive physics simulations trigger more expensive "
+"simulations indefinitely. However, the game will appear to slow down if the "
+"rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of "
+"[member physics_ticks_per_second]. This occurs even if [code]delta[/code] is "
+"consistently used in physics calculations. To avoid this, increase [member "
+"max_physics_steps_per_frame] if you have increased [member "
+"physics_ticks_per_second] significantly above its default value."
+msgstr ""
+"控制æ¯ä¸ªæ¸²æŸ“帧所能模拟的最大物ç†æ­¥éª¤æ•°ã€‚默认值ç»è¿‡è°ƒè¯•ï¼Œå¯ä»¥é¿å…“死亡螺旋â€ï¼Œ"
+"防止开销较大的物ç†ä»¿çœŸæ— é™è§¦å‘开销更大的仿真。ä¸è¿‡å¦‚果渲染 FPS å°äºŽ [member "
+"physics_ticks_per_second] 的 [code]1 / max_physics_steps_per_frame[/code],游"
+"æˆçœ‹ä¸ŠåŽ»ä¼šæ˜¯é™é€Ÿçš„。å³ä¾¿åœ¨ç‰©ç†è®¡ç®—中始终使用 [code]delta[/code] 也一样会å‘"
+"生。è¦é¿å…è¿™ç§æƒ…况,如果增大了 [member physics_ticks_per_second],而且远大于"
+"默认值,那么建议将 [member max_physics_steps_per_frame] 也调大。"
+
+msgid ""
"Controls how much physics ticks are synchronized with real time. For 0 or "
"less, the ticks are synchronized. Such values are recommended for network "
"games, where clock synchronization matters. Higher values cause higher "
@@ -10938,6 +25194,35 @@ msgstr ""
"[member physics_jitter_fix] 设置为 [code]0[/code] æ¥ç¦ç”¨ç‰©ç†æŠ–动修å¤ã€‚"
msgid ""
+"The number of fixed iterations per second. This controls how often physics "
+"simulation and [method Node._physics_process] methods are run. This value "
+"should generally always be set to [code]60[/code] or above, as Godot doesn't "
+"interpolate the physics step. As a result, values lower than [code]60[/code] "
+"will look stuttery. This value can be increased to make input more reactive "
+"or work around collision tunneling issues, but keep in mind doing so will "
+"increase CPU usage. See also [member max_fps] and [member ProjectSettings."
+"physics/common/physics_ticks_per_second].\n"
+"[b]Note:[/b] Only [member max_physics_steps_per_frame] physics ticks may be "
+"simulated per rendered frame at most. If more physics ticks have to be "
+"simulated per rendered frame to keep up with rendering, the project will "
+"appear to slow down (even if [code]delta[/code] is used consistently in "
+"physics calculations). Therefore, it is recommended to also increase [member "
+"max_physics_steps_per_frame] if increasing [member physics_ticks_per_second] "
+"significantly above its default value."
+msgstr ""
+"æ¯ç§’执行的固定迭代次数。用于控制物ç†ä»¿çœŸå’Œ [method Node._physics_process] çš„"
+"执行频率。因为 Godot ä¸ä¼šè¿›è¡Œç‰©ç†æ­¥éª¤çš„æ’值,所以通常应该总是将其设æˆå¤§äºŽç­‰"
+"于 [code]60[/code] 的值。因此,如果值å°äºŽ [code]60[/code] 就会看起æ¥å¡é¡¿ã€‚æ"
+"高该值å¯ä»¥è®©è¾“å…¥å˜å¾—更加çµæ•ã€ä¹Ÿå¯ä»¥ç»•è¿‡ç¢°æ’žéš§é“问题,但请记得这么åšä¹Ÿä¼šæå‡ "
+"CPU çš„å ç”¨çŽ‡ã€‚å¦è¯·å‚阅 [member max_fps] å’Œ [member ProjectSettings.physics/"
+"common/physics_ticks_per_second]。\n"
+"[b]注æ„:[/b]æ¯ä¸ªæ¸²æŸ“帧最多åªèƒ½æ¨¡æ‹Ÿ [member max_physics_steps_per_frame] 个物"
+"ç†å‘¨æœŸã€‚如果为了追赶渲染,需è¦åœ¨æ¯ä¸ªæ¸²æŸ“帧中模拟更多物ç†å‘¨æœŸï¼Œæ¸¸æˆçœ‹ä¸ŠåŽ»ä¼šæ˜¯"
+"é™é€Ÿçš„(å³ä¾¿åœ¨ç‰©ç†è®¡ç®—中始终使用 [code]delta[/code])。因此,如果增大了 "
+"[member physics_ticks_per_second],而且远大于默认值,那么建议将 [member "
+"max_physics_steps_per_frame] 也调大。"
+
+msgid ""
"Controls how fast or slow the in-game clock ticks versus the real life one. "
"It defaults to 1.0. A value of 2.0 means the game moves twice as fast as "
"real life, whilst a value of 0.5 means the game moves at half the regular "
@@ -10975,16 +25260,6 @@ msgstr ""
"[code]true[/code] æ—¶æ‰æœ‰æ•ˆã€‚"
msgid ""
-"If [code]true[/code], enables the [code]adjustment_*[/code] properties "
-"provided by this resource. If [code]false[/code], modifications to the "
-"[code]adjustment_*[/code] properties will have no effect on the rendered "
-"scene."
-msgstr ""
-"如果为 [code]true[/code],则å¯ç”¨æ­¤èµ„æºæ供的 [code]adjusting_*[/code] 属性。"
-"如果为 [code]false[/code],对[code]adjustment_*[/code]属性的修改将ä¸ä¼šå¯¹æ¸²æŸ“"
-"的场景产生影å“。"
-
-msgid ""
"The global color saturation value of the rendered scene (default value is "
"1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]."
msgstr ""
@@ -11066,9 +25341,6 @@ msgstr ""
"泛光的强度。如果设置为大于 [code]0[/code] 的值,则将在比 [member "
"glow_hdr_threshold] æˆå‘˜æ›´æš—的区域中显示辉光。"
-msgid "If [code]true[/code], the glow effect is enabled."
-msgstr "如果为 [code]true[/code],则å¯ç”¨è¾‰å…‰æ•ˆæžœã€‚"
-
msgid ""
"The higher threshold of the HDR glow. Areas brighter than this threshold "
"will be clamped for the purposes of the glow effect."
@@ -11112,6 +25384,15 @@ msgstr ""
"在AO纹ç†å˜æš—的区域å¯è§ã€‚"
msgid ""
+"The threshold for considering whether a given point on a surface is occluded "
+"or not represented as an angle from the horizon mapped into the "
+"[code]0.0-1.0[/code] range. A value of [code]1.0[/code] results in no "
+"occlusion."
+msgstr ""
+"用于考虑表é¢ä¸Šç»™å®šç‚¹æ˜¯å¦è¢«é®æŒ¡çš„阈值,表示为与地平线的角度,映射到 "
+"[code]0.0-1.0[/code] 范围。[code]1.0[/code] 的值ä¸ä¼šå¯¼è‡´é®è”½ã€‚"
+
+msgid ""
"The screen-space ambient occlusion intensity in direct light. In real life, "
"ambient occlusion only applies to indirect light, which means its effects "
"can't be seen in direct light. Values higher than [code]0[/code] will make "
@@ -11142,7 +25423,7 @@ msgid "Displays a camera feed in the background."
msgstr "在背景中显示相机æºã€‚"
msgid "Represents the size of the [enum BGMode] enum."
-msgstr "表示 [enum BGMode] 枚举的大å°ã€‚"
+msgstr "代表 [enum BGMode] 枚举的大å°ã€‚"
msgid ""
"Linear tonemapper operator. Reads the linear data and passes it on "
@@ -11357,6 +25638,9 @@ msgstr ""
"打开文件进行读写æ“作。如果文件ä¸å­˜åœ¨ï¼Œåˆ™åˆ›å»ºè¯¥æ–‡ä»¶ï¼Œå¦‚果存在则截断。光标ä½äºŽ"
"文件的开头。"
+msgid "Uses the [url=https://fastlz.org/]FastLZ[/url] compression method."
+msgstr "使用 [url=https://fastlz.org/]FastLZ[/url] 压缩方法。"
+
msgid ""
"Uses the [url=https://en.wikipedia.org/wiki/DEFLATE]DEFLATE[/url] "
"compression method."
@@ -11377,6 +25661,9 @@ msgstr "用于选择文件系统中的文件或目录的对è¯æ¡†ã€‚"
msgid "Clear all the added filters in the dialog."
msgstr "清除对è¯æ¡†ä¸­æ‰€æœ‰æ·»åŠ çš„过滤器。"
+msgid "Clear all currently selected items in the dialog."
+msgstr "清除对è¯æ¡†ä¸­æ‰€æœ‰å½“å‰é€‰å®šçš„项目。"
+
msgid ""
"Returns the LineEdit for the selected file.\n"
"[b]Warning:[/b] This is a required internal node, removing and freeing it "
@@ -11551,6 +25838,186 @@ msgid ""
msgstr ""
"å°† [int] 值转æ¢ä¸ºæµ®ç‚¹å€¼ï¼Œ[code]float(1)[/code] 将等于 [code]1.0[/code]。"
+msgid "Returns [code]true[/code] if two floats are different from each other."
+msgstr "如果两个浮点数彼此ä¸åŒï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the integer has different value than the float."
+msgstr "如果整数的值与浮点数ä¸åŒï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Multiplies each component of the [Color] by the given [float].\n"
+"[codeblock]\n"
+"print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Color] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。\n"
+"[codeblock]\n"
+"print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75)\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Quaternion] by the given [float]. This "
+"operation is not meaningful on its own, but it can be used as a part of a "
+"larger expression."
+msgstr ""
+"将该 [Quaternion] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。此æ“作本身没有æ„义,但å¯ä»¥ç”¨"
+"作更大表达å¼çš„一部分。"
+
+msgid ""
+"Multiplies each component of the [Vector2] by the given [float].\n"
+"[codeblock]\n"
+"print(2.5 * Vector2(1, 3)) # Prints \"(2.5, 7.5)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。\n"
+"[codeblock]\n"
+"print(2.5 * Vector2(1, 3)) # 输出 \"(2.5, 7.5)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Vector2i] by the given [float]. Returns a "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(0.9 * Vector2i(10, 15)) # Prints \"(9, 13.5)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。返回的是 [Vector2]。\n"
+"[codeblock]\n"
+"print(0.9 * Vector2i(10, 15)) # 输出 \"(9, 13.5)\"\n"
+"[/codeblock]"
+
+msgid "Multiplies each component of the [Vector3] by the given [float]."
+msgstr "将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。"
+
+msgid ""
+"Multiplies each component of the [Vector3i] by the given [float]. Returns a "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(0.9 * Vector3i(10, 15, 20)) # Prints \"(9, 13.5, 18)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。返回的是 [Vector3]。\n"
+"[codeblock]\n"
+"print(0.9 * Vector3i(10, 15, 20)) # 输出 \"(9, 13.5, 18)\"\n"
+"[/codeblock]"
+
+msgid "Multiplies each component of the [Vector4] by the given [float]."
+msgstr "将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。"
+
+msgid ""
+"Multiplies each component of the [Vector4i] by the given [float]. Returns a "
+"[Vector4].\n"
+"[codeblock]\n"
+"print(0.9 * Vector4i(10, 15, 20, -10)) # Prints \"(9, 13.5, 18, -9)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。返回的是 [Vector4]。\n"
+"[codeblock]\n"
+"print(0.9 * Vector4i(10, 15, 20, -10))# 输出 \"(9, 13.5, 18, -9)\"\n"
+"[/codeblock]"
+
+msgid "Multiplies two [float]s."
+msgstr "将两个 [float] 相乘。"
+
+msgid "Multiplies a [float] and an [int]. The result is a [float]."
+msgstr "将 [float] 和 [int] 相乘。结果是 [float]。"
+
+msgid ""
+"Raises a [float] to a power of a [float].\n"
+"[codeblock]\n"
+"print(39.0625**0.25) # 2.5\n"
+"[/codeblock]"
+msgstr ""
+"å°† [float] æå‡åˆ° [float] 次幂。\n"
+"[codeblock]\n"
+"print(39.0625**0.25) # 2.5\n"
+"[/codeblock]"
+
+msgid ""
+"Raises a [float] to a power of an [int]. The result is a [float].\n"
+"[codeblock]\n"
+"print(0.9**3) # 0.729\n"
+"[/codeblock]"
+msgstr ""
+"å°† [float] æå‡åˆ° [int] 次幂。结果为 [float]。\n"
+"[codeblock]\n"
+"print(0.9**3) # 0.729\n"
+"[/codeblock]"
+
+msgid "Adds two floats."
+msgstr "将两个浮点数相加。"
+
+msgid "Adds a [float] and an [int]. The result is a [float]."
+msgstr "将 [float] 加上 [int]。结果为 [float]。"
+
+msgid "Subtracts a float from a float."
+msgstr "将一个浮点数å‡åŽ»å¦ä¸€ä¸ªæµ®ç‚¹æ•°ã€‚"
+
+msgid "Subtracts an [int] from a [float]. The result is a [float]."
+msgstr "å°† [float] å‡åŽ» [int]。结果为 [float]。"
+
+msgid "Divides two floats."
+msgstr "将两个浮点数相除。"
+
+msgid "Divides a [float] by an [int]. The result is a [float]."
+msgstr "将 [float] 除以 [int]。结果是 [float]。"
+
+msgid "Returns [code]true[/code] if the left float is less than the right one."
+msgstr "如果左侧的浮点数å°äºŽå³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if this [float] is less than the given [int]."
+msgstr "如果该 [float] å°äºŽç»™å®šçš„ [int],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left float is less than or equal to the "
+"right one."
+msgstr "如果左侧的浮点数å°äºŽç­‰äºŽå³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [float] is less than or equal to the given "
+"[int]."
+msgstr "如果该 [float] å°äºŽç­‰äºŽç»™å®šçš„ [int],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if both floats are exactly equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"@GlobalScope.is_equal_approx] or [method @GlobalScope.is_zero_approx] "
+"instead, which are more reliable."
+msgstr ""
+"如果两个浮点数完全相等,则返回 [code]true[/code]。\n"
+"[b]注æ„:[/b]由于浮点精度误差,考虑改用更å¯é çš„ [method @GlobalScope."
+"is_equal_approx] 或 [method @GlobalScope.is_zero_approx]。"
+
+msgid "Returns [code]true[/code] if the [float] and the given [int] are equal."
+msgstr "如果该 [float] 等于给定的 [int],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left float is greater than the right one."
+msgstr "如果左侧的浮点数大于å³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [float] is greater than the given [int]."
+msgstr "如果该 [float] 大于给定的 [int],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left float is greater than or equal to the "
+"right one."
+msgstr "如果左侧的浮点数大于等于å³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [float] is greater than or equal to the "
+"given [int]."
+msgstr "如果该 [float] 大于等于给定的 [int],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns the negative value of the [float]. If positive, turns the number "
+"negative. If negative, turns the number positive. With floats, the number "
+"zero can be either positive or negative."
+msgstr ""
+"返回该 [float] 的相å数。如果为正数,则将该数å˜ä¸ºè´Ÿæ•°ã€‚如果为负数,则将该数å˜"
+"为正数。对于浮点数,数字零既å¯ä»¥æ˜¯æ­£æ•°ï¼Œä¹Ÿå¯ä»¥æ˜¯è´Ÿæ•°ã€‚"
+
msgid "Base class for flow containers."
msgstr "æµå¼å®¹å™¨çš„基类。"
@@ -11567,6 +26034,15 @@ msgstr ""
msgid "Returns the current line count."
msgstr "返回当å‰çš„行数。"
+msgid ""
+"If [code]true[/code], the [FlowContainer] will arrange its children "
+"vertically, rather than horizontally.\n"
+"Can't be changed when using [HFlowContainer] and [VFlowContainer]."
+msgstr ""
+"如果为 [code]true[/code],则 [FlowContainer] 将垂直排列å­èŠ‚点,而ä¸æ˜¯æ°´å¹³æŽ’"
+"列。\n"
+"使用 [HFlowContainer] å’Œ [VFlowContainer] æ—¶ä¸èƒ½æ”¹å˜ã€‚"
+
msgid "The horizontal separation of children nodes."
msgstr "å­èŠ‚点的水平分隔é‡ã€‚"
@@ -11579,9 +26055,39 @@ msgstr "返回字体的上å‡å¹…度(超出基线的åƒç´ æ•°ï¼‰ã€‚"
msgid "Returns the font descent (number of pixels below the baseline)."
msgstr "返回字体的å‡å°‘é‡ï¼ˆä½ŽäºŽåŸºçº¿çš„åƒç´ æ•°ï¼‰ã€‚"
+msgid "Returns glyph size."
+msgstr "返回字形大å°ã€‚"
+
+msgid "Sets glyph offset from the baseline."
+msgstr "设置字形相对于基线的å移é‡ã€‚"
+
+msgid "Sets glyph size."
+msgstr "设置字形大å°ã€‚"
+
+msgid "Sets index of the cache texture containing the glyph."
+msgstr "设置包å«è¯¥å­—形的缓存纹ç†çš„索引。"
+
+msgid "Sets rectangle in the cache texture containing the glyph."
+msgstr "设置包å«è¯¥å­—形的缓存纹ç†ä¸­ï¼Œè¯¥å­—形的矩形区域。"
+
+msgid "Font OpenType feature set override."
+msgstr "字体 OpenType 特性集覆盖。"
+
+msgid "Extra spacing at the bottom of the line in pixels."
+msgstr "行底部的é¢å¤–é—´è·ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Extra width of the space glyphs."
+msgstr "空格字形的é¢å¤–宽度。"
+
+msgid "Extra spacing at the top of the line in pixels."
+msgstr "行顶部的é¢å¤–é—´è·ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
msgid "A script implemented in the GDScript programming language."
msgstr "用 GDScript 编程语言实现的脚本。"
+msgid "GDScript documentation index"
+msgstr "GDScript 文档索引"
+
msgid ""
"Returns a new instance of the script.\n"
"For example:\n"
@@ -11931,7 +26437,7 @@ msgid "If enabled, there is a linear motor across these axes."
msgstr "如果å¯ç”¨ï¼Œåˆ™å­˜åœ¨è·¨è¿™äº›è½´çš„线性马达。"
msgid "Represents the size of the [enum Flag] enum."
-msgstr "表示 [enum Flag] 枚举的大å°ã€‚"
+msgstr "代表 [enum Flag] 枚举的大å°ã€‚"
msgid ""
"Given an array of [Vector2]s, returns the convex hull as a list of points in "
@@ -12036,6 +26542,21 @@ msgstr ""
"åªæ˜¾ç¤ºä»Žè¿™ä¸ªç‰©ä½“投射出æ¥çš„阴影。\n"
"æ¢å¥è¯è¯´ï¼Œå®žé™…的网格将ä¸å¯è§ï¼Œåªæœ‰ç½‘格投影å¯è§ã€‚"
+msgid "Represents the size of the [enum LightmapScale] enum."
+msgstr "代表 [enum LightmapScale] 枚举的大å°ã€‚"
+
+msgid "Represents a GLTF camera."
+msgstr "代表 GLTF 相机。"
+
+msgid "[GLTFDocument] extension class."
+msgstr "[GLTFDocument] 扩展类。"
+
+msgid "Represents a GLTF light."
+msgstr "代表 GLTF ç¯ã€‚"
+
+msgid "KHR_lights_punctual GLTF extension spec"
+msgstr "KHR_lights_punctual GLTF 扩展规格"
+
msgid ""
"The [Color] of the light. Defaults to white. A black color causes the light "
"to have no effect."
@@ -12058,6 +26579,12 @@ msgstr ""
"ç¯å…‰çš„范围,超过这个范围ç¯å…‰æ— æ•ˆã€‚没有定义范围的 GLTF ç¯å…‰çš„行为与无é™èŒƒå›´çš„"
"物ç†ç¯å…‰ä¸€æ ·ã€‚当创建 Godot ç¯å…‰æ—¶ï¼ŒèŒƒå›´é™åˆ¶åœ¨ 4096。"
+msgid "GLTF node class."
+msgstr "GLTF 节点类。"
+
+msgid "Represents a GLTF texture sampler"
+msgstr "代表 GLTF 纹ç†é‡‡æ ·å™¨"
+
msgid "Bridge between Godot and the Mono runtime (Mono-enabled builds only)."
msgstr "Godot å’Œ Mono è¿è¡Œæ—¶ä¹‹é—´çš„æ¡¥æ¢ï¼ˆä»…æ”¯æŒ Mono 的构建)。"
@@ -12071,6 +26598,9 @@ msgstr ""
"Mono çš„ Godot 构建中å¯ç”¨ã€‚\n"
"å‚阅 [CSharpScript] 。"
+msgid "2D particle emitter."
+msgstr "2D ç²’å­å‘射器。"
+
msgid "2D Particles Demo"
msgstr "2D ç²’å­æ¼”示"
@@ -12096,6 +26626,9 @@ msgstr ""
"如果当节点进入/退出å±å¹•æ—¶ç²’å­çªç„¶å‡ºçŽ°/消失,则增长矩形。[Rect2] å¯ä»¥é€šè¿‡ä»£ç "
"或使用 [b]Particles → Generate Visibility Rect[/b] 编辑器工具生æˆã€‚"
+msgid "3D particle emitter."
+msgstr "3D ç²’å­å‘射器。"
+
msgid "Controlling thousands of fish with Particles"
msgstr "用粒å­æŽ§åˆ¶æ•°åƒæ¡é±¼"
@@ -12107,6 +26640,9 @@ msgstr "返回包å«å½“å‰å¸§ä¸­æ‰€æœ‰æ´»åŠ¨ç²’å­çš„轴对é½åŒ…围盒。"
msgid "Restarts the particle emission, clearing existing particles."
msgstr "é‡æ–°å‘å°„ç²’å­ï¼Œæ¸…除现有的粒å­ã€‚"
+msgid "Number of particles to emit."
+msgstr "è¦å‘å°„çš„ç²’å­æ•°ã€‚"
+
msgid "[Mesh] that is drawn for the first draw pass."
msgstr "第一绘制阶段所绘制的 [Mesh]。"
@@ -12145,12 +26681,71 @@ msgstr "å‘出éšæœºçŽ‡ã€‚"
msgid ""
"Speed scaling ratio. A value of [code]0[/code] can be used to pause the "
"particles."
-msgstr "速度缩放比。值为 [code]0[/code] æ—¶å¯æš‚åœç²’å­ã€‚"
+msgstr "速度缩放比例。[code]0[/code] 的值å¯è¢«ç”¨äºŽæš‚åœç²’å­ã€‚"
msgid "Maximum number of draw passes supported."
msgstr "支æŒçš„最大绘制阶段数。"
msgid ""
+"Generate a 256×256 heightmap. Intended for small-scale scenes, or larger "
+"scenes with no distant particles."
+msgstr "ç”Ÿæˆ 256×256 的高度图。适用于å°è§„模场景,或没有远景粒å­çš„较大场景。"
+
+msgid ""
+"Generate a 512×512 heightmap. Intended for medium-scale scenes, or larger "
+"scenes with no distant particles."
+msgstr ""
+"ç”Ÿæˆ 512×512 的高度图。适用于中等规模的场景,或没有远景粒å­çš„较大场景。"
+
+msgid ""
+"Generate a 1024×1024 heightmap. Intended for large scenes with distant "
+"particles."
+msgstr "ç”Ÿæˆ 1024×1024 的高度图。适用于具有远景粒å­çš„大型场景。"
+
+msgid ""
+"Generate a 2048×2048 heightmap. Intended for very large scenes with distant "
+"particles."
+msgstr "ç”Ÿæˆ 2048×2048 的高度图。适用于具有远景粒å­çš„éžå¸¸å¤§çš„场景。"
+
+msgid ""
+"Generate a 4096×4096 heightmap. Intended for huge scenes with distant "
+"particles."
+msgstr "ç”Ÿæˆ 4096×4096 的高度图。适用于具有远景粒å­çš„巨大场景。"
+
+msgid ""
+"Generate a 8192×8192 heightmap. Intended for gigantic scenes with distant "
+"particles."
+msgstr "ç”Ÿæˆ 8192×8192 的高度图。适用于具有远景粒å­çš„巨大场景。"
+
+msgid "Represents the size of the [enum Resolution] enum."
+msgstr "代表 [enum Resolution] 枚举的大å°ã€‚"
+
+msgid ""
+"Bake a 16×16×16 signed distance field. This is the fastest option, but also "
+"the least precise."
+msgstr "烘焙 16×16×16 的有符å·è·ç¦»åœºã€‚这是最快的选项,但也是最ä¸ç²¾ç¡®çš„。"
+
+msgid "Bake a 32×32×32 signed distance field."
+msgstr "烘焙 32×32×32 的有符å·è·ç¦»åœºã€‚"
+
+msgid "Bake a 64×64×64 signed distance field."
+msgstr "烘焙 64×64×64 的有符å·è·ç¦»åœºã€‚"
+
+msgid "Bake a 128×128×128 signed distance field."
+msgstr "烘焙 128×128×128 的有符å·è·ç¦»åœºã€‚"
+
+msgid "Bake a 256×256×256 signed distance field."
+msgstr "烘焙 256×256×256 的有符å·è·ç¦»åœºã€‚"
+
+msgid ""
+"Bake a 512×512×512 signed distance field. This is the slowest option, but "
+"also the most precise."
+msgstr "烘焙 512×512×512 的有符å·è·ç¦»åœºã€‚这是最慢的选项,但也是最精确的。"
+
+msgid "The collision sphere's radius in 3D units."
+msgstr "碰撞çƒçš„åŠå¾„,以 3D å•ä½è¡¨ç¤ºã€‚"
+
+msgid ""
"A color interpolator resource which can be used to generate colors between "
"user-defined color points."
msgstr "颜色æ’值器资æºï¼Œå¯ç”¨äºŽåœ¨ç”¨æˆ·å®šä¹‰çš„颜色点之间生æˆé¢œè‰²ã€‚"
@@ -12696,6 +27291,9 @@ msgstr "水平盒å¼å®¹å™¨ã€‚è§ [BoxContainer]。"
msgid "The horizontal space between the [HBoxContainer]'s elements."
msgstr "[HBoxContainer] 的元素之间的水平间隙。"
+msgid "Height map shape resource for 3D physics."
+msgstr "高度图形状资æºï¼Œç”¨äºŽ 3D 物ç†ã€‚"
+
msgid ""
"Height map data, pool array must be of [member map_width] * [member "
"map_depth] size."
@@ -12770,6 +27368,102 @@ msgid "Used to create an HMAC for a message using a key."
msgstr "用æ¥ä¸ºä¸€ä¸ªä½¿ç”¨å¯†é’¥çš„ä¿¡æ¯åˆ›å»º HMAC。"
msgid ""
+"The HMACContext class is useful for advanced HMAC use cases, such as "
+"streaming the message as it supports creating the message over time rather "
+"than providing it all at once.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"var ctx = HMACContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"supersecret\".to_utf8()\n"
+" var err = ctx.start(HashingContext.HASH_SHA256, key)\n"
+" assert(err == OK)\n"
+" var msg1 = \"this is \".to_utf8()\n"
+" var msg2 = \"super duper secret\".to_utf8()\n"
+" err = ctx.update(msg1)\n"
+" assert(err == OK)\n"
+" err = ctx.update(msg2)\n"
+" assert(err == OK)\n"
+" var hmac = ctx.finish()\n"
+" print(hmac.hex_encode())\n"
+"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private HmacContext _ctx = new HmacContext();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" byte[] key = \"supersecret\".ToUtf8();\n"
+" Error err = _ctx.Start(HashingContext.HashType.Sha256, key);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" byte[] msg1 = \"this is \".ToUtf8();\n"
+" byte[] msg2 = \"super duper secret\".ToUtf8();\n"
+" err = _ctx.Update(msg1);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" err = _ctx.Update(msg2);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" byte[] hmac = _ctx.Finish();\n"
+" GD.Print(hmac.HexEncode());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"HMACContext 类对于高级的 HMAC 用例éžå¸¸æœ‰ç”¨ï¼Œä¾‹å¦‚æµå¼æ¶ˆæ¯ï¼Œå› ä¸ºå®ƒæ”¯æŒåœ¨ä¸€æ®µæ—¶"
+"间内创建消æ¯ï¼Œè€Œéžä¸€æ¬¡æ€§æ供。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"extends Node\n"
+"var ctx = HMACContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"supersecret\".to_utf8()\n"
+" var err = ctx.start(HashingContext.HASH_SHA256, key)\n"
+" assert(err == OK)\n"
+" var msg1 = \"this is \".to_utf8()\n"
+" var msg2 = \"super duper secret\".to_utf8()\n"
+" err = ctx.update(msg1)\n"
+" assert(err == OK)\n"
+" err = ctx.update(msg2)\n"
+" assert(err == OK)\n"
+" var hmac = ctx.finish()\n"
+" print(hmac.hex_encode())\n"
+"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public partial class MyNode : Node\n"
+"{\n"
+" private HmacContext _ctx = new HmacContext();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" byte[] key = \"supersecret\".ToUtf8();\n"
+" Error err = _ctx.Start(HashingContext.HashType.Sha256, key);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" byte[] msg1 = \"this is \".ToUtf8();\n"
+" byte[] msg2 = \"super duper secret\".ToUtf8();\n"
+" err = _ctx.Update(msg1);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" err = _ctx.Update(msg2);\n"
+" Debug.Assert(err == Error.Ok);\n"
+" byte[] hmac = _ctx.Finish();\n"
+" GD.Print(hmac.HexEncode());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Initializes the HMACContext. This method cannot be called again on the same "
"HMACContext until [method finish] has been called."
msgstr ""
@@ -12827,21 +27521,20 @@ msgid "Used as background when the [ScrollBar] has the GUI focus."
msgstr "当 [ScrollBar] 具有 GUI 焦点时用作背景。"
msgid "Horizontal separator."
-msgstr "水平分隔符。"
+msgstr "水平分隔器。"
msgid ""
"Horizontal separator. See [Separator]. Even though it looks horizontal, it "
"is used to separate objects vertically."
-msgstr ""
-"æ°´å¹³åˆ†ç¦»å™¨ã€‚è§ [Separator]。尽管它看起æ¥æ˜¯æ°´å¹³çš„,但被用于垂直分隔对象。"
+msgstr "æ°´å¹³åˆ†éš”å™¨ã€‚è§ [Separator]。尽管外观是水平的,但作用是垂直分隔对象。"
msgid ""
"The height of the area covered by the separator. Effectively works like a "
"minimum height."
-msgstr "分隔符覆盖区域的高度。如åŒæœ€å°é«˜åº¦ä¸€æ ·æœ‰æ•ˆåœ°å·¥ä½œã€‚"
+msgstr "分隔器覆盖区域的高度。效果上和最å°é«˜åº¦ä¸€è‡´ã€‚"
msgid "The style for the separator line. Works best with [StyleBoxLine]."
-msgstr "分隔符的样å¼ã€‚与 [StyleBoxLine] é…åˆä½¿ç”¨æ•ˆæžœæ›´ä½³ã€‚"
+msgstr "分隔器的线æ¡æ ·å¼ã€‚与 [StyleBoxLine] é…åˆä½¿ç”¨æ•ˆæžœæ›´ä½³ã€‚"
msgid "Horizontal slider."
msgstr "水平滑动æ¡ã€‚"
@@ -12903,6 +27596,12 @@ msgstr "在中间区域绘制的抓å–图标。"
msgid "Low-level hyper-text transfer protocol client."
msgstr "低级别的超文本传输å议客户端。"
+msgid "HTTP client class"
+msgstr "HTTP 客户端类"
+
+msgid "TLS certificates"
+msgstr "TLS è¯ä¹¦"
+
msgid "Closes the current connection, allowing reuse of this [HTTPClient]."
msgstr "关闭当å‰è¿žæŽ¥ï¼Œå…许é‡ç”¨æ­¤[HTTPClient]。"
@@ -13044,7 +27743,7 @@ msgid ""
msgstr "HTTP PATCH 方法。PATCH 方法用于对资æºè¿›è¡Œéƒ¨åˆ†ä¿®æ”¹ã€‚"
msgid "Represents the size of the [enum Method] enum."
-msgstr "表示 [enum Method] 枚举的大å°ã€‚"
+msgstr "代表 [enum Method] 枚举的大å°ã€‚"
msgid "Status: Disconnected from the server."
msgstr "状æ€ï¼šä¸ŽæœåŠ¡å™¨æ–­å¼€è¿žæŽ¥ã€‚"
@@ -13073,6 +27772,9 @@ msgstr "状æ€ï¼šå·²èŽ·å– HTTP å“应体。"
msgid "Status: Error in HTTP connection."
msgstr "状æ€ï¼šHTTP 连接出错。"
+msgid "Status: Error in TLS handshake."
+msgstr "状æ€ï¼šTLS æ¡æ‰‹å‡ºé”™ã€‚"
+
msgid ""
"HTTP status code [code]100 Continue[/code]. Interim response that indicates "
"everything so far is OK and that the client should continue with the request "
@@ -13594,6 +28296,9 @@ msgstr ""
msgid "A node with the ability to send HTTP(S) requests."
msgstr "具有å‘é€ HTTP(S) 请求能力的节点。"
+msgid "Making HTTP requests"
+msgstr "å‘出 HTTP 请求"
+
msgid "Cancels the current request."
msgstr "å–消当å‰è¯·æ±‚。"
@@ -13644,6 +28349,9 @@ msgstr ""
"下载å°æ–‡ä»¶æ—¶å°†å…¶è®¾ç½®ä¸ºè¾ƒä½Žçš„值,以é™ä½Žå†…存使用é‡ï¼Œä½†ä¼šé™ä½Žä¸‹è½½é€Ÿåº¦ï¼Œä¾‹å¦‚ "
"4096 表示 4 KiB。"
+msgid "Maximum number of allowed redirects."
+msgstr "å…许的最大é‡å®šå‘数。"
+
msgid ""
"If set to a value greater than [code]0.0[/code] before the request starts, "
"the HTTP request will time out after [code]timeout[/code] seconds have "
@@ -13678,6 +28386,9 @@ msgstr "解æžæ—¶è¯·æ±‚失败。"
msgid "Request failed due to connection (read/write) error."
msgstr "因连接(读写)错误而失败。"
+msgid "Request failed on TLS handshake."
+msgstr "TLS æ¡æ‰‹æ—¶è¯·æ±‚失败。"
+
msgid "Request does not have a response (yet)."
msgstr "请求(目å‰è¿˜ï¼‰æ²¡æœ‰èŽ·å¾—相应。"
@@ -13724,6 +28435,12 @@ msgstr ""
"都存储在一个ä½ä¸Šï¼Œåˆ™è¿”回 [constant ALPHA_BIT]。如果没有找到 Alpha 值的数æ®ï¼Œ"
"则返回 [constant ALPHA_NONE]。"
+msgid "Fills the image with [param color]."
+msgstr "使用颜色 [param color] 填充图åƒã€‚"
+
+msgid "Fills [param rect] with [param color]."
+msgstr "使用颜色 [param color] 填充矩形 [param rect]。"
+
msgid "Blends low-alpha pixels with nearby pixels."
msgstr "å°† Alpha 较低的åƒç´ ä¸Žé™„è¿‘åƒç´ æ··åˆã€‚"
@@ -13822,6 +28539,11 @@ msgid ""
msgstr "OpenGL 纹ç†æ ¼å¼ï¼Œå…·æœ‰ä¸¤ä¸ªå€¼ï¼Œäº®åº¦å’Œ Alpha,都以 8 ä½å­˜å‚¨ã€‚"
msgid ""
+"OpenGL texture format [code]RED[/code] with a single component and a "
+"bitdepth of 8."
+msgstr "OpenGL 纹ç†æ ¼å¼ [code]RED[/code],具有å•ä¸ªåˆ†é‡å’Œ 8 ä½æ·±åº¦ã€‚"
+
+msgid ""
"OpenGL texture format [code]RG[/code] with two components and a bitdepth of "
"8 for each."
msgstr "OpenGL 纹ç†æ ¼å¼ [code]RG[/code],具有两个部分,æ¯ä¸ªéƒ¨åˆ†çš„ä½æ·±åº¦ä¸º 8。"
@@ -14098,7 +28820,7 @@ msgstr ""
"[b]注æ„:[/b]创建 [ImageTexture] 时,会执行 sRGB 到线性色彩空间的转æ¢ã€‚"
msgid "Represents the size of the [enum Format] enum."
-msgstr "表示 [enum Format] 枚举的大å°ã€‚"
+msgstr "代表 [enum Format] 枚举的大å°ã€‚"
msgid ""
"Performs nearest-neighbor interpolation. If the image is resized, it will be "
@@ -14183,6 +28905,9 @@ msgid ""
"compressed into two channels)."
msgstr "原始纹ç†ï¼ˆåœ¨åŽ‹ç¼©å‰ï¼‰æ˜¯æ³•çº¿çº¹ç†ï¼ˆä¾‹å¦‚å¯ä»¥åŽ‹ç¼©ä¸ºä¸¤ä¸ªé€šé“)。"
+msgid "A [Texture2D] based on an [Image]."
+msgstr "基于 [Image] 的 [Texture2D]。"
+
msgid "Returns the format of the texture, one of [enum Image.Format]."
msgstr "返回纹ç†çš„æ ¼å¼ï¼Œ[enum Image.Format] 之一。"
@@ -14192,6 +28917,9 @@ msgstr "将纹ç†çš„大å°è°ƒæ•´ä¸ºæŒ‡å®šçš„尺寸。"
msgid "Texture with 3 dimensions."
msgstr "具有 3 个维度的纹ç†ã€‚"
+msgid "Clear all surfaces."
+msgstr "清除所有表é¢ã€‚"
+
msgid ""
"Returns a [Material] in a given surface. Surface is rendered using this "
"material."
@@ -14215,6 +28943,9 @@ msgstr ""
"ç›® > 项目设置[/b]çš„[b]输入映射[/b]选项å¡ä¸­æˆ–使用 [InputMap] 类设置æ“作åŠå…¶äº‹"
"件。"
+msgid "Inputs documentation index"
+msgstr "输入文档索引"
+
msgid ""
"This will simulate pressing the specified action.\n"
"The strength can be used for non-boolean actions, it's ranged between 0 and "
@@ -14523,13 +29254,6 @@ msgstr ""
"如果这个输入事件的类型是å¯ä»¥åˆ†é…给输入动作的类型,则返回 [code]true[/code]。"
msgid ""
-"Returns [code]true[/code] if this input event is an echo event (only for "
-"events of type [InputEventKey])."
-msgstr ""
-"如果这个输入事件是回显事件(仅适用于 [InputEventKey] 类型的事件),则返回 "
-"[code]true[/code]。"
-
-msgid ""
"The event's device ID.\n"
"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated "
"mouse input from a touchscreen. This can be used to distinguish emulated "
@@ -14613,6 +29337,9 @@ msgid ""
msgstr ""
"存储关于æ“纵æ†è¿åŠ¨çš„ä¿¡æ¯ã€‚一个 [InputEventJoypadMotion] 一次代表一个轴。"
+msgid "Axis identifier. Use one of the [enum JoyAxis] axis constants."
+msgstr "轴标识符。使用 [enum JoyAxis] 轴常é‡ã€‚"
+
msgid ""
"Current position of the joystick on the given axis. The value ranges from "
"[code]-1.0[/code] to [code]1.0[/code]. A value of [code]0[/code] means the "
@@ -14625,6 +29352,21 @@ msgid "Input event type for keyboard events."
msgstr "键盘事件的输入事件类型。"
msgid ""
+"Returns a [String] representation of the event's [member key_label] and "
+"modifiers."
+msgstr "返回该事件 [member key_label] åŠä¿®é¥°é”®çš„ [String] 字符串表示。"
+
+msgid ""
+"Returns a [String] representation of the event's [member keycode] and "
+"modifiers."
+msgstr "返回该事件 [member key_keycode] åŠä¿®é¥°é”®çš„ [String] 字符串表示。"
+
+msgid ""
+"Returns a [String] representation of the event's [member physical_keycode] "
+"and modifiers."
+msgstr "返回该事件 [member physical_keycode] åŠä¿®é¥°é”®çš„ [String] 字符串表示。"
+
+msgid ""
"If [code]true[/code], the key was already pressed before this event. It "
"means the user is holding the key down."
msgstr ""
@@ -14632,6 +29374,30 @@ msgstr ""
"键。"
msgid ""
+"Latin label printed on the key in the current keyboard layout, which "
+"corresponds to one of the [enum Key] constants.\n"
+"To get a human-readable representation of the [InputEventKey], use [code]OS."
+"get_keycode_string(event.keycode)[/code] where [code]event[/code] is the "
+"[InputEventKey].\n"
+"[codeblock]\n"
+" +-----+ +-----+\n"
+" | Q | | Q | - \"Q\" - keycode\n"
+" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
+" +-----+ +-----+\n"
+"[/codeblock]"
+msgstr ""
+"当å‰é”®ç›˜å¸ƒå±€ä¸­é”®ä¸Šæ‰“å°çš„拉ä¸æ ‡ç­¾ï¼Œå¯¹åº”于 [enum Key] 常é‡ä¹‹ä¸€ã€‚\n"
+"è¦èŽ·å¾— [InputEventKey] 的人类å¯è¯»è¡¨ç¤ºï¼Œè¯·ä½¿ç”¨ [code]OS."
+"get_keycode_string(event.keycode)[/code],其中 [code]event[/code] 是 "
+"[InputEventKey]。\n"
+"[codeblock]\n"
+" +-----+ +-----+\n"
+" | Q | | Q | - \"Q\" - é”®ç \n"
+" | Й | | ض | - \"Й\" 和 \"ض\" - key_label\n"
+" +-----+ +-----+\n"
+"[/codeblock]"
+
+msgid ""
"If [code]true[/code], the key's state is pressed. If [code]false[/code], the "
"key's state is released."
msgstr ""
@@ -14777,6 +29543,9 @@ msgstr ""
"代表笔的倾斜角度。正的 X å标值表示å‘å³å€¾æ–œã€‚正的Yå标值表示å‘用户自身倾斜。"
"两个轴的范围是 [code]-1.0[/code] 到 [code]1.0[/code]。"
+msgid "The mouse velocity in pixels per second."
+msgstr "鼠标速度,以åƒç´ æ¯ç§’为å•ä½ã€‚"
+
msgid ""
"Input event type for screen drag events. Only available on mobile devices."
msgstr "å±å¹•æ‹–动事件的输入事件类型。仅适用于移动设备。"
@@ -14795,6 +29564,9 @@ msgid ""
"frame)."
msgstr "相对于之å‰ä½ç½®ï¼ˆä¸Šä¸€å¸§æ—¶çš„ä½ç½®ï¼‰çš„拖拽ä½ç½®ã€‚"
+msgid "The drag velocity."
+msgstr "拖拽的速度。"
+
msgid ""
"Input event type for screen touch events.\n"
"(only available on mobile devices)"
@@ -14809,10 +29581,16 @@ msgstr ""
"存储多点触摸的按压/释放信æ¯ã€‚支æŒè§¦æ‘¸æŒ‰åŽ‹ã€è§¦æ‘¸é‡Šæ”¾å’Œ [member index] 的多点触"
"摸计数和顺åºã€‚"
+msgid "If [code]true[/code], the touch's state is a double tap."
+msgstr "如果为 [code]true[/code],则触摸状æ€ä¸ºåŒå‡»ã€‚"
+
msgid ""
"The touch index in the case of a multi-touch event. One index = one finger."
msgstr "在多点触摸事件中的触摸指数。一个索引 = 一个手指。"
+msgid "The touch position, in screen (global) coordinates."
+msgstr "触摸ä½ç½®ï¼Œä½¿ç”¨å±å¹•ï¼ˆå…¨å±€ï¼‰å标。"
+
msgid ""
"If [code]true[/code], the touch's state is pressed. If [code]false[/code], "
"the touch's state is released."
@@ -14823,6 +29601,51 @@ msgstr ""
msgid "Base class for keys events with modifiers."
msgstr "带有修饰符的键事件的基类。"
+msgid ""
+"Contains keys events information with modifiers support like [kbd]Shift[/"
+"kbd] or [kbd]Alt[/kbd]. See [method Node._input]."
+msgstr ""
+"包å«å¸¦æœ‰ä¿®é¥°é”®æ”¯æŒçš„按键事件信æ¯ï¼Œå¦‚ [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd]ã€‚è§ "
+"[method Node._input]。"
+
+msgid "Returns the keycode combination of modifier keys."
+msgstr "返回修饰键的键ç ç»„åˆã€‚"
+
+msgid ""
+"On macOS, returns [code]true[/code] if [kbd]Meta[/kbd] ([kbd]Command[/kbd]) "
+"is pressed.\n"
+"On other platforms, returns [code]true[/code] if [kbd]Ctrl[/kbd] is pressed."
+msgstr ""
+"在 macOS 上,如果 [kbd]Meta[/kbd]([kbd]Command[/kbd])是按下状æ€ï¼Œåˆ™è¿”回 "
+"[code]true[/code] 。\n"
+"在其他平å°ä¸Šï¼Œå¦‚æžœ [kbd]Ctrl[/kbd] 是按下状æ€ï¼Œåˆ™è¿”回 [code]true[/code] 。"
+
+msgid "State of the [kbd]Alt[/kbd] modifier."
+msgstr "[kbd]Alt[/kbd] 修饰键的状æ€ã€‚"
+
+msgid ""
+"Automatically use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and "
+"[kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member "
+"ctrl_pressed] and [member meta_pressed] cannot be set."
+msgstr ""
+"自动在 macOS 上使用 [kbd]Meta[/kbd]([kbd]Command[/kbd]),在其他平å°ä¸Šä½¿ç”¨ "
+"[kbd]Ctrl[/kbd]。如果为 [code]true[/code],则无法设置 [member ctrl_pressed] "
+"和 [member meta_pressed]。"
+
+msgid "State of the [kbd]Ctrl[/kbd] modifier."
+msgstr "[kbd]Ctrl[/kbd] 修饰键的状æ€ã€‚"
+
+msgid ""
+"State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents "
+"the Windows key (sometimes called \"meta\" or \"super\" on Linux). On macOS, "
+"this represents the Command key."
+msgstr ""
+"[kbd]Meta[/kbd] 修饰键的状æ€ã€‚在 Windows å’Œ Linux 上代表 Windows 键(有时在 "
+"Linux 上称为“metaâ€æˆ–“superâ€é”®ï¼‰ã€‚在 macOS 上代表 Command 键。"
+
+msgid "State of the [kbd]Shift[/kbd] modifier."
+msgstr "[kbd]Shift[/kbd] 修饰键的状æ€ã€‚"
+
msgid "Singleton that manages [InputEventAction]."
msgstr "ç®¡ç† [InputEventAction] çš„å•ä¾‹ã€‚"
@@ -14836,6 +29659,9 @@ msgstr ""
"映射[/b]或在代ç ä¸­ç”¨ [method add_action] å’Œ [method action_add_event] 创建/ä¿®"
"改。请å‚阅 [method Node._input]。"
+msgid "InputEvent: InputMap"
+msgstr "InputEvent:InputMap"
+
msgid ""
"Adds an [InputEvent] to an action. This [InputEvent] will trigger the action."
msgstr "ç»™æŸä¸ªåŠ¨ä½œæ·»åŠ ä¸€ä¸ª [InputEvent]。这个 [InputEvent] 将触å‘这个动作。"
@@ -14906,16 +29732,399 @@ msgstr ""
msgid "Integer built-in type."
msgstr "整数内置类型。"
+msgid ""
+"Signed 64-bit integer type.\n"
+"It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. "
+"[code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those "
+"bounds will wrap around.\n"
+"[int] is a [Variant] type, and will thus be used when assigning an integer "
+"value to a [Variant]. It can also be enforced with the [code]: int[/code] "
+"type hint.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_variant = 0 # int, value 0.\n"
+"my_variant += 4.2 # float, value 4.2.\n"
+"var my_int: int = 1 # int, value 1.\n"
+"my_int = 4.2 # int, value 4, the right value is implicitly cast to int.\n"
+"my_int = int(\"6.7\") # int, value 6, the String is explicitly cast with "
+"int.\n"
+"var max_int = 9223372036854775807\n"
+"print(max_int) # 9223372036854775807, OK.\n"
+"max_int += 1\n"
+"print(max_int) # -9223372036854775808, we overflowed and wrapped around.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int myInt = (int)\"6.7\".ToFloat(); // int, value 6, the String is "
+"explicitly cast with int.\n"
+"// We have to use `long` here, because GDSript's `int`\n"
+"// is 64 bits long while C#'s `int` is only 32 bits.\n"
+"long maxInt = 9223372036854775807;\n"
+"GD.Print(maxInt); // 9223372036854775807, OK.\n"
+"maxInt++;\n"
+"GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped "
+"around.\n"
+"\n"
+"// Alternatively, if we used C#'s 32-bit `int` type, the maximum value is "
+"much smaller:\n"
+"int halfInt = 2147483647;\n"
+"GD.Print(halfInt); // 2147483647, OK.\n"
+"halfInt++;\n"
+"GD.Print(halfInt); // -2147483648, we overflowed and wrapped around.\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"æœ‰ç¬¦å· 64 ä½æ•´æ•°ç±»åž‹ã€‚\n"
+"å¯ä»¥æŽ¥å— [code][-2^63, 2^63 - 1][/code] èŒƒå›´å†…çš„å€¼ï¼Œå³ [code]"
+"[-9223372036854775808, 9223372036854775807][/code]。超出这个界é™åŽä¼šçŽ¯ç»•è‡³å¦"
+"一端。\n"
+"[int] 是 [Variant] 类型,因此会在将整数值赋给 [Variant] 时使用。也å¯ä»¥ç”¨ç±»åž‹"
+"æ示 [code]: int[/code] 强制。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_variant = 0 # int,值为 0。\n"
+"my_variant += 4.2 # float,值为 4.2。\n"
+"var my_int: int = 1 # int,值为 1。\n"
+"my_int = 4.2 # int,值为 4,å³ä¾§çš„值éšå¼è½¬æ¢ä¸ºäº† int。\n"
+"my_int = int(\"6.7\") # int,值为 6,该 String 显å¼è½¬æ¢ä¸ºäº† int。\n"
+"var max_int = 9223372036854775807\n"
+"print(max_int) # 9223372036854775807,正确。\n"
+"max_int += 1\n"
+"print(max_int) # -9223372036854775808,溢出,环绕至å¦ä¸€ç«¯ã€‚\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int myInt = (int)\"6.7\".ToFloat(); // int,值为 6,该 String 显å¼è½¬æ¢ä¸ºäº† "
+"int。\n"
+"// 这里我们需è¦ç”¨ `long`,因为 GDSript çš„ `int`\n"
+"// 为 64 ä½ï¼Œè€Œ C# çš„ `int` åªæœ‰ 32 ä½ã€‚\n"
+"long maxInt = 9223372036854775807;\n"
+"GD.Print(maxInt); // 9223372036854775807,正确。\n"
+"maxInt++;\n"
+"GD.Print(maxInt); // -9223372036854775808,溢出,环绕至å¦ä¸€ç«¯ã€‚\n"
+"\n"
+"// 或者,如果我们使用 C# çš„ 32 ä½ `int` 类型,则最大值相对è¦å°å¾ˆå¤šï¼š\n"
+"int halfInt = 2147483647;\n"
+"GD.Print(halfInt); // 2147483647,正确。\n"
+"halfInt++;\n"
+"GD.Print(halfInt); // -2147483648,溢出,环绕至å¦ä¸€ç«¯ã€‚\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "Constructs a default-initialized [int] set to [code]0[/code]."
+msgstr "构造默认åˆå§‹åŒ–为 [code]0[/code] çš„ [int]。"
+
msgid "Constructs an [int] as a copy of the given [int]."
msgstr "构造给定 [int] 的副本。"
msgid ""
+"Converts a [String] to an [int], following the same rules as [method String."
+"to_int]."
+msgstr "å°† [String] 转æ¢ä¸º [int],éµå¾ªä¸Ž [method String.to_int] 相åŒçš„规则。"
+
+msgid ""
"Cast a [bool] value to an integer value, [code]int(true)[/code] will be "
"equals to 1 and [code]int(false)[/code] will be equals to 0."
msgstr ""
-"å°† [bool] 值转æ¢æˆæ•´æ•°å€¼ï¼Œ[code]int(true)[/code] 将等于 1,[code]int(false)[/"
+"å°† [bool] 值转æ¢ä¸ºæ•´æ•°å€¼ï¼Œ[code]int(true)[/code] 将等于 1,[code]int(false)[/"
"code] 将等于 0。"
+msgid ""
+"Cast a float value to an integer value, this method simply removes the "
+"number fractions (i.e. rounds [param from] towards zero), so for example "
+"[code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be "
+"equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation "
+"is also called truncation."
+msgstr ""
+"将浮点值转æ¢ä¸ºæ•´æ•°å€¼ï¼Œè¯¥æ–¹æ³•åªæ˜¯åˆ é™¤æ•°å­—çš„å°æ•°éƒ¨åˆ†ï¼ˆå³ï¼Œå°† [param from] å‘零"
+"èˆå…¥ï¼‰ï¼Œå› æ­¤ä¾‹å¦‚ [code]int(2.7)[/code] 将等于 2,[code]int(0.1)[/code] 将等"
+"于 0,而 [code]int(-2.7)[/code] 将等于 -2。这个æ“作也称为截断。"
+
+msgid ""
+"Returns [code]true[/code] if this [int] is not equivalent to the given "
+"[float]."
+msgstr "如果该 [int] 与给定的 [float] ä¸ç­‰ä»·ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the integers are not equal."
+msgstr "如果两个整数ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns the remainder after dividing two integers. This operation uses "
+"truncated division, which is often not desired as it does not work well with "
+"negative numbers. Consider using [method @GlobalScope.posmod] instead if you "
+"want to handle negative numbers.\n"
+"[codeblock]\n"
+"print(5 % 2) # 1\n"
+"print(12 % 4) # 0\n"
+"print(-5 % 3) # -2\n"
+"[/codeblock]"
+msgstr ""
+"返回两个整数相除åŽçš„余数。该æ“作使用截断除法,通常并ä¸å¸Œæœ›å¦‚此,因为它ä¸é€‚用"
+"于负数。如果è¦å¤„ç†è´Ÿæ•°ï¼Œè¯·è€ƒè™‘改用 [method @GlobalScope.posmod]。\n"
+"[codeblock]\n"
+"print(5 % 2) # 1\n"
+"print(12 % 4) # 0\n"
+"print(-5 % 3) # -2\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the result of bitwise [code]AND[/code] operation for two integers.\n"
+"[codeblock]\n"
+"print(3 & 1) # 1\n"
+"print(11 & 3) # 3\n"
+"[/codeblock]\n"
+"It's useful to retrieve binary flags from a variable.\n"
+"[codeblock]\n"
+"var flags = 5\n"
+"# Do something if the first bit is enabled.\n"
+"if flags & 1:\n"
+" do_stuff()\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žä¸¤ä¸ªæ•´æ•°æŒ‰ä½ [code]AND[/code] è¿ç®—的结果。\n"
+"[codeblock]\n"
+"print(3 & 1) # 1\n"
+"print(11 & 3) # 3\n"
+"[/codeblock]\n"
+"从å˜é‡ä¸­æ£€ç´¢äºŒè¿›åˆ¶æ ‡å¿—很有用。\n"
+"[codeblock]\n"
+"var flags = 5\n"
+"# 如果å¯ç”¨äº†ç¬¬ä¸€ä½ï¼Œè¯·æ‰§è¡ŒæŸäº›æ“作。\n"
+"if flags & 1:\n"
+" do_stuff()\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Quaternion] by the given [int]. This "
+"operation is not meaningful on its own, but it can be used as a part of a "
+"larger expression."
+msgstr ""
+"将该 [Quaternion] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。此æ“作本身没有æ„义,但å¯ä»¥ç”¨"
+"作更大表达å¼çš„一部分。"
+
+msgid ""
+"Multiplies each component of the [Vector2] by the given [int].\n"
+"[codeblock]\n"
+"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。\n"
+"[codeblock]\n"
+"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n"
+"[/codeblock]"
+
+msgid "Multiplies each component of the [Vector2i] by the given [int]."
+msgstr "将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Multiplies each component of the [Vector3] by the given [int]."
+msgstr "将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Multiplies each component of the [Vector3i] by the given [int]."
+msgstr "将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Multiplies each component of the [Vector4] by the given [int]."
+msgstr "将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Multiplies each component of the [Vector4i] by the given [int]."
+msgstr "将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Multiplies an [int] and a [float]. The result is a [float]."
+msgstr "将 [int] 乘以 [float]。结果为 [float]。"
+
+msgid "Multiplies two [int]s."
+msgstr "将两个 [int] 相乘。"
+
+msgid ""
+"Raises an [int] to a power of a [float]. The result is a [float].\n"
+"[codeblock]\n"
+"print(8**0.25) # 1.68179283050743\n"
+"[/codeblock]"
+msgstr ""
+"å°† [int] æå‡åˆ° [float] 次幂。结果为 [float]。\n"
+"[codeblock]\n"
+"print(8**0.25) # 1.68179283050743\n"
+"[/codeblock]"
+
+msgid ""
+"Raises an [int] to a power of a [int].\n"
+"[codeblock]\n"
+"print(5**5) # 3125\n"
+"[/codeblock]"
+msgstr ""
+"å°† [int] æå‡åˆ° [int] 次幂。\n"
+"[codeblock]\n"
+"print(5**5) # 3125\n"
+"[/codeblock]"
+
+msgid "Adds an [int] and a [float]. The result is a [float]."
+msgstr "将 [int] 加上 [float]。结果为 [float]。"
+
+msgid "Adds two integers."
+msgstr "将两个整数相加。"
+
+msgid "Subtracts a [float] from an [int]. The result is a [float]."
+msgstr "å°† [int] å‡åŽ» [float]。结果为 [float]。"
+
+msgid "Subtracts two integers."
+msgstr "将两个整数相å‡ã€‚"
+
+msgid ""
+"Divides an [int] by a [float]. The result is a [float].\n"
+"[codeblock]\n"
+"print(10 / 3.0) # 3.333...\n"
+"[/codeblock]"
+msgstr ""
+"将 [int] 除以 [float]。结果为 [float]。\n"
+"[codeblock]\n"
+"print(10 / 3.0) # 3.333...\n"
+"[/codeblock]"
+
+msgid ""
+"Divides two integers. The decimal part of the result is discarded "
+"(truncated).\n"
+"[codeblock]\n"
+"print(10 / 2) # 5\n"
+"print(10 / 3) # 3\n"
+"[/codeblock]"
+msgstr ""
+"将两个整数相除。结果的å°æ•°éƒ¨åˆ†è¢«ï¼ˆæˆªæ–­ï¼‰ã€‚\n"
+"[codeblock]\n"
+"print(10 / 2) # 5\n"
+"print(10 / 3) # 3\n"
+"[/codeblock]"
+
+msgid "Returns [code]true[/code] if this [int] is less than the given [float]."
+msgstr "如果该 [int] å°äºŽç»™å®šçš„ [float],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left integer is less than the right one."
+msgstr "如果左侧的整数å°äºŽå³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Performs bitwise shift left operation on the integer. Effectively the same "
+"as multiplying by a power of 2.\n"
+"[codeblock]\n"
+"print(10 << 1) # 20\n"
+"print(10 << 4) # 160\n"
+"[/codeblock]"
+msgstr ""
+"对该整数执行按ä½å·¦ç§»æ“作。效果上与乘以 2 的幂相åŒã€‚\n"
+"[codeblock]\n"
+"print(10 << 1) # 20\n"
+"print(10 << 4) # 160\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if this [int] is less than or equal to the given "
+"[float]."
+msgstr "如果该 [int] å°äºŽç­‰äºŽç»™å®šçš„ [float],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left integer is less than or equal to the "
+"right one."
+msgstr "如果左侧的整数å°äºŽç­‰äºŽå³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the integer is equal to the given [float]."
+msgstr "如果该整数等于给定的 [float],则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if both integers are equal."
+msgstr "如果两个整数相等,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [int] is greater than the given [float]."
+msgstr "如果该 [int] 大于给定的 [float],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left integer is greater than the right one."
+msgstr "如果左侧的整数大于å³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [int] is greater than or equal to the "
+"given [float]."
+msgstr "如果该 [int] 大于等于给定的 [float],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left integer is greater than or equal to "
+"the right one."
+msgstr "如果左侧的整数大于等于å³ä¾§ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Performs bitwise shift right operation on the integer. Effectively the same "
+"as dividing by a power of 2.\n"
+"[codeblock]\n"
+"print(10 >> 1) # 5\n"
+"print(10 >> 2) # 2\n"
+"[/codeblock]"
+msgstr ""
+"对该整数执行按ä½å³ç§»æ“作。效果上与除以 2 的幂相åŒã€‚\n"
+"[codeblock]\n"
+"print(10 >> 1) # 5\n"
+"print(10 >> 2) # 2\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the result of bitwise [code]XOR[/code] operation for two integers.\n"
+"[codeblock]\n"
+"print(5 ^ 1) # 4\n"
+"print(4 ^ 7) # 3\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žä¸¤ä¸ªæ•´æ•°æŒ‰ä½ [code]XOR[/code](异或)è¿ç®—的结果。\n"
+"[codeblock]\n"
+"print(5 ^ 1) # 4\n"
+"print(4 ^ 7) # 3\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the negated value of the [int]. If positive, turns the number "
+"negative. If negative, turns the number positive. If zero, does nothing."
+msgstr ""
+"返回该 [int] 的相å值。如果为正数,则该将数å˜ä¸ºè´Ÿæ•°ã€‚如果为负数,则将该数å˜ä¸º"
+"正数。如果为零,则ä¸æ‰§è¡Œä»»ä½•æ“作。"
+
+msgid ""
+"Returns the result of bitwise [code]OR[/code] operation for two integers.\n"
+"[codeblock]\n"
+"print(2 | 4) # 6\n"
+"print(1 | 3) # 3\n"
+"[/codeblock]\n"
+"It's useful to store binary flags in a variable.\n"
+"[codeblock]\n"
+"var flags = 0\n"
+"# Turn first and third bit on.\n"
+"flags |= 1\n"
+"flags |= 4\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žä¸¤ä¸ªæ•´æ•°æŒ‰ä½ [code]OR[/code](或)è¿ç®—的结果。\n"
+"[codeblock]\n"
+"print(2 | 4) # 6\n"
+"print(1 | 3) # 3\n"
+"[/codeblock]\n"
+"å¯ç”¨äºŽåœ¨å˜é‡ä¸­å­˜å‚¨äºŒè¿›åˆ¶æ ‡è®°ã€‚\n"
+"[codeblock]\n"
+"var flags = 0\n"
+"# 置第一和第三ä½ã€‚\n"
+"flags |= 1\n"
+"flags |= 4\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the result of bitwise [code]NOT[/code] operation for the integer. "
+"It's effectively equal to [code]-int + 1[/code].\n"
+"[codeblock]\n"
+"print(~4) # -3\n"
+"print(~7) # -6\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žä¸¤ä¸ªæ•´æ•°æŒ‰ä½ [code]NOT[/code](å)è¿ç®—的结果。效果上与 [code]-int + 1[/"
+"code] 相åŒã€‚\n"
+"[codeblock]\n"
+"print(~4) # -3\n"
+"print(~7) # -6\n"
+"[/codeblock]"
+
+msgid "Creates an idle interval in a [Tween] animation."
+msgstr "在 [Tween] 动画中创建空闲间隔。"
+
msgid "Internet protocol (IP) support functions such as DNS resolution."
msgstr "网际å议(IP)支æŒå‡½æ•°ï¼Œå¦‚ DNS 解æžã€‚"
@@ -15007,6 +30216,16 @@ msgid ""
"necessary."
msgstr "ç¡®ä¿å½“å‰é€‰æ‹©å¯è§ï¼Œæ ¹æ®éœ€è¦è°ƒæ•´æ»šåŠ¨ä½ç½®ã€‚"
+msgid ""
+"Returns the custom background color of the item specified by [param idx] "
+"index."
+msgstr "返回项目的自定义背景色,项目由索引 [param idx] 指定。"
+
+msgid ""
+"Returns the custom foreground color of the item specified by [param idx] "
+"index."
+msgstr "返回项目的自定义å‰æ™¯è‰²ï¼Œé¡¹ç›®ç”±ç´¢å¼• [param idx] 指定。"
+
msgid "Returns the icon associated with the specified index."
msgstr "返回与指定索引相关的图标。"
@@ -15018,12 +30237,18 @@ msgid ""
"region has no area."
msgstr "返回项目图标的使用区域。如果该区域大å°ä¸º 0,整个图标将被使用。"
+msgid "Returns item's text language code."
+msgstr "返回项目文本的语言代ç ã€‚"
+
msgid "Returns the metadata value of the specified index."
msgstr "返回指定索引的元数æ®å€¼ã€‚"
msgid "Returns the text associated with the specified index."
msgstr "返回与指定索引关è”的文本。"
+msgid "Returns item's text base writing direction."
+msgstr "返回项目文本的基础书写方å‘。"
+
msgid "Returns the tooltip hint associated with the specified index."
msgstr "返回与指定索引关è”的工具æ示。"
@@ -15065,6 +30290,12 @@ msgid ""
"selected."
msgstr "索引所对应的项目被选中时,返回 [code]true[/code]。"
+msgid "Moves item from index [param from_idx] to [param to_idx]."
+msgstr "将项目从索引 [param from_idx] 移到 [param to_idx]。"
+
+msgid "Removes the item specified by [param idx] index from the list."
+msgstr "从列表中删除索引 [param idx] 指定的项目。"
+
msgid ""
"Select the item at the specified index.\n"
"[b]Note:[/b] This method does not trigger the item selection signal."
@@ -15073,6 +30304,16 @@ msgstr ""
"[b]注æ„:[/b]此方法ä¸è§¦å‘项目选择信å·ã€‚"
msgid ""
+"Sets the background color of the item specified by [param idx] index to the "
+"specified [Color]."
+msgstr "将索引 [param idx] 指定的项目的背景色设置为指定的 [Color]。"
+
+msgid ""
+"Sets the foreground color of the item specified by [param idx] index to the "
+"specified [Color]."
+msgstr "将索引 [param idx] 指定的项目的å‰æ™¯è‰²è®¾ç½®ä¸ºæŒ‡å®šçš„ [Color]。"
+
+msgid ""
"Sets a modulating [Color] of the item associated with the specified index."
msgstr "设置与指定索引相关的项目的调制颜色 [Color]。"
@@ -15085,6 +30326,12 @@ msgid "Sets whether the item icon will be drawn transposed."
msgstr "设置项目图标是å¦å°†è¢«è½¬ç½®ç»˜åˆ¶ã€‚"
msgid ""
+"Sets language code of item's text used for line-breaking and text shaping "
+"algorithms, if left empty current locale is used instead."
+msgstr ""
+"设置项目文本的语言代ç ï¼Œç”¨äºŽæ–­è¡Œå’Œæ–‡æœ¬å¡‘形算法,如果留空则使用当å‰åŒºåŸŸè®¾ç½®ã€‚"
+
+msgid ""
"Sets a value (of any type) to be stored with the item associated with the "
"specified index."
msgstr "设置与指定索引相关的项目存储的值(任何类型的值)。"
@@ -15097,6 +30344,9 @@ msgstr "å…许或ç¦æ­¢é€‰æ‹©ä¸ŽæŒ‡å®šç´¢å¼•å…³è”的项目。"
msgid "Sets text of the item associated with the specified index."
msgstr "设置与指定索引相关的项目的文本。"
+msgid "Sets item's text base writing direction."
+msgstr "设置项目文本的基础书写方å‘。"
+
msgid "Sets the tooltip hint for the item associated with the specified index."
msgstr "设置与指定索引相关的项目的工具æ示。"
@@ -15145,6 +30395,9 @@ msgid ""
"takes effect."
msgstr "在 [member fixed_icon_size] 和转置生效åŽåº”用的图标比例。"
+msgid "The number of items currently in the list."
+msgstr "当å‰åˆ—表中的项目数。"
+
msgid ""
"Maximum columns the list will have.\n"
"If greater than zero, the content will be split among the specified "
@@ -15227,6 +30480,9 @@ msgstr "项目èœå•ä¹‹é—´çš„åž‚ç›´é—´è·ã€‚"
msgid "[Font] of the item's text."
msgstr "项目文本的字体 [Font] 。"
+msgid "Font size of the item's text."
+msgstr "项目文本的字体大å°ã€‚"
+
msgid "[StyleBox] used for the cursor, when the [ItemList] is being focused."
msgstr "当该 [ItemList] 获得焦点时,用作光标的样å¼ç›’ [StyleBox]。"
@@ -15235,6 +30491,14 @@ msgid ""
msgstr "当该 [ItemList] 未获得焦点时,用作光标的样å¼ç›’ [StyleBox]。"
msgid ""
+"The focused style for the [ItemList], drawn on top of the background, but "
+"below everything else."
+msgstr "该 [ItemList]的焦点样å¼ï¼Œç»˜åˆ¶åœ¨èƒŒæ™¯ä¹‹ä¸Šï¼Œä½†ä½ŽäºŽå…¶ä»–东西。"
+
+msgid "The background style for the [ItemList]."
+msgstr "该 [ItemList] 的默认背景。"
+
+msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is not being "
"focused."
msgstr "所选项的样å¼ç›’ [StyleBox],当该 [ItemList] 未获得焦点时使用。"
@@ -15243,6 +30507,9 @@ msgid ""
"[StyleBox] for the selected items, used when the [ItemList] is being focused."
msgstr "所选项的样å¼ç›’ [StyleBox],当该 [ItemList] 获得焦点时使用。"
+msgid "Exporting for the Web: Calling JavaScript from script"
+msgstr "为 Web 导出:从脚本调用 JavaScript"
+
msgid ""
"Returns [code]true[/code] if a new version of the progressive web app is "
"waiting to be activated.\n"
@@ -15271,6 +30538,9 @@ msgstr ""
"在检测到该æ¸è¿›å¼ç½‘络应用程åºçš„更新,但因为存在活动的较早版本而等待激活时触"
"å‘。è¦å¼ºåˆ¶ç«‹å³æ‰§è¡Œæ›´æ–°ï¼Œè¯·å‚阅 [method pwa_update]。"
+msgid "A wrapper class for web native JavaScript objects."
+msgstr "Web 原生 JavaScript 对象的å°è£…类。"
+
msgid ""
"Singleton that connects the engine with Android plugins to interface with "
"native Android code."
@@ -15336,6 +30606,111 @@ msgid ""
msgstr ""
"用于定义哪个解算器在多个关节中被首先执行的优先级。数值越低,优先级越高。"
+msgid "Helper class for creating and parsing JSON data."
+msgstr "ç”¨äºŽåˆ›å»ºå’Œè§£æž JSON æ•°æ®çš„辅助类。"
+
+msgid ""
+"The [JSON] enables all data types to be converted to and from a JSON string. "
+"This useful for serializing data to save to a file or send over the "
+"network.\n"
+"[method stringify] is used to convert any data type into a JSON string.\n"
+"[method parse] is used to convert any existing JSON data into a [Variant] "
+"that can be used within Godot. If successfully parsed, use [member data] to "
+"retrieve the [Variant], and use [code]typeof[/code] to check if the "
+"Variant's type is what you expect. JSON Objects are converted into a "
+"[Dictionary], but JSON data can be used to store [Array]s, numbers, "
+"[String]s and even just a boolean.\n"
+"[b]Example[/b]\n"
+"[codeblock]\n"
+"var data_to_send = [\"a\", \"b\", \"c\"]\n"
+"var json_string = JSON.stringify(data_to_send)\n"
+"# Save data\n"
+"# ...\n"
+"# Retrieve data\n"
+"var error = json.parse(json_string)\n"
+"if error == OK:\n"
+" var data_received = json.data\n"
+" if typeof(data_received) == TYPE_ARRAY:\n"
+" print(data_received) # Prints array\n"
+" else:\n"
+" print(\"Unexpected data\")\n"
+"else:\n"
+" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", "
+"json_string, \" at line \", json.get_error_line())\n"
+"[/codeblock]\n"
+"Alternatively, you can parse string using the static [method parse_string] "
+"method, but it doesn't allow to handle errors.\n"
+"[codeblock]\n"
+"var data = JSON.parse_string(json_string) # Returns null if parsing failed.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] Both parse methods do not fully comply with the JSON "
+"specification:\n"
+"- Trailing commas in arrays or objects are ignored, instead of causing a "
+"parser error.\n"
+"- New line and tab characters are accepted in string literals, and are "
+"treated like their corresponding escape sequences [code]\\n[/code] and "
+"[code]\\t[/code].\n"
+"- Numbers are parsed using [method String.to_float] which is generally more "
+"lax than the JSON specification.\n"
+"- Certain errors, such as invalid Unicode sequences, do not cause a parser "
+"error. Instead, the string is cleansed and an error is logged to the console."
+msgstr ""
+"[JSON] å…许所有数æ®ç±»åž‹ä¸Ž JSON 字符串相互转æ¢ã€‚ 这对于åºåˆ—化数æ®ä»¥ä¿å­˜åˆ°æ–‡ä»¶"
+"或通过网络å‘é€å¾ˆæœ‰ç”¨ã€‚\n"
+"[method stringify] 用于将任何数æ®ç±»åž‹è½¬æ¢ä¸º JSON 字符串。\n"
+"[method parse] 用于将任何现有的 JSON æ•°æ®è½¬æ¢ä¸ºå¯ä»¥åœ¨ Godot 中使用的 "
+"[Variant]。如果解æžæˆåŠŸï¼Œä½¿ç”¨ [member data] 检索 [Variant],并使用 "
+"[code]typeof[/code] 检查 Variant 的类型是å¦ç¬¦åˆæ‚¨çš„预期。JSON 对象被转æ¢ä¸º "
+"[Dictionary],但 JSON æ•°æ®å¯ç”¨äºŽå­˜å‚¨ [Array]ã€æ•°å­—ã€[String],甚至åªæ˜¯ä¸€ä¸ªå¸ƒ"
+"尔值。\n"
+"[b]示例[/b]\n"
+"[codeblock]\n"
+"var data_to_send = [\"a\", \"b\", \"c\"]\n"
+"var json_string = JSON.stringify(data_to_send)\n"
+"# ä¿å­˜æ•°æ®\n"
+"# ...\n"
+"# 检索数æ®\n"
+"var error = json.parse(json_string)\n"
+"if error == OK:\n"
+" var data_received = json.data\n"
+" if typeof(data_received) == TYPE_ARRAY:\n"
+" print(data_received) # 输出 array\n"
+" else:\n"
+" print(\"Unexpected data\")\n"
+"else:\n"
+" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", "
+"json_string, \" at line \", json.get_error_line())\n"
+"[/codeblock]\n"
+"或者,您å¯ä»¥ä½¿ç”¨é™æ€ [method parse_string] 方法解æžå­—符串,但它ä¸å…许处ç†é”™"
+"误。\n"
+"[codeblock]\n"
+"var data = JSON.parse_string(json_string) # 如果解æžå¤±è´¥åˆ™è¿”回 null。\n"
+"[/codeblock]\n"
+"[b]注æ„:[/b]两ç§è§£æžæ–¹å¼éƒ½ä¸å®Œå…¨ç¬¦åˆ JSON 规范:\n"
+"- 数组或对象中的尾éšé€—å·å°†è¢«å¿½ç•¥ï¼Œè€Œä¸æ˜¯å¼•èµ·è§£æžå™¨é”™è¯¯ã€‚\n"
+"- æ¢è¡Œç¬¦å’Œåˆ¶è¡¨ç¬¦åœ¨å­—符串文字中被接å—,并被视为它们相应的转义åºåˆ— [code]\\n[/"
+"code] 和 [code]\\t[/code]。\n"
+"- 使用 [method String.to_float] 解æžæ•°å­—,这通常比 JSON 规范更宽æ¾ã€‚\n"
+"- æŸäº›é”™è¯¯ï¼Œä¾‹å¦‚无效的 Unicode åºåˆ—,ä¸ä¼šå¯¼è‡´è§£æžå™¨é”™è¯¯ã€‚相å,该字符串会被清"
+"ç†å¹¶å°†é”™è¯¯è®°å½•åˆ°æŽ§åˆ¶å°ã€‚"
+
+msgid ""
+"Returns [code]0[/code] if the last call to [method parse] was successful, or "
+"the line number where the parse failed."
+msgstr ""
+"如果上一次调用 [method parse] æˆåŠŸï¼Œåˆ™è¿”回 [code]0[/code],å¦åˆ™è¿”回解æžå¤±è´¥çš„"
+"è¡Œå·ã€‚"
+
+msgid ""
+"Returns an empty string if the last call to [method parse] was successful, "
+"or the error message if it failed."
+msgstr ""
+"如果上一次调用 [method parse] æˆåŠŸï¼Œåˆ™è¿”回空字符串,å¦åˆ™è¿”回失败时的错误消"
+"æ¯ã€‚"
+
+msgid "Contains the parsed JSON data in [Variant] form."
+msgstr "包å«è§£æžåˆ°çš„ JSON æ•°æ®ï¼Œç±»åž‹ä¸º [Variant]。"
+
msgid "A helper to handle dictionaries which look like JSONRPC documents."
msgstr "用于处ç†çœ‹èµ·æ¥åƒ JSONRPC 文档的字典的辅助类。"
@@ -15357,6 +30732,24 @@ msgid ""
"JSONRPC subclass."
msgstr "请求了方法调用,但 JSONRPC å­ç±»ä¸­ä¸å­˜åœ¨è¯¥å称的函数。"
+msgid "Collision data for [method PhysicsBody2D.move_and_collide] collisions."
+msgstr "[method PhysicsBody2D.move_and_collide] 碰撞的碰撞数æ®ã€‚"
+
+msgid "Returns the colliding body's attached [Object]."
+msgstr "返回该碰撞物体所附加的 [Object]。"
+
+msgid "Returns the colliding body's shape."
+msgstr "返回该碰撞物体的形状。"
+
+msgid "Returns the colliding body's shape index. See [CollisionObject2D]."
+msgstr "è¿”å›žè¯¥ç¢°æ’žç‰©ä½“å½¢çŠ¶çš„ç´¢å¼•ã€‚è§ [CollisionObject2D]。"
+
+msgid "Returns the colliding body's velocity."
+msgstr "返回该碰撞物体的速度。"
+
+msgid "Returns the point of collision in global coordinates."
+msgstr "返回碰撞点,使用全局å标。"
+
msgid ""
"Displays plain text in a line or wrapped inside a rectangle. For formatted "
"text, use [RichTextLabel]."
@@ -15364,6 +30757,9 @@ msgstr ""
"在一行中显示纯文本,或在一个矩形内包裹。对于格å¼åŒ–的文本,使用 "
"[RichTextLabel]。"
+msgid "Returns the number of lines of text the Label has."
+msgstr "返回该 Label 的文本行数。"
+
msgid ""
"Returns the total number of printable characters in the text (excluding "
"spaces and newlines)."
@@ -15389,6 +30785,12 @@ msgstr "该节点在开始显示文本之å‰ä¼šå¿½ç•¥å‰ [code]lines_skipped[/co
msgid "Limits the lines of text the node shows on screen."
msgstr "é™åˆ¶èŠ‚点在å±å¹•ä¸Šæ˜¾ç¤ºçš„文本行数。"
+msgid "Set BiDi algorithm override for the structured text."
+msgstr "为结构化文本设置 BiDi 算法覆盖。"
+
+msgid "Set additional options for BiDi override."
+msgstr "设置 BiDi 覆盖的附加选项。"
+
msgid "The text to display on screen."
msgstr "è¦åœ¨å±å¹•ä¸Šæ˜¾ç¤ºçš„文本。"
@@ -15398,11 +30800,14 @@ msgstr "如果为 [code]true[/code],所有文本都将显示为大写。"
msgid "Default text [Color] of the [Label]."
msgstr "[Label] 标签的默认文本颜色 [Color]。"
+msgid "The color of text outline."
+msgstr "文本轮廓的颜色。"
+
msgid "[Color] of the text's shadow effect."
msgstr "文本阴影效果的颜色 [Color]。"
msgid "Vertical space between lines in multiline [Label]."
-msgstr "多行 [Label] 中å„行之间的垂直空间。"
+msgstr "多行 [Label] 中,行与行之间的垂直间è·ã€‚"
msgid "The horizontal offset of the text's shadow."
msgstr "文本阴影的水平å移。"
@@ -15410,9 +30815,15 @@ msgstr "文本阴影的水平å移。"
msgid "The vertical offset of the text's shadow."
msgstr "文本阴影的垂直å移。"
+msgid "The size of the shadow outline."
+msgstr "阴影轮廓的大å°ã€‚"
+
msgid "[Font] used for the [Label]'s text."
msgstr "用于标签 [Label] 文本的字体 [Font]。"
+msgid "Font size of the [Label]'s text."
+msgstr "该 [Label] 文本的字体大å°ã€‚"
+
msgid "Background [StyleBox] for the [Label]."
msgstr "为 [Label] 设置背景样å¼ç›’ [StyleBox]。"
@@ -15439,6 +30850,12 @@ msgstr ""
"DrawFlags]。"
msgid ""
+"The type of alpha antialiasing to apply. See [enum BaseMaterial3D."
+"AlphaAntiAliasing]."
+msgstr ""
+"è¦åº”用的 Alpha æŠ—é”¯é½¿ç±»åž‹ã€‚è§ [enum BaseMaterial3D.AlphaAntiAliasing]。"
+
+msgid ""
"The alpha cutting mode to use for the sprite. See [enum AlphaCutMode] for "
"possible values."
msgstr "该精çµçš„ Alpha è£å‰ªæ¨¡å¼ã€‚å¯èƒ½çš„å–å€¼è§ [enum AlphaCutMode]。"
@@ -15458,8 +30875,11 @@ msgid ""
"distance."
msgstr "如果为 [code]true[/code],则无论è·ç¦»è¿œè¿‘,标签都以相åŒçš„尺寸呈现。"
+msgid "Font configuration used to display text."
+msgstr "用于显示文本的字体é…置。"
+
msgid "Vertical space between lines in multiline [Label3D]."
-msgstr "多行 [Label3D] 中å„行之间的垂直空间。"
+msgstr "多行 [Label3D] 中,行与行之间的垂直间è·ã€‚"
msgid "Text [Color] of the [Label3D]."
msgstr "该 [Label3D] 的文本颜色 [Color]。"
@@ -15483,6 +30903,9 @@ msgstr ""
"[b]注æ„:[/b]仅适用于é€æ˜Žç‰©ä½“的排åºã€‚è¿™ä¸ä¼šå½±å“é€æ˜Žç‰©ä½“相对于ä¸é€æ˜Žç‰©ä½“的排åº"
"æ–¹å¼ã€‚这是因为ä¸é€æ˜Žå¯¹è±¡ä¸è¢«æŽ’åºï¼Œè€Œé€æ˜Žå¯¹è±¡åˆ™ä»ŽåŽå¾€å‰æŽ’åºï¼ˆå–决于优先级)。"
+msgid "Text outline size."
+msgstr "文本轮廓大å°ã€‚"
+
msgid ""
"Sets the render priority for the text. Higher priority objects will be "
"sorted in front of lower priority objects.\n"
@@ -15522,7 +30945,7 @@ msgid ""
msgstr "标签会根æ®æ·±åº¦è¿›è¡Œç¼©æ”¾ï¼Œä»Žè€Œåœ¨å±å¹•ä¸Šå§‹ç»ˆä»¥ç›¸åŒçš„大å°æ˜¾ç¤ºã€‚"
msgid "Represents the size of the [enum DrawFlags] enum."
-msgstr "代表[enum DrawFlags]枚举的大å°ã€‚"
+msgstr "代表 [enum DrawFlags] 枚举的大å°ã€‚"
msgid ""
"This mode draws fully opaque pixels in the depth prepass. This is slower "
@@ -15539,8 +30962,48 @@ msgstr ""
"[b]注æ„:[/b]文本中存在é‡å çš„字形时(例如手写体),这个模å¼å¯èƒ½ä¼šé€ æˆä¸»æ–‡æœ¬å’Œ"
"轮廓的é€æ˜Žåº¦æŽ’åºé—®é¢˜ã€‚"
+msgid "Collection of common settings to customize label text."
+msgstr "用于自定义标签文本的常è§è®¾ç½®åˆé›†ã€‚"
+
+msgid "[Font] used for the text."
+msgstr "文本使用的字体。"
+
+msgid "Color of the text."
+msgstr "文本的颜色。"
+
+msgid "Size of the text."
+msgstr "文本的大å°ã€‚"
+
+msgid "Vertical space between lines when the text is multiline."
+msgstr "文本为多行时,行与行之间的垂直间è·ã€‚"
+
+msgid "The color of the outline."
+msgstr "轮廓的颜色。"
+
+msgid ""
+"Color of the shadow effect. If alpha is [code]0[/code], no shadow will be "
+"drawn."
+msgstr "阴影效果的颜色。如果 Alpha 为 [code]0[/code] ,则ä¸ä¼šç»˜åˆ¶é˜´å½±ã€‚"
+
+msgid "Offset of the shadow effect, in pixels."
+msgstr "阴影效果的å移,å•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Size of the shadow effect."
+msgstr "阴影效果的大å°ã€‚"
+
msgid "Casts light in a 2D environment."
-msgstr "在2D环境中投射光线。"
+msgstr "在 2D 环境中投射光线。"
+
+msgid ""
+"Casts light in a 2D environment. A light is defined as a color, an energy "
+"value, a mode (see constants), and various other parameters (range and "
+"shadows-related)."
+msgstr ""
+"在 2D 环境中投射光线。光线由颜色ã€èƒ½é‡å€¼ã€æ¨¡å¼ï¼ˆè§å¸¸é‡ï¼‰ä»¥åŠå…¶ä»–å„ç§å‚数(与"
+"范围和阴影有关)æ¥å®šä¹‰ã€‚"
+
+msgid "The Light2D's blend mode. See [enum BlendMode] constants for values."
+msgstr "该 Light2D çš„æ··åˆæ¨¡å¼ã€‚å–å€¼è§ [enum BlendMode] 常é‡ã€‚"
msgid "The Light2D's [Color]."
msgstr "该 Light2D 的颜色 [Color]。"
@@ -15555,11 +31018,6 @@ msgid ""
"The Light2D's energy value. The larger the value, the stronger the light."
msgstr "Light2D 的能é‡å€¼ã€‚该值越大,光线就越强。"
-msgid ""
-"The layer mask. Only objects with a matching mask will be affected by the "
-"Light2D."
-msgstr "图层é®ç½©ã€‚åªæœ‰å…·æœ‰åŒ¹é…é®ç½©çš„对象æ‰ä¼šå—到Light2Dçš„å½±å“。"
-
msgid "Maximum layer value of objects that are affected by the Light2D."
msgstr "å— Light2D å½±å“的对象的最大层数值。"
@@ -15584,11 +31042,18 @@ msgid "Shadow filter type. See [enum ShadowFilter] for possible values."
msgstr "阴影过滤器类型。å¯èƒ½çš„å–å€¼è§ [enum ShadowFilter]。"
msgid ""
-"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders "
-"with a matching light mask will cast shadows."
+"No filter applies to the shadow map. This provides hard shadow edges and is "
+"the fastest to render. See [member shadow_filter]."
+msgstr ""
+"ä¸å¯¹é˜´å½±è´´å›¾åº”用过滤。æä¾›è¾ƒç¡¬çš„é˜´å½±è¾¹ç¼˜ï¼Œæ¸²æŸ“é€Ÿåº¦æœ€å¿«ã€‚è§ [member "
+"shadow_filter]。"
+
+msgid ""
+"Percentage closer filtering (5 samples) applies to the shadow map. This is "
+"slower compared to hard shadow rendering. See [member shadow_filter]."
msgstr ""
-"阴影é®ç½©ã€‚与 [LightOccluder2D] 一起使用æ¥æŠ•å°„阴影。åªæœ‰å…·æœ‰åŒ¹é…的光线é®ç½©çš„é®"
-"挡物æ‰ä¼šæŠ•å°„阴影。"
+"对阴影贴图使用百分比接近过滤(5 ä¸ªæ ·æœ¬ï¼‰ã€‚ä¸Žç¡¬é˜´å½±æ¸²æŸ“ç›¸æ¯”è¾ƒæ…¢ã€‚è§ [member "
+"shadow_filter]。"
msgid ""
"Adds the value of pixels corresponding to the Light2D to the values of "
@@ -15608,8 +31073,23 @@ msgstr "通过线性æ’值将 Light2D 对应的åƒç´ å€¼ä¸Žå…¶ä¸‹æ–¹çš„åƒç´ å€¼
msgid "Provides a base class for different kinds of light nodes."
msgstr "为ä¸åŒç±»åž‹çš„光节点æ供基类。"
+msgid ""
+"Light3D is the [i]abstract[/i] base class for light nodes. As it can't be "
+"instantiated, it shouldn't be used directly. Other types of light nodes "
+"inherit from it. Light3D contains the common variables and parameters used "
+"for lighting."
+msgstr ""
+"Light3D 是ç¯å…‰èŠ‚点的[i]抽象[/i]基类。由于无法实例化,所以ä¸åº”直接使用。其他类"
+"åž‹çš„ç¯å…‰èŠ‚点继承自它。Light3D 包å«ç”¨äºŽç…§æ˜Žçš„常è§å˜é‡å’Œå‚数。"
+
msgid "3D lights and shadows"
-msgstr "3D ç¯å…‰å’Œé˜´å½±"
+msgstr "3D ç¯å…‰ä¸Žé˜´å½±"
+
+msgid "Returns the value of the specified [enum Light3D.Param] parameter."
+msgstr "返回指定的 [enum Light3D.Param] å‚数的值。"
+
+msgid "Sets the value of the specified [enum Light3D.Param] parameter."
+msgstr "设置指定的 [enum Light3D.Param] å‚数的值。"
msgid ""
"If [code]true[/code], the light only appears in the editor and will not be "
@@ -15655,15 +31135,181 @@ msgstr "用于访问 [member light_energy] 的常é‡ã€‚"
msgid "Constant for accessing [member light_indirect_energy]."
msgstr "用于访问 [member light_indirect_energy] 的常é‡ã€‚"
+msgid "Constant for accessing [member light_volumetric_fog_energy]."
+msgstr "用于访问 [member light_volumetric_fog_energy] 的常é‡ã€‚"
+
msgid "Constant for accessing [member light_specular]."
msgstr "用于访问 [member light_specular] 的常é‡ã€‚"
+msgid ""
+"Constant for accessing [member OmniLight3D.omni_range] or [member "
+"SpotLight3D.spot_range]."
+msgstr ""
+"用于访问 [member OmniLight3D.omni_range] 或 [member SpotLight3D.spot_range] "
+"的常é‡ã€‚"
+
msgid "Constant for accessing [member light_size]."
msgstr "用于访问 [member light_size] 的常é‡ã€‚"
+msgid ""
+"Constant for accessing [member OmniLight3D.omni_attenuation] or [member "
+"SpotLight3D.spot_attenuation]."
+msgstr ""
+"用于访问 [member OmniLight3D.omni_attenuation] 或 [member SpotLight3D."
+"spot_attenuation] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member SpotLight3D.spot_angle]."
+msgstr "用于访问 [member SpotLight3D.spot_angle] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member SpotLight3D.spot_angle_attenuation]."
+msgstr "用于访问 [member SpotLight3D.spot_angle_attenuation] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_max_distance]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_max_distance] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_split_1]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_split_1] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_split_2]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_split_2] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_split_3]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_split_3] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_fade_start]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_fade_start] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member shadow_normal_bias]."
+msgstr "用于访问 [member shadow_normal_bias] 的常é‡ã€‚"
+
msgid "Constant for accessing [member shadow_bias]."
msgstr "用于访问 [member shadow_bias] 的常é‡ã€‚"
+msgid ""
+"Constant for accessing [member DirectionalLight3D."
+"directional_shadow_pancake_size]."
+msgstr ""
+"用于访问 [member DirectionalLight3D.directional_shadow_pancake_size] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member shadow_opacity]."
+msgstr "用于访问 [member shadow_opacity] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member shadow_blur]."
+msgstr "用于访问 [member shadow_blur] 的常é‡ã€‚"
+
+msgid "Constant for accessing [member shadow_transmittance_bias]."
+msgstr "用于访问 [member shadow_transmittance_bias] 的常é‡ã€‚"
+
+msgid ""
+"Constant for accessing [member light_intensity_lumens] and [member "
+"light_intensity_lux]. Only used when [member ProjectSettings.rendering/"
+"lights_and_shadows/use_physical_light_units] is [code]true[/code]."
+msgstr ""
+"用于访问 [member light_intensity_lumens] 和 [member light_intensity_lux] 的常"
+"é‡ã€‚åªåœ¨ [member ProjectSettings.rendering/lights_and_shadows/"
+"use_physical_light_units] 为 [code]true[/code] 时使用。"
+
+msgid ""
+"The color to use for environment lighting. Only effective if [member "
+"environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]."
+msgstr ""
+"用于环境照明的颜色。仅在 [member environment_mode] 为 [constant "
+"ENVIRONMENT_MODE_CUSTOM_COLOR] 时有效。"
+
+msgid ""
+"The color multiplier to use for environment lighting. Only effective if "
+"[member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR]."
+msgstr ""
+"用于环境照明的颜色å€æ•°ã€‚仅在 [member environment_mode] 为 [constant "
+"ENVIRONMENT_MODE_CUSTOM_COLOR] 时有效。"
+
+msgid ""
+"The sky to use as a source of environment lighting. Only effective if "
+"[member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY]."
+msgstr ""
+"用作环境照明光æºçš„天空。仅在 [member environment_mode] 为 [constant "
+"ENVIRONMENT_MODE_CUSTOM_SKY] 时有效。"
+
+msgid "The environment mode to use when baking lightmaps."
+msgstr "烘焙光照贴图时使用的环境模å¼ã€‚"
+
+msgid ""
+"If [code]true[/code], ignore environment lighting when baking lightmaps."
+msgstr "如果为 [code]true[/code],则会在烘焙光照贴图时忽略环境光照。"
+
+msgid "Lowest level of subdivision (fastest bake times, smallest file sizes)."
+msgstr "最低级别的细分(烘焙时间最快,文件大å°æœ€å°ï¼‰ã€‚"
+
+msgid "Low level of subdivision (fast bake times, small file sizes)."
+msgstr "较低级别的细分(烘焙时间较快,文件大å°è¾ƒå°ï¼‰ã€‚"
+
+msgid "High level of subdivision (slow bake times, large file sizes)."
+msgstr "较高级别的细分(烘焙时间较慢,文件大å°è¾ƒå¤§ï¼‰ã€‚"
+
+msgid "Highest level of subdivision (slowest bake times, largest file sizes)."
+msgstr "最高级别的细分(烘焙时间最慢,文件大å°æœ€å¤§ï¼‰ã€‚"
+
+msgid "Lightmap baking was successful."
+msgstr "光照贴图烘焙æˆåŠŸã€‚"
+
+msgid ""
+"Lightmap baking failed because the root node for the edited scene could not "
+"be accessed."
+msgstr "光照贴图烘焙失败,原因是无法访问所编辑场景的根节点。"
+
+msgid ""
+"Lightmap baking failed as the lightmap data resource is embedded in a "
+"foreign resource."
+msgstr "光照贴图烘焙失败,原因是光照贴图数æ®åµŒå…¥åœ¨å¤–部资æºä¹‹ä¸­ã€‚"
+
+msgid ""
+"Lightmap baking failed as there is no lightmapper available in this Godot "
+"build."
+msgstr "光照贴图烘焙失败,原因是这个 Godot 构建中没有å¯ç”¨çš„光照贴图器。"
+
+msgid ""
+"Lightmap baking failed as the [LightmapGIData] save path isn't configured in "
+"the resource."
+msgstr "光照贴图烘焙失败,原因是资æºä¸­æ²¡æœ‰é…ç½® [LightmapGIData] ä¿å­˜è·¯å¾„。"
+
+msgid ""
+"Lightmap baking failed as the resulting image couldn't be saved or imported "
+"by Godot after it was saved."
+msgstr ""
+"光照贴图烘焙失败,原因是最终的图åƒæ— æ³•ä¿å­˜ï¼Œæˆ–ä¿å­˜åŽæ— æ³•è¢« Godot 导入。"
+
+msgid "Ignore environment lighting when baking lightmaps."
+msgstr "烘焙光照贴图时忽略环境光照。"
+
+msgid ""
+"Use [member environment_custom_sky] as a source of environment lighting when "
+"baking lightmaps."
+msgstr ""
+"烘焙光照贴图时,使用 [member environment_custom_sky] 作为环境光照æ¥æºã€‚"
+
+msgid ""
+"Use [member environment_custom_color] multiplied by [member "
+"environment_custom_energy] as a constant source of environment lighting when "
+"baking lightmaps."
+msgstr ""
+"烘焙光照贴图时,使用 [member environment_custom_color] 和 [member "
+"environment_custom_energy] 相乘的结果作为环境光照的æ’定æ¥æºã€‚"
+
msgid "Occludes light cast by a Light2D, casting shadows."
msgstr "é®æŒ¡ç”± Light2D 投射的光线,投射阴影。"
@@ -15799,6 +31445,9 @@ msgstr "执行 [enum MenuItems] 枚举中定义的给定æ“作。"
msgid "Selects the whole [String]."
msgstr "选中整个 [String]。"
+msgid "If [code]true[/code], the caret (text cursor) blinks."
+msgstr "如果为 [code]true[/code],则æ’入符å·ï¼ˆæ–‡æœ¬å…‰æ ‡ï¼‰ä¼šé—ªçƒã€‚"
+
msgid "Duration (in seconds) of a caret's blinking cycle."
msgstr "æ’入符å·é—ªçƒå‘¨æœŸçš„æŒç»­æ—¶é—´ï¼ˆç§’)。"
@@ -15817,6 +31466,9 @@ msgid ""
"lost."
msgstr "如果为 [code]true[/code],则在丢失焦点时会å–消选中文本。"
+msgid "If [code]true[/code], control characters are displayed."
+msgstr "如果为 [code]true[/code],则会显示控制字符。"
+
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
@@ -15830,6 +31482,9 @@ msgstr ""
"如果为 [code]true[/code],则 [LineEdit] 宽度将增加到比 [member text] 长。如"
"æžœ [member text] 被缩短,它将[b]ä¸[/b]压缩。"
+msgid "If [code]true[/code], the [LineEdit] don't display decoration."
+msgstr "如果为 [code]true[/code],则 [LineEdit] ä¸æ˜¾ç¤ºè£…饰。"
+
msgid ""
"If [code]false[/code], using middle mouse button to paste clipboard will be "
"disabled.\n"
@@ -15882,6 +31537,9 @@ msgid ""
msgstr ""
"如果为 [code]true[/code],则在获得焦点时会在支æŒçš„å¹³å°ä¸Šæ˜¾ç¤ºåŽŸç”Ÿè™šæ‹Ÿé”®ç›˜ã€‚"
+msgid "Specifies the type of virtual keyboard to show."
+msgstr "指定è¦æ˜¾ç¤ºçš„虚拟键盘的类型。"
+
msgid ""
"Emitted when appending text that overflows the [member max_length]. The "
"appended text is truncated to fit [member max_length], and the part that "
@@ -15915,8 +31573,77 @@ msgstr "撤销之å‰çš„æ“作。"
msgid "Reverse the last undo action."
msgstr "å转最åŽä¸€ä¸ªæ’¤é”€åŠ¨ä½œã€‚"
+msgid "ID of \"Text Writing Direction\" submenu."
+msgstr "“文本书写方å‘â€å­èœå•çš„ ID。"
+
+msgid "Sets text direction to inherited."
+msgstr "将文本方å‘设置为继承。"
+
+msgid "Sets text direction to automatic."
+msgstr "将文本方å‘设置为自动。"
+
+msgid "Sets text direction to left-to-right."
+msgstr "将文本方å‘设置为从左至å³ã€‚"
+
+msgid "Sets text direction to right-to-left."
+msgstr "将文本方å‘设置为从å³è‡³å·¦ã€‚"
+
+msgid "Toggles control character display."
+msgstr "切æ¢æŽ§åˆ¶å­—符的显示。"
+
+msgid "ID of \"Insert Control Character\" submenu."
+msgstr "“æ’入控制字符â€å­èœå•çš„ ID。"
+
+msgid "Inserts left-to-right mark (LRM) character."
+msgstr "æ’入从左至å³æ ‡å¿—(LRM)字符。"
+
+msgid "Inserts right-to-left mark (RLM) character."
+msgstr "æ’入从å³è‡³å·¦æ ‡å¿—(LRM)字符。"
+
+msgid "Inserts start of left-to-right embedding (LRE) character."
+msgstr "æ’入开始从左至å³åµŒå…¥ï¼ˆLRE)字符。"
+
+msgid "Inserts start of right-to-left embedding (RLE) character."
+msgstr "æ’入开始从å³è‡³å·¦åµŒå…¥ï¼ˆRLE)字符。"
+
+msgid "Inserts start of left-to-right override (LRO) character."
+msgstr "æ’入开始从左至å³å¼ºåˆ¶ï¼ˆLRO)字符。"
+
+msgid "Inserts start of right-to-left override (RLO) character."
+msgstr "æ’入开始从å³è‡³å·¦åµŒå…¥ï¼ˆRLE)字符。"
+
+msgid "Inserts pop direction formatting (PDF) character."
+msgstr "æ’入退出方å‘æ ¼å¼åŒ–(PDF)字符。"
+
+msgid "Inserts Arabic letter mark (ALM) character."
+msgstr "æ’入阿拉伯字æ¯æ ‡è®°ï¼ˆALM)字符。"
+
+msgid "Inserts left-to-right isolate (LRI) character."
+msgstr "æ’入从左至å³éš”离(LRI)字符。"
+
+msgid "Inserts right-to-left isolate (RLI) character."
+msgstr "æ’入从å³è‡³å·¦éš”离(RLI)字符。"
+
+msgid "Inserts first strong isolate (FSI) character."
+msgstr "æ’入第一个强隔离(FSI)字符。"
+
+msgid "Inserts pop direction isolate (PDI) character."
+msgstr "æ’入退出方å‘隔离(PDI)字符。"
+
+msgid "Inserts zero width joiner (ZWJ) character."
+msgstr "æ’入零宽连接符(ZWJ)字符。"
+
+msgid "Inserts zero width non-joiner (ZWNJ) character."
+msgstr "æ’入零宽éžè¿žæŽ¥ç¬¦ï¼ˆZWNJ)字符。"
+
+msgid "Inserts word joiner (WJ) character."
+msgstr "æ’入文字连接符(WJ)字符。"
+
+msgid "Inserts soft hyphen (SHY) character."
+msgstr "æ’入软连字符(SHY)字符。"
+
msgid "Represents the size of the [enum MenuItems] enum."
-msgstr "表示 [enum MenuItems] 枚举的大å°ã€‚"
+msgstr "代表 [enum MenuItems] 枚举的大å°ã€‚"
msgid "Color used as default tint for the clear button."
msgstr "用作清除按钮默认色调的颜色。"
@@ -15927,6 +31654,9 @@ msgstr "按下清除按钮时使用的颜色。"
msgid "Default font color."
msgstr "默认字体颜色。"
+msgid "Font color for [member placeholder_text]."
+msgstr "[member placeholder_text] 的字体颜色。"
+
msgid "Font color for selected text (inside the selection rectangle)."
msgstr "选定文本的字体颜色(在选择矩形内)。"
@@ -15939,17 +31669,36 @@ msgstr "选择矩形的颜色。"
msgid "Font used for the text."
msgstr "文本使用的字体。"
+msgid "Font size of the [LineEdit]'s text."
+msgstr "该 [LineEdit] 文本的字体大å°ã€‚"
+
msgid "Texture for the clear button. See [member clear_button_enabled]."
msgstr "“清除â€æŒ‰é’®çš„纹ç†ã€‚è§ [member clear_button_enabled]。"
+msgid ""
+"Background used when [LineEdit] has GUI focus. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"该 [LineEdit] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„背景。[code]focus[/code] [StyleBox] 显示在"
+"基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ [StyleBox],确ä¿åŸºç¡€ "
+"[StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥å¾ˆå¥½åœ°å®žçŽ°è¿™ä¸ªç›®çš„。è¦"
+"ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注æ„,ç¦ç”¨èšç„¦çš„视觉效果会"
+"å½±å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
+
msgid "Default background for the [LineEdit]."
-msgstr "[LineEdit] 的默认背景。"
+msgstr "该 [LineEdit] 的默认背景。"
msgid ""
"Background used when [LineEdit] is in read-only mode ([member editable] is "
"set to [code]false[/code])."
msgstr ""
-"[LineEdit] 处于åªè¯»æ¨¡å¼æ—¶ä½¿ç”¨çš„背景([member editable] 设置为 [code]false[/"
+"该 [LineEdit] 处于åªè¯»æ¨¡å¼æ—¶ä½¿ç”¨çš„背景([member editable] 为 [code]false[/"
"code])。"
msgid "Simple button used to represent a link to some resource."
@@ -15996,7 +31745,27 @@ msgid "The vertical space between the baseline of text and the underline."
msgstr "文本基线和下划线之间的垂直空间。"
msgid "[Font] of the [LinkButton]'s text."
-msgstr "[LinkButton] 文本的字体 [Font]。"
+msgstr "该 [LinkButton] 文本的字体 [Font]。"
+
+msgid "Font size of the [LinkButton]'s text."
+msgstr "该 [LinkButton] 文本的字体大å°ã€‚"
+
+msgid ""
+"[StyleBox] used when the [LinkButton] is focused. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"该 [LinkButton] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] "
+"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid "Abstract base class for the game's main loop."
msgstr "游æˆä¸»å¾ªçŽ¯çš„抽象基类。"
@@ -16053,6 +31822,23 @@ msgstr ""
"çš„å˜åŒ–)。\n"
"ä»…é™ macOS å¹³å°ã€‚"
+msgid ""
+"Notification received from the OS when the application is resumed.\n"
+"Specific to the Android platform."
+msgstr ""
+"当应用程åºæ¢å¤æ—¶ï¼Œä»Žæ“作系统收到的通知。\n"
+"ä»…é™ Android å¹³å°ã€‚"
+
+msgid ""
+"Notification received from the OS when the application is paused.\n"
+"Specific to the Android platform."
+msgstr ""
+"当应用程åºæš‚åœæ—¶ï¼Œä»Žæ“作系统收到的通知。\n"
+"ä»…é™ Android å¹³å°ã€‚"
+
+msgid "Notification received when text server is changed."
+msgstr "文本æœåŠ¡å™¨è¢«æ›´æ”¹æ—¶ï¼Œæ”¶åˆ°çš„通知。"
+
msgid "Simple margin container."
msgstr "简å•çš„è¾¹è·å®¹å™¨ã€‚"
@@ -16085,26 +31871,45 @@ msgstr ""
"è·ã€‚"
msgid "Generic 2D position hint for editing."
-msgstr "用于编辑的通用 2D ä½ç½®æ示。"
+msgstr "通用 2D ä½ç½®æ示,用于编辑。"
msgid ""
"Generic 2D position hint for editing. It's just like a plain [Node2D], but "
"it displays as a cross in the 2D editor at all times. You can set cross' "
"visual size by using the gizmo in the 2D editor while the node is selected."
msgstr ""
-"用于编辑的通用 2D ä½ç½®æ示。它就åƒä¸€ä¸ªæ™®é€šçš„ [Node2D],但它在 2D 编辑器中始终"
-"显示为一个å字。选中节点时,å¯ä»¥ä½¿ç”¨ 2D 编辑器中的å°å·¥å…·æ¥è®¾ç½®å字的视觉大"
+"用于编辑的通用 2D ä½ç½®æ示。类似于普通的 [Node2D],但它始终在 2D 编辑器中显示"
+"å字。该节点处于选中状æ€æ—¶ï¼Œå¯ä»¥ä½¿ç”¨ 2D 编辑器中的å°å·¥å…·æ¥è®¾ç½®å字的视觉大"
"å°ã€‚"
+msgid "Size of the gizmo cross that appears in the editor."
+msgstr "出现在编辑器中的å°å·¥å…·å字的大å°ã€‚"
+
msgid "Generic 3D position hint for editing."
-msgstr "用于编辑的通用 3D ä½ç½®æ示。"
+msgstr "通用 3D ä½ç½®æ示,用于编辑。"
+
+msgid ""
+"Generic 3D position hint for editing. It's just like a plain [Node3D], but "
+"it displays as a cross in the 3D editor at all times."
+msgstr ""
+"用于编辑的通用 3D ä½ç½®æ示。类似于普通的 [Node3D],但它始终在 3D 编辑器中显示"
+"å字。"
msgid "Provides data transformation and encoding utility functions."
msgstr "æ供进行数æ®è½¬æ¢å’Œç¼–ç çš„实用函数。"
+msgid "Returns a Base64-encoded string of a given [PackedByteArray]."
+msgstr "返回将给定 [PackedByteArray] 按照 Base64 ç¼–ç çš„字符串。"
+
+msgid "Returns a Base64-encoded string of the UTF-8 string [param utf8_str]."
+msgstr "返回将给定 UTF-8 字符串 [param utf8_str] 按照 Base64 ç¼–ç çš„字符串。"
+
msgid "Abstract base [Resource] for coloring and shading geometry."
msgstr "用于为几何体上色(Coloring)和ç€è‰²ï¼ˆShading)的 [Resource] 抽象基类。"
+msgid "Creates a placeholder version of this resource ([PlaceholderMaterial])."
+msgstr "创建该资æºçš„å ä½ç¬¦ç‰ˆæœ¬ï¼ˆ[PlaceholderMaterial])。"
+
msgid "Maximum value for the [member render_priority] parameter."
msgstr "[member render_priority] å‚数的最大值。"
@@ -16112,10 +31917,120 @@ msgid "Minimum value for the [member render_priority] parameter."
msgstr "[member render_priority] å‚数的最å°å€¼ã€‚"
msgid ""
+"A horizontal menu bar, which displays [PopupMenu]s or system global menu."
+msgstr "æ°´å¹³èœå•æ ï¼Œæ˜¾ç¤º [PopupMenu] 或系统全局èœå•ã€‚"
+
+msgid "Returns number of menu items."
+msgstr "返回èœå•é¡¹çš„æ•°é‡ã€‚"
+
+msgid "Returns [PopupMenu] associated with menu item."
+msgstr "返回与èœå•é¡¹å…³è”çš„ [PopupMenu]。"
+
+msgid "Returns menu item title."
+msgstr "返回èœå•é¡¹çš„标题。"
+
+msgid "Returns menu item tooltip."
+msgstr "返回èœå•é¡¹çš„工具æ示。"
+
+msgid "Returns [code]true[/code], if menu item is disabled."
+msgstr "如果èœå•é¡¹ä¸ºç¦ç”¨çŠ¶æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code], if menu item is hidden."
+msgstr "如果èœå•é¡¹ä¸ºéšè—状æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code], if system global menu is supported and used by "
+"this [MenuBar]."
+msgstr ""
+"如果支æŒç³»ç»Ÿå…¨å±€èœå•ï¼Œè€Œä¸”该 [MenuBar] 使用全局èœå•ï¼Œåˆ™è¿”回 [code]true[/"
+"code]。"
+
+msgid ""
"If [code]true[/code], shortcuts are disabled and cannot be used to trigger "
"the button."
msgstr "如果为 [code]true[/code],快æ·æ–¹å¼å°†è¢«ç¦ç”¨ï¼Œæ— æ³•ç”¨äºŽè§¦å‘按钮。"
+msgid "If [code]true[/code], menu item is disabled."
+msgstr "为 [code]true[/code] 时,èœå•é¡¹ä¸ºç¦ç”¨çŠ¶æ€ã€‚"
+
+msgid "If [code]true[/code], menu item is hidden."
+msgstr "为 [code]true[/code] 时,èœå•é¡¹ä¸ºéšè—状æ€ã€‚"
+
+msgid "Sets menu item title."
+msgstr "设置èœå•é¡¹çš„标题。"
+
+msgid "Sets menu item tooltip."
+msgstr "设置èœå•é¡¹çš„工具æ示。"
+
+msgid "Flat [MenuBar] don't display item decoration."
+msgstr "æ‰å¹³çš„ [MenuBar],ä¸æ˜¾ç¤ºé¡¹ç›®è£…饰。"
+
+msgid ""
+"If [code]true[/code], [MenuBar] will use system global menu when supported."
+msgstr ""
+"如果为 [code]true[/code],则 [MenuBar] 会在支æŒç³»ç»Ÿå…¨å±€èœå•æ—¶ä½¿ç”¨ç³»ç»Ÿå…¨å±€èœ"
+"å•ã€‚"
+
+msgid "Default text [Color] of the menu item."
+msgstr "èœå•é¡¹çš„默认文字 [Color]。"
+
+msgid "Text [Color] used when the menu item is disabled."
+msgstr "èœå•é¡¹å¤„于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„文字 [Color]。"
+
+msgid ""
+"Text [Color] used when the menu item is focused. Only replaces the normal "
+"text color of the menu item. Disabled, hovered, and pressed states take "
+"precedence over this color."
+msgstr ""
+"èœå•é¡¹å¤„于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„文字 [Color]。åªæ›¿æ¢æŒ‰é’®çš„正常文本颜色。ç¦ç”¨ã€æ‚¬åœ"
+"和按下状æ€ä¼˜å…ˆäºŽè¿™ä¸ªé¢œè‰²ã€‚"
+
+msgid "Text [Color] used when the menu item is being hovered."
+msgstr "èœå•é¡¹å¤„于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„文字 [Color]。"
+
+msgid "Text [Color] used when the menu item is being hovered and pressed."
+msgstr "èœå•é¡¹å¤„于悬åœä¸”按下状æ€æ—¶ä½¿ç”¨çš„文字 [Color]。"
+
+msgid "Text [Color] used when the menu item is being pressed."
+msgstr "èœå•é¡¹å¤„于按下状æ€æ—¶ä½¿ç”¨çš„文字 [Color]。"
+
+msgid "The horizontal space between menu items."
+msgstr "èœå•é¡¹ä¹‹é—´çš„æ°´å¹³è·ç¦»ã€‚"
+
+msgid "[Font] of the menu item's text."
+msgstr "èœå•é¡¹æ–‡æœ¬çš„字体 [Font]。"
+
+msgid "Font size of the menu item's text."
+msgstr "èœå•é¡¹æ–‡æœ¬çš„字体大å°ã€‚"
+
+msgid "[StyleBox] used when the menu item is disabled."
+msgstr "èœå•é¡¹å¤„于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
+msgid ""
+"[StyleBox] used when the menu item is focused. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"èœå•é¡¹å¤„于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] [StyleBox] 显示在基"
+"ç¡€ [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ [StyleBox],确ä¿åŸºç¡€ "
+"[StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥å¾ˆå¥½åœ°å®žçŽ°è¿™ä¸ªç›®çš„。è¦"
+"ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注æ„,ç¦ç”¨èšç„¦çš„视觉效果会"
+"å½±å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
+
+msgid "[StyleBox] used when the menu item is being hovered."
+msgstr "èœå•é¡¹å¤„于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
+msgid "Default [StyleBox] for the menu item."
+msgstr "èœå•é¡¹çš„默认 [StyleBox]。"
+
+msgid "[StyleBox] used when the menu item is being pressed."
+msgstr "èœå•é¡¹å¤„于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
msgid "Special button that brings up a [PopupMenu] when clicked."
msgstr "点击åŽä¼šå¼¹å‡º [PopupMenu] 的特殊按钮。"
@@ -16168,17 +32083,37 @@ msgstr "当 [MenuButton] 被按下时使用的字体 [Color] 颜色。"
msgid "[Font] of the [MenuButton]'s text."
msgstr "[MenuButton] 文本的 [Font]。"
+msgid "Font size of the [MenuButton]'s text."
+msgstr "该 [MenuButton] 文本的字体大å°ã€‚"
+
msgid "[StyleBox] used when the [MenuButton] is disabled."
-msgstr "当 [MenuButton] 被ç¦ç”¨æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+msgstr "该 [MenuButton] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
+
+msgid ""
+"[StyleBox] used when the [MenuButton] is focused. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"该 [MenuButton] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] "
+"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
msgid "[StyleBox] used when the [MenuButton] is being hovered."
-msgstr "当鼠标在 [MenuButton] 上悬åœæ—¶ä½¿ç”¨çš„ [StyleBox] æ ·å¼ç›’。"
+msgstr "该 [MenuButton] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "Default [StyleBox] for the [MenuButton]."
-msgstr "[MenuButton] 的默认 [StyleBox] æ ·å¼ç›’。"
+msgstr "该 [MenuButton] 的默认 [StyleBox]。"
msgid "[StyleBox] used when the [MenuButton] is being pressed."
-msgstr "[MenuButton] 被按下时的 [StyleBox] æ ·å¼ç›’。"
+msgstr "该 [MenuButton] 处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "A [Resource] that contains vertex array-based geometry."
msgstr "一ç§åŒ…å«åŸºäºŽé¡¶ç‚¹æ•°ç»„的几何资æºã€‚"
@@ -16234,7 +32169,10 @@ msgid "Render array as triangle strips."
msgstr "将数组渲染为三角形æ¡ã€‚"
msgid "Represents the size of the [enum ArrayType] enum."
-msgstr "表示 [enum ArrayType] 枚举的大å°ã€‚"
+msgstr "代表 [enum ArrayType] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum ArrayCustomFormat] enum."
+msgstr "代表 [enum ArrayCustomFormat] 枚举的大å°ã€‚"
msgid ""
"Mesh array contains vertices. All meshes require a vertex array so this "
@@ -16409,6 +32347,9 @@ msgstr "设置给定顶点的骨骼æƒé‡ã€‚"
msgid "Node used for displaying a [Mesh] in 2D."
msgstr "用于在 2D 中显示 [Mesh] 的节点。"
+msgid "2D meshes"
+msgstr "2D 网格"
+
msgid "The [Mesh] that will be drawn by the [MeshInstance2D]."
msgstr "该 [MeshInstance2D] 绘制的 [Mesh]。"
@@ -16466,6 +32407,18 @@ msgstr "返回该项的导航网格。"
msgid "Returns the transform applied to the item's navigation mesh."
msgstr "返回应用于该项导航网格的å˜æ¢ã€‚"
+msgid ""
+"When running in the editor, returns a generated item preview (a 3D rendering "
+"in isometric perspective). When used in a running project, returns the "
+"manually-defined item preview which can be set using [method "
+"set_item_preview]. Returns an empty [Texture2D] if no preview was manually "
+"set in a running project."
+msgstr ""
+"在编辑器中è¿è¡Œæ—¶ï¼Œè¿”回生æˆçš„项目预览(等轴é€è§†ä¸­çš„ 3D 渲染)。在一个è¿è¡Œçš„项"
+"目中使用时,返回手动定义的项目预览,该项目预览å¯ä»¥ä½¿ç”¨ [method "
+"set_item_preview] 设置。如果在一个è¿è¡Œçš„项目中,没有手动设置预览,则返回一个"
+"空的 [Texture2D]。"
+
msgid "Gets an unused ID for a new item."
msgstr "获å–新项未使用的 ID。"
@@ -16483,8 +32436,12 @@ msgid ""
"This name is shown in the editor. It can also be used to look up the item "
"later using [method find_item_by_name]."
msgstr ""
-"设置项的å称。\n"
-"该å称显示在编辑器中。ç¨åŽè¿˜å¯ä»¥ä½¿ç”¨ [method find_item_by_name] æ¥æŸ¥æ‰¾è¯¥é¡¹ã€‚"
+"设置该项的å称。\n"
+"这个å称会显示在编辑器中。ç¨åŽè¿˜å¯ä»¥ä½¿ç”¨ [method find_item_by_name] æ¥æŸ¥æ‰¾è¯¥"
+"项。"
+
+msgid "Sets the item's navigation layers bitmask."
+msgstr "设置该项的导航层ä½æŽ©ç ã€‚"
msgid "Sets the item's navigation mesh."
msgstr "设置该项的导航网格。"
@@ -16523,6 +32480,36 @@ msgid ""
"interpolating. By default there's no delay."
msgstr "设置该 [MethodTweener] 开始æ’值的时间,å•ä½ä¸ºç§’。默认无延迟。"
+msgid ""
+"This is an internal editor class intended for keeping data of nodes of "
+"unknown type."
+msgstr "这是编辑器内部类,用于ä¿å­˜æœªçŸ¥ç±»åž‹èŠ‚点的数æ®ã€‚"
+
+msgid ""
+"This is an internal editor class intended for keeping data of nodes of "
+"unknown type (most likely this type was supplied by an extension that is no "
+"longer loaded). It can't be manually instantiated or placed in the scene. "
+"Ignore it if you don't know what it is."
+msgstr ""
+"这是编辑器内部类,用于ä¿å­˜æœªçŸ¥ç±»åž‹èŠ‚点的数æ®ï¼ˆè¯¥ç±»åž‹å¾ˆæœ‰å¯èƒ½æ˜¯ç”±æ‰©å±•æ供的,"
+"而该扩展未加载)。无法手动实例化或放置在场景中。如果你ä¸çŸ¥é“这是什么,请忽略"
+"它。"
+
+msgid ""
+"This is an internal editor class intended for keeping data of resources of "
+"unknown type."
+msgstr "这是编辑器内部类,用于ä¿å­˜æœªçŸ¥ç±»åž‹èµ„æºçš„æ•°æ®ã€‚"
+
+msgid ""
+"This is an internal editor class intended for keeping data of resources of "
+"unknown type (most likely this type was supplied by an extension that is no "
+"longer loaded). It can't be manually instantiated or placed in the scene. "
+"Ignore it if you don't know what it is."
+msgstr ""
+"这是编辑器内部类,用于ä¿å­˜æœªçŸ¥ç±»åž‹èµ„æºçš„æ•°æ®ï¼ˆè¯¥ç±»åž‹å¾ˆæœ‰å¯èƒ½æ˜¯ç”±æ‰©å±•æ供的,"
+"而该扩展未加载)。无法手动实例化或放置在场景中。如果你ä¸çŸ¥é“这是什么,请忽略"
+"它。"
+
msgid "Generic mobile VR implementation."
msgstr "通用移动 VR 实现。"
@@ -16557,14 +32544,41 @@ msgstr ""
"过采样设置。由于镜头失真,我们必须以比å±å¹•è‡ªç„¶åˆ†è¾¨çŽ‡æ›´é«˜çš„è´¨é‡æ¸²æŸ“我们的缓冲"
"区。介于 1.5 å’Œ 2.0 之间的值通常å¯ä»¥æ供良好的结果,但会牺牲性能。"
+msgid "Animating thousands of fish with MultiMeshInstance"
+msgstr "使用 MultiMeshInstance 动画化数åƒæ¡é±¼"
+
+msgid "Optimization using MultiMeshes"
+msgstr "使用 MultiMesh 进行优化"
+
+msgid "Gets a specific instance's color multiplier."
+msgstr "获å–特定实例的颜色å€æ•°ã€‚"
+
msgid "Returns the custom data that has been set for a specific instance."
msgstr "返回已ç»ä¸ºç‰¹å®šå®žä¾‹è®¾ç½®çš„自定义数æ®ã€‚"
+msgid "Returns the [Transform3D] of a specific instance."
+msgstr "返回指定实例的 [Transform3D]。"
+
msgid "Returns the [Transform2D] of a specific instance."
-msgstr "返回特定实例的 [Transform2D]。"
+msgstr "返回指定实例的 [Transform2D]。"
+
+msgid "Sets the [Transform3D] for a specific instance."
+msgstr "为指定实例设置 [Transform3D]。"
msgid "Sets the [Transform2D] for a specific instance."
-msgstr "为特定实例设置 [Transform2D]。"
+msgstr "为指定实例设置 [Transform2D]。"
+
+msgid "See [method set_instance_color]."
+msgstr "è§ [method set_instance_color]。"
+
+msgid "See [method set_instance_custom_data]."
+msgstr "è§ [method set_instance_custom_data]。"
+
+msgid "See [method set_instance_transform_2d]."
+msgstr "è§ [method set_instance_transform_2d]。"
+
+msgid "See [method set_instance_transform]."
+msgstr "è§ [method set_instance_transform]。"
msgid "Format of transform used to transform mesh, either 2D or 3D."
msgstr "用于å˜æ¢ç½‘格的å˜æ¢æ ¼å¼ï¼Œå¯ä»¥æ˜¯ 2D 或 3D。"
@@ -16590,6 +32604,9 @@ msgstr "将由 [MultiMeshInstance2D] 绘制的 [MultiMesh]。"
msgid "Node that instances a [MultiMesh]."
msgstr "实例化 [MultiMesh] 的节点。"
+msgid "Using MultiMeshInstance"
+msgstr "使用 MultiMeshInstance"
+
msgid ""
"Returns the sender's peer ID for the RPC currently being executed.\n"
"[b]Note:[/b] If not inside an RPC this method will return 0."
@@ -16597,6 +32614,34 @@ msgstr ""
"返回当å‰æ­£åœ¨æ‰§è¡Œçš„ RPC çš„å‘é€æ–¹çš„对等体 ID。\n"
"[b]注æ„:[/b]如果ä¸åœ¨ RPC 内,这个方法将返回 0。"
+msgid "Base class used for extending the [MultiplayerAPI]."
+msgstr "用于扩展 [MultiplayerAPI] 的基类。"
+
+msgid "Callback for [method MultiplayerAPI.get_peers]."
+msgstr "[method MultiplayerAPI.get_peers] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.get_remote_sender_id]."
+msgstr "[method MultiplayerAPI.get_remote_sender_id] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.get_unique_id]."
+msgstr "[method MultiplayerAPI.get_unique_id] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.object_configuration_add]."
+msgstr "[method MultiplayerAPI.object_configuration_add] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.object_configuration_remove]."
+msgstr "[method MultiplayerAPI.object_configuration_remove] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.poll]."
+msgstr "[method MultiplayerAPI.poll] 的回调。"
+
+msgid "Callback for [method MultiplayerAPI.rpc]."
+msgstr "[method MultiplayerAPI.rpc] 的回调。"
+
+msgid ""
+"Abstract class for specialized [PacketPeer]s used by the [MultiplayerAPI]."
+msgstr "特化 [PacketPeer] 的抽象类,[MultiplayerAPI] 会用到。"
+
msgid "WebRTC Signaling Demo"
msgstr "WebRTC ä¿¡å·æ¼”示"
@@ -16604,9 +32649,21 @@ msgid ""
"Returns the current state of the connection. See [enum ConnectionStatus]."
msgstr "返回连接的当å‰çŠ¶æ€ã€‚è§ [enum ConnectionStatus]。"
+msgid "Returns the ID of this [MultiplayerPeer]."
+msgstr "返回该 [MultiplayerPeer] 的 ID。"
+
msgid "Waits up to 1 second to receive a new network event."
msgstr "等待最多 1 秒以接收一个新的网络事件。"
+msgid "The MultiplayerPeer is disconnected."
+msgstr "该 MultiplayerPeer 已断开连接。"
+
+msgid "The MultiplayerPeer is currently connecting to a server."
+msgstr "该 MultiplayerPeer 正在连接到æœåŠ¡å™¨ã€‚"
+
+msgid "This MultiplayerPeer is connected."
+msgstr "该 MultiplayerPeer 已连接。"
+
msgid ""
"Packets are not acknowledged, no resend attempts are made for lost packets. "
"Packets may arrive in any order. Potentially faster than [constant "
@@ -16675,6 +32732,30 @@ msgstr ""
"[b]注æ„:[/b]如果一个线程在已ç»æ‹¥æœ‰äº’æ–¥é”的情况下多次调用 [method lock] 或 "
"[method try_lock],它也必须调用相åŒæ¬¡æ•°çš„ [method unlock] æ‰èƒ½æ­£ç¡®è§£é”."
+msgid "2D Agent used in navigation for collision avoidance."
+msgstr "在导航中用æ¥é¿å…碰撞的 2D 代ç†ã€‚"
+
+msgid ""
+"2D Agent that is used in navigation to reach a position while avoiding "
+"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
+"collision avoidance. The agent needs navigation data to work correctly. "
+"[NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After setting [member target_position] it is required to use "
+"the [method get_next_path_position] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
+msgstr ""
+"导航中使用的 2D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåŠ¨æ€éšœç¢ç‰©ã€‚躲é¿åŠ¨æ€éšœç¢"
+"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚[NavigationAgent2D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]设置 [member target_position] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€æ¬¡ "
+"[method get_next_location] 函数æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个函"
+"数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
+
+msgid "Using NavigationAgents"
+msgstr "使用 NavigationAgent"
+
msgid ""
"Returns the [RID] of the navigation map for this NavigationAgent node. This "
"function returns always the map set on the NavigationAgent node and not the "
@@ -16740,6 +32821,27 @@ msgstr ""
"终的目标,到达该区域内å³å¯ã€‚如果这个值设得太å°ï¼Œè¯¥ NavigationAgent 将陷入é‡æ–°"
"寻路的死循环,因为它在æ¯æ¬¡ç‰©ç†å¸§æ›´æ–°åŽéƒ½ä¼šè¶…过或者到ä¸äº†æœ€ç»ˆçš„目标点。"
+msgid "3D Agent used in navigation for collision avoidance."
+msgstr "在导航中用æ¥é¿å…碰撞的 3D 代ç†ã€‚"
+
+msgid ""
+"3D Agent that is used in navigation to reach a position while avoiding "
+"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
+"collision avoidance. The agent needs navigation data to work correctly. "
+"[NavigationAgent3D] is physics safe.\n"
+"[b]Note:[/b] After setting [member target_position] it is required to use "
+"the [method get_next_path_position] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
+msgstr ""
+"导航中使用的 3D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåŠ¨æ€éšœç¢ç‰©ã€‚躲é¿åŠ¨æ€éšœç¢"
+"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚[NavigationAgent3D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]设置 [member target_position] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€æ¬¡ "
+"[method get_next_location] 函数æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个函"
+"数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
+
msgid ""
"The NavigationAgent height offset is subtracted from the y-axis value of any "
"vector path position for this NavigationAgent. The NavigationAgent height "
@@ -16753,6 +32855,9 @@ msgstr ""
"果。如果其他导航地图使用了带有导航网格的地区,开å‘者使用åˆé€‚的代ç†åŠå¾„或高度"
"对其进行了烘焙,那么就必须支æŒä¸åŒå¤§å°çš„代ç†ã€‚"
+msgid "Using NavigationLinks"
+msgstr "使用 NavigationLink"
+
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr "用于模拟å¯æ­¥è¡ŒåŒºåŸŸå’Œéšœç¢ç‰©çš„网格。"
@@ -16767,6 +32872,9 @@ msgstr ""
msgid "3D Navmesh Demo"
msgstr "3D 导航网格演示"
+msgid "Using NavigationMeshes"
+msgstr "使用 NavigationMesh"
+
msgid ""
"Adds a polygon using the indices of the vertices you get when calling "
"[method get_vertices]."
@@ -16946,7 +33054,7 @@ msgid ""
msgstr "层分区。用于具有中å°åž‹å›¾å—的平铺导航网格的ä¸é”™é€‰æ‹©ã€‚"
msgid "Represents the size of the [enum SamplePartitionType] enum."
-msgstr "表示 [enum SamplePartitionType] 枚举的大å°ã€‚"
+msgstr "代表 [enum SamplePartitionType] 枚举的大å°ã€‚"
msgid ""
"Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant "
@@ -16956,7 +33064,7 @@ msgstr ""
"PARSED_GEOMETRY_STATIC_COLLIDERS]."
msgid "Represents the size of the [enum ParsedGeometryType] enum."
-msgstr "表示 [enum ParsedGeometryType] 枚举的大å°ã€‚"
+msgstr "代表 [enum ParsedGeometryType] 枚举的大å°ã€‚"
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
@@ -16973,17 +33081,82 @@ msgstr ""
"定。"
msgid "Represents the size of the [enum SourceGeometryMode] enum."
-msgstr "表示 [enum SourceGeometryMode] 枚举的大å°ã€‚"
+msgstr "代表 [enum SourceGeometryMode] 枚举的大å°ã€‚"
msgid "Helper class for creating and clearing navigation meshes."
msgstr "对导航网格进行创建和清ç†çš„辅助类。"
+msgid "2D Obstacle used in navigation for collision avoidance."
+msgstr "在导航中用æ¥é¿å…碰撞的 2D éšœç¢ç‰©ã€‚"
+
+msgid ""
+"2D Obstacle used in navigation for collision avoidance. The obstacle needs "
+"navigation data to work correctly. [NavigationObstacle2D] is physics safe.\n"
+"Obstacles [b]don't[/b] change the resulting path from the pathfinding, they "
+"only affect the navigation agent movement in a radius. Therefore, using "
+"obstacles for the static walls in your level won't work because those walls "
+"don't exist in the pathfinding. The navigation agent will be pushed in a "
+"semi-random direction away while moving inside that radius. Obstacles are "
+"intended as a last resort option for constantly moving objects that cannot "
+"be (re)baked to a navigation mesh efficiently."
+msgstr ""
+"在导航中用æ¥é¿å…碰撞的 2D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚"
+"[NavigationObstacle2D] 是物ç†å®‰å…¨çš„。\n"
+"éšœç¢ç‰©[b]ä¸ä¼š[/b]改å˜å¯»è·¯çš„结果,åªä¼šå½±å“åŠå¾„范围内导航代ç†çš„移动。因此,如果"
+"将障ç¢ç‰©ç”¨äºŽå…³å¡ä¸­çš„墙体是无法正常工作的,因为这些墙体在寻路时ä¸å­˜åœ¨ã€‚导航代"
+"ç†åœ¨åŠå¾„范围内移动时,会被推å‘åŠéšæœºçš„æ–¹å‘。æŒç»­ç§»åŠ¨çš„物体如果无法进行高效的"
+"(é‡æ–°ï¼‰çƒ˜ç„™ï¼Œéšœç¢ç‰©åº”作为ä¸å¾—已的手段。"
+
+msgid "Using NavigationObstacles"
+msgstr "使用 NavigationObstacle"
+
msgid ""
"Enables radius estimation algorithm which uses parent's collision shapes to "
"determine the obstacle radius."
msgstr "å¯ç”¨åŠå¾„估算算法,使用父项的碰撞形状确定障ç¢ç‰©çš„åŠå¾„。"
msgid ""
+"The radius of the agent. Used only if [member estimate_radius] is set to "
+"false."
+msgstr "代ç†çš„åŠå¾„。仅在 [member estimate_radius] 被设置为 false 时使用。"
+
+msgid "3D Obstacle used in navigation for collision avoidance."
+msgstr "在导航中用æ¥é¿å…碰撞的 3D éšœç¢ç‰©ã€‚"
+
+msgid ""
+"3D Obstacle used in navigation for collision avoidance. The obstacle needs "
+"navigation data to work correctly. [NavigationObstacle3D] is physics safe.\n"
+"Obstacles [b]don't[/b] change the resulting path from the pathfinding, they "
+"only affect the navigation agent movement in a radius. Therefore, using "
+"obstacles for the static walls in your level won't work because those walls "
+"don't exist in the pathfinding. The navigation agent will be pushed in a "
+"semi-random direction away while moving inside that radius. Obstacles are "
+"intended as a last resort option for constantly moving objects that cannot "
+"be (re)baked to a navigation mesh efficiently."
+msgstr ""
+"在导航中用æ¥é¿å…碰撞的 3D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚"
+"[NavigationObstacle3D] 是物ç†å®‰å…¨çš„。\n"
+"éšœç¢ç‰©[b]ä¸ä¼š[/b]改å˜å¯»è·¯çš„结果,åªä¼šå½±å“åŠå¾„范围内导航代ç†çš„移动。因此,如果"
+"将障ç¢ç‰©ç”¨äºŽå…³å¡ä¸­çš„墙体是无法正常工作的,因为这些墙体在寻路时ä¸å­˜åœ¨ã€‚导航代"
+"ç†åœ¨åŠå¾„范围内移动时,会被推å‘åŠéšæœºçš„æ–¹å‘。æŒç»­ç§»åŠ¨çš„物体如果无法进行高效的"
+"(é‡æ–°ï¼‰çƒ˜ç„™ï¼Œéšœç¢ç‰©åº”作为ä¸å¾—已的手段。"
+
+msgid "Using NavigationPathQueryObjects"
+msgstr "使用 NavigationPathQueryObject"
+
+msgid "The navigation layers the query will use (as a bitmask)."
+msgstr "查询所使用的导航层(形å¼ä¸ºä½æŽ©ç ï¼‰ã€‚"
+
+msgid "The pathfinding algorithm used in the path query."
+msgstr "路径查询中使用的寻路算法。"
+
+msgid "The pathfinding start position in global coordinates."
+msgstr "寻路起始点,使用全局å标。"
+
+msgid "The pathfinding target position in global coordinates."
+msgstr "寻路目标点,使用全局å标。"
+
+msgid ""
"A node that has methods to draw outlines or use indices of vertices to "
"create navigation polygons."
msgstr "具有绘制轮廓或使用顶点索引æ¥åˆ›å»ºå¯¼èˆªå¤šè¾¹å½¢çš„方法的节点。"
@@ -17028,9 +33201,15 @@ msgstr ""
msgid "A region of the 2D navigation map."
msgstr "2D 导航地图上的一个地区。"
+msgid "Using NavigationRegions"
+msgstr "使用 NavigationRegion"
+
msgid "The [NavigationPolygon] resource to use."
msgstr "使用的 [NavigationPolygon] 资æºã€‚"
+msgid "A region of the navigation map."
+msgstr "导航地图上的地区。"
+
msgid "The [NavigationMesh] resource to use."
msgstr "使用的 [NavigationMesh] 资æºã€‚"
@@ -17040,6 +33219,9 @@ msgstr "导航网格烘焙æ“作完æˆæ—¶å‘出通知。"
msgid "Notifies when the [NavigationMesh] has changed."
msgstr "[NavigationMesh] å‘生å˜åŒ–æ—¶å‘出通知。"
+msgid "Using NavigationServer"
+msgstr "使用 NavigationServer"
+
msgid "Creates the agent."
msgstr "创建代ç†ã€‚"
@@ -17099,6 +33281,24 @@ msgstr ""
"返回该 NavigationServer 上所有已创建的导航地图的 [RID]。会åŒæ—¶è¿”回已创建的 "
"2D å’Œ 3D 导航地图,因为ç†è®ºä¸Šå®ƒä»¬ä¹‹é—´æ˜¯æ²¡æœ‰åŒºåˆ«çš„。"
+msgid "Create a new link between two positions on a map."
+msgstr "在地图上新建两个地点之间的链接。"
+
+msgid "Returns the ending position of this [code]link[/code]."
+msgstr "返回该 [code]link[/code] 的结æŸä½ç½®ã€‚"
+
+msgid "Returns the starting position of this [code]link[/code]."
+msgstr "返回该 [code]link[/code] 的起始ä½ç½®ã€‚"
+
+msgid "Sets the exit position for the [code]link[/code]."
+msgstr "设置 [code]link[/code] 的出å£ä½ç½®ã€‚"
+
+msgid "Sets the navigation map [RID] for the link."
+msgstr "设置该链接的导航地图 [RID]。"
+
+msgid "Sets the entry position for this [code]link[/code]."
+msgstr "设置 [code]link[/code] çš„å…¥å£ä½ç½®ã€‚"
+
msgid "Create a new map."
msgstr "创建一张新地图。"
@@ -17134,6 +33334,16 @@ msgstr "返回该地区的导航层。"
msgid "Sets the map for the region."
msgstr "设置该地区的地图。"
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer2D.map_get_path])."
+msgstr ""
+"设置地区的导航层。能够在路径请求中选择地区(使用 [method NavigationServer2D."
+"map_get_path] 时)。"
+
+msgid "Sets the [param navigation_polygon] for the region."
+msgstr "设置该地区的导航多边形 [param navigation_polygon]。"
+
msgid "Sets the global transformation for the region."
msgstr "设置该地区的全局å˜æ¢ã€‚"
@@ -17162,14 +33372,11 @@ msgid "Sets the map up direction."
msgstr "设置地图的上方å‘。"
msgid ""
-"Process the collision avoidance agents.\n"
-"The result of this process is needed by the physics server, so this must be "
-"called in the main thread.\n"
-"[b]Note:[/b] This function is not thread safe."
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer3D.map_get_path])."
msgstr ""
-"处ç†é˜²æ’žä»£ç†ã€‚\n"
-"物ç†æœåŠ¡å™¨éœ€è¦è¿™ä¸ªå¤„ç†çš„结果,所以必须在主线程中调用。\n"
-"[b]注æ„:[/b]这个函数ä¸æ˜¯çº¿ç¨‹å®‰å…¨çš„。"
+"设置地区的导航层。能够在路径请求中选择地区(使用 [method NavigationServer3D."
+"map_get_path])。"
msgid "Sets the navigation mesh for the region."
msgstr "设置该地图的导航网格。"
@@ -17177,6 +33384,25 @@ msgstr "设置该地图的导航网格。"
msgid "Control activation of this server."
msgstr "控制这个æœåŠ¡å™¨æ˜¯å¦æ¿€æ´»ã€‚"
+msgid "Constant to get the number of active navigation maps."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–活动导航地图的数é‡ã€‚"
+
+msgid "Constant to get the number of active navigation regions."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–活动导航地区的数é‡ã€‚"
+
+msgid ""
+"Constant to get the number of active navigation agents processing avoidance."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–正在进行é¿éšœçš„活动导航代ç†çš„æ•°é‡ã€‚"
+
+msgid "Constant to get the number of active navigation links."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–活动导航链接的数é‡ã€‚"
+
+msgid "Constant to get the number of navigation mesh polygons."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–导航网格多边形的数é‡ã€‚"
+
+msgid "Constant to get the number of navigation mesh polygon edges."
+msgstr "常é‡ï¼Œç”¨äºŽèŽ·å–导航网格多边形边的数é‡ã€‚"
+
msgid ""
"Scalable texture-based frame that tiles the texture's centers and sides, but "
"keeps the corners' original size. Perfect for panels and dialog boxes."
@@ -17269,6 +33495,116 @@ msgstr "在 NinePatchRect 上拉伸中心纹ç†ã€‚è¿™å¯èƒ½ä¼šå¯¼è‡´çº¹ç†å¤±çœŸ
msgid "Base class for all [i]scene[/i] objects."
msgstr "所有[i]场景[/i]对象的基类。"
+msgid ""
+"Nodes are Godot's building blocks. They can be assigned as the child of "
+"another node, resulting in a tree arrangement. A given node can contain any "
+"number of nodes as children with the requirement that all siblings (direct "
+"children of a node) should have unique names.\n"
+"A tree of nodes is called a [i]scene[/i]. Scenes can be saved to the disk "
+"and then instantiated into other scenes. This allows for very high "
+"flexibility in the architecture and data model of Godot projects.\n"
+"[b]Scene tree:[/b] The [SceneTree] contains the active tree of nodes. When a "
+"node is added to the scene tree, it receives the [constant "
+"NOTIFICATION_ENTER_TREE] notification and its [method _enter_tree] callback "
+"is triggered. Child nodes are always added [i]after[/i] their parent node, i."
+"e. the [method _enter_tree] callback of a parent node will be triggered "
+"before its child's.\n"
+"Once all nodes have been added in the scene tree, they receive the [constant "
+"NOTIFICATION_READY] notification and their respective [method _ready] "
+"callbacks are triggered. For groups of nodes, the [method _ready] callback "
+"is called in reverse order, starting with the children and moving up to the "
+"parent nodes.\n"
+"This means that when adding a node to the scene tree, the following order "
+"will be used for the callbacks: [method _enter_tree] of the parent, [method "
+"_enter_tree] of the children, [method _ready] of the children and finally "
+"[method _ready] of the parent (recursively for the entire scene tree).\n"
+"[b]Processing:[/b] Nodes can override the \"process\" state, so that they "
+"receive a callback on each frame requesting them to process (do something). "
+"Normal processing (callback [method _process], toggled with [method "
+"set_process]) happens as fast as possible and is dependent on the frame "
+"rate, so the processing time [i]delta[/i] (in seconds) is passed as an "
+"argument. Physics processing (callback [method _physics_process], toggled "
+"with [method set_physics_process]) happens a fixed number of times per "
+"second (60 by default) and is useful for code related to the physics "
+"engine.\n"
+"Nodes can also process input events. When present, the [method _input] "
+"function will be called for each input that the program receives. In many "
+"cases, this can be overkill (unless used for simple projects), and the "
+"[method _unhandled_input] function might be preferred; it is called when the "
+"input event was not handled by anyone else (typically, GUI [Control] nodes), "
+"ensuring that the node only receives the events that were meant for it.\n"
+"To keep track of the scene hierarchy (especially when instancing scenes into "
+"other scenes), an \"owner\" can be set for the node with the [member owner] "
+"property. This keeps track of who instantiated what. This is mostly useful "
+"when writing editors and tools, though.\n"
+"Finally, when a node is freed with [method Object.free] or [method "
+"queue_free], it will also free all its children.\n"
+"[b]Groups:[/b] Nodes can be added to as many groups as you want to be easy "
+"to manage, you could create groups like \"enemies\" or \"collectables\" for "
+"example, depending on your game. See [method add_to_group], [method "
+"is_in_group] and [method remove_from_group]. You can then retrieve all nodes "
+"in these groups, iterate them and even call methods on groups via the "
+"methods on [SceneTree].\n"
+"[b]Networking with nodes:[/b] After connecting to a server (or making one, "
+"see [ENetMultiplayerPeer]), it is possible to use the built-in RPC (remote "
+"procedure call) system to communicate over the network. By calling [method "
+"rpc] with a method name, it will be called locally and in all connected "
+"peers (peers = clients and the server that accepts connections). To identify "
+"which node receives the RPC call, Godot will use its [NodePath] (make sure "
+"node names are the same on all peers). Also, take a look at the high-level "
+"networking tutorial and corresponding demos.\n"
+"[b]Note:[/b] The [code]script[/code] property is part of the [Object] class, "
+"not [Node]. It isn't exposed like most properties but does have a setter and "
+"getter ([code]set_script()[/code] and [code]get_script()[/code])."
+msgstr ""
+"节点是 Godot 的构建模å—。它们å¯ä»¥è¢«æŒ‡å®šä¸ºå¦ä¸€ä¸ªèŠ‚点的å­èŠ‚点,从而形æˆæ ‘状排"
+"列。一个给定的节点å¯ä»¥åŒ…å«ä»»æ„æ•°é‡çš„节点作为å­èŠ‚点,è¦æ±‚所有的兄弟节点(å³è¯¥"
+"节点的直接å­èŠ‚点)的å字唯一。\n"
+"节点树被称为[i]场景[/i]。场景å¯ä»¥è¢«ä¿å­˜åˆ°ç£ç›˜ä¸Šï¼Œç„¶åŽè¢«å®žä¾‹åŒ–到其他场景中。这"
+"使得 Godot 项目的架构和数æ®æ¨¡åž‹å…·æœ‰éžå¸¸é«˜çš„çµæ´»æ€§ã€‚\n"
+"[b]场景树:[/b][SceneTree] 包å«æ´»åŠ¨çš„节点树。当一个节点被添加到场景树中时,它"
+"将收到 [constant NOTIFICATION_ENTER_TREE] 通知,并触å‘å…¶ [method "
+"_enter_tree] 回调。å­èŠ‚点总是在其父节点[i]之åŽ[/i]被添加,å³çˆ¶èŠ‚点的 [method "
+"_enter_tree] 回调将在其å­èŠ‚点的之å‰è¢«è§¦å‘。\n"
+"一旦所有的节点被添加到场景树中,它们就会收到 [constant NOTIFICATION_READY] 通"
+"知,其å„自的 [method _ready] 回调被触å‘。对于一组节点,[method _ready] 回调是"
+"按相å的顺åºè°ƒç”¨çš„,从å­èŠ‚点开始,å‘上移动到父节点。\n"
+"è¿™æ„味ç€ï¼Œå½“把一个节点添加到场景树中时,将使用下é¢çš„顺åºè¿›è¡Œå›žè°ƒï¼šçˆ¶èŠ‚点的 "
+"[method _enter_tree]ã€å­èŠ‚点的 [method _enter_tree]ã€å­èŠ‚点的 [method "
+"_ready],最åŽæ˜¯çˆ¶èŠ‚点的 [method _ready](对整个场景树进行递归)。\n"
+"[b]处ç†ï¼š[/b]节点å¯ä»¥è¦†ç›–“处ç†â€çŠ¶æ€ï¼Œä»¥ä¾¿å®ƒä»¬åœ¨æ¯ä¸€å¸§ä¸Šéƒ½æ”¶åˆ°å›žè°ƒï¼Œè¦æ±‚它们进"
+"行处ç†ï¼ˆåšä¸€äº›äº‹æƒ…)。普通处ç†ï¼ˆå›žè°ƒ [method _process],å¯ä»¥ä½¿ç”¨ [method "
+"set_process] 开关)会尽å¯èƒ½å¿«åœ°å‘生,并且å–决于帧率,所以处ç†æ—¶é—´ [i]delta[/"
+"i](å•ä½ä¸ºç§’)会作为å‚数传入。物ç†å¤„ç†ï¼ˆå›žè°ƒ [method _physics_process],å¯ä»¥"
+"使用 [method set_physics_process] 开关)æ¯ç§’å‘生固定次数(默认为 60),对物ç†"
+"引擎相关的代ç å¾ˆæœ‰ç”¨ã€‚\n"
+"节点也å¯ä»¥å¤„ç†è¾“入事件。存在 [method _input] 函数时,程åºæ¯æ”¶åˆ°ä¸€æ¬¡è¾“入都会去"
+"调用它。在许多情况下,这么åšæ˜¯å¤§æå°ç”¨äº†ï¼ˆé™¤éžæ˜¯ç”¨äºŽç®€å•çš„项目),用 [method "
+"_unhandled_input] 函数å¯èƒ½æ›´åˆé€‚;当输入事件没有被其他节点(通常是 GUI "
+"[Control] 节点)处ç†æ—¶ï¼Œæ‰ä¼šè°ƒç”¨è¿™ä¸ªå‡½æ•°ï¼Œå¯ä»¥ç¡®ä¿èŠ‚点åªæŽ¥æ”¶åˆ°å®ƒè¯¥æ”¶åˆ°çš„事"
+"件。\n"
+"为了记录场景的层次结构(尤其是在将场景实例化到其他场景时)å¯ä»¥ç”¨ [member "
+"owner] 属性为节点设置一个“所有者â€ã€‚它记录的是è°å®žä¾‹åŒ–了什么。这在编写编辑器和"
+"工具时éžå¸¸æœ‰ç”¨ã€‚\n"
+"最åŽï¼Œå½“一个节点被 [method Object.free] 或 [method queue_free] 释放时,它也将"
+"释放它的所有å­èŠ‚点。\n"
+"[b]分组:[/b]节点å¯ä»¥è¢«æ·»åŠ åˆ°å¾ˆå¤šçš„组中,以方便管ç†ï¼Œä½ å¯ä»¥æ ¹æ®è‡ªå·±æ¸¸æˆçš„需è¦"
+"æ¥åˆ›å»ºç±»ä¼¼â€œæ•Œäººâ€æˆ–“收集å“â€è¿™æ ·çš„ç»„ã€‚è§ [method add_to_group]ã€[method "
+"is_in_group] å’Œ [method remove_from_group]。加入组åŽï¼Œä½ å¯ä»¥æ£€ç´¢è¿™äº›ç»„中的所"
+"有节点,对它们进行迭代,甚至通过 [SceneTree] 中的方法调用组内方法。\n"
+"[b]节点的网络编程:[/b]在连接到æœåŠ¡å™¨ï¼ˆæˆ–制作æœåŠ¡å™¨ï¼Œè§ "
+"[ENetMultiplayerPeer])之åŽï¼Œå¯ä»¥ä½¿ç”¨å†…置的 RPC(远程过程调用)系统在网络上进"
+"行通信。在调用 [method rpc] 时传入方法å,将在本地和所有已连接的对等体中调用"
+"对应的方法(对等体=客户端和接å—连接的æœåŠ¡å™¨ï¼‰ã€‚为了识别哪个节点收到 RPC è°ƒ"
+"用,Godot 将使用它的 [NodePath](请确ä¿æ‰€æœ‰å¯¹ç­‰ä½“上的节点å称相åŒï¼‰ã€‚å¦å¤–,请"
+"å‚阅高级网络教程和相应的演示。\n"
+"[b]注æ„:[/b][code]script[/code] 属性是 [Object] 类的一部分,ä¸å±žäºŽ [Node]。"
+"这个属性暴露的方å¼å’Œå…¶ä»–属性ä¸åŒï¼Œä½†æ供了 setter å’Œ getter"
+"([code]set_script()[/code] 和 [code]get_script()[/code])。"
+
+msgid "Nodes and scenes"
+msgstr "节点与场景"
+
msgid "All Demos"
msgstr "所有演示"
@@ -17304,6 +33640,67 @@ msgstr ""
"到 [signal tree_exited]。"
msgid ""
+"Called when there is an input event. The input event propagates up through "
+"the node tree until a node consumes it.\n"
+"It is only called if input processing is enabled, which is done "
+"automatically if this method is overridden, and can be toggled with [method "
+"set_process_input].\n"
+"To consume the input event and stop it propagating further to other nodes, "
+"[method Viewport.set_input_as_handled] can be called.\n"
+"For gameplay input, [method _unhandled_input] and [method "
+"_unhandled_key_input] are usually a better fit as they allow the GUI to "
+"intercept the events first.\n"
+"[b]Note:[/b] This method is only called if the node is present in the scene "
+"tree (i.e. if it's not an orphan)."
+msgstr ""
+"有输入事件时会被调用。输入事件会沿节点树å‘上传播,直到有节点将其消耗。\n"
+"åªæœ‰åœ¨å¯ç”¨è¾“入处ç†æ—¶æ‰ä¼šè¢«è°ƒç”¨ï¼Œå¦‚果该方法被é‡å†™åˆ™ä¼šè‡ªåŠ¨å¯ç”¨ï¼Œå¯ä»¥ä½¿ç”¨ "
+"[method set_process_input] 进行切æ¢ã€‚\n"
+"è¦æ¶ˆè€—输入事件,阻止它进一步传播到其他节点,å¯ä»¥è°ƒç”¨ [method Viewport."
+"set_input_as_handled]。\n"
+"对于游æˆè¾“入,[method _unhandled_input] å’Œ [method _unhandled_key_input] 通常"
+"更适åˆï¼Œå› ä¸ºå®ƒä»¬å…许 GUI 首先拦截事件。\n"
+"[b]注æ„:[/b]仅当该节点存在于场景树中时(å³ä¸æ˜¯å­¤ç«‹èŠ‚点),此方法æ‰ä¼šè¢«è°ƒç”¨ã€‚"
+
+msgid ""
+"Creates a new [Tween] and binds it to this node. This is equivalent of "
+"doing:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"get_tree().create_tween().bind_node(self)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetTree().CreateTween().BindNode(this);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"新建 [Tween] 并将其绑定到这个节点。与如下æ“作等价:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"get_tree().create_tween().bind_node(self)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GetTree().CreateTween().BindNode(this);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the number of child nodes.\n"
+"If [param include_internal] is [code]false[/code], internal children aren't "
+"counted (see [code]internal[/code] parameter in [method add_child])."
+msgstr ""
+"返回å­èŠ‚点的数é‡ã€‚\n"
+"如果 [param include_internal] 为 [code]false[/code] ,则ä¸è®¡ç®—内部å­èŠ‚ç‚¹ï¼ˆè§ "
+"[method add_child] çš„ [code]internal[/code] å‚数)。"
+
+msgid ""
+"Similar to [method get_node], but does not log an error if [param path] does "
+"not point to a valid [Node]."
+msgstr ""
+"类似于 [method get_node],但在 [code]path[/code] 没有指å‘有效的 [Node] æ—¶ä¸ä¼š"
+"记录错误。"
+
+msgid ""
"Returns the parent node of the current node, or [code]null[/code] if the "
"node lacks a parent."
msgstr "返回当å‰èŠ‚点的父节点,如果节点缺少父节点,则返回 [code]null[/code]。"
@@ -17334,6 +33731,14 @@ msgid "Returns the node's [Viewport]."
msgstr "返回节点的 [Viewport]。"
msgid ""
+"Returns the [Window] that contains this node. If the node is in the main "
+"window, this is equivalent to getting the root node ([code]get_tree()."
+"get_root()[/code])."
+msgstr ""
+"返回包å«è¯¥èŠ‚点的 [Window]。如果该节点在主窗å£ä¸­ï¼Œåˆ™ç›¸å½“于获å–根节点"
+"([code]get_tree().get_root()[/code])。"
+
+msgid ""
"Returns [code]true[/code] if the node that the [NodePath] points to exists."
msgstr "如果 [NodePath] 指å‘的节点存在,则返回 [code]true[/code]。"
@@ -17556,6 +33961,13 @@ msgid ""
msgstr "设置这是å¦æ˜¯å®žä¾‹åŠ è½½å ä½ç¬¦ã€‚è§ [InstancePlaceholder]。"
msgid ""
+"Add a custom description to a node. It will be displayed in a tooltip when "
+"hovered in editor's scene tree."
+msgstr ""
+"为该节点添加自定义æ述。该节点在编辑器的场景树中处于悬åœçŠ¶æ€æ—¶ï¼Œè¯¥æ述将显示"
+"在工具æ示中。"
+
+msgid ""
"The name of the node. This name is unique among the siblings (other child "
"nodes from the same parent). When set to an existing name, the node will be "
"automatically renamed.\n"
@@ -17596,6 +34008,14 @@ msgstr ""
"中ä¸å¯è§ï¼Œä½†åœ¨ 2D/3D 视图中å¯è§ã€‚"
msgid ""
+"Can be used to pause or unpause the node, or make the node paused based on "
+"the [SceneTree], or make it inherit the process mode from its parent "
+"(default)."
+msgstr ""
+"å¯ç”¨äºŽæš‚åœæˆ–å–消暂åœè¯¥èŠ‚点,也å¯ä»¥è®©è¯¥èŠ‚ç‚¹æ ¹æ® [SceneTree] æ¥æš‚åœï¼Œè¿˜å¯ä»¥è®©å®ƒ"
+"继承父级的处ç†æ¨¡å¼ï¼ˆé»˜è®¤ï¼‰ã€‚"
+
+msgid ""
"The node's priority in the execution order of the enabled processing "
"callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant "
"NOTIFICATION_PHYSICS_PROCESS] and their internal counterparts). Nodes whose "
@@ -17791,9 +34211,29 @@ msgstr ""
msgid "All 2D Demos"
msgstr "所有 2D 演示"
+msgid "Multiplies the current scale by the [param ratio] vector."
+msgstr "将当å‰ç¼©æ”¾ä¹˜ä»¥æ¯”例å‘é‡ [param ratio]。"
+
+msgid ""
+"Returns the angle between the node and the [param point] in radians.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"node2d_get_angle_to.png]Illustration of the returned angle.[/url]"
+msgstr ""
+"返回该节点和 [param point] 之间的夹角,å•ä½ä¸ºå¼§åº¦ã€‚\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"node2d_get_angle_to.png]返回夹角的示æ„图。[/url]"
+
msgid "Returns the [Transform2D] relative to this node's parent."
msgstr "返回相对于此节点的父节点的 [Transform2D]。"
+msgid "Adds the [param offset] vector to the node's global position."
+msgstr "å°†å移å‘é‡ [param offset] 添加到该节点的全局ä½ç½®ã€‚"
+
+msgid ""
+"Rotates the node so it points towards the [param point], which is expected "
+"to use global coordinates."
+msgstr "æ—‹è½¬è¯¥èŠ‚ç‚¹ï¼Œä½¿å…¶æŒ‡å‘ [param point],该点应使用全局å标。"
+
msgid ""
"Applies a rotation to the node, in radians, starting from its current "
"rotation."
@@ -17820,15 +34260,26 @@ msgstr ""
"å°†æ供的全局ä½ç½®è½¬æ¢ä¸ºæœ¬åœ°å标空间的ä½ç½®ã€‚例如,它适åˆäºŽç¡®å®šå­èŠ‚点的ä½ç½®ï¼Œä½†"
"ä¸é€‚åˆäºŽç¡®å®šå…¶è‡ªèº«ç›¸å¯¹äºŽçˆ¶èŠ‚点的ä½ç½®ã€‚"
+msgid "Translates the node by the given [param offset] in local coordinates."
+msgstr "在局部å标系中,将该节点按给定的åç§»é‡ [param offset] 进行平移。"
+
msgid "Global position."
msgstr "全局ä½ç½®ã€‚"
msgid "Global rotation in radians."
-msgstr "全局旋转弧度。"
+msgstr "全局旋转,å•ä½ä¸ºå¼§åº¦ã€‚"
+
+msgid ""
+"Helper property to access [member global_rotation] in degrees instead of "
+"radians."
+msgstr "辅助属性,用于按度数访问 [member global_rotation] 而ä¸æ˜¯å¼§åº¦æ•°ã€‚"
msgid "Global scale."
msgstr "全局缩放。"
+msgid "Global skew in radians."
+msgstr "全局å斜,å•ä½ä¸ºå¼§åº¦ã€‚"
+
msgid "Global [Transform2D]."
msgstr "全局 [Transform2D]。"
@@ -17851,11 +34302,18 @@ msgstr ""
"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼ŒX 轴上的负数缩放在分解åŽä¼šå˜ä¸º Y 轴的负数缩放和一次 180 度"
"的旋转。"
+msgid ""
+"Slants the node.\n"
+"[b]Note:[/b] Skew is X axis only."
+msgstr ""
+"使该节点å‘生倾斜。\n"
+"[b]注æ„:[/b]å斜仅适用于 X 轴。"
+
msgid "Local [Transform2D]."
msgstr "局部 [Transform2D]。"
msgid "Most basic 3D game object, parent of all 3D-related nodes."
-msgstr "最基本的 3D 游æˆå¯¹è±¡ï¼Œæ˜¯æ‰€æœ‰ä¸Ž 3D 相关的节点的父节点。"
+msgstr "最基本的 3D 游æˆå¯¹è±¡ï¼Œæ‰€æœ‰ 3D 相关节点的父类。"
msgid "Introduction to 3D"
msgstr "3D 简介"
@@ -17863,6 +34321,12 @@ msgstr "3D 简介"
msgid "All 3D Demos"
msgstr "所有 3D 演示"
+msgid "Attach a gizmo to this [code]Node3D[/code]."
+msgstr "å°†å°å·¥å…·é™„加到该 [code]Node3D[/code] 上。"
+
+msgid "Clear all gizmos attached to this [code]Node3D[/code]."
+msgstr "清除附加于该 [code]Node3D[/code] 的所有å°å·¥å…·ã€‚"
+
msgid ""
"Rotates the global (world) transformation around axis, a unit [Vector3], by "
"specified angle in radians. The rotation axis is in global coordinate system."
@@ -17949,6 +34413,9 @@ msgid ""
"Changes the node's position by the given offset [Vector3] in local space."
msgstr "通过给定的局部空间åç§»é‡ [Vector3] 改å˜è¯¥èŠ‚点的ä½ç½®ã€‚"
+msgid "Updates all the [Node3DGizmo]s attached to this node."
+msgstr "更新附加于该节点的所有 [Node3DGizmo]。"
+
msgid ""
"Global position of this node. This is equivalent to [code]global_transform."
"origin[/code]."
@@ -17972,6 +34439,9 @@ msgstr ""
"矢é‡ï¼Œè€Œæ˜¯å› ä¸º [Vector3] 是一ç§æ–¹ä¾¿å­˜å‚¨ 3 个浮点数的数æ®ç»“构。因此,对旋转“å‘"
"é‡â€åº”用仿射æ“作是没有æ„义的。"
+msgid "World3D space (global) [Transform3D] of this node."
+msgstr "该节点在 World3D 空间的(全局)[Transform3D]。"
+
msgid ""
"If [code]true[/code], this node is drawn. The node is only visible if all of "
"its antecedents are visible as well (in other words, [method "
@@ -18014,7 +34484,29 @@ msgstr ""
"动加载项)。"
msgid "Returns [code]true[/code] if the node path is empty."
-msgstr "节点路径为空时返回 [code]true[/code]。"
+msgstr "如果节点路径为空,则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if two node paths are not equal."
+msgstr "如果两个节点路径ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if two node paths are equal, i.e. all node names "
+"in the path are the same and in the same order."
+msgstr ""
+"如果两个节点路径相等,å³è·¯å¾„中的所有节点å称都相åŒä¸”顺åºä¸€è‡´ï¼Œåˆ™è¿”回 "
+"[code]true[/code]。"
+
+msgid "Abstract base class for noise generators."
+msgstr "噪声生æˆå™¨çš„抽象基类。"
+
+msgid "Returns the 1D noise value at the given (x) coordinate."
+msgstr "返回给定 (x) å标处的 1D 噪声值。"
+
+msgid "Returns the 2D noise value at the given position."
+msgstr "返回给定ä½ç½®å¤„çš„ 2D 噪声值。"
+
+msgid "Returns the 3D noise value at the given position."
+msgstr "返回给定ä½ç½®å¤„çš„ 3D 噪声值。"
msgid ""
"If [code]true[/code], the resulting texture contains a normal map created "
@@ -18036,9 +34528,18 @@ msgstr "生æˆçš„纹ç†çš„高度。"
msgid "Width of the generated texture."
msgstr "生æˆçš„纹ç†çš„宽度。"
+msgid "Base class for all other classes in the engine."
+msgstr "引擎中所有其他类的基类。"
+
+msgid "Object class introduction"
+msgstr "Object 类介ç»"
+
msgid "When and how to avoid using nodes for everything"
msgstr "何时以åŠå¦‚何é¿å…为任何事情使用节点"
+msgid "Object notifications"
+msgstr "对象通知"
+
msgid ""
"Returns [code]true[/code] if the [method Node.queue_free] method was called "
"for the object."
@@ -18087,21 +34588,69 @@ msgid ""
"cull_mode]."
msgstr "按逆时针方å‘è¿›è¡Œå‰”é™¤ã€‚è§ [member cull_mode]。"
+msgid "A sequence of Ogg packets."
+msgstr "Ogg æ•°æ®åŒ…åºåˆ—。"
+
+msgid "The length of this stream, in seconds."
+msgstr "该æµçš„长度,以秒为å•ä½ã€‚"
+
msgid "Omnidirectional light, such as a light bulb or a candle."
msgstr "å…¨å‘光,如ç¯æ³¡æˆ–蜡烛。"
msgid ""
-"The light's attenuation (drop-off) curve. A number of presets are available "
-"in the [b]Inspector[/b] by right-clicking the curve."
-msgstr ""
-"光的衰å‡ï¼ˆä¸‹é™ï¼‰æ›²çº¿ã€‚在[b]检查器[/b]中,通过å³é”®ç‚¹å‡»æ›²çº¿ï¼Œå¯ä»¥èŽ·å¾—许多预设。"
-
-msgid ""
"Shadows are rendered to a dual-paraboloid texture. Faster than [constant "
"SHADOW_CUBE], but lower-quality."
msgstr ""
"阴影被渲染到一个åŒæŠ›ç‰©é¢çº¹ç†ã€‚比 [constant SHADOW_CUBE] 更快,但质é‡è¾ƒå·®ã€‚"
+msgid "An OpenXR action."
+msgstr "OpenXR 动作。"
+
+msgid "The type of action."
+msgstr "动作的类型。"
+
+msgid "Add an action set."
+msgstr "添加动作集。"
+
+msgid "Add an interaction profile."
+msgstr "添加交互é…置。"
+
+msgid "Retrieve the action set at this index."
+msgstr "获å–ä½äºŽè¯¥ç´¢å¼•çš„动作集。"
+
+msgid "Retrieve the number of actions sets in our action map."
+msgstr "获å–动作映射中动作集的数é‡ã€‚"
+
+msgid "Get the interaction profile at this index."
+msgstr "获å–ä½äºŽè¯¥ç´¢å¼•çš„交互é…置。"
+
+msgid "Retrieve the number of interaction profiles in our action map."
+msgstr "获å–动作映射中交互é…置的数é‡ã€‚"
+
+msgid "Remove an action set."
+msgstr "移除动作集。"
+
+msgid "Remove an interaction profile."
+msgstr "移除交互é…置。"
+
+msgid "Add an action to this action set."
+msgstr "å‘该动作集中添加æŸä¸ªåŠ¨ä½œã€‚"
+
+msgid "Retrieve the number of actions in our action set."
+msgstr "获å–该动作集中动作的数é‡ã€‚"
+
+msgid "Remove an action from this action set."
+msgstr "从该动作集中移除æŸä¸ªåŠ¨ä½œã€‚"
+
+msgid "Collection of actions for this action set."
+msgstr "该动作集中动作的åˆé›†ã€‚"
+
+msgid "The localized name of this action set."
+msgstr "该动作集的本地化å称。"
+
+msgid "The priority for this action set."
+msgstr "该动作集的优先级。"
+
msgid "Optimized translation."
msgstr "优化的翻译。"
@@ -18165,7 +34714,7 @@ msgid ""
msgstr "当用户更改当å‰é¡¹æ—¶è§¦å‘。所选项目的索引作为å‚数传递。"
msgid "Default text [Color] of the [OptionButton]."
-msgstr "[OptionButton] 的默认文本 [Color]。"
+msgstr "该 [OptionButton] 的默认文本 [Color]。"
msgid "Text [Color] used when the [OptionButton] is disabled."
msgstr "当 [OptionButton] 被ç¦ç”¨æ—¶ä½¿ç”¨çš„文本 [Color]。"
@@ -18189,11 +34738,76 @@ msgid ""
msgstr "箭头图标和按钮的å³è¾¹ç¼˜ä¹‹é—´çš„水平空间。"
msgid "[Font] of the [OptionButton]'s text."
-msgstr "[OptionButton] 的文本的 [Font]。"
+msgstr "该 [OptionButton] 文本的 [Font]。"
+
+msgid "Font size of the [OptionButton]'s text."
+msgstr "该 [OptionButton] 文本的字体大å°ã€‚"
msgid "The arrow icon to be drawn on the right end of the button."
msgstr "è¦ç»˜åˆ¶åœ¨æŒ‰é’®å³ä¾§çš„箭头图标。"
+msgid ""
+"[StyleBox] used when the [OptionButton] is disabled (for left-to-right "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从左至å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is disabled (for right-to-left "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于ç¦ç”¨çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从å³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is focused. The [code]focus[/code] "
+"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially "
+"transparent [StyleBox] should be used to ensure the base [StyleBox] remains "
+"visible. A [StyleBox] that represents an outline or an underline works well "
+"for this purpose. To disable the focus visual effect, assign a "
+"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will "
+"harm keyboard/controller navigation usability, so this is not recommended "
+"for accessibility reasons."
+msgstr ""
+"该 [OptionButton] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。[code]focus[/code] "
+"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ "
+"[StyleBox],确ä¿åŸºç¡€ [StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥"
+"很好地实现这个目的。è¦ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注"
+"æ„,ç¦ç”¨èšç„¦çš„视觉效果会影å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„"
+"原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is being hovered (for left-to-right "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从左至å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is being hovered (for right-to-left "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于悬åœçŠ¶æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从å³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid "Default [StyleBox] for the [OptionButton] (for left-to-right layouts)."
+msgstr "该 [OptionButton] 的默认 [StyleBox](用于从左至å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid "Default [StyleBox] for the [OptionButton] (for right-to-left layouts)."
+msgstr "该 [OptionButton] 的默认 [StyleBox](用于从å³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is being pressed (for left-to-right "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从左至å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"[StyleBox] used when the [OptionButton] is being pressed (for right-to-left "
+"layouts)."
+msgstr ""
+"该 [OptionButton] 处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox](用于从å³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid "Standard Material 3D and ORM Material 3D"
+msgstr "标准 3D æ质与 ORM 3D æè´¨"
+
msgid "Operating System functions."
msgstr "æ“作系统功能。"
@@ -18388,6 +35002,9 @@ msgstr "图片目录路径。"
msgid "Ringtones directory path."
msgstr "铃声目录路径。"
+msgid "A packed array of bytes."
+msgstr "字节紧缩数组。"
+
msgid "Constructs an empty [PackedByteArray]."
msgstr "构造空的 [PackedByteArray]。"
@@ -18396,6 +35013,244 @@ msgid ""
msgstr "构造给定 [PackedByteArray] 的副本。"
msgid ""
+"Constructs a new [PackedByteArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedByteArray]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedByteArray] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedByteArray]。"
+
+msgid ""
+"Returns a new [PackedByteArray] with the data compressed. Set the "
+"compression mode using one of [enum FileAccess.CompressionMode]'s constants."
+msgstr ""
+"返回新的 [PackedByteArray],其中的数æ®å·²åŽ‹ç¼©ã€‚请将压缩模å¼è®¾ç½®ä¸º [enum "
+"FileAccess.CompressionMode] 常é‡ã€‚"
+
+msgid ""
+"Decodes a 64-bit floating point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 64 ä½æµ®ç‚¹æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。字节"
+"æ•°ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 32-bit floating point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 32 ä½æµ®ç‚¹æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。字节"
+"æ•°ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 16-bit floating point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 16 ä½æµ®ç‚¹æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。字节"
+"æ•°ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 16-bit signed integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 16 ä½æœ‰ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 32-bit signed integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 32 ä½æœ‰ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 64-bit signed integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 64 ä½æœ‰ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 8-bit signed integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 8 ä½æœ‰ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。字"
+"节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 16-bit unsigned integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 16 ä½æ— ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 32-bit unsigned integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 32 ä½æ— ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 64-bit unsigned integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 64 ä½æ— ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"字节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 8-bit unsigned integer number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º 8 ä½æ— ç¬¦å·æ•´æ•°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。字"
+"节数ä¸è¶³æ—¶ä¼šå¤±è´¥ã€‚如果无法解ç æœ‰æ•ˆçš„数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a [Variant] from the bytes starting at [param byte_offset]. Returns "
+"[code]null[/code] if a valid variant can't be decoded or the value is "
+"[Object]-derived and [param allow_objects] is [code]false[/code]."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º [Variant],起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。如果无"
+"法解ç æœ‰æ•ˆçš„å˜ä½“,或者其值派生自 [Object] 而 [param allow_objects] 为 "
+"[code]false[/code],则返回 [code]null[/code]。"
+
+msgid ""
+"Decodes a size of a [Variant] from the bytes starting at [param "
+"byte_offset]. Requires at least 4 bytes of data starting at the offset, "
+"otherwise fails."
+msgstr ""
+"将字节åºåˆ—解ç ä¸º [Variant] 的大å°ï¼Œèµ·å§‹ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"è¦æ±‚起始ä½ç½®åŽè‡³å°‘有 4 个字节的数æ®ï¼Œå¦åˆ™è¿”回 [code]null[/code]。"
+
+msgid ""
+"Returns a new [PackedByteArray] with the data decompressed. Set [param "
+"buffer_size] to the size of the uncompressed data. Set the compression mode "
+"using one of [enum FileAccess.CompressionMode]'s constants."
+msgstr ""
+"返回新的 [PackedByteArray],其中的数æ®å·²è§£åŽ‹ã€‚请将 [param buffer_size] 设置为"
+"æ•°æ®è§£åŽ‹åŽçš„大å°ã€‚请将压缩模å¼è®¾ç½®ä¸º [enum FileAccess.CompressionMode] 常é‡ã€‚"
+
+msgid ""
+"Returns a new [PackedByteArray] with the data decompressed. Set the "
+"compression mode using one of [enum FileAccess.CompressionMode]'s constants. "
+"[b]This method only accepts gzip and deflate compression modes.[/b]\n"
+"This method is potentially slower than [code]decompress[/code], as it may "
+"have to re-allocate its output buffer multiple times while decompressing, "
+"whereas [code]decompress[/code] knows it's output buffer size from the "
+"beginning.\n"
+"GZIP has a maximal compression ratio of 1032:1, meaning it's very possible "
+"for a small compressed payload to decompress to a potentially very large "
+"output. To guard against this, you may provide a maximum size this function "
+"is allowed to allocate in bytes via [param max_output_size]. Passing -1 will "
+"allow for unbounded output. If any positive value is passed, and the "
+"decompression exceeds that amount in bytes, then an error will be returned."
+msgstr ""
+"返回新的 [PackedByteArray],其中的数æ®å·²è§£åŽ‹ã€‚请将压缩模å¼è®¾ç½®ä¸º [enum "
+"FileAccess.CompressionMode] 常é‡ã€‚[b]这个方法åªæŽ¥å— gzip å’Œ deflate 压缩模"
+"å¼ã€‚[/b]\n"
+"这个方法å¯èƒ½æ¯” [code]decompress[/code] 慢,因为在解压时å¯èƒ½éœ€è¦å¤šæ¬¡é‡æ–°åˆ†é…输"
+"出缓冲区,而 [code]decompress[/code] 则在一开始就知é“输出缓冲区的大å°ã€‚\n"
+"GZIP 的最大压缩率为 1032:1,这æ„味ç€è¾ƒå°çš„压缩åŽè´Ÿè½½å¾ˆæœ‰å¯èƒ½è§£åŽ‹å‡ºéžå¸¸å·¨å¤§çš„"
+"输出。为了防止这ç§æƒ…况,你å¯ä»¥é€šè¿‡ [param max_output_size] æä¾›å…许这个函数分"
+"é…的最大字节数。传入 -1 则ä¸é™åˆ¶è¾“出。传入正数且解压超过该字节数时,会返回错"
+"误。"
+
+msgid "Creates a copy of the array, and returns it."
+msgstr "创建该数组的副本,并将该副本返回。"
+
+msgid ""
+"Encodes a 64-bit floating point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 8 bytes of allocated space, "
+"starting at the offset."
+msgstr ""
+"å°† 64 ä½æµ®ç‚¹æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。从å"
+"移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 8 个字节的空间。"
+
+msgid ""
+"Encodes a 32-bit floating point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 4 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 32 ä½æµ®ç‚¹æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。从å"
+"移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 4 个字节的空间。"
+
+msgid ""
+"Encodes a 16-bit floating point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 2 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 16 ä½æµ®ç‚¹æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。从å"
+"移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 2 个字节的空间。"
+
+msgid ""
+"Encodes a 16-bit signed integer number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 2 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 16 ä½æœ‰ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"从å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 2 个字节的空间。"
+
+msgid ""
+"Encodes a 8-bit signed integer number (signed byte) at the index of [param "
+"byte_offset] bytes. The array must have at least 1 byte of space, starting "
+"at the offset."
+msgstr ""
+"å°† 8 ä½æœ‰ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。从"
+"å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 1 个字节的空间。"
+
+msgid ""
+"Encodes a 16-bit unsigned integer number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 2 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 16 ä½æ— ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"从å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 2 个字节的空间。"
+
+msgid ""
+"Encodes a 32-bit unsigned integer number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 4 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 32 ä½æ— ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"从å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 4 个字节的空间。"
+
+msgid ""
+"Encodes a 64-bit unsigned integer number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 8 bytes of space, starting "
+"at the offset."
+msgstr ""
+"å°† 64 ä½æ— ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。"
+"从å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 8 个字节的空间。"
+
+msgid ""
+"Encodes a 8-bit unsigned integer number (byte) at the index of [param "
+"byte_offset] bytes. The array must have at least 1 byte of space, starting "
+"at the offset."
+msgstr ""
+"å°† 8 ä½æ— ç¬¦å·æ•´æ•°ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。从"
+"å移é‡ä½ç½®å¼€å§‹ï¼Œè¯¥æ•°ç»„必须还分é…有至少 1 个字节的空间。"
+
+msgid ""
+"Encodes a [Variant] at the index of [param byte_offset] bytes. A sufficient "
+"space must be allocated, depending on the encoded variant's size. If [param "
+"allow_objects] is [code]false[/code], [Object]-derived values are not "
+"permitted and will instead be serialized as ID-only."
+msgstr ""
+"å°† [Variant] ç¼–ç ä¸ºå­—节åºåˆ—,起始ä½ç½®å­—节å移é‡ä¸º [param byte_offset]。必须分"
+"é…有足够的空间,空间大å°å–决于编ç åŽå˜ä½“的大å°ã€‚如果 [param allow_objects] "
+"为 [code]false[/code],则ä¸å…许派生自 [Object] 的值,åªä¼šå°†å…¶ ID 进行åºåˆ—化。"
+
+msgid ""
"Assigns the given value to all elements in the array. This can typically be "
"used together with [method resize] to create an array with a given size and "
"initialized elements."
@@ -18404,6 +35259,81 @@ msgstr ""
"å°çš„数组并åˆå§‹åŒ–元素。"
msgid ""
+"Converts ASCII/Latin-1 encoded array to [String]. Fast alternative to "
+"[method get_string_from_utf8] if the content is ASCII/Latin-1 only. Unlike "
+"the UTF-8 function this function maps every byte to a character in the "
+"array. Multibyte sequences will not be interpreted correctly. For parsing "
+"user input always use [method get_string_from_utf8]."
+msgstr ""
+"å°† ASCII/Latin-1 ç¼–ç çš„数组转æ¢ä¸º [String]。如果内容仅为 ASCII/Latin-1,则是"
+"比 [method get_string_from_utf8] 更快的选择。与 UTF-8 函数ä¸åŒï¼Œè¿™ä¸ªå‡½æ•°ä¼šå°†"
+"数组中的æ¯ä¸ªå­—节都映射到一个字符。多字节åºåˆ—无法正确解æžã€‚è¦è§£æžç”¨æˆ·çš„输入内"
+"容,请始终使用 [method get_string_from_utf8]。"
+
+msgid ""
+"Converts UTF-16 encoded array to [String]. If the BOM is missing, system "
+"endianness is assumed. Returns empty string if source array is not valid "
+"UTF-16 string."
+msgstr ""
+"å°† UTF-16 ç¼–ç çš„数组转æ¢ä¸º [String]。如果缺少 BOM,则å‡å®šä¸ºç³»ç»Ÿå­—节åºã€‚如果æº"
+"数组ä¸æ˜¯æœ‰æ•ˆçš„ UTF-16 字符串,则返回空字符串。"
+
+msgid ""
+"Converts UTF-32 encoded array to [String]. System endianness is assumed. "
+"Returns empty string if source array is not valid UTF-32 string."
+msgstr ""
+"å°† UTF-32 ç¼–ç çš„数组转æ¢ä¸º [String]。å‡å®šä¸ºç³»ç»Ÿå­—节åºã€‚如果æºæ•°ç»„ä¸æ˜¯æœ‰æ•ˆçš„ "
+"UTF-32 字符串,则返回空字符串。"
+
+msgid ""
+"Converts UTF-8 encoded array to [String]. Slower than [method "
+"get_string_from_ascii] but supports UTF-8 encoded data. Use this function if "
+"you are unsure about the source of the data. For user input this function "
+"should always be preferred. Returns empty string if source array is not "
+"valid UTF-8 string."
+msgstr ""
+"å°† UTF-8 ç¼–ç çš„数组转æ¢ä¸º [String]。比 [method get_string_from_ascii] 慢,但"
+"æ”¯æŒ UTF-8 ç¼–ç çš„æ•°æ®ã€‚ä¸ç¡®å®šæ•°æ®æ¥æºæ—¶è¯·ä½¿ç”¨æ­¤å‡½æ•°ã€‚对于用户的输入内容,应始"
+"终首选此函数。如果æºæ•°ç»„ä¸æ˜¯æœ‰æ•ˆçš„ UTF-8 字符串,则返回空字符串。"
+
+msgid "Returns [code]true[/code] if the array contains [param value]."
+msgstr "å¦‚æžœè¯¥æ•°ç»„åŒ…å« [param value],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if a valid [Variant] value can be decoded at the "
+"[param byte_offset]. Returns [code]false[/code] othewrise or when the value "
+"is [Object]-derived and [param allow_objects] is [code]false[/code]."
+msgstr ""
+"如果å¯ä»¥ä»Žå­—节åç§»é‡ [param byte_offset] 处解ç å‡ºæœ‰æ•ˆçš„ [Variant],则返回 "
+"[code]true[/code]。其他情况,或者当该值派生自 [Object] 而 [param "
+"allow_objects] 为 [code]false[/code] 时,则返回 [code]false[/code]。"
+
+msgid ""
+"Returns a hexadecimal representation of this array as a [String].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = PackedByteArray([11, 46, 255])\n"
+"print(array.hex_encode()) # Prints: 0b2eff\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new byte[] {11, 46, 255};\n"
+"GD.Print(array.HexEncode()); // Prints: 0b2eff\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回该数组的å六进制表示,类型为 [String]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var array = PackedByteArray([11, 46, 255])\n"
+"print(array.hex_encode()) # 输出:0b2eff\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var array = new byte[] {11, 46, 255};\n"
+"GD.Print(array.HexEncode()); // 输出:0b2eff\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Inserts a new element at a given position in the array. The position must be "
"valid, or at the end of the array ([code]idx == size()[/code])."
msgstr ""
@@ -18430,6 +35360,12 @@ msgstr "改å˜ç»™å®šç´¢å¼•å¤„的字节。"
msgid "Sorts the elements of the array in ascending order."
msgstr "将该数组中的元素按å‡åºæŽ’列。"
+msgid "Returns [code]true[/code] if contents of the arrays differ."
+msgstr "如果数组内容ä¸åŒï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "A packed array of [Color]s."
+msgstr "[Color] 紧缩数组。"
+
msgid "Constructs an empty [PackedColorArray]."
msgstr "构造空的 [PackedColorArray]。"
@@ -18437,12 +35373,26 @@ msgid ""
"Constructs a [PackedColorArray] as a copy of the given [PackedColorArray]."
msgstr "构造给定 [PackedColorArray] 的副本。"
+msgid ""
+"Constructs a new [PackedColorArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedColorArray]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedColorArray] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedColorArray]。"
+
msgid "Appends a value to the array."
msgstr "将一个值添加到数组中。"
msgid "Changes the [Color] at the given index."
msgstr "更改给定索引处的 [Color]。"
+msgid "Reference-counted version of [PackedDataContainer]."
+msgstr "[PackedDataContainer] 的引用计数版本。"
+
+msgid "A packed array of 32-bit floating-point values."
+msgstr "32 ä½æµ®ç‚¹æ•°ç´§ç¼©æ•°ç»„。"
+
msgid "Constructs an empty [PackedFloat32Array]."
msgstr "构造空的 [PackedFloat32Array]。"
@@ -18451,9 +35401,20 @@ msgid ""
"[PackedFloat32Array]."
msgstr "构造给定 [PackedFloat32Array] 的副本。"
+msgid ""
+"Constructs a new [PackedFloat32Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedFloat32Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedFloat32Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedFloat32Array]。"
+
msgid "Changes the float at the given index."
msgstr "更改给定索引处的浮点数。"
+msgid "A packed array of 64-bit floating-point values."
+msgstr "64 ä½æµ®ç‚¹æ•°ç´§ç¼©æ•°ç»„。"
+
msgid "Constructs an empty [PackedFloat64Array]."
msgstr "构造空的 [PackedFloat64Array]。"
@@ -18462,6 +35423,17 @@ msgid ""
"[PackedFloat64Array]."
msgstr "构造给定 [PackedFloat64Array] 的副本。"
+msgid ""
+"Constructs a new [PackedFloat64Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedFloat64Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedFloat64Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedFloat64Array]。"
+
+msgid "A packed array of 32-bit integers."
+msgstr "32 ä½æ•´æ•°ç´§ç¼©æ•°ç»„。"
+
msgid "Constructs an empty [PackedInt32Array]."
msgstr "构造空的 [PackedInt32Array]。"
@@ -18469,6 +35441,17 @@ msgid ""
"Constructs a [PackedInt32Array] as a copy of the given [PackedInt32Array]."
msgstr "构造给定 [PackedInt32Array] 的副本。"
+msgid ""
+"Constructs a new [PackedInt32Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedInt32Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedInt32Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedInt32Array]。"
+
+msgid "A packed array of 64-bit integers."
+msgstr "64 ä½æ•´æ•°ç´§ç¼©æ•°ç»„。"
+
msgid "Constructs an empty [PackedInt64Array]."
msgstr "构造空的 [PackedInt64Array]。"
@@ -18476,6 +35459,14 @@ msgid ""
"Constructs a [PackedInt64Array] as a copy of the given [PackedInt64Array]."
msgstr "构造给定 [PackedInt64Array] 的副本。"
+msgid ""
+"Constructs a new [PackedInt64Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedInt64Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedInt64Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedInt64Array]。"
+
msgid "An abstraction of a serialized scene."
msgstr "对åºåˆ—化场景的抽象。"
@@ -18513,6 +35504,9 @@ msgstr ""
"化的情况。\n"
"[b]注æ„:[/b]仅在编辑器构建中å¯ç”¨ã€‚"
+msgid "A packed array of [String]s."
+msgstr "[String] 紧缩数组。"
+
msgid "Constructs an empty [PackedStringArray]."
msgstr "构造空的 [PackedStringArray]。"
@@ -18520,14 +35514,25 @@ msgid ""
"Constructs a [PackedStringArray] as a copy of the given [PackedStringArray]."
msgstr "构造给定 [PackedStringArray] 的副本。"
+msgid ""
+"Constructs a new [PackedStringArray]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedStringArray]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedStringArray] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedStringArray]。"
+
msgid "Appends a string element at end of the array."
msgstr "在数组的末尾追加字符串元素。"
msgid "Changes the [String] at the given index."
msgstr "更改给定索引处的 [String]。"
+msgid "A packed array of [Vector2]s."
+msgstr "[Vector2] 紧缩数组。"
+
msgid "2D Navigation Astar Demo"
-msgstr "2D A 星导航演示"
+msgstr "2D 导航 Astar 演示"
msgid "Constructs an empty [PackedVector2Array]."
msgstr "构造空的 [PackedVector2Array]。"
@@ -18537,12 +35542,23 @@ msgid ""
"[PackedVector2Array]."
msgstr "构造给定 [PackedVector2Array] 的副本。"
+msgid ""
+"Constructs a new [PackedVector2Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedVector2Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedVector2Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedVector2Array]。"
+
msgid "Inserts a [Vector2] at the end."
msgstr "在末尾æ’入一个 [Vector2]。"
msgid "Changes the [Vector2] at the given index."
msgstr "更改给定索引处的 [Vector2]。"
+msgid "A packed array of [Vector3]s."
+msgstr "[Vector3] 紧缩数组。"
+
msgid "Constructs an empty [PackedVector3Array]."
msgstr "构造空的 [PackedVector3Array]。"
@@ -18551,6 +35567,14 @@ msgid ""
"[PackedVector3Array]."
msgstr "构造给定 [PackedVector3Array] 的副本。"
+msgid ""
+"Constructs a new [PackedVector3Array]. Optionally, you can pass in a generic "
+"[Array] that will be converted."
+msgstr "构造新 [PackedVector3Array]。你还å¯ä»¥ä¼ å…¥é€šç”¨ [Array] 进行转æ¢ã€‚"
+
+msgid "Appends a [PackedVector3Array] at the end of this array."
+msgstr "在该数组的末尾追加一个 [PackedVector3Array]。"
+
msgid "Inserts a [Vector3] at the end."
msgstr "在末尾æ’入一个 [Vector3]。"
@@ -18789,6 +35813,12 @@ msgid ""
"it will not scroll."
msgstr "å¤åˆ¶è§†å·®å›¾å±‚çš„è¿åŠ¨ã€‚如果一个轴被设置为 [code]0[/code],它将ä¸ä¼šæ»šåŠ¨ã€‚"
+msgid "Sets the maximum value range for the given parameter."
+msgstr "设置给定å‚数的最大值范围。"
+
+msgid "Sets the minimum value range for the given parameter."
+msgstr "设置给定å‚数的最å°å€¼èŒƒå›´ã€‚"
+
msgid "Each particle's rotation will be animated along this [CurveTexture]."
msgstr "æ¯ä¸ªç²’å­çš„旋转将沿ç€è¿™ä¸ª [CurveTexture] 动画。"
@@ -18798,6 +35828,9 @@ msgstr "æ¯ä¸ªç²’å­çš„动画å移将沿ç€è¿™ä¸ª [CurveTexture] å˜åŒ–。"
msgid "Each particle's animation speed will vary along this [CurveTexture]."
msgstr "æ¯ä¸ªç²’å­çš„动画速度将沿ç€è¿™ä¸ª [CurveTexture] å˜åŒ–。"
+msgid "Should collision take scale into account."
+msgstr "碰撞是å¦åº”该考虑缩放。"
+
msgid "Damping will vary along this [CurveTexture]."
msgstr "阻尼将沿ç€è¿™ä¸ª [CurveTexture] å˜åŒ–。"
@@ -18876,6 +35909,90 @@ msgid ""
msgstr "æ¯ä¸ªç²’å­çš„切å‘加速度将沿ç€è¿™ä¸ª [CurveTexture] å˜åŒ–。"
msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set initial velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置åˆå§‹é€Ÿåº¦å±žæ€§ã€‚"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set angular velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置角速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set orbital velocity properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置轨é“速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set linear acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置线速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set radial acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置径å‘加速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set tangential acceleration properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置切å‘加速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set damping properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置阻尼属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set angle properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置角度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set scale properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置缩放属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set hue variation properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置色相å˜åŒ–属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set animation speed properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置动画速度属性。"
+
+msgid ""
+"Use with [method set_param_min], [method set_param_max], and [method "
+"set_param_texture] to set animation offset properties."
+msgstr ""
+"与 [method set_param_min]ã€[method set_param_max] å’Œ [method "
+"set_param_texture] 一起使用,设置动画å移属性。"
+
+msgid ""
"Particles will be emitted at a position determined by sampling a random "
"point on the [member emission_point_texture]. Particle color will be "
"modulated by [member emission_color_texture]."
@@ -18893,6 +36010,17 @@ msgstr ""
"度和旋转将基于 [member emission_normal_texture] 进行设置。粒å­é¢œè‰²å°†ç”± "
"[member emission_color_texture] 调节。"
+msgid "Represents the size of the [enum SubEmitterMode] enum."
+msgstr "代表 [enum SubEmitterMode] 枚举的大å°ã€‚"
+
+msgid ""
+"No collision for particles. Particles will go through "
+"[GPUParticlesCollision3D] nodes."
+msgstr "ç²’å­æ²¡æœ‰ç¢°æ’žã€‚ç²’å­ä¼šç©¿è¿‡ [GPUParticlesCollision3D] 节点。"
+
+msgid "Represents the size of the [enum CollisionMode] enum."
+msgstr "代表 [enum CollisionMode] 枚举的大å°ã€‚"
+
msgid "Contains a [Curve2D] path for [PathFollow2D] nodes to follow."
msgstr "包å«ä¸€ä¸ª [Curve2D] 路径,供 [PathFollow2D] 节点éµå¾ªã€‚"
@@ -18960,20 +36088,143 @@ msgstr ""
msgid "The node's offset perpendicular to the curve."
msgstr "节点垂直于曲线的å移é‡ã€‚"
+msgid "Point sampler for a [Path3D]."
+msgstr "[Path3D] 的点采样器。"
+
msgid ""
"Allows or forbids rotation on one or more axes, depending on the [enum "
"RotationMode] constants being used."
msgstr ""
"å…许或ç¦æ­¢åœ¨ä¸€ä¸ªæˆ–多个轴上旋转,这å–决于使用的 [enum RotationMode] 常é‡ã€‚"
+msgid "Forbids the PathFollow3D to rotate."
+msgstr "ç¦æ­¢è¯¥ PathFollow3D 旋转。"
+
+msgid "Allows the PathFollow3D to rotate in the Y axis only."
+msgstr "å…许该 PathFollow3D 仅在 Y 轴上旋转。"
+
+msgid "Allows the PathFollow3D to rotate in both the X, and Y axes."
+msgstr "å…许该 PathFollow3D åŒæ—¶åœ¨ X å’Œ Y 轴上旋转。"
+
+msgid "Allows the PathFollow3D to rotate in any axis."
+msgstr "å…许该 PathFollow3D 在任æ„轴上旋转。"
+
msgid "Creates packages that can be loaded into a running project."
msgstr "创建å¯ä»¥åŠ è½½åˆ°æ­£åœ¨è¿è¡Œçš„项目中的包。"
msgid "Exposes performance-related data."
msgstr "公开与性能相关的数æ®ã€‚"
+msgid ""
+"The number of frames rendered in the last second. This metric is only "
+"updated once per second, even if queried more often. [i]Higher is better.[/i]"
+msgstr ""
+"上一秒渲染的帧数。该指标æ¯ç§’仅更新一次,与查询频率无关。[i]越高越好。[/i]"
+
+msgid "Time it took to complete one frame, in seconds. [i]Lower is better.[/i]"
+msgstr "完æˆä¸€å¸§æ‰€éœ€çš„时间,å•ä½ä¸ºç§’。[i]越低越好。[/i]"
+
+msgid ""
+"Time it took to complete one physics frame, in seconds. [i]Lower is better.[/"
+"i]"
+msgstr "完æˆä¸€ä¸ªç‰©ç†å¸§æ‰€éœ€çš„时间,å•ä½ä¸ºç§’。[i]越低越好。[/i]"
+
+msgid ""
+"Time it took to complete one navigation step, in seconds. This includes "
+"navigation map updates as well as agent avoidance calculations. [i]Lower is "
+"better.[/i]"
+msgstr ""
+"完æˆä¸€ä¸ªå¯¼èˆªæ­¥éª¤çš„时间,å•ä½ä¸ºç§’。包括导航地图的更新以åŠä»£ç†é¿éšœçš„计算。[i]越"
+"低越好。[/i]"
+
+msgid ""
+"Static memory currently used, in bytes. Not available in release builds. "
+"[i]Lower is better.[/i]"
+msgstr "当å‰ä½¿ç”¨çš„é™æ€å†…存,å•ä½ä¸ºå­—节。在å‘布版本中ä¸å¯ç”¨ã€‚[i]越低越好。[/i]"
+
+msgid ""
+"Available static memory. Not available in release builds. [i]Lower is better."
+"[/i]"
+msgstr "å¯ç”¨çš„é™æ€å†…存。在å‘布版本中ä¸å¯ç”¨ã€‚[i]越低越好。[/i]"
+
+msgid ""
+"Largest amount of memory the message queue buffer has used, in bytes. The "
+"message queue is used for deferred functions calls and notifications. "
+"[i]Lower is better.[/i]"
+msgstr ""
+"消æ¯é˜Ÿåˆ—缓冲区已使用的最大内存é‡ï¼Œå•ä½ä¸ºå­—节。消æ¯é˜Ÿåˆ—用于延迟函数调用和通"
+"知。[i]越低越好。[/i]"
+
+msgid ""
+"Number of objects currently instantiated (including nodes). [i]Lower is "
+"better.[/i]"
+msgstr "当å‰å®žä¾‹åŒ–的对象数(包括节点)。[i]越低越好。[/i]"
+
+msgid "Number of resources currently used. [i]Lower is better.[/i]"
+msgstr "当å‰ä½¿ç”¨çš„资æºæ•°ã€‚[i]越低越好。[/i]"
+
+msgid ""
+"Number of nodes currently instantiated in the scene tree. This also includes "
+"the root node. [i]Lower is better.[/i]"
+msgstr "当å‰åœ¨åœºæ™¯æ ‘中实例化的节点数。也包括根节点。[i]越低越好。[/i]"
+
+msgid ""
+"Number of orphan nodes, i.e. nodes which are not parented to a node of the "
+"scene tree. [i]Lower is better.[/i]"
+msgstr "孤立节点的数é‡ï¼Œå³çˆ¶èŠ‚点ä¸æ˜¯åœºæ™¯æ ‘节点的节点。[i]越低越好。[/i]"
+
+msgid ""
+"The amount of video memory used (texture and vertex memory combined, in "
+"bytes). Since this metric also includes miscellaneous allocations, this "
+"value is always greater than the sum of [constant RENDER_TEXTURE_MEM_USED] "
+"and [constant RENDER_BUFFER_MEM_USED]. [i]Lower is better.[/i]"
+msgstr ""
+"显存的使用é‡ï¼ˆçº¹ç†å’Œé¡¶ç‚¹å†…存之和,å•ä½ä¸ºå­—节)。由于该指标还包括其他æ‚项分"
+"é…,因此该值始终大于 [constant RENDER_TEXTURE_MEM_USED] å’Œ [constant "
+"RENDER_BUFFER_MEM_USED] 的总和。[i]越低越好。[/i]"
+
+msgid "The amount of texture memory used (in bytes). [i]Lower is better.[/i]"
+msgstr "纹ç†å†…存的使用é‡ï¼ˆå•ä½ä¸ºå­—节)。[i]越低越好。[/i]"
+
+msgid ""
+"The amount of render buffer memory used (in bytes). [i]Lower is better.[/i]"
+msgstr "渲染缓冲区内存的使用é‡ï¼ˆå•ä½ä¸ºå­—节)。[i]越低越好。[/i]"
+
+msgid ""
+"Number of active [RigidBody2D] nodes in the game. [i]Lower is better.[/i]"
+msgstr "游æˆä¸­æ´»è·ƒçš„ [RigidBody2D] 节点数。[i]越低越好。[/i]"
+
+msgid ""
+"Number of collision pairs in the 2D physics engine. [i]Lower is better.[/i]"
+msgstr "2D 物ç†å¼•æ“Žä¸­ç¢°æ’žå¯¹çš„æ•°é‡ã€‚[i]越低越好。[/i]"
+
+msgid "Number of islands in the 2D physics engine. [i]Lower is better.[/i]"
+msgstr "2D 物ç†å¼•æ“Žä¸­å­¤å²›çš„æ•°é‡ã€‚[i]越低越好。[/i]"
+
+msgid ""
+"Number of active [RigidBody3D] and [VehicleBody3D] nodes in the game. "
+"[i]Lower is better.[/i]"
+msgstr ""
+"游æˆä¸­æ´»è·ƒçš„ [RigidBody3D] å’Œ [VehicleBody3D] 节点数。[i]越低越好。[/i]"
+
+msgid ""
+"Number of collision pairs in the 3D physics engine. [i]Lower is better.[/i]"
+msgstr "3D 物ç†å¼•æ“Žä¸­ç¢°æ’žå¯¹çš„æ•°é‡ã€‚[i]越低越好。[/i]"
+
+msgid "Number of islands in the 3D physics engine. [i]Lower is better.[/i]"
+msgstr "3D 物ç†å¼•æ“Žä¸­å­¤å²›çš„æ•°é‡ã€‚[i]越低越好。[/i]"
+
+msgid "Output latency of the [AudioServer]. [i]Lower is better.[/i]"
+msgstr "[AudioServer] 的输出延迟。[i]越低越好。[/i]"
+
+msgid "Number of navigation mesh polygons in the [NavigationServer3D]."
+msgstr "[NavigationServer3D] 中导航网格多边形的数é‡ã€‚"
+
+msgid "Number of navigation mesh polygon edges in the [NavigationServer3D]."
+msgstr "[NavigationServer3D] 中导航网格多边形边缘的数é‡ã€‚"
+
msgid "Represents the size of the [enum Monitor] enum."
-msgstr "表示 [enum Monitor] 枚举的大å°ã€‚"
+msgstr "代表 [enum Monitor] 枚举的大å°ã€‚"
msgid ""
"Called during physics processing, allowing you to read and safely modify the "
@@ -18986,6 +36237,9 @@ msgstr ""
"会和通常的物ç†è¡Œä¸ºä¸€èµ·ç”Ÿæ•ˆï¼Œä½†æ˜¯ä½ å¯ä»¥é€šè¿‡ [member custom_integrator] 属性ç¦"
"用默认行为,为物体施加完全自定义的åˆåŠ›ã€‚"
+msgid "Sets the body's transform."
+msgstr "设置该物体的å˜æ¢ã€‚"
+
msgid ""
"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
"[code]1[/code] (full bounciness)."
@@ -19003,6 +36257,15 @@ msgstr ""
"了碰撞å“åº”ä¹‹å¤–ï¼Œç‰©ä½“å°†ä»…æ ¹æ® [method _integrate_forces] 函数确定的方å¼ç§»åŠ¨"
"(如果已定义)。"
+msgid "Sets the joint's transform."
+msgstr "设置该关节的å˜æ¢ã€‚"
+
+msgid "Sets the joint's rotation in radians."
+msgstr "设置该关节的旋转,å•ä½ä¸ºå¼§åº¦ã€‚"
+
+msgid "Sets the joint type. See [enum JointType] for possible values."
+msgstr "设置关节的类型。å¯èƒ½çš„å€¼è§ [enum JointType]。"
+
msgid ""
"The body's linear velocity in units per second. Can be used sporadically, "
"but [b]don't set this every frame[/b], because physics may run in another "
@@ -19100,13 +36363,22 @@ msgid "Base class for all objects affected by physics in 3D space."
msgstr "在 3D 空间中å—物ç†å½±å“的所有对象的基类。"
msgid "Lock the body's rotation in the X axis."
-msgstr "é”定实体在 X 轴上的旋转。"
+msgstr "é”定物体在 X 轴上的旋转。"
msgid "Lock the body's rotation in the Y axis."
-msgstr "é”定实体在 Y 轴上的旋转。"
+msgstr "é”定物体在 Y 轴上的旋转。"
msgid "Lock the body's rotation in the Z axis."
-msgstr "é”定实体在 Z 轴上的旋转。"
+msgstr "é”定物体在 Z 轴上的旋转。"
+
+msgid "Lock the body's linear movement in the X axis."
+msgstr "é”定物体在 X 轴上的线性è¿åŠ¨ã€‚"
+
+msgid "Lock the body's linear movement in the Y axis."
+msgstr "é”定物体在 Y 轴上的线性è¿åŠ¨ã€‚"
+
+msgid "Lock the body's linear movement in the Z axis."
+msgstr "é”定物体在 Z 轴上的线性è¿åŠ¨ã€‚"
msgid "Ray-casting"
msgstr "å‘射射线"
@@ -19236,10 +36508,159 @@ msgid ""
"If [code]true[/code], the query will take [PhysicsBody2D]s into account."
msgstr "如果为 [code]true[/code],查询将考虑 [PhysicsBody2D]。"
+msgid ""
+"If [code]true[/code], the query will detect a hit when starting inside "
+"shapes. In this case the collision normal will be [code]Vector2(0, 0)[/"
+"code]. Does not affect concave polygon shapes."
+msgstr ""
+"如果为 [code]true[/code],查询会在从形状内部开始时检测到命中。在此情况下,碰"
+"撞法线将为 [code]Vector2(0, 0)[/code]。ä¸ä¼šå½±å“凹多边形形状。"
+
+msgid ""
+"If [code]true[/code], the query will detect a hit when starting inside "
+"shapes. In this case the collision normal will be [code]Vector3(0, 0, 0)[/"
+"code]. Does not affect concave polygon shapes or heightmap shapes."
+msgstr ""
+"如果为 [code]true[/code],查询会在从形状内部开始时检测到命中。在此情况下,碰"
+"撞法线将为 [code]Vector3(0, 0, 0)[/code]。ä¸ä¼šå½±å“凹多边形形状和高度图形状。"
+
msgid "Server interface for low-level 2D physics access."
msgstr "用于底层 2D 物ç†è®¿é—®æœåŠ¡çš„接å£ã€‚"
msgid ""
+"This is the constant for creating circle shapes. A circle shape only has a "
+"radius. It can be used for intersections and inside/outside checks."
+msgstr ""
+"这是创建圆形的常é‡ã€‚一个圆的形状åªæœ‰ä¸€ä¸ªåŠå¾„。它å¯ä»¥ç”¨äºŽäº¤ç‚¹å’Œå†…/外侧检查。"
+
+msgid ""
+"This is the constant for creating rectangle shapes. A rectangle shape is "
+"defined by a width and a height. It can be used for intersections and inside/"
+"outside checks."
+msgstr ""
+"这是用于创建矩形形状的常é‡ã€‚矩形形状是由宽度和高度定义的。它å¯ä»¥ç”¨äºŽäº¤ç‚¹å’Œå†…/"
+"外侧检查。"
+
+msgid ""
+"This is the constant for creating capsule shapes. A capsule shape is defined "
+"by a radius and a length. It can be used for intersections and inside/"
+"outside checks."
+msgstr ""
+"这是创建胶囊形状的常é‡ã€‚一个胶囊形状由一个åŠå¾„和一个长度定义。它å¯ä»¥ç”¨äºŽäº¤ç‚¹"
+"和内/外侧检查。"
+
+msgid ""
+"This is the constant for creating concave polygon shapes. A polygon is "
+"defined by a list of points. It can be used for intersections checks, but "
+"not for inside/outside checks."
+msgstr ""
+"这是创建凹形多边形的常é‡ã€‚一个多边形是由一个点的列表定义的。它å¯ä»¥ç”¨äºŽäº¤å‰ç‚¹"
+"检查,但ä¸èƒ½ç”¨äºŽå†…/外侧检查。"
+
+msgid ""
+"This constant is used internally by the engine. Any attempt to create this "
+"kind of shape results in an error."
+msgstr "引擎内部会使用这个常é‡ã€‚任何试图创建这ç§å½¢çŠ¶çš„行为都会导致错误。"
+
+msgid ""
+"This area does not affect gravity/damp. These are generally areas that exist "
+"only to detect collisions, and objects entering or exiting them."
+msgstr ""
+"这个区域ä¸å½±å“é‡åŠ›/阻尼。这些一般都是åªå­˜åœ¨äºŽæ£€æµ‹ç¢°æ’žçš„区域,以åŠè¿›å…¥æˆ–离开它"
+"们的物体。"
+
+msgid ""
+"This area adds its gravity/damp values to whatever has been calculated so "
+"far. This way, many overlapping areas can combine their physics to make "
+"interesting effects."
+msgstr ""
+"此区域把它的é‡åŠ›/阻尼加到目å‰å·²ç»è®¡ç®—过的对象上。这样一æ¥ï¼Œè®¸å¤šé‡å çš„区域å¯ä»¥"
+"结åˆå®ƒä»¬çš„物ç†è¿ç®—æ¥äº§ç”Ÿæœ‰è¶£çš„效果。"
+
+msgid ""
+"This area adds its gravity/damp values to whatever has been calculated so "
+"far. Then stops taking into account the rest of the areas, even the default "
+"one."
+msgstr ""
+"这个区域把它的é‡åŠ›/阻尼加到迄今为止已ç»è®¡ç®—出æ¥çš„任何东西上。然åŽåœæ­¢è€ƒè™‘其余"
+"的区域,甚至默认的区域。"
+
+msgid ""
+"This area replaces any gravity/damp, even the default one, and stops taking "
+"into account the rest of the areas."
+msgstr "这个区域å–代了任何é‡åŠ›/阻尼,甚至是默认的,并åœæ­¢è€ƒè™‘其余的区域。"
+
+msgid ""
+"This area replaces any gravity/damp calculated so far, but keeps calculating "
+"the rest of the areas, down to the default one."
+msgstr ""
+"这个区域å–代了到目å‰ä¸ºæ­¢è®¡ç®—的任何é‡åŠ›/阻尼,但继续计算其余的区域,直到默认的"
+"区域。"
+
+msgid "Represents the size of the [enum BodyParameter] enum."
+msgstr "代表 [enum BodyParameter] 枚举的大å°ã€‚"
+
+msgid "Constant to set/get the current transform matrix of the body."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰å˜æ¢çŸ©é˜µã€‚"
+
+msgid "Constant to set/get the current linear velocity of the body."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰çº¿é€Ÿåº¦ã€‚"
+
+msgid "Constant to set/get the current angular velocity of the body."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰è§’速度。"
+
+msgid "Constant to sleep/wake up a body, or to get whether it is sleeping."
+msgstr "常é‡ï¼Œç”¨äºŽä½¿ç‰©ä½“沉ç¡/唤醒,或得到它是å¦åœ¨æ²‰ç¡ã€‚"
+
+msgid "Constant to set/get whether the body can sleep."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体是å¦å¯ä»¥ä¼‘眠。"
+
+msgid "Constant to create pin joints."
+msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ é’‰å…³èŠ‚。"
+
+msgid "Constant to create groove joints."
+msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ æ§½å…³èŠ‚。"
+
+msgid "Constant to create damped spring joints."
+msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ æœ‰é˜»å°¼çš„弹簧关节。"
+
+msgid "Represents the size of the [enum JointType] enum."
+msgstr "代表 [enum JointType] 枚举的大å°ã€‚"
+
+msgid ""
+"Enables continuous collision detection by raycasting. It is faster than "
+"shapecasting, but less precise."
+msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但ä¸å¤Ÿç²¾ç¡®ã€‚"
+
+msgid ""
+"Enables continuous collision detection by shapecasting. It is the slowest "
+"CCD method, and the most precise."
+msgstr "通过形å˜å®žçŽ°è¿žç»­çš„碰撞检测。它是最慢的 CCD 方法,也是最精确的。"
+
+msgid ""
+"The value of the first parameter and area callback function receives, when "
+"an object enters one of its shapes."
+msgstr "当对象进入其形状之一时,第一个å‚数和区域回调函数接收的值。"
+
+msgid ""
+"The value of the first parameter and area callback function receives, when "
+"an object exits one of its shapes."
+msgstr "当对象退出其形状之一时,第一个å‚数和区域回调函数接收的值。"
+
+msgid "Constant to get the number of objects that are not sleeping."
+msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–未处于ç¡çœ çŠ¶æ€çš„对象的数é‡ã€‚"
+
+msgid "Constant to get the number of possible collisions."
+msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–å¯èƒ½çš„碰撞数。"
+
+msgid ""
+"Constant to get the number of space regions where a collision could occur."
+msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–å¯èƒ½å‘生碰撞的空间区域数。"
+
+msgid "Server interface for low-level physics access."
+msgstr "用于低级物ç†è®¿é—®çš„æœåŠ¡å™¨æŽ¥å£ã€‚"
+
+msgid ""
"Adds a shape to the area, along with a transform matrix. Shapes are usually "
"referenced by their index, so you should track which shape has a given index."
msgstr ""
@@ -19256,21 +36677,16 @@ msgid ""
"be reassigned later."
msgstr "从一个区域移除所有形状。它ä¸ä¼šåˆ é™¤å½¢çŠ¶ï¼Œå› æ­¤å®ƒä»¬å¯ä»¥ç¨åŽé‡æ–°åˆ†é…。"
-msgid ""
-"Creates an [Area2D]. After creating an [Area2D] with this method, assign it "
-"to a space using [method area_set_space] to use the created [Area2D] in the "
-"physics world."
-msgstr ""
-"创建一个 [Area2D]。用这个方法创建了一个[Area2D]åŽï¼Œä½¿ç”¨[method "
-"area_set_space]将其分é…给一个空间,以便在物ç†ä¸–界中使用创建的[Area2D]。"
+msgid "Creates an [Area3D]."
+msgstr "创建 [Area3D]。"
msgid "Gets the instance ID of the object the area is assigned to."
msgstr "获å–区域分é…给的对象的实例 ID。"
msgid ""
-"Returns an area parameter value. See [enum AreaParameter] for a list of "
-"available parameters."
-msgstr "返回区域å‚数值。有关å¯ç”¨å‚数的列表,请å‚阅 [enum AreaParameter]。"
+"Returns an area parameter value. A list of available parameters is on the "
+"[enum AreaParameter] constants."
+msgstr "返回区域å‚数值。å¯ç”¨å‚数列表ä½äºŽ [enum AreaParameter] 常é‡ä¸Šã€‚"
msgid "Returns the [RID] of the nth shape of an area."
msgstr "返回区域的第 n 个形状的 [RID]。"
@@ -19319,9 +36735,12 @@ msgstr ""
"5:物体进入/离开区域的形状指数。"
msgid ""
-"Sets the value for an area parameter. See [enum AreaParameter] for a list of "
-"available parameters."
-msgstr "设置区域å‚数的值。有关å¯ç”¨å‚数的列表,请å‚阅 [enum AreaParameter]。"
+"Sets the value for an area parameter. A list of available parameters is on "
+"the [enum AreaParameter] constants."
+msgstr "设置é¢ç§¯å‚数的值。å¯ç”¨å‚数列表ä½äºŽ [enum AreaParameter] 常é‡ä¸Šã€‚"
+
+msgid "Sets object pickable with rays."
+msgstr "设置å¯ä½¿ç”¨å…‰çº¿æ‹¾å–的对象。"
msgid ""
"Substitutes a given area shape by another. The old shape is selected by its "
@@ -19329,9 +36748,6 @@ msgid ""
msgstr ""
"用å¦ä¸€ç§å½¢çŠ¶ä»£æ›¿ä¸€ç§å½¢çŠ¶ã€‚旧的形状由它的索引选择,新的形状由它的[RID]选择。"
-msgid "Disables a given shape in an area."
-msgstr "在区域中ç¦ç”¨ä¸€ä¸ªç»™å®šçš„形状。"
-
msgid "Sets the transform matrix for an area shape."
msgstr "设置区域形状的å˜æ¢çŸ©é˜µã€‚"
@@ -19354,17 +36770,14 @@ msgstr ""
msgid "Removes all shapes from a body."
msgstr "从物体上移除所有碰撞形状。"
-msgid "Creates a physics body."
-msgstr "创建一个物ç†ä½“。"
-
msgid "Returns the physics layer or layers a body belongs to."
msgstr "返回物体所属的物ç†å±‚或层。"
msgid "Returns the physics layer or layers a body can collide with."
msgstr "返回物体å¯ä»¥ç¢°æ’žçš„物ç†å±‚或层。"
-msgid "Returns the continuous collision detection mode."
-msgstr "返回连续碰撞检测模å¼ã€‚"
+msgid "Returns the body's collision priority."
+msgstr "返回该物体的碰撞优先级。"
msgid ""
"Returns the maximum contacts that can be reported. See [method "
@@ -19375,9 +36788,9 @@ msgid "Returns the body mode."
msgstr "返回物体模å¼ã€‚"
msgid ""
-"Returns the value of a body parameter. See [enum BodyParameter] for a list "
-"of available parameters."
-msgstr "返回物体å‚数的值。请å‚阅 [enum BodyParameter] 获å–å¯ç”¨å‚数列表。"
+"Returns the value of a body parameter. A list of available parameters is on "
+"the [enum BodyParameter] constants."
+msgstr "返回物体å‚数的值。å¯ç”¨å‚数列表ä½äºŽ [enum BodyParameter] 常é‡ä¸Šã€‚"
msgid "Returns the [RID] of the nth shape of a body."
msgstr "返回物体的第 n 个碰撞形状的 [RID]。"
@@ -19395,14 +36808,23 @@ msgid "Returns a body state."
msgstr "返回物体的状æ€ã€‚"
msgid ""
+"If [code]true[/code], the continuous collision detection mode is enabled."
+msgstr "如果为 [code]true[/code],则å¯ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹æ¨¡å¼ã€‚"
+
+msgid ""
"Returns whether a body uses a callback function to calculate its own physics "
"(see [method body_set_force_integration_callback])."
msgstr ""
"返回一个物体是å¦ä½¿ç”¨å›žè°ƒå‡½æ•°æ¥è®¡ç®—它自己的物ç†å€¼ï¼ˆè§ [method "
"body_set_force_integration_callback])。"
-msgid "Removes a body from the list of bodies exempt from collisions."
-msgstr "从å…于碰撞的物体列表中移除一个物体。"
+msgid ""
+"Removes a body from the list of bodies exempt from collisions.\n"
+"Continuous collision detection tries to predict where a moving body will "
+"collide, instead of moving it and correcting its movement if it collided."
+msgstr ""
+"从å…于碰撞的实体列表中删除实体。\n"
+"连续碰撞检测å°è¯•é¢„测è¿åŠ¨ç‰©ä½“碰撞的ä½ç½®ï¼Œè€Œä¸æ˜¯åœ¨ç¢°æ’žæ—¶ç§»åŠ¨ç‰©ä½“并纠正其è¿åŠ¨ã€‚"
msgid ""
"Removes a shape from a body. The shape is not deleted, so it can be reused "
@@ -19423,18 +36845,19 @@ msgstr "设置物体所属的物ç†å±‚或层。"
msgid "Sets the physics layer or layers a body can collide with."
msgstr "设置物ç†å±‚或身体å¯ä»¥ç¢°æ’žçš„层。"
+msgid "Sets the body's collision priority."
+msgstr "设置该物体的碰撞优先级。"
+
msgid ""
-"Sets the continuous collision detection mode using one of the [enum CCDMode] "
-"constants.\n"
+"If [code]true[/code], the continuous collision detection mode is enabled.\n"
"Continuous collision detection tries to predict where a moving body will "
"collide, instead of moving it and correcting its movement if it collided."
msgstr ""
-"设置使用 [enum CCDMode] 常é‡ä¹‹ä¸€çš„连续碰撞检测模å¼ã€‚\n"
-"连续碰撞检测试图预测一个è¿åŠ¨ä½“将在哪里å‘生碰撞,而ä¸æ˜¯ç§»åŠ¨å®ƒå¹¶åœ¨å®ƒå‘生碰撞时"
-"纠正其è¿åŠ¨ã€‚"
+"如果为 [code]true[/code],则å¯ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹æ¨¡å¼ã€‚\n"
+"连续碰撞检测å°è¯•é¢„测è¿åŠ¨ç‰©ä½“碰撞的ä½ç½®ï¼Œè€Œä¸æ˜¯åœ¨ç¢°æ’žæ—¶ç§»åŠ¨ç‰©ä½“并纠正其è¿åŠ¨ã€‚"
-msgid "Sets the body mode using one of the [enum BodyMode] constants."
-msgstr "使用 [enum BodyMode] 常é‡ä¹‹ä¸€è®¾ç½® body 模å¼ã€‚"
+msgid "Sets the body mode, from one of the [enum BodyMode] constants."
+msgstr "从 [enum BodyMode] 常é‡ä¹‹ä¸€è®¾ç½®ä¸»ä½“模å¼ã€‚"
msgid ""
"Sets whether a body uses a callback function to calculate its own physics "
@@ -19444,9 +36867,9 @@ msgstr ""
"body_set_force_integration_callback])。"
msgid ""
-"Sets a body parameter. See [enum BodyParameter] for a list of available "
-"parameters."
-msgstr "设置主体å‚数。请å‚阅 [enum BodyParameter] 获å–å¯ç”¨å‚数列表。"
+"Sets a body parameter. A list of available parameters is on the [enum "
+"BodyParameter] constants."
+msgstr "设置物体å‚数。å¯ç”¨å‚数列表ä½äºŽ [enum BodyParameter] 常é‡ä¸Šã€‚"
msgid ""
"Substitutes a given body shape by another. The old shape is selected by its "
@@ -19461,357 +36884,6 @@ msgstr "设置物体形状的å˜æ¢çŸ©é˜µã€‚"
msgid "Assigns a space to the body (see [method space_create])."
msgstr "给物体分é…ä¸€ä¸ªç©ºé—´ï¼ˆè§ [method space_create])。"
-msgid ""
-"Sets a body state using one of the [enum BodyState] constants.\n"
-"Note that the method doesn't take effect immediately. The state will change "
-"on the next physics frame."
-msgstr ""
-"使用 [enum BodyState] 常é‡ä¹‹ä¸€è®¾ç½®ç‰©ä½“状æ€ã€‚\n"
-"请注æ„,该方法ä¸ä¼šç«‹å³ç”Ÿæ•ˆã€‚状æ€å°†åœ¨ä¸‹ä¸€ä¸ªç‰©ç†å¸§å‘生å˜åŒ–。"
-
-msgid ""
-"Returns information about the current state of the 2D physics engine. See "
-"[enum ProcessInfo] for a list of available states."
-msgstr ""
-"返回关于 2D 物ç†å¼•æ“Žå½“å‰çŠ¶æ€çš„ä¿¡æ¯ã€‚有关å¯ç”¨çŠ¶æ€åˆ—表,请å‚阅 [enum "
-"ProcessInfo]。"
-
-msgid "Returns the value of a joint parameter."
-msgstr "返回关节å‚数的值。"
-
-msgid "Returns a joint's type (see [enum JointType])."
-msgstr "è¿”å›žä¸€ä¸ªå…³èŠ‚çš„ç±»åž‹ï¼ˆè§ [enum JointType])。"
-
-msgid ""
-"Sets a joint parameter. See [enum JointParam] for a list of available "
-"parameters."
-msgstr "设置关节å‚数。有关å¯ç”¨å‚数的列表,请å‚阅 [enum JointParam]。"
-
-msgid "Activates or deactivates the 2D physics engine."
-msgstr "激活或åœç”¨2D物ç†å¼•æ“Žã€‚"
-
-msgid "Returns the shape data."
-msgstr "返回形状数æ®ã€‚"
-
-msgid "Returns a shape's type (see [enum ShapeType])."
-msgstr "è¿”å›žä¸€ä¸ªå½¢çŠ¶çš„ç±»åž‹ï¼ˆè§ [enum ShapeType])。"
-
-msgid ""
-"Sets the shape data that defines its shape and size. The data to be passed "
-"depends on the kind of shape created [method shape_get_type]."
-msgstr ""
-"设置定义形状和大å°çš„形状数æ®ã€‚è¦ä¼ é€’çš„æ•°æ®å–决于创建的形状的类型 [method "
-"shape_get_type]。"
-
-msgid ""
-"Creates a space. A space is a collection of parameters for the physics "
-"engine that can be assigned to an area or a body. It can be assigned to an "
-"area with [method area_set_space], or to a body with [method body_set_space]."
-msgstr ""
-"创建一个空间。空间是物ç†å¼•æ“Žçš„å‚数集åˆï¼Œå¯ä»¥åˆ†é…给区域或主体。它å¯ä»¥é€šè¿‡ "
-"[method area_set_space] 分é…给一个区域,或者通过 [method body_set_space] 分é…"
-"给一个主体。"
-
-msgid "Returns the value of a space parameter."
-msgstr "返回空间å‚数的值。"
-
-msgid "Returns whether the space is active."
-msgstr "返回该空间是å¦æ˜¯æ´»åŠ¨çš„。"
-
-msgid ""
-"Marks a space as active. It will not have an effect, unless it is assigned "
-"to an area or body."
-msgstr "将空间标记为活动空间。它ä¸ä¼šæœ‰æ•ˆæžœï¼Œé™¤éžå®ƒè¢«åˆ†é…到一个区域或物体。"
-
-msgid ""
-"Sets the value for a space parameter. See [enum SpaceParameter] for a list "
-"of available parameters."
-msgstr "设置空间å‚数的值。å‚阅 [enum SpaceParameter] 获å–å¯ç”¨å‚数列表。"
-
-msgid ""
-"Constant to set/get the maximum distance a pair of bodies has to move before "
-"their collision status has to be recalculated."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–一对物体在其碰撞状æ€è¢«é‡æ–°è®¡ç®—之å‰çš„最大移动è·ç¦»ã€‚"
-
-msgid ""
-"Constant to set/get the maximum distance a shape can penetrate another shape "
-"before it is considered a collision."
-msgstr "常é‡ï¼Œç”¨æ¥è®¾ç½®/得到一个形状在被认为碰撞之å‰ç©¿é€å¦ä¸€ä¸ªå½¢çŠ¶çš„最大è·ç¦»ã€‚"
-
-msgid ""
-"Constant to set/get the threshold linear velocity of activity. A body marked "
-"as potentially inactive for both linear and angular velocity will be put to "
-"sleep after the time given."
-msgstr ""
-"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–活跃的阈值线速度。一个被标记为线性速度和角速度都å¯èƒ½ä¸æ´»è·ƒ"
-"的物体将在给定的时间åŽè¿›å…¥ç¡çœ çŠ¶æ€ã€‚"
-
-msgid ""
-"Constant to set/get the threshold angular velocity of activity. A body "
-"marked as potentially inactive for both linear and angular velocity will be "
-"put to sleep after the time given."
-msgstr ""
-"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–活动的阈值角速度。一个被标记为线性和角速度都å¯èƒ½ä¸æ´»è·ƒçš„物"
-"体,在给定的时间åŽå°†ä¼šè¿›å…¥ç¡çœ çŠ¶æ€ã€‚"
-
-msgid ""
-"Constant to set/get the maximum time of activity. A body marked as "
-"potentially inactive for both linear and angular velocity will be put to "
-"sleep after this time."
-msgstr ""
-"常é‡ï¼Œç”¨äºŽè®¾ç½®/获得最大的活动时间。一个被标记为线速度和角速度都å¯èƒ½ä¸æ´»åŠ¨çš„物"
-"体,在这个时间之åŽå°†è¢«ç½®å…¥ç¡çœ çŠ¶æ€ã€‚"
-
-msgid ""
-"Constant to set/get the default solver bias for all physics constraints. A "
-"solver bias is a factor controlling how much two objects \"rebound\", after "
-"violating a constraint, to avoid leaving them in that state because of "
-"numerical imprecision."
-msgstr ""
-"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–所有物ç†çº¦æŸçš„默认求解器å置。解算器å置是一个控制两个物体"
-"在è¿å约æŸåŽâ€œåå¼¹â€ç¨‹åº¦çš„因素,以é¿å…由于数值ä¸ç²¾ç¡®è€Œä½¿å®ƒä»¬å¤„于这ç§çŠ¶æ€ã€‚"
-
-msgid ""
-"This is the constant for creating circle shapes. A circle shape only has a "
-"radius. It can be used for intersections and inside/outside checks."
-msgstr ""
-"这是创建圆形的常é‡ã€‚一个圆的形状åªæœ‰ä¸€ä¸ªåŠå¾„。它å¯ä»¥ç”¨äºŽäº¤ç‚¹å’Œå†…/外侧检查。"
-
-msgid ""
-"This is the constant for creating rectangle shapes. A rectangle shape is "
-"defined by a width and a height. It can be used for intersections and inside/"
-"outside checks."
-msgstr ""
-"这是用于创建矩形形状的常é‡ã€‚矩形形状是由宽度和高度定义的。它å¯ä»¥ç”¨äºŽäº¤ç‚¹å’Œå†…/"
-"外侧检查。"
-
-msgid ""
-"This is the constant for creating capsule shapes. A capsule shape is defined "
-"by a radius and a length. It can be used for intersections and inside/"
-"outside checks."
-msgstr ""
-"这是创建胶囊形状的常é‡ã€‚一个胶囊形状由一个åŠå¾„和一个长度定义。它å¯ä»¥ç”¨äºŽäº¤ç‚¹"
-"和内/外侧检查。"
-
-msgid ""
-"This is the constant for creating convex polygon shapes. A polygon is "
-"defined by a list of points. It can be used for intersections and inside/"
-"outside checks. Unlike the [member CollisionPolygon2D.polygon] property, "
-"polygons modified with [method shape_set_data] do not verify that the points "
-"supplied form is a convex polygon."
-msgstr ""
-"这是用于创建凸多边形的常é‡ã€‚一个多边形是由一个点的列表定义的。它å¯ä»¥ç”¨äºŽäº¤ç‚¹"
-"和内/外侧检查。与 [member CollisionPolygon2D.polygon] 属性ä¸åŒï¼Œç”¨ [method "
-"shape_set_data] 修改的多边形并ä¸éªŒè¯æ‰€æ供的点的形å¼æ˜¯ä¸€ä¸ªå‡¸å½¢å¤šè¾¹å½¢ã€‚"
-
-msgid ""
-"This is the constant for creating concave polygon shapes. A polygon is "
-"defined by a list of points. It can be used for intersections checks, but "
-"not for inside/outside checks."
-msgstr ""
-"这是创建凹形多边形的常é‡ã€‚一个多边形是由一个点的列表定义的。它å¯ä»¥ç”¨äºŽäº¤å‰ç‚¹"
-"检查,但ä¸èƒ½ç”¨äºŽå†…/外侧检查。"
-
-msgid ""
-"This constant is used internally by the engine. Any attempt to create this "
-"kind of shape results in an error."
-msgstr "引擎内部会使用这个常é‡ã€‚任何试图创建这ç§å½¢çŠ¶çš„行为都会导致错误。"
-
-msgid "Constant to set/get gravity strength in an area."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å¼ºåº¦ã€‚"
-
-msgid "Constant to set/get gravity vector/center in an area."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å‘é‡/中心。"
-
-msgid ""
-"Constant to set/get whether the gravity vector of an area is a direction, or "
-"a center point."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å‘é‡æ˜¯æ–¹å‘,还是中心点。"
-
-msgid "Constant to set/get the priority (order of processing) of an area."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域的优先级(处ç†é¡ºåºï¼‰ã€‚"
-
-msgid ""
-"This area does not affect gravity/damp. These are generally areas that exist "
-"only to detect collisions, and objects entering or exiting them."
-msgstr ""
-"这个区域ä¸å½±å“é‡åŠ›/阻尼。这些一般都是åªå­˜åœ¨äºŽæ£€æµ‹ç¢°æ’žçš„区域,以åŠè¿›å…¥æˆ–离开它"
-"们的物体。"
-
-msgid ""
-"This area adds its gravity/damp values to whatever has been calculated so "
-"far. This way, many overlapping areas can combine their physics to make "
-"interesting effects."
-msgstr ""
-"此区域把它的é‡åŠ›/阻尼加到目å‰å·²ç»è®¡ç®—过的对象上。这样一æ¥ï¼Œè®¸å¤šé‡å çš„区域å¯ä»¥"
-"结åˆå®ƒä»¬çš„物ç†è¿ç®—æ¥äº§ç”Ÿæœ‰è¶£çš„效果。"
-
-msgid ""
-"This area adds its gravity/damp values to whatever has been calculated so "
-"far. Then stops taking into account the rest of the areas, even the default "
-"one."
-msgstr ""
-"这个区域把它的é‡åŠ›/阻尼加到迄今为止已ç»è®¡ç®—出æ¥çš„任何东西上。然åŽåœæ­¢è€ƒè™‘其余"
-"的区域,甚至默认的区域。"
-
-msgid ""
-"This area replaces any gravity/damp, even the default one, and stops taking "
-"into account the rest of the areas."
-msgstr "这个区域å–代了任何é‡åŠ›/阻尼,甚至是默认的,并åœæ­¢è€ƒè™‘其余的区域。"
-
-msgid ""
-"This area replaces any gravity/damp calculated so far, but keeps calculating "
-"the rest of the areas, down to the default one."
-msgstr ""
-"这个区域å–代了到目å‰ä¸ºæ­¢è®¡ç®—的任何é‡åŠ›/阻尼,但继续计算其余的区域,直到默认的"
-"区域。"
-
-msgid "Constant to set/get a body's bounce factor."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的å弹系数。"
-
-msgid "Constant to set/get a body's friction."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的摩擦力。"
-
-msgid "Constant to set/get a body's mass."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的质é‡ã€‚"
-
-msgid "Constant to set/get a body's inertia."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的惯性。"
-
-msgid "Constant to set/get a body's gravity multiplier."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的é‡åŠ›å€æ•°ã€‚"
-
-msgid "Represents the size of the [enum BodyParameter] enum."
-msgstr "表示 [enum BodyParameter] 枚举的大å°ã€‚"
-
-msgid "Constant to set/get the current transform matrix of the body."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰å˜æ¢çŸ©é˜µã€‚"
-
-msgid "Constant to set/get the current linear velocity of the body."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰çº¿é€Ÿåº¦ã€‚"
-
-msgid "Constant to set/get the current angular velocity of the body."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的当å‰è§’速度。"
-
-msgid "Constant to sleep/wake up a body, or to get whether it is sleeping."
-msgstr "常é‡ï¼Œç”¨äºŽä½¿ç‰©ä½“沉ç¡/唤醒,或得到它是å¦åœ¨æ²‰ç¡ã€‚"
-
-msgid "Constant to set/get whether the body can sleep."
-msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体是å¦å¯ä»¥ä¼‘眠。"
-
-msgid "Constant to create pin joints."
-msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ é’‰å…³èŠ‚。"
-
-msgid "Constant to create groove joints."
-msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ æ§½å…³èŠ‚。"
-
-msgid "Constant to create damped spring joints."
-msgstr "常é‡ï¼Œç”¨äºŽåˆ›é€ æœ‰é˜»å°¼çš„弹簧关节。"
-
-msgid ""
-"Sets the resting length of the spring joint. The joint will always try to go "
-"to back this length when pulled apart."
-msgstr "设定弹簧关节的é™æ­¢é•¿åº¦ã€‚当拉开时,关节将总是试图回到这个长度。"
-
-msgid ""
-"Sets the stiffness of the spring joint. The joint applies a force equal to "
-"the stiffness times the distance from its resting length."
-msgstr "设置弹簧接头的刚度。该关节施加的力等于刚度乘以离其é™æ­¢é•¿åº¦çš„è·ç¦»ã€‚"
-
-msgid ""
-"Sets the damping ratio of the spring joint. A value of 0 indicates an "
-"undamped spring, while 1 causes the system to reach equilibrium as fast as "
-"possible (critical damping)."
-msgstr ""
-"设置弹簧接头的阻尼比率。值为 0 表示无阻尼弹簧,而 1 导致系统尽å¯èƒ½å¿«åœ°è¾¾åˆ°å¹³"
-"衡(临界阻尼)。"
-
-msgid ""
-"Disables continuous collision detection. This is the fastest way to detect "
-"body collisions, but can miss small, fast-moving objects."
-msgstr ""
-"ç¦ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹ã€‚这是检测物体碰撞的最快方法,但å¯èƒ½ä¼šé”™è¿‡å°çš„ã€å¿«é€Ÿç§»åŠ¨çš„物"
-"体。"
-
-msgid ""
-"Enables continuous collision detection by raycasting. It is faster than "
-"shapecasting, but less precise."
-msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但ä¸å¤Ÿç²¾ç¡®ã€‚"
-
-msgid ""
-"Enables continuous collision detection by shapecasting. It is the slowest "
-"CCD method, and the most precise."
-msgstr "通过形å˜å®žçŽ°è¿žç»­çš„碰撞检测。它是最慢的 CCD 方法,也是最精确的。"
-
-msgid ""
-"The value of the first parameter and area callback function receives, when "
-"an object enters one of its shapes."
-msgstr "当对象进入其形状之一时,第一个å‚数和区域回调函数接收的值。"
-
-msgid ""
-"The value of the first parameter and area callback function receives, when "
-"an object exits one of its shapes."
-msgstr "当对象退出其形状之一时,第一个å‚数和区域回调函数接收的值。"
-
-msgid "Constant to get the number of objects that are not sleeping."
-msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–未处于ç¡çœ çŠ¶æ€çš„对象的数é‡ã€‚"
-
-msgid "Constant to get the number of possible collisions."
-msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–å¯èƒ½çš„碰撞数。"
-
-msgid ""
-"Constant to get the number of space regions where a collision could occur."
-msgstr "常é‡ï¼Œç”¨ä»¥èŽ·å–å¯èƒ½å‘生碰撞的空间区域数。"
-
-msgid "Server interface for low-level physics access."
-msgstr "用于低级物ç†è®¿é—®çš„æœåŠ¡å™¨æŽ¥å£ã€‚"
-
-msgid ""
-"Returns an area parameter value. A list of available parameters is on the "
-"[enum AreaParameter] constants."
-msgstr "返回区域å‚数值。å¯ç”¨å‚数列表ä½äºŽ [enum AreaParameter] 常é‡ä¸Šã€‚"
-
-msgid ""
-"Sets the value for an area parameter. A list of available parameters is on "
-"the [enum AreaParameter] constants."
-msgstr "设置é¢ç§¯å‚数的值。å¯ç”¨å‚数列表ä½äºŽ [enum AreaParameter] 常é‡ä¸Šã€‚"
-
-msgid "Sets object pickable with rays."
-msgstr "设置å¯ä½¿ç”¨å…‰çº¿æ‹¾å–的对象。"
-
-msgid ""
-"Returns the value of a body parameter. A list of available parameters is on "
-"the [enum BodyParameter] constants."
-msgstr "返回物体å‚数的值。å¯ç”¨å‚数列表ä½äºŽ [enum BodyParameter] 常é‡ä¸Šã€‚"
-
-msgid ""
-"If [code]true[/code], the continuous collision detection mode is enabled."
-msgstr "如果为 [code]true[/code],则å¯ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹æ¨¡å¼ã€‚"
-
-msgid ""
-"Removes a body from the list of bodies exempt from collisions.\n"
-"Continuous collision detection tries to predict where a moving body will "
-"collide, instead of moving it and correcting its movement if it collided."
-msgstr ""
-"从å…于碰撞的实体列表中删除实体。\n"
-"连续碰撞检测å°è¯•é¢„测è¿åŠ¨ç‰©ä½“碰撞的ä½ç½®ï¼Œè€Œä¸æ˜¯åœ¨ç¢°æ’žæ—¶ç§»åŠ¨ç‰©ä½“并纠正其è¿åŠ¨ã€‚"
-
-msgid ""
-"If [code]true[/code], the continuous collision detection mode is enabled.\n"
-"Continuous collision detection tries to predict where a moving body will "
-"collide, instead of moving it and correcting its movement if it collided."
-msgstr ""
-"如果为 [code]true[/code],则å¯ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹æ¨¡å¼ã€‚\n"
-"连续碰撞检测å°è¯•é¢„测è¿åŠ¨ç‰©ä½“碰撞的ä½ç½®ï¼Œè€Œä¸æ˜¯åœ¨ç¢°æ’žæ—¶ç§»åŠ¨ç‰©ä½“并纠正其è¿åŠ¨ã€‚"
-
-msgid "Sets the body mode, from one of the [enum BodyMode] constants."
-msgstr "从 [enum BodyMode] 常é‡ä¹‹ä¸€è®¾ç½®ä¸»ä½“模å¼ã€‚"
-
-msgid ""
-"Sets a body parameter. A list of available parameters is on the [enum "
-"BodyParameter] constants."
-msgstr "设置物体å‚数。å¯ç”¨å‚数列表ä½äºŽ [enum BodyParameter] 常é‡ä¸Šã€‚"
-
msgid "Sets a body state (see [enum BodyState] constants)."
msgstr "设置主体状æ€ï¼ˆè§ [enum BodyState] 常é‡ï¼‰ã€‚"
@@ -19854,6 +36926,25 @@ msgid "Sets a hinge_joint parameter (see [enum HingeJointParam] constants)."
msgstr "设置 hinge_joint å‚æ•°ï¼ˆè§ [enum HingeJointParam] 常é‡ï¼‰ã€‚"
msgid ""
+"Sets whether the bodies attached to the [Joint3D] will collide with each "
+"other."
+msgstr "设置附加至该 [Joint3D] 的物体能å¦äº’相碰撞。"
+
+msgid "Gets the priority value of the Joint3D."
+msgstr "获å–该 Joint3D 的优先级。"
+
+msgid "Returns the type of the Joint3D."
+msgstr "返回该 Joint3D 的类型。"
+
+msgid ""
+"Returns whether the bodies attached to the [Joint3D] will collide with each "
+"other."
+msgstr "返回附加至该 [Joint3D] 的物体能å¦äº’相碰撞。"
+
+msgid "Sets the priority value of the Joint3D."
+msgstr "设置该 Joint3D 的优先级。"
+
+msgid ""
"Returns position of the joint in the local space of body a of the joint."
msgstr "返回关节在关节物体 A 的局部空间中的ä½ç½®ã€‚"
@@ -19876,17 +36967,62 @@ msgstr "设置 pin_joint å‚æ•°ï¼ˆè§ [enum PinJointParam] 常é‡ï¼‰ã€‚"
msgid "Activates or deactivates the 3D physics engine."
msgstr "激活或åœç”¨ 3D 物ç†å¼•æ“Žã€‚"
+msgid "Returns the shape data."
+msgstr "返回形状数æ®ã€‚"
+
msgid "Returns the type of shape (see [enum ShapeType] constants)."
msgstr "è¿”å›žå½¢çŠ¶çš„ç±»åž‹ï¼ˆè§ [enum ShapeType] 常é‡ï¼‰ã€‚"
+msgid ""
+"Sets the shape data that defines its shape and size. The data to be passed "
+"depends on the kind of shape created [method shape_get_type]."
+msgstr ""
+"设置定义形状和大å°çš„形状数æ®ã€‚è¦ä¼ é€’çš„æ•°æ®å–决于创建的形状的类型 [method "
+"shape_get_type]。"
+
msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)."
msgstr "èŽ·å– slider_joint å‚æ•°ï¼ˆè§ [enum SliderJointParam] 常é‡ï¼‰ã€‚"
msgid ""
+"Creates a space. A space is a collection of parameters for the physics "
+"engine that can be assigned to an area or a body. It can be assigned to an "
+"area with [method area_set_space], or to a body with [method body_set_space]."
+msgstr ""
+"创建一个空间。空间是物ç†å¼•æ“Žçš„å‚数集åˆï¼Œå¯ä»¥åˆ†é…给区域或主体。它å¯ä»¥é€šè¿‡ "
+"[method area_set_space] 分é…给一个区域,或者通过 [method body_set_space] 分é…"
+"给一个主体。"
+
+msgid "Returns the value of a space parameter."
+msgstr "返回空间å‚数的值。"
+
+msgid "Returns whether the space is active."
+msgstr "返回该空间是å¦æ˜¯æ´»åŠ¨çš„。"
+
+msgid ""
+"Marks a space as active. It will not have an effect, unless it is assigned "
+"to an area or body."
+msgstr "将空间标记为活动空间。它ä¸ä¼šæœ‰æ•ˆæžœï¼Œé™¤éžå®ƒè¢«åˆ†é…到一个区域或物体。"
+
+msgid ""
"Sets the value for a space parameter. A list of available parameters is on "
"the [enum SpaceParameter] constants."
msgstr "设置空间å‚数的值。å¯ç”¨å‚数列表ä½äºŽ [enum SpaceParameter] 常é‡ä¸Šã€‚"
+msgid "The [Joint3D] is a [PinJoint3D]."
+msgstr "该 [Joint3D] 为 [PinJoint3D]。"
+
+msgid "The [Joint3D] is a [HingeJoint3D]."
+msgstr "该 [Joint3D] 为 [HingeJoint3D]。"
+
+msgid "The [Joint3D] is a [SliderJoint3D]."
+msgstr "该 [Joint3D] 为 [SliderJoint3D]。"
+
+msgid "The [Joint3D] is a [ConeTwistJoint3D]."
+msgstr "该 [Joint3D] 为 [ConeTwistJoint3D]。"
+
+msgid "The [Joint3D] is a [Generic6DOFJoint3D]."
+msgstr "该 [Joint3D] 为 [Generic6DOFJoint3D]。"
+
msgid ""
"The strength with which the pinned objects try to stay in positional "
"relation to each other.\n"
@@ -20000,7 +37136,7 @@ msgid ""
msgstr "垂直于滑å—的轴上的旋转阻尼é‡ã€‚"
msgid "Represents the size of the [enum SliderJointParam] enum."
-msgstr "表示 [enum SliderJointParam] 枚举的大å°ã€‚"
+msgstr "代表 [enum SliderJointParam] 枚举的大å°ã€‚"
msgid ""
"A factor that gets applied to the movement across the axes. The lower, the "
@@ -20044,6 +37180,116 @@ msgid ""
"velocity."
msgstr "设置时,存在跨这些轴的线性马达,以指定的速度为目标。"
+msgid "The [Shape3D] is a [WorldBoundaryShape3D]."
+msgstr "该 [Shape3D] 为 [WorldBoundaryShape3D]。"
+
+msgid "The [Shape3D] is a [SeparationRayShape3D]."
+msgstr "该 [Shape3D] 为 [SeparationRayShape3D]。"
+
+msgid "The [Shape3D] is a [SphereShape3D]."
+msgstr "该 [Shape3D] 为 [SphereShape3D]。"
+
+msgid "The [Shape3D] is a [BoxShape3D]."
+msgstr "该 [Shape3D] 为 [BoxShape3D]。"
+
+msgid "The [Shape3D] is a [CapsuleShape3D]."
+msgstr "该 [Shape3D] 为 [CapsuleShape3D]。"
+
+msgid "The [Shape3D] is a [CylinderShape3D]."
+msgstr "该 [Shape3D] 为 [CylinderShape3D]。"
+
+msgid "The [Shape3D] is a [ConvexPolygonShape3D]."
+msgstr "该 [Shape3D] 为 [ConvexPolygonShape3D]。"
+
+msgid "The [Shape3D] is a [ConcavePolygonShape3D]."
+msgstr "该 [Shape3D] 为 [ConcavePolygonShape3D]。"
+
+msgid "The [Shape3D] is a [HeightMapShape3D]."
+msgstr "该 [Shape3D] 为 [HeightMapShape3D]。"
+
+msgid "Constant to set/get gravity strength in an area."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å¼ºåº¦ã€‚"
+
+msgid "Constant to set/get gravity vector/center in an area."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å‘é‡/中心。"
+
+msgid ""
+"Constant to set/get whether the gravity vector of an area is a direction, or "
+"a center point."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域中的é‡åŠ›å‘é‡æ˜¯æ–¹å‘,还是中心点。"
+
+msgid "Constant to set/get the linear damping factor of an area."
+msgstr "常数,用于设置/获å–区域的线性阻尼系数。"
+
+msgid "Constant to set/get the angular damping factor of an area."
+msgstr "常数,用于设置/获å–区域的角度阻尼系数。"
+
+msgid "Constant to set/get the priority (order of processing) of an area."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–区域的优先级(处ç†é¡ºåºï¼‰ã€‚"
+
+msgid "Constant to set/get a body's bounce factor."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的å弹系数。"
+
+msgid "Constant to set/get a body's friction."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的摩擦力。"
+
+msgid "Constant to set/get a body's mass."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的质é‡ã€‚"
+
+msgid "Constant to set/get a body's inertia."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的惯性。"
+
+msgid "Constant to set/get a body's gravity multiplier."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–物体的é‡åŠ›å€æ•°ã€‚"
+
+msgid "Constant to set/get a body's linear damping factor."
+msgstr "常数,用于设置/获å–物体的线性阻尼系数。"
+
+msgid "Constant to set/get a body's angular damping factor."
+msgstr "常数,用于设置/获å–物体的角度阻尼系数。"
+
+msgid ""
+"Constant to set/get the maximum distance a pair of bodies has to move before "
+"their collision status has to be recalculated."
+msgstr "常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–一对物体在其碰撞状æ€è¢«é‡æ–°è®¡ç®—之å‰çš„最大移动è·ç¦»ã€‚"
+
+msgid ""
+"Constant to set/get the maximum distance a shape can be from another before "
+"they are considered separated and the contact is discarded."
+msgstr ""
+"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–两个形状间的最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå®ƒä»¬å°†è¢«è§†ä¸ºåˆ†ç¦»ï¼ŒæŽ¥è§¦å°†"
+"被弃置。"
+
+msgid ""
+"Constant to set/get the maximum distance a shape can penetrate another shape "
+"before it is considered a collision."
+msgstr ""
+"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–两个形状互相穿é€çš„最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå°†è§†ä¸ºç¢°æ’žã€‚"
+
+msgid ""
+"Constant to set/get the threshold linear velocity of activity. A body marked "
+"as potentially inactive for both linear and angular velocity will be put to "
+"sleep after the time given."
+msgstr ""
+"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–活跃的阈值线速度。一个被标记为线性速度和角速度都å¯èƒ½ä¸æ´»è·ƒ"
+"的物体将在给定的时间åŽè¿›å…¥ç¡çœ çŠ¶æ€ã€‚"
+
+msgid ""
+"Constant to set/get the threshold angular velocity of activity. A body "
+"marked as potentially inactive for both linear and angular velocity will be "
+"put to sleep after the time given."
+msgstr ""
+"常é‡ï¼Œç”¨äºŽè®¾ç½®/获å–活动的阈值角速度。一个被标记为线性和角速度都å¯èƒ½ä¸æ´»è·ƒçš„物"
+"体,在给定的时间åŽå°†ä¼šè¿›å…¥ç¡çœ çŠ¶æ€ã€‚"
+
+msgid ""
+"Constant to set/get the maximum time of activity. A body marked as "
+"potentially inactive for both linear and angular velocity will be put to "
+"sleep after this time."
+msgstr ""
+"常é‡ï¼Œç”¨äºŽè®¾ç½®/获得最大的活动时间。一个被标记为线速度和角速度都å¯èƒ½ä¸æ´»åŠ¨çš„物"
+"体,在这个时间之åŽå°†è¢«ç½®å…¥ç¡çœ çŠ¶æ€ã€‚"
+
msgid "Parameters to be sent to a 2D shape physics query."
msgstr "è¦å‘é€åˆ° 2D 形状物ç†æŸ¥è¯¢çš„å‚数。"
@@ -20059,6 +37305,9 @@ msgstr "被查询形状的å˜æ¢çŸ©é˜µã€‚"
msgid "Parameters to be sent to a 3D shape physics query."
msgstr "è¦å‘é€åˆ° 3D 形状物ç†æŸ¥è¯¢çš„å‚数。"
+msgid "Returns the colliding body's velocity, if a collision occurred."
+msgstr "如果å‘生碰撞,则返回碰撞到的物体的速度。"
+
msgid ""
"The higher this value, the more the bond to the pinned partner can flex."
msgstr "这个值越高,与被牵制的两个物体之间的的è”系就越çµæ´»ã€‚"
@@ -20143,6 +37392,26 @@ msgstr "沿 Z 轴细分的次数。"
msgid "Number of subdivision along the X axis."
msgstr "沿 X 轴细分的次数。"
+msgid "[PlaneMesh] will face the positive X-axis."
+msgstr "[PlaneMesh] å°†é¢å‘ X 轴正方å‘。"
+
+msgid ""
+"[PlaneMesh] will face the positive Y-axis. This matches the behavior of the "
+"[PlaneMesh] in Godot 3.x."
+msgstr ""
+"[PlaneMesh] å°†é¢å‘ Y 轴正方å‘。与 Godot 3.x 中 [PlaneMesh] 的行为一致。"
+
+msgid ""
+"[PlaneMesh] will face the positive Z-axis. This matches the behavior of the "
+"QuadMesh in Godot 3.x."
+msgstr "[PlaneMesh] å°†é¢å‘ Z 轴正方å‘。与 Godot 3.x 中 QuadMesh 的行为一致。"
+
+msgid "[Texture2D] used for the light's appearance."
+msgstr "用于该ç¯å…‰å¤–观的 [Texture2D]。"
+
+msgid "The [member texture]'s scale factor."
+msgstr "[member texture] 的缩放系数。"
+
msgid "Mesh with a single Point primitive."
msgstr "使用å•ä¸ªç‚¹å›¾å…ƒçš„网格。"
@@ -20327,6 +37596,42 @@ msgstr "用于èœå•é¡¹çš„ [Font] 字体。"
msgid "[Font] used for the labeled separator."
msgstr "用于带文字分隔线的 [Font] 字体。"
+msgid "Font size of the menu items."
+msgstr "èœå•é¡¹çš„字体大å°ã€‚"
+
+msgid "[Texture2D] icon for the checked checkbox items."
+msgstr "[Texture2D] 图标,用于处于选中状æ€çš„å¤é€‰é¡¹ã€‚"
+
+msgid "[Texture2D] icon for the checked checkbox items when they are disabled."
+msgstr "[Texture2D] 图标,用于处于选中状æ€çš„å·²ç¦ç”¨å¤é€‰é¡¹ã€‚"
+
+msgid "[Texture2D] icon for the checked radio button items."
+msgstr "[Texture2D] 图标,用于处于选中状æ€çš„å•é€‰é¡¹ã€‚"
+
+msgid ""
+"[Texture2D] icon for the checked radio button items when they are disabled."
+msgstr "[Texture2D] 图标,用于处于选中状æ€çš„å·²ç¦ç”¨å•é€‰é¡¹ã€‚"
+
+msgid "[Texture2D] icon for the unchecked radio button items."
+msgstr "[Texture2D] 图标,用于处于未选状æ€çš„å•é€‰é¡¹ã€‚"
+
+msgid ""
+"[Texture2D] icon for the unchecked radio button items when they are disabled."
+msgstr "[Texture2D] 图标,用于处于未选状æ€çš„å·²ç¦ç”¨å•é€‰é¡¹ã€‚"
+
+msgid "[Texture2D] icon for the submenu arrow (for left-to-right layouts)."
+msgstr "[Texture2D] 图标,用于å­èœå•ç®­å¤´ï¼ˆç”¨äºŽä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid "[Texture2D] icon for the submenu arrow (for right-to-left layouts)."
+msgstr "[Texture2D] 图标,用于å­èœå•ç®­å¤´ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
+
+msgid "[Texture2D] icon for the unchecked checkbox items."
+msgstr "[Texture2D] 图标,用于处于未选状æ€çš„å¤é€‰é¡¹ã€‚"
+
+msgid ""
+"[Texture2D] icon for the unchecked checkbox items when they are disabled."
+msgstr "[Texture2D] 图标,用于处于未选状æ€çš„å·²ç¦ç”¨å¤é€‰é¡¹ã€‚"
+
msgid "[StyleBox] displayed when the [PopupMenu] item is hovered."
msgstr "当 [PopupMenu] èœå•é¡¹è¢«æ‚¬åœæ—¶æ˜¾ç¤ºçš„ [StyleBox]。"
@@ -20394,6 +37699,15 @@ msgid ""
"sky_top_color]."
msgstr "从 [member sky_horizon_color] æ¸å˜åˆ° [member sky_top_color] 的速度。"
+msgid "Multiplier for sky color. A higher value will make the sky brighter."
+msgstr "天空颜色的å€æ•°ã€‚值越高天空越亮。"
+
+msgid "Color of the sky at the horizon. Blends with [member sky_top_color]."
+msgstr "天空在地平线处的颜色。会与 [member sky_top_color] æ··åˆã€‚"
+
+msgid "Color of the sky at the top. Blends with [member sky_horizon_color]."
+msgstr "天空在顶部的颜色。会与 [member sky_horizon_color] æ··åˆã€‚"
+
msgid "Distance from center of sun where it fades out completely."
msgstr "太阳完全淡出消失的ä½ç½®ä¸Žå¤ªé˜³ä¸­å¿ƒçš„è·ç¦»ã€‚"
@@ -20409,6 +37723,12 @@ msgstr "å¡«å……æ–¹å‘。å¯èƒ½çš„å–å€¼è§ [enum FillMode]。"
msgid "If [code]true[/code], the fill percentage is displayed on the bar."
msgstr "为 [code]true[/code] 时,将在进度æ¡ä¸Šæ˜¾ç¤ºç™¾åˆ†æ¯”。"
+msgid "The progress fills from top to bottom."
+msgstr "进度从上到下填充。"
+
+msgid "The progress fills from bottom to top."
+msgstr "进度从下到上填充。"
+
msgid "The color of the text."
msgstr "文本的颜色。"
@@ -20424,9 +37744,51 @@ msgstr "进度的样å¼ï¼ˆå³å¡«å……进度æ¡çš„部分)。"
msgid "3D projection (4x4 matrix)."
msgstr "3D 投影(4×4 矩阵)。"
+msgid ""
+"Constructs a default-initialized [Projection] set to [constant IDENTITY]."
+msgstr "构造默认åˆå§‹åŒ–为 [constant IDENTITY] çš„ [Projection]。"
+
msgid "Constructs a [Projection] as a copy of the given [Projection]."
msgstr "构造给定 [Projection] 的副本。"
+msgid ""
+"The projection matrix's W vector (column 3). Equivalent to array index "
+"[code]3[/code]."
+msgstr "投影矩阵的 W å‘é‡ï¼ˆç¬¬ 3 列)。相当于数组索引 [code]3[/code]。"
+
+msgid ""
+"The projection matrix's X vector (column 0). Equivalent to array index "
+"[code]0[/code]."
+msgstr "投影矩阵的 X å‘é‡ï¼ˆç¬¬ 0 列)。相当于数组索引 [code]0[/code]。"
+
+msgid ""
+"The projection matrix's Y vector (column 1). Equivalent to array index "
+"[code]1[/code]."
+msgstr "投影矩阵的 Y å‘é‡ï¼ˆç¬¬ 1 列)。相当于数组索引 [code]1[/code]。"
+
+msgid ""
+"The projection matrix's Z vector (column 2). Equivalent to array index "
+"[code]2[/code]."
+msgstr "投影矩阵的 Z å‘é‡ï¼ˆç¬¬ 2 列)。相当于数组索引 [code]2[/code]。"
+
+msgid "The index value of the projection's near clipping plane."
+msgstr "该投影的近è£å‰ªå¹³é¢çš„索引值。"
+
+msgid "The index value of the projection's far clipping plane."
+msgstr "该投影的远è£å‰ªå¹³é¢çš„索引值。"
+
+msgid "The index value of the projection's left clipping plane."
+msgstr "该投影的左è£å‰ªå¹³é¢çš„索引值。"
+
+msgid "The index value of the projection's top clipping plane."
+msgstr "该投影的上è£å‰ªå¹³é¢çš„索引值。"
+
+msgid "The index value of the projection's right clipping plane."
+msgstr "该投影的å³è£å‰ªå¹³é¢çš„索引值。"
+
+msgid "The index value of the projection bottom clipping plane."
+msgstr "该投影的下è£å‰ªå¹³é¢çš„索引值。"
+
msgid "Contains global variables accessible from everywhere."
msgstr "包å«å…¨å±€å˜é‡ï¼Œå¯ä»¥ä»Žä»»ä½•åœ°æ–¹è®¿é—®ã€‚"
@@ -20520,8 +37882,8 @@ msgid ""
"(preserving the aspect ratio) when the engine starts. If [code]false[/code], "
"the engine will leave it at the default pixel size."
msgstr ""
-"如果为 [code]true[/code],引擎å¯åŠ¨æ—¶ä¼šå°†å¯åŠ¨å›¾ç‰‡ç¼©æ”¾åˆ°æ•´ä¸ªçª—å£çš„大å°ï¼ˆä¿æŒé•¿"
-"宽比)。如果为 [code]false[/code],引擎将ä¿æŒå…¶é»˜è®¤åƒç´ å¤§å°ã€‚"
+"如果为 [code]true[/code],引擎å¯åŠ¨æ—¶ä¼šå°†å¯åŠ¨ç•Œé¢å›¾åƒç¼©æ”¾åˆ°æ•´ä¸ªçª—å£çš„大å°ï¼ˆä¿"
+"æŒé•¿å®½æ¯”)。如果为 [code]false[/code],引擎将ä¿æŒå…¶é»˜è®¤åƒç´ å¤§å°ã€‚"
msgid ""
"Path to an image used as the boot splash. If left empty, the default Godot "
@@ -20529,18 +37891,23 @@ msgid ""
"[b]Note:[/b] Only effective if [member application/boot_splash/show_image] "
"is [code]true[/code]."
msgstr ""
-"用作å¯åŠ¨ç”»é¢çš„图片的路径。留空时将使用默认的 Godot 引擎å¯åŠ¨ç”»é¢ã€‚\n"
+"图åƒçš„路径,会作为å¯åŠ¨ç”»é¢ä½¿ç”¨ã€‚留空时将使用默认的 Godot 引擎å¯åŠ¨ç”»é¢ã€‚\n"
"[b]注æ„:[/b]仅在 [member application/boot_splash/show_image] 为 [code]true[/"
"code] 时有效。"
msgid ""
+"Minimum boot splash display time (in milliseconds). It is not recommended to "
+"set too high values for this setting."
+msgstr "å¯åŠ¨ç”»é¢çš„最å°æ˜¾ç¤ºæ—¶é—´ï¼ˆå•ä½ä¸ºæ¯«ç§’)。ä¸å»ºè®®è®¾ç½®ä¸ºè¿‡é«˜çš„值。"
+
+msgid ""
"If [code]true[/code], displays the image specified in [member application/"
"boot_splash/image] when the engine starts. If [code]false[/code], only "
"displays the plain color specified in [member application/boot_splash/"
"bg_color]."
msgstr ""
-"为 [code]true[/code] 时,将在引擎å¯åŠ¨æ—¶æ˜¾ç¤º [member application/boot_splash/"
-"image] 所指定的图片。为 [code]false[/code] 时,仅显示 [member application/"
+"如果为 [code]true[/code],将在引擎å¯åŠ¨æ—¶æ˜¾ç¤º [member application/boot_splash/"
+"image] 所指定的图åƒã€‚为 [code]false[/code] 时,仅显示 [member application/"
"boot_splash/bg_color] 所指定的纯色。"
msgid ""
@@ -20548,8 +37915,8 @@ msgid ""
"(recommended for high-resolution artwork). If [code]false[/code], uses "
"nearest-neighbor interpolation (recommended for pixel art)."
msgstr ""
-"如果为 [code]true[/code],缩放图åƒæ—¶ä¼šåº”用线性过滤(推è用于高分辨率图稿)。"
-"如果为 [code]false[/code],则使用最近邻æ’值(推è用于åƒç´ ç”»ï¼‰ã€‚"
+"如果为 [code]true[/code],则在缩放图åƒæ—¶ä¼šåº”用线性过滤(推è用于高分辨率图"
+"稿)。如果为 [code]false[/code],则使用最近邻æ’值(推è用于åƒç´ ç”»ï¼‰ã€‚"
msgid ""
"The project's description, displayed as a tooltip in the Project Manager "
@@ -20562,6 +37929,14 @@ msgid ""
msgstr "项目所使用的图标,在项目加载时设置。导出时也将尽å¯èƒ½ä½¿ç”¨æ­¤å›¾æ ‡ã€‚"
msgid ""
+"Icon set in [code].icns[/code] format used on macOS to set the game's icon. "
+"This is done automatically on start by calling [method DisplayServer."
+"set_native_icon]."
+msgstr ""
+"设置 macOS 上游æˆçš„图标,使用 [code].icns[/code] 图标集格å¼ã€‚å¯åŠ¨æ—¶ä¼šé€šè¿‡è°ƒ"
+"用 [method DisplayServer.set_native_icon] 自动完æˆã€‚"
+
+msgid ""
"The project's name. It is used both by the Project Manager and by exporters. "
"The project name can be translated by translating its value in localization "
"files. The window title will be set to match the project name automatically "
@@ -20582,6 +37957,13 @@ msgstr ""
"html]《数æ®è·¯å¾„》[/url]。"
msgid ""
+"Translations of the project's name. This setting is used by OS tools to "
+"translate application name on Android, iOS and macOS."
+msgstr ""
+"项目å称的翻译。æ“作系统工具会使用此设置æ¥ç¿»è¯‘ Androidã€iOS å’Œ macOS 上的应用"
+"程åºå称。"
+
+msgid ""
"Specifies a file to override project settings. For example: [code]user://"
"custom_settings.cfg[/code]. See \"Overriding\" in the [ProjectSettings] "
"class description at the top for more information.\n"
@@ -20594,6 +37976,14 @@ msgstr ""
"å–æ¥è¦†ç›–项目设置。"
msgid ""
+"Icon set in [code].ico[/code] format used on Windows to set the game's icon. "
+"This is done automatically on start by calling [method DisplayServer."
+"set_native_icon]."
+msgstr ""
+"设置 Windows 上游æˆçš„图标,使用 [code].ico[/code] 图标集格å¼ã€‚å¯åŠ¨æ—¶ä¼šé€šè¿‡è°ƒ"
+"用 [method DisplayServer.set_native_icon] 自动完æˆã€‚"
+
+msgid ""
"If [code]true[/code], flushes the standard output stream every time a line "
"is printed. This affects both terminal logging and file logging.\n"
"When running a project, this setting must be enabled if you want logs to be "
@@ -20730,8 +38120,8 @@ msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
msgstr ""
-"在 Zstandard 中å¯ç”¨[url=https://github.com/facebook/zstd/releases/tag/v1.3.2]"
-"é•¿è·ç¦»åŒ¹é…[/url] 。"
+"å¯ç”¨ Zstandard çš„[url=https://github.com/facebook/zstd/releases/tag/v1.3.2]é•¿"
+"è·ç¦»åŒ¹é…[/url]。"
msgid ""
"Largest size limit (in power of 2) allowed when compressing using long-"
@@ -20745,6 +38135,21 @@ msgid "If [code]true[/code], logs all output to files."
msgstr "如果为 [code]true[/code],将所有输出记录到文件中。"
msgid ""
+"Desktop override for [member debug/file_logging/enable_file_logging], as log "
+"files are not readily accessible on mobile/Web platforms."
+msgstr ""
+"[member debug/file_logging/enable_file_logging] 在桌é¢å¹³å°çš„覆盖项,因为在移"
+"动/Web å¹³å°ä¸Šä¸å®¹æ˜“访问日志文件。"
+
+msgid ""
+"Path at which to store log files for the project. Using a path under "
+"[code]user://[/code] is recommended."
+msgstr "项目日志的存储路径。建议使用 [code]user://[/code] 下的路径。"
+
+msgid "Specifies the maximum number of log files allowed (used for rotation)."
+msgstr "指定å…许的最大日志文件数é‡ï¼ˆç”¨äºŽè½®æ¢ï¼‰ã€‚"
+
+msgid ""
"If [code]true[/code], enables specific GDScript warnings (see [code]debug/"
"gdscript/warnings/*[/code] settings). If [code]false[/code], disables all "
"GDScript warnings."
@@ -20802,6 +38207,45 @@ msgid ""
"enabled in the Debug menu."
msgstr "碰撞形状的颜色,当在调试èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºç¢°æ’žå½¢çŠ¶â€æ—¶å¯è§ã€‚"
+msgid ""
+"Rasterized size (pixel) used to render navigation agent path points when an "
+"agent has debug enabled."
+msgstr "栅格大å°ï¼ˆåƒç´ ï¼‰ï¼Œå¦‚果导航代ç†å¯ç”¨äº†è°ƒè¯•ï¼Œåˆ™ä¼šç”¨äºŽæ¸²æŸ“该代ç†çš„路径点。"
+
+msgid ""
+"Color to display enabled navigation mesh polygon edges, visible when "
+"\"Visible Navigation\" is enabled in the Debug menu."
+msgstr ""
+"用于显示已å¯ç”¨å¯¼èˆªç½‘格多边形边缘的颜色,在“调试â€èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
+msgid ""
+"Color to display disabled navigation mesh polygon edges, visible when "
+"\"Visible Navigation\" is enabled in the Debug menu."
+msgstr ""
+"用于显示已ç¦ç”¨å¯¼èˆªç½‘格多边形边缘的颜色,在“调试â€èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
+msgid ""
+"Color to display enabled navigation mesh polygon faces, visible when "
+"\"Visible Navigation\" is enabled in the Debug menu."
+msgstr ""
+"用于显示已å¯ç”¨å¯¼èˆªç½‘格多边形é¢çš„颜色,在“调试â€èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
+msgid ""
+"Color to display disabled navigation mesh polygon faces, visible when "
+"\"Visible Navigation\" is enabled in the Debug menu."
+msgstr ""
+"用于显示已ç¦ç”¨å¯¼èˆªç½‘格多边形é¢çš„颜色,在“调试â€èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
+msgid ""
+"Color to use to display navigation link connections, visible when \"Visible "
+"Navigation\" is enabled in the Debug menu."
+msgstr "导航链接连接的颜色,在调试èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
+msgid ""
+"Color to use to display disabled navigation link connections, visible when "
+"\"Visible Navigation\" is enabled in the Debug menu."
+msgstr "被ç¦ç”¨çš„导航链接连接的颜色,在调试èœå•ä¸­å¯ç”¨â€œæ˜¾ç¤ºå¯¼èˆªâ€æ—¶å¯è§ã€‚"
+
msgid "Custom image for the mouse cursor (limited to 256×256)."
msgstr "鼠标光标的自定义图åƒï¼ˆæœ€å¤§ 256×256)。"
@@ -20812,6 +38256,24 @@ msgid "Position offset for tooltips, relative to the mouse cursor's hotspot."
msgstr "工具æ示相对于鼠标光标热点的ä½ç½®å移é‡ã€‚"
msgid ""
+"If [code]true[/code], allows HiDPI display on Windows, macOS, Android, iOS "
+"and Web. If [code]false[/code], the platform's low-DPI fallback will be used "
+"on HiDPI displays, which causes the window to be displayed in a blurry or "
+"pixelated manner (and can cause various window management bugs). Therefore, "
+"it is recommended to make your project scale to [url=$DOCS_URL/tutorials/"
+"rendering/multiple_resolutions.html]multiple resolutions[/url] instead of "
+"disabling this setting.\n"
+"[b]Note:[/b] This setting has no effect on Linux as DPI-awareness fallbacks "
+"are not supported there."
+msgstr ""
+"如果为 [code]true[/code] ,则å…许在 Windowsã€macOSã€Androidã€iOS å’Œ Web 上使"
+"用 HiDPI 显示器。如果为 [code]false[/code] ,则在 HiDPI 显示器上将使用该平å°"
+"的低 DPI 回退,这样会导致窗å£æ¨¡ç³Šæˆ–åƒç´ åŒ–çš„æ–¹å¼æ˜¾ç¤ºï¼ˆå¹¶ä¸”å¯èƒ½å¯¼è‡´å„ç§çª—å£ç®¡ç†"
+"问题)。因此,建议你让项目支æŒ[url=$DOCS_URL/tutorials/rendering/"
+"multiple_resolutions.html]多个分辨率[/url],而ä¸æ˜¯ç¦ç”¨æ­¤è®¾ç½®ã€‚\n"
+"[b]注æ„:[/b]这个设置在 Linux 上无效,因为 Linux ä¸æ”¯æŒ DPI 感知回退。"
+
+msgid ""
"If [code]true[/code], keeps the screen on (even in case of inactivity), so "
"the screensaver does not take over. Works on desktop and mobile platforms."
msgstr ""
@@ -20819,6 +38281,20 @@ msgstr ""
"护程åºä¸ä¼šæŽ¥ç®¡ã€‚适用于桌é¢å’Œç§»åŠ¨å¹³å°ã€‚"
msgid ""
+"The default screen orientation to use on mobile devices. See [enum "
+"DisplayServer.ScreenOrientation] for possible values.\n"
+"[b]Note:[/b] When set to a portrait orientation, this project setting does "
+"not flip the project resolution's width and height automatically. Instead, "
+"you have to set [member display/window/size/viewport_width] and [member "
+"display/window/size/viewport_height] accordingly."
+msgstr ""
+"在移动设备上使用的默认å±å¹•æœå‘。å¯èƒ½çš„å–å€¼è§ [enum DisplayServer."
+"ScreenOrientation]。\n"
+"[b]注æ„:[/b]设为竖å±æ—¶ï¼Œè¯¥é¡¹ç›®è®¾ç½®ä¸ä¼šè‡ªåŠ¨ç¿»è½¬é¡¹ç›®åˆ†è¾¨çŽ‡çš„宽度和高度。你必须"
+"设置与之相对应的 [member display/window/size/viewport_width] 和 [member "
+"display/window/size/viewport_height]。"
+
+msgid ""
"If [code]true[/code], the home indicator is hidden automatically. This only "
"affects iOS devices without a physical home button."
msgstr ""
@@ -20826,6 +38302,69 @@ msgstr ""
"iOS 设备。"
msgid ""
+"If [code]true[/code], allows per-pixel transparency for the window "
+"background. This affects performance, so leave it on [code]false[/code] "
+"unless you need it. See also [member display/window/size/transparent] and "
+"[member rendering/viewport/transparent_background]."
+msgstr ""
+"如果为 [code]true[/code],则å…许窗å£èƒŒæ™¯çš„é€åƒç´ é€æ˜Žåº¦ã€‚这样会影å“性能,因此"
+"除éžéœ€è¦ï¼Œå¦åˆ™è¯·å°†å…¶ä¿ç•™ä¸º [code]false[/code]。å¦è§ [member display/window/"
+"size/transparent] 和 [member rendering/viewport/transparent_background]。"
+
+msgid ""
+"Forces the main window to be always on top.\n"
+"[b]Note:[/b] This setting is ignored on iOS, Android, and Web."
+msgstr ""
+"强制主窗å£å§‹ç»ˆç½®é¡¶ã€‚\n"
+"[b]注æ„:[/b]该设置在 iOSã€Android å’Œ Web 上被忽略。"
+
+msgid ""
+"Forces the main window to be borderless.\n"
+"[b]Note:[/b] This setting is ignored on iOS, Android, and Web."
+msgstr ""
+"强制主窗å£æ— è¾¹æ¡†ã€‚\n"
+"[b]注æ„:[/b]该设置在 iOSã€Android å’Œ Web 上被忽略。"
+
+msgid ""
+"Main window content is expanded to the full size of the window. Unlike a "
+"borderless window, the frame is left intact and can be used to resize the "
+"window, and the title bar is transparent, but has minimize/maximize/close "
+"buttons.\n"
+"[b]Note:[/b] This setting is implemented only on macOS."
+msgstr ""
+"主窗å£çš„内容会扩展到整个窗å£çš„大å°ã€‚与无边框窗å£ä¸åŒçš„是,窗å£çš„框架ä»æ˜¯å®Œæ•´"
+"的,å¯ä»¥ç”¨æ¥è°ƒæ•´çª—å£çš„大å°ï¼Œæ ‡é¢˜æ æ˜¯é€æ˜Žçš„,但有最å°/最大/关闭按钮。\n"
+"[b]注æ„:[/b]该设置åªåœ¨ macOS 上实现。"
+
+msgid ""
+"Main window initial position (in virtual desktop coordinates), this settings "
+"is used only if [member display/window/size/initial_position_type] is set to "
+"\"Absolute\" ([code]0[/code])."
+msgstr ""
+"主窗å£çš„åˆå§‹ä½ç½®ï¼ˆä½¿ç”¨è™šæ‹Ÿæ¡Œé¢å标),该设置仅在 [member display/window/size/"
+"initial_position_type] 设置为“Absoluteâ€ï¼ˆ[code]2[/code] )时使用。"
+
+msgid ""
+"Main window initial screen, this settings is used only if [member display/"
+"window/size/initial_position_type] is set to \"Other Screen "
+"Center\" ([code]2[/code])."
+msgstr ""
+"主窗å£çš„åˆå§‹å±å¹•ï¼Œè¯¥è®¾ç½®ä»…在 [member display/window/size/"
+"initial_position_type] 设置为“Other Screen Centerâ€ï¼ˆ[code]2[/code] )时使用。"
+
+msgid ""
+"Main window mode. See [enum DisplayServer.WindowMode] for possible values "
+"and how each mode behaves."
+msgstr ""
+"主窗å£çš„模å¼ã€‚å¯èƒ½çš„å–值以åŠå„个模å¼çš„行为请å‚阅 [enum DisplayServer."
+"WindowMode]。"
+
+msgid ""
+"Main window can't be focused. No-focus window will ignore all input, except "
+"mouse clicks."
+msgstr "主窗å£æ— æ³•æˆä¸ºç„¦ç‚¹ã€‚无焦点的窗å£å°†å¿½ç•¥é™¤é¼ æ ‡ç‚¹å‡»ä¹‹å¤–的所有输入。"
+
+msgid ""
"Allows the window to be resizable by default.\n"
"[b]Note:[/b] This setting is ignored on iOS."
msgstr ""
@@ -20833,6 +38372,146 @@ msgstr ""
"[b]注æ„:[/b]这个设置在 iOS 上将忽略。"
msgid ""
+"Sets the game's main viewport height. On desktop platforms, this is also the "
+"initial window height, represented by an indigo-colored rectangle in the 2D "
+"editor. Stretch mode settings also use this as a reference when using the "
+"[code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also "
+"[member display/window/size/viewport_width], [member display/window/size/"
+"window_width_override] and [member display/window/size/"
+"window_height_override]."
+msgstr ""
+"设置游æˆçš„主视å£é«˜åº¦ã€‚在桌é¢å¹³å°ä¸Šï¼Œè¿™ä¹Ÿæ˜¯åˆå§‹çª—å£é«˜åº¦ï¼Œåœ¨ 2D 编辑器中使用é›"
+"è“色的矩形表示。使用 [code]canvas_items[/code] å’Œ [code]viewport[/code] 拉伸"
+"模å¼æ—¶ä¹Ÿä¼šä»¥æ­¤ä½œä¸ºå‚考。å¦è§ [member display/window/size/viewport_width]ã€"
+"[member display/window/size/window_width_override] 和 [member display/window/"
+"size/window_height_override]。"
+
+msgid ""
+"Sets the game's main viewport width. On desktop platforms, this is also the "
+"initial window width, represented by an indigo-colored rectangle in the 2D "
+"editor. Stretch mode settings also use this as a reference when using the "
+"[code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also "
+"[member display/window/size/viewport_height], [member display/window/size/"
+"window_width_override] and [member display/window/size/"
+"window_height_override]."
+msgstr ""
+"设置游æˆçš„主视å£å®½åº¦ã€‚在桌é¢å¹³å°ä¸Šï¼Œè¿™ä¹Ÿæ˜¯åˆå§‹çª—å£å®½åº¦ï¼Œåœ¨ 2D 编辑器中使用é›"
+"è“色的矩形表示。使用 [code]canvas_items[/code] å’Œ [code]viewport[/code] 拉伸"
+"模å¼æ—¶ä¹Ÿä¼šä»¥æ­¤ä½œä¸ºå‚考。å¦è§ [member display/window/size/viewport_height]ã€"
+"[member display/window/size/window_width_override] 和 [member display/window/"
+"size/window_height_override]。"
+
+msgid ""
+"On desktop platforms, overrides the game's initial window height. See also "
+"[member display/window/size/window_width_override], [member display/window/"
+"size/viewport_width] and [member display/window/size/viewport_height].\n"
+"[b]Note:[/b] By default, or when set to [code]0[/code], the initial window "
+"height is the [member display/window/size/viewport_height]. This setting is "
+"ignored on iOS, Android, and Web."
+msgstr ""
+"在桌é¢å¹³å°ä¸Šï¼Œè¦†ç›–游æˆçš„åˆå§‹çª—å£é«˜åº¦ã€‚å¦è§ [member display/window/size/"
+"window_width_override]ã€[member display/window/size/viewport_width] å’Œ "
+"[member display/window/size/viewport_height]。\n"
+"[b]注æ„:[/b]默认情况下,或者当设置为[code]0[/code] 时,åˆå§‹çª—å£é«˜åº¦ä¸º "
+"[member display/window/size/viewport_height]。在 iOSã€Android å’Œ Web 上会忽略"
+"这个设置。"
+
+msgid ""
+"On desktop platforms, overrides the game's initial window width. See also "
+"[member display/window/size/window_height_override], [member display/window/"
+"size/viewport_width] and [member display/window/size/viewport_height].\n"
+"[b]Note:[/b] By default, or when set to [code]0[/code], the initial window "
+"width is the viewport [member display/window/size/viewport_width]. This "
+"setting is ignored on iOS, Android, and Web."
+msgstr ""
+"在桌é¢å¹³å°ä¸Šï¼Œè¦†ç›–游æˆçš„åˆå§‹çª—å£å®½åº¦ã€‚å¦è§ [member display/window/size/"
+"window_height_override]ã€[member display/window/size/viewport_width] å’Œ "
+"[member display/window/size/viewport_height]。\n"
+"[b]注æ„:[/b]默认情况下,或者当设置为[code]0[/code] 时,åˆå§‹çª—å£å®½åº¦ä¸º "
+"[member display/window/size/viewport_width]。在 iOSã€Android å’Œ Web 上会忽略"
+"这个设置。"
+
+msgid ""
+"If [code]true[/code], requests V-Sync to be disabled when writing a movie "
+"(similar to setting [member display/window/vsync/vsync_mode] to [b]Disabled[/"
+"b]). This can speed up video writing if the hardware is fast enough to "
+"render, encode and save the video at a framerate higher than the monitor's "
+"refresh rate.\n"
+"[b]Note:[/b] [member editor/movie_writer/disable_vsync] has no effect if the "
+"operating system or graphics driver forces V-Sync with no way for "
+"applications to disable it."
+msgstr ""
+"如果为 [code]true[/code],则在写入电影时会请求ç¦ç”¨åž‚ç›´åŒæ­¥ï¼ˆç±»ä¼¼äºŽå°† [member "
+"display/window/vsync/vsync_mode] 设置为 [b]Disabled[/b])。如果硬件的渲染速度"
+"足够快,那么就å¯ä»¥åŠ é€Ÿè§†é¢‘的写入,以高于显示器刷新率的帧速率渲染ã€ç¼–ç å’Œä¿å­˜"
+"视频。\n"
+"[b]注æ„:[/b]如果æ“作系统或图形驱动程åºå¼ºåˆ¶åž‚ç›´åŒæ­¥ï¼Œåˆ™åº”用程åºæ— æ³•ç¦ç”¨ï¼Œ"
+"[member editor/movie_writer/disable_vsync] 无效。"
+
+msgid ""
+"The number of frames per second to record in the video when writing a movie. "
+"Simulation speed will adjust to always match the specified framerate, which "
+"means the engine will appear to run slower at higher [member editor/"
+"movie_writer/fps] values. Certain FPS values will require you to adjust "
+"[member editor/movie_writer/mix_rate] to prevent audio from desynchronizing "
+"over time.\n"
+"This can be specified manually on the command line using the [code]--fixed-"
+"fps <fps>[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial."
+"html]command line argument[/url]."
+msgstr ""
+"输出电影时,在视频中æ¯ç§’记录的帧数。仿真速度将调整为始终与指定的帧数相匹é…,"
+"è¿™æ„味ç€å¼•æ“Žåœ¨è¾ƒé«˜çš„ [member editor/movie_writer/fps] 值下会显得è¿è¡Œè¾ƒæ…¢ã€‚部"
+"分 FPS 值将需è¦ä½ è°ƒæ•´ [member editor/movie_writer/mix_rate],防止音频éšç€æ—¶é—´"
+"的推移而出现ä¸åŒæ­¥ã€‚\n"
+"å¯ä»¥åœ¨å‘½ä»¤è¡Œä¸­ä½¿ç”¨ [code]--fixed-fps <fps>[/code] [url=$DOCS_URL/tutorials/"
+"editor/command_line_tutorial.html]命令行å‚æ•°[/url]手动指定。"
+
+msgid ""
+"The JPEG quality to use when writing a video to an AVI file, between "
+"[code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/"
+"code] values result in better-looking output at the cost of larger file "
+"sizes. Recommended [code]quality[/code] values are between [code]0.75[/code] "
+"and [code]0.9[/code]. Even at quality [code]1.0[/code], JPEG compression "
+"remains lossy.\n"
+"[b]Note:[/b] This does not affect the audio quality or writing PNG image "
+"sequences."
+msgstr ""
+"JPEG è´¨é‡ï¼Œå°†è§†é¢‘写入 AVI 文件时使用,介于 [code]0.01[/code] å’Œ [code]1.0[/"
+"code](å«ï¼‰ä¹‹é—´ã€‚[code]quality[/code] 值越高,输出效果越好看,但文件大å°ä¹Ÿè¶Š"
+"大。[code]quality[/code] 的推è值为 [code]0.75[/code] å’Œ [code]0.9[/code] 之"
+"间。å³ä½¿è´¨é‡ä¸º [code]1.0[/code],JPEG 压缩ä»ç„¶æœ‰æŸã€‚\n"
+"[b]注æ„:[/b]è¿™ä¸ä¼šå½±å“音频质é‡å’Œ PNG 图åƒåºåˆ—的写入。"
+
+msgid ""
+"The speaker mode to use in the recorded audio when writing a movie. See "
+"[enum AudioServer.SpeakerMode] for possible values."
+msgstr ""
+"ä¿å­˜ç”µå½±æ—¶ï¼Œå½•åˆ¶çš„音频中所使用的扬声器模å¼ã€‚å¯èƒ½çš„å€¼è§ [enum AudioServer."
+"SpeakerMode]。"
+
+msgid ""
+"The format of the default signal callback name (in the Signal Connection "
+"Dialog). The following substitutions are available: [code]{NodeName}[/code], "
+"[code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/"
+"code], [code]{signalName}[/code], and [code]{signal_name}[/code]."
+msgstr ""
+"ä¿¡å·å›žè°ƒå称的默认格å¼ï¼ˆåœ¨ä¿¡å·è¿žæŽ¥å¯¹è¯æ¡†ä¸­ä½¿ç”¨ï¼‰ã€‚å¯ä»¥ä½¿ç”¨ä»¥ä¸‹æ›¿æ¢ï¼š[code]"
+"{NodeName}[/code]ã€[code]{nodeName}[/code]ã€[code]{node_name}[/code]ã€[code]"
+"{SignalName}[/code]ã€[code]{signalName}[/code]ã€[code]{signal_name}[/code]。"
+
+msgid ""
+"The format of the default signal callback name when a signal connects to the "
+"same node that emits it (in the Signal Connection Dialog). The following "
+"substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/"
+"code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]"
+"{signalName}[/code], and [code]{signal_name}[/code]."
+msgstr ""
+"ä¿¡å·å›žè°ƒå称的默认格å¼ï¼Œç”¨äºŽè¿žæŽ¥åˆ°ä¸Žå‘出信å·ç›¸åŒèŠ‚点的情况(在信å·è¿žæŽ¥å¯¹è¯æ¡†"
+"中使用)。å¯ä»¥ä½¿ç”¨ä»¥ä¸‹æ›¿æ¢ï¼š[code]{NodeName}[/code]ã€[code]{nodeName}[/"
+"code]ã€[code]{node_name}[/code]ã€[code]{SignalName}[/code]ã€[code]"
+"{signalName}[/code]ã€[code]{signal_name}[/code]。"
+
+msgid ""
"When creating node names automatically, set the type of casing in this "
"project. This is mostly an editor setting."
msgstr ""
@@ -20886,6 +38565,29 @@ msgstr ""
"æœç´¢ã€‚"
msgid ""
+"If [code]true[/code], Blender 3D scene files with the [code].blend[/code] "
+"extension will be imported by converting them to glTF 2.0.\n"
+"This requires configuring a path to a Blender executable in the editor "
+"settings at [code]filesystem/import/blender/blender3_path[/code]. Blender "
+"3.0 or later is required."
+msgstr ""
+"如果为 [code]true[/code],扩展å为 [code].blend[/code] çš„ Blender 3D 场景文件"
+"会通过转æ¢ä¸º glTF 2.0 æ¥å¯¼å…¥ã€‚\n"
+"需è¦åœ¨ç¼–辑器设置 [code]filesystem/import/blender/blender3_path[/code] 中,é…"
+"ç½® Blender å¯æ‰§è¡Œæ–‡ä»¶çš„è·¯å¾„ã€‚éœ€è¦ Blender 3.0 或更高版本。"
+
+msgid ""
+"If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] "
+"extension will be imported by converting them to glTF 2.0.\n"
+"This requires configuring a path to a FBX2glTF executable in the editor "
+"settings at [code]filesystem/import/fbx/fbx2gltf_path[/code]."
+msgstr ""
+"如果为 [code]true[/code],扩展å为 [code].fbx[/code] çš„ Autodesk FBX 3D 场景"
+"文件会通过转æ¢ä¸º glTF 2.0 æ¥å¯¼å…¥ã€‚\n"
+"需è¦åœ¨ç¼–辑器设置 [code]filesystem/import/blender/fbx2gltf_path[/code] 中,é…"
+"ç½® FBX2glTF å¯æ‰§è¡Œæ–‡ä»¶çš„路径。"
+
+msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
@@ -20893,9 +38595,36 @@ msgstr ""
"éžfug。"
msgid ""
+"Path to a custom [Theme] resource file to use for the project ([code].theme[/"
+"code] or generic [code].tres[/code]/[code].res[/code] extension)."
+msgstr ""
+"[Theme] 资æºæ–‡ä»¶çš„路径,用于自定义项目主题(扩展å为 [code].theme[/code] 或通"
+"用的 [code].tres[/code]/[code].res[/code])。"
+
+msgid ""
"Path to a custom [Font] resource to use as default for all GUI elements of "
"the project."
-msgstr "自定义 [Font] 资æºçš„路径,用于项目的所有 GUI 元素的默认字体。"
+msgstr "自定义 [Font] 资æºçš„路径,用作项目中所有 GUI 元素的默认字体。"
+
+msgid "Default font hinting mode. See [member FontFile.hinting]."
+msgstr "默认字体微调模å¼ã€‚è§ [member FontFile.hinting]。"
+
+msgid ""
+"The default scale factor for [Control]s, when not overridden by a [Theme].\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default scale at runtime, set [member ThemeDB.fallback_base_scale] "
+"instead."
+msgstr ""
+"[Theme] 中没有覆盖缩放系数时,[Control] 的默认缩放系数。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜é»˜è®¤ç¼©æ”¾ï¼Œè¯·æ”¹ä¸ºè®¾ç½® "
+"[member ThemeDB.fallback_base_scale]。"
+
+msgid ""
+"When [member BaseButton.shortcut_feedback] is enabled, this is the time the "
+"[BaseButton] will remain highlighted after a shortcut."
+msgstr ""
+"å¯ç”¨ [member BaseButton.shortcut_feedback] 时,按下快æ·é”®åŽ [BaseButton] ä¿æŒ"
+"高亮的时间。"
msgid ""
"Timer setting for incremental search in [Tree], [ItemList], etc. controls "
@@ -21068,9 +38797,6 @@ msgid ""
"mouse."
msgstr "如果为 [code]true[/code],则在点击或拖动鼠标时å‘é€è§¦æ‘¸è¾“入事件。"
-msgid "Default delay for touch events. This only affects iOS devices."
-msgstr "触摸事件的默认延迟(å•ä½ä¸ºç§’ï¼‰ã€‚ä»…å½±å“ iOS 设备。"
-
msgid ""
"The locale to fall back to if a translation isn't available in a given "
"language. If left empty, [code]en[/code] (English) will be used."
@@ -21083,6 +38809,12 @@ msgid ""
"editor."
msgstr "如果ä¸ä¸ºç©ºï¼Œé‚£ä¹ˆå½“从编辑器中è¿è¡Œé¡¹ç›®æ—¶ï¼Œå°†ä½¿ç”¨è¯¥åŒºåŸŸè®¾ç½®ã€‚"
+msgid "Prefix that will be prepended to the pseudolocalized string."
+msgstr "将被å‰ç½®åˆ°ä¼ªæœ¬åœ°åŒ–字符串的å‰ç¼€ã€‚"
+
+msgid "Suffix that will be appended to the pseudolocalized string."
+msgstr "将被追加到伪本地化字符串的åŽç¼€ã€‚"
+
msgid ""
"Optional name for the 2D navigation layer 1. If left empty, the layer will "
"display as \"Layer 1\"."
@@ -21244,6 +38976,266 @@ msgid ""
msgstr "2D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
msgid ""
+"Optional name for the 2D physics layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "2D 物ç†å±‚ 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "2D 物ç†å±‚ 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "2D 物ç†å±‚ 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "2D 物ç†å±‚ 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "2D 物ç†å±‚ 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr "2D 物ç†å±‚ 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "2D 物ç†å±‚ 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "2D 物ç†å±‚ 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "2D 物ç†å±‚ 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "2D 物ç†å±‚ 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "2D 物ç†å±‚ 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "2D 物ç†å±‚ 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "2D 物ç†å±‚ 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr "2D 物ç†å±‚ 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr "2D 物ç†å±‚ 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr "2D 物ç†å±‚ 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr "2D 物ç†å±‚ 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr "2D 物ç†å±‚ 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr "2D 物ç†å±‚ 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr "2D 物ç†å±‚ 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr "2D 物ç†å±‚ 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr "2D 物ç†å±‚ 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "2D 物ç†å±‚ 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr "2D 物ç†å±‚ 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr "2D 物ç†å±‚ 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr "2D 物ç†å±‚ 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "2D 物ç†å±‚ 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "2D 物ç†å±‚ 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "2D 物ç†å±‚ 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "2D 物ç†å±‚ 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "2D 物ç†å±‚ 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+msgid ""
+"Optional name for the 2D physics layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "2D 物ç†å±‚ 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "2D 渲染层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "2D 渲染层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "2D 渲染层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "2D 渲染层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "2D 渲染层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr "2D 渲染层 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "2D 渲染层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "2D 渲染层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "2D 渲染层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "2D 渲染层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "2D 渲染层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "2D 渲染层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "2D 渲染层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "2D 渲染层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "2D 渲染层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "2D 渲染层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "2D 渲染层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "2D 渲染层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "2D 渲染层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+msgid ""
+"Optional name for the 2D render layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "2D 渲染层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+msgid ""
"Optional name for the 3D navigation layer 1. If left empty, the layer will "
"display as \"Layer 1\"."
msgstr "3D 导航层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
@@ -21404,6 +39396,261 @@ msgid ""
msgstr "3D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
msgid ""
+"Optional name for the 3D physics layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "3D 物ç†å±‚ 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "3D 物ç†å±‚ 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "3D 物ç†å±‚ 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "3D 物ç†å±‚ 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "3D 物ç†å±‚ 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr "3D 物ç†å±‚ 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "3D 物ç†å±‚ 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "3D 物ç†å±‚ 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "3D 物ç†å±‚ 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "3D 物ç†å±‚ 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "3D 物ç†å±‚ 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "3D 物ç†å±‚ 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "3D 物ç†å±‚ 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr "3D 物ç†å±‚ 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr "3D 物ç†å±‚ 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr "3D 物ç†å±‚ 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr "3D 物ç†å±‚ 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr "3D 物ç†å±‚ 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr "3D 物ç†å±‚ 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr "3D 物ç†å±‚ 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr "3D 物ç†å±‚ 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr "3D 物ç†å±‚ 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "3D 物ç†å±‚ 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr "3D 物ç†å±‚ 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr "3D 物ç†å±‚ 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr "3D 物ç†å±‚ 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "3D 物ç†å±‚ 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "3D 物ç†å±‚ 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "3D 物ç†å±‚ 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "3D 物ç†å±‚ 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "3D 物ç†å±‚ 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+msgid ""
+"Optional name for the 3D physics layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "3D 物ç†å±‚ 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "3D 渲染层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "3D 渲染层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "3D 渲染层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "3D 渲染层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "3D 渲染层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "3D 渲染层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "3D 渲染层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "3D 渲染层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "3D 渲染层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "3D 渲染层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "3D 渲染层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "3D 渲染层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "3D 渲染层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "3D 渲染层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "3D 渲染层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "3D 渲染层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "3D 渲染层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "3D 渲染层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+msgid ""
+"Optional name for the 3D render layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "3D 渲染层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+msgid ""
"Godot uses a message queue to defer some function calls. If you run out of "
"space on it (you will see an error), you can increase the size here."
msgstr ""
@@ -21421,6 +39668,48 @@ msgstr ""
"增加此数字。"
msgid ""
+"Default cell size for 2D navigation maps. See [method NavigationServer2D."
+"map_set_cell_size]."
+msgstr ""
+"2D 导航地图的默认å•å…ƒæ ¼å¤§å°ã€‚è§ [method NavigationServer2D."
+"map_set_cell_size]。"
+
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"NavigationServer2D.map_set_edge_connection_margin]."
+msgstr ""
+"2D 导航地图的默认边界链接边è·ã€‚è§ [method NavigationServer2D."
+"map_set_edge_connection_margin]。"
+
+msgid ""
+"Default link connection radius for 2D navigation maps. See [method "
+"NavigationServer2D.map_set_link_connection_radius]."
+msgstr ""
+"2D 导航地图的默认链接连接åŠå¾„ã€‚è§ [method NavigationServer2D."
+"map_set_link_connection_radius]。"
+
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer3D."
+"map_set_cell_size]."
+msgstr ""
+"3D 导航地图的默认å•å…ƒæ ¼å¤§å°ã€‚è§ [method NavigationServer3D."
+"map_set_cell_size]。"
+
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer3D.map_set_edge_connection_margin]."
+msgstr ""
+"3D 导航地图的默认边界链接边è·ã€‚è§ [method NavigationServer3D."
+"map_set_edge_connection_margin]。"
+
+msgid ""
+"Default link connection radius for 3D navigation maps. See [method "
+"NavigationServer3D.map_set_link_connection_radius]."
+msgstr ""
+"3D 导航地图的默认链接连接åŠå¾„ã€‚è§ [method NavigationServer3D."
+"map_set_link_connection_radius]。"
+
+msgid ""
"Default size of packet peer stream for deserializing Godot data (in bytes, "
"specified as a power of two). The default value [code]16[/code] is equal to "
"65,536 bytes. Over this size, data is dropped."
@@ -21445,10 +39734,336 @@ msgstr ""
msgid "Page size used by remote filesystem (in bytes)."
msgstr "远程文件系统使用的页é¢å¤§å°ï¼ˆå­—节)。"
+msgid ""
+"The default gravity strength in 2D (in pixels per second squared).\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity at runtime, use the following code sample:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set the default gravity strength to 980.\n"
+"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, "
+"PhysicsServer2D.AREA_PARAM_GRAVITY, 980)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set the default gravity strength to 980.\n"
+"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, "
+"PhysicsServer2D.AreaParameter.Gravity, 980);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"2D 默认é‡åŠ›å¼ºåº¦ï¼ˆå•ä½ä¸ºåƒç´ æ¯å¹³æ–¹ç§’)。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜é»˜è®¤é‡åŠ›ï¼Œè¯·ä½¿ç”¨ä»¥ä¸‹ä»£"
+"ç ç¤ºä¾‹ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 将默认é‡åŠ›å¼ºåº¦è®¾ç½®ä¸º 980。\n"
+"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, "
+"PhysicsServer2D.AREA_PARAM_GRAVITY, 980)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 将默认é‡åŠ›å¼ºåº¦è®¾ç½®ä¸º 980。\n"
+"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, "
+"PhysicsServer2D.AreaParameter.Gravity, 980);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"The default gravity direction in 2D.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity vector at runtime, use the following code sample:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set the default gravity direction to `Vector2(0, 1)`.\n"
+"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, "
+"PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set the default gravity direction to `Vector2(0, 1)`.\n"
+"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, "
+"PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"2D 默认é‡åŠ›æ–¹å‘。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜é»˜è®¤é‡åŠ›å‘é‡ï¼Œè¯·ä½¿ç”¨ä»¥"
+"下代ç ç¤ºä¾‹ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 将默认整ç†æ–¹å‘设置为 `Vector2(0, 1)`。\n"
+"PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, "
+"PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 将默认整ç†æ–¹å‘设置为 `Vector2(0, 1)`。\n"
+"PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, "
+"PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Sets which physics engine to use for 2D physics.\n"
+"\"DEFAULT\" and \"GodotPhysics2D\" are the same, as there is currently no "
+"alternative 2D physics server implemented."
+msgstr ""
+"设置 2D 物ç†ä½¿ç”¨å“ªä¸ªç‰©ç†å¼•æ“Žã€‚\n"
+"“DEFAULTâ€å’Œâ€œGodotPhysics2Dâ€æ˜¯ç›¸åŒçš„,因为目å‰å°šæœªå®žçŽ°å¤‡é€‰ 2D 物ç†æœåŠ¡å™¨ã€‚"
+
+msgid ""
+"If [code]true[/code], the 2D physics server runs on a separate thread, "
+"making better use of multi-core CPUs. If [code]false[/code], the 2D physics "
+"server runs on the main thread. Running the physics server on a separate "
+"thread can increase performance, but restricts API access to only physics "
+"process."
+msgstr ""
+"如果为 [code]true[/code],则 2D 物ç†æœåŠ¡å™¨ä¼šåœ¨å•ç‹¬çš„线程上è¿è¡Œï¼Œèƒ½å¤Ÿæ›´å¥½åœ°åˆ©"
+"用多核 CPU。如果为 [code]false[/code],则 2D 物ç†æœåŠ¡å™¨ä¼šåœ¨ä¸»çº¿ç¨‹ä¸Šè¿è¡Œã€‚在å•"
+"独的线程上è¿è¡Œç‰©ç†æœåŠ¡å™¨èƒ½å¤Ÿæ高性能,但会把对 API 的访问é™åˆ¶åœ¨ç‰©ç†å¤„ç†ä¸­ã€‚"
+
+msgid ""
+"Threshold angular velocity under which a 2D physics body will be considered "
+"inactive. See [constant PhysicsServer2D."
+"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+"角速度的阈值,在该阈值以下的 2D 物ç†ä½“将被视为ä¸æ´»åŠ¨ã€‚è§ [constant "
+"PhysicsServer2D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]。"
+
+msgid ""
+"Threshold linear velocity under which a 2D physics body will be considered "
+"inactive. See [constant PhysicsServer2D."
+"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+"线速度的阈值,在该阈值以下的 2D 物ç†ä½“将被视为ä¸æ´»åŠ¨ã€‚è§ [constant "
+"PhysicsServer2D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]。"
+
+msgid ""
+"Maximum distance a shape can penetrate another shape before it is considered "
+"a collision. See [constant PhysicsServer2D."
+"SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]."
+msgstr ""
+"两个形状互相穿é€çš„最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå°†è§†ä¸ºç¢°æ’žã€‚è§ [constant "
+"PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。"
+
+msgid ""
+"Maximum distance a shape can be from another before they are considered "
+"separated and the contact is discarded. See [constant PhysicsServer2D."
+"SPACE_PARAM_CONTACT_MAX_SEPARATION]."
+msgstr ""
+"两个形状间的最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå®ƒä»¬å°†è¢«è§†ä¸ºåˆ†ç¦»ï¼ŒæŽ¥è§¦å°†è¢«å¼ƒç½®ã€‚è§ "
+"[constant PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_SEPARATION]。"
+
+msgid ""
+"Maximum distance a pair of bodies has to move before their collision status "
+"has to be recalculated. See [constant PhysicsServer2D."
+"SPACE_PARAM_CONTACT_RECYCLE_RADIUS]."
+msgstr ""
+"一对物体在其碰撞状æ€è¢«é‡æ–°è®¡ç®—之å‰çš„最大移动è·ç¦»ã€‚è§ [constant "
+"PhysicsServer2D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。"
+
+msgid ""
+"Time (in seconds) of inactivity before which a 2D physics body will put to "
+"sleep. See [constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
+msgstr ""
+"2D 物ç†ç‰©ä½“进入ç¡çœ çŠ¶æ€ä¹‹å‰ï¼Œæ‰€éœ€çš„ä¸æ´»åŠ¨æ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚请å‚阅 "
+"[constant PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。"
+
+msgid ""
+"The default gravity strength in 3D (in meters per second squared).\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity at runtime, use the following code sample:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set the default gravity strength to 9.8.\n"
+"PhysicsServer3D.area_set_param(get_viewport().find_world().space, "
+"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set the default gravity strength to 9.8.\n"
+"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, "
+"PhysicsServer3D.AreaParameter.Gravity, 9.8);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"3D 默认é‡åŠ›å¼ºåº¦ï¼ˆå•ä½ä¸ºç±³æ¯å¹³æ–¹ç§’)。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜é»˜è®¤é‡åŠ›ï¼Œè¯·ä½¿ç”¨ä»¥ä¸‹ä»£"
+"ç ç¤ºä¾‹ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 将默认é‡åŠ›å¼ºåº¦è®¾ç½®ä¸º 980。\n"
+"PhysicsServer3D.area_set_param(get_viewport().find_world().space, "
+"PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 将默认é‡åŠ›å¼ºåº¦è®¾ç½®ä¸º 980。\n"
+"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, "
+"PhysicsServer3D.AreaParameter.Gravity, 9.8);\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"The default gravity direction in 3D.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the default gravity vector at runtime, use the following code sample:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set the default gravity direction to `Vector3(0, -1, 0)`.\n"
+"PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), "
+"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set the default gravity direction to `Vector3(0, -1, 0)`.\n"
+"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, "
+"PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"3D 默认é‡åŠ›æ–¹å‘。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜é»˜è®¤é‡åŠ›å‘é‡ï¼Œè¯·ä½¿ç”¨ä»¥"
+"下代ç ç¤ºä¾‹ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 将默认整ç†æ–¹å‘设置为 `Vector3(0, -1, 0)`。\n"
+"PhysicsServer3D.area_set_param(get_viewport().find_world().get_space(), "
+"PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 将默认整ç†æ–¹å‘设置为 `Vector3(0, -1, 0)`。\n"
+"PhysicsServer3D.AreaSetParam(GetViewport().FindWorld().Space, "
+"PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Sets which physics engine to use for 3D physics.\n"
+"\"DEFAULT\" and \"GodotPhysics3D\" are the same, as there is currently no "
+"alternative 3D physics server implemented."
+msgstr ""
+"设置 3D 物ç†ä½¿ç”¨å“ªä¸ªç‰©ç†å¼•æ“Žã€‚\n"
+"“DEFAULTâ€å’Œâ€œGodotPhysics3Dâ€æ˜¯ç›¸åŒçš„,因为目å‰å°šæœªå®žçŽ°å¤‡é€‰ 3D 物ç†æœåŠ¡å™¨ã€‚"
+
+msgid ""
+"If [code]true[/code], the 3D physics server runs on a separate thread, "
+"making better use of multi-core CPUs. If [code]false[/code], the 3D physics "
+"server runs on the main thread. Running the physics server on a separate "
+"thread can increase performance, but restricts API access to only physics "
+"process."
+msgstr ""
+"如果为 [code]true[/code],则 3D 物ç†æœåŠ¡å™¨ä¼šåœ¨å•ç‹¬çš„线程上è¿è¡Œï¼Œèƒ½å¤Ÿæ›´å¥½åœ°åˆ©"
+"用多核 CPU。如果为 [code]false[/code],则 3D 物ç†æœåŠ¡å™¨ä¼šåœ¨ä¸»çº¿ç¨‹ä¸Šè¿è¡Œã€‚在å•"
+"独的线程上è¿è¡Œç‰©ç†æœåŠ¡å™¨èƒ½å¤Ÿæ高性能,但会把对 API 的访问é™åˆ¶åœ¨ç‰©ç†å¤„ç†ä¸­ã€‚"
+
+msgid ""
+"Threshold angular velocity under which a 3D physics body will be considered "
+"inactive. See [constant PhysicsServer3D."
+"SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+"角速度的阈值,在该阈值以下的 3D 物ç†ä½“将被视为ä¸æ´»åŠ¨ã€‚è§ [constant "
+"PhysicsServer3D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD]。"
+
+msgid ""
+"Threshold linear velocity under which a 3D physics body will be considered "
+"inactive. See [constant PhysicsServer3D."
+"SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]."
+msgstr ""
+"线速度的阈值,在该阈值以下的 3D 物ç†ä½“将被视为ä¸æ´»åŠ¨ã€‚è§ [constant "
+"PhysicsServer3D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD]。"
+
+msgid ""
+"Maximum distance a shape can penetrate another shape before it is considered "
+"a collision. See [constant PhysicsServer3D."
+"SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]."
+msgstr ""
+"两个形状互相穿é€çš„最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå°†è§†ä¸ºç¢°æ’žã€‚è§ [constant "
+"PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。 [constant "
+"PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION]。"
+
+msgid ""
+"Maximum distance a shape can be from another before they are considered "
+"separated and the contact is discarded. See [constant PhysicsServer3D."
+"SPACE_PARAM_CONTACT_MAX_SEPARATION]."
+msgstr ""
+"两个形状间的最大è·ç¦»ï¼Œè¶…过该è·ç¦»åŽå®ƒä»¬å°†è¢«è§†ä¸ºåˆ†ç¦»ï¼ŒæŽ¥è§¦å°†è¢«å¼ƒç½®ã€‚è§ "
+"[constant PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_SEPARATION]。"
+
+msgid ""
+"Maximum distance a pair of bodies has to move before their collision status "
+"has to be recalculated. See [constant PhysicsServer3D."
+"SPACE_PARAM_CONTACT_RECYCLE_RADIUS]."
+msgstr ""
+"一对物体在其碰撞状æ€è¢«é‡æ–°è®¡ç®—之å‰çš„最大移动è·ç¦»ã€‚è§ [constant "
+"PhysicsServer3D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS]。"
+
+msgid ""
+"Number of solver iterations for all contacts and constraints. The greater "
+"the number of iterations, the more accurate the collisions will be. However, "
+"a greater number of iterations requires more CPU power, which can decrease "
+"performance. See [constant PhysicsServer3D.SPACE_PARAM_SOLVER_ITERATIONS]."
+msgstr ""
+"所有接触与约æŸçš„求解器迭代数。迭代次数越多,碰撞越准确。但是,大é‡çš„迭代会需"
+"è¦æ›´å¤šçš„ CPU 能力,会é™ä½Žæ€§èƒ½ã€‚è§ [constant PhysicsServer3D."
+"SPACE_PARAM_SOLVER_ITERATIONS]。"
+
+msgid ""
+"Time (in seconds) of inactivity before which a 3D physics body will put to "
+"sleep. See [constant PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP]."
+msgstr ""
+"3D 物ç†ç‰©ä½“进入ç¡çœ çŠ¶æ€ä¹‹å‰ï¼Œæ‰€éœ€çš„ä¸æ´»åŠ¨æ—¶é—´ï¼ˆä»¥ç§’为å•ä½ï¼‰ã€‚请å‚阅 "
+"[constant PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。"
+
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
msgstr "在根视图上å¯ç”¨ [member Viewport.physics_object_picking]。"
msgid ""
+"Controls the maximum number of physics steps that can be simulated each "
+"rendered frame. The default value is tuned to avoid \"spiral of death\" "
+"situations where expensive physics simulations trigger more expensive "
+"simulations indefinitely. However, the game will appear to slow down if the "
+"rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of "
+"[member physics/common/physics_ticks_per_second]. This occurs even if "
+"[code]delta[/code] is consistently used in physics calculations. To avoid "
+"this, increase [member physics/common/max_physics_steps_per_frame] if you "
+"have increased [member physics/common/physics_ticks_per_second] "
+"significantly above its default value.\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the maximum number of simulated physics steps per frame at runtime, set "
+"[member Engine.max_physics_steps_per_frame] instead."
+msgstr ""
+"控制æ¯ä¸ªæ¸²æŸ“帧所能模拟的最大物ç†æ­¥éª¤æ•°ã€‚默认值ç»è¿‡è°ƒè¯•ï¼Œå¯ä»¥é¿å…“死亡螺旋â€ï¼Œ"
+"防止开销较大的物ç†ä»¿çœŸæ— é™è§¦å‘开销更大的仿真。ä¸è¿‡å¦‚果渲染 FPS å°äºŽ [member "
+"physics/common/physics_ticks_per_second] çš„ [code]1 / "
+"max_physics_steps_per_frame[/code],游æˆçœ‹ä¸ŠåŽ»ä¼šæ˜¯é™é€Ÿçš„。å³ä¾¿åœ¨ç‰©ç†è®¡ç®—中始"
+"终使用 [code]delta[/code] 也一样会å‘生。è¦é¿å…è¿™ç§æƒ…况,如果增大了 [member "
+"physics/common/physics_ticks_per_second],而且远大于默认值,那么建议将 "
+"[member physics/common/max_physics_steps_per_frame] 也调大。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜æ¯å¸§æ¨¡æ‹Ÿçš„最大物ç†æ­¥éª¤"
+"数,请改为设置 [member Engine.max_physics_steps_per_frame]。"
+
+msgid ""
+"The number of fixed iterations per second. This controls how often physics "
+"simulation and [method Node._physics_process] methods are run. See also "
+"[member application/run/max_fps].\n"
+"[b]Note:[/b] This property is only read when the project starts. To change "
+"the physics FPS at runtime, set [member Engine.physics_ticks_per_second] "
+"instead.\n"
+"[b]Note:[/b] Only [member physics/common/max_physics_steps_per_frame] "
+"physics ticks may be simulated per rendered frame at most. If more physics "
+"ticks have to be simulated per rendered frame to keep up with rendering, the "
+"project will appear to slow down (even if [code]delta[/code] is used "
+"consistently in physics calculations). Therefore, it is recommended to also "
+"increase [member physics/common/max_physics_steps_per_frame] if increasing "
+"[member physics/common/physics_ticks_per_second] significantly above its "
+"default value."
+msgstr ""
+"æ¯ç§’执行的固定迭代次数。用于控制物ç†ä»¿çœŸå’Œ [method Node._physics_process] çš„"
+"执行频率。å¦è§ [member application/run/max_fps]。\n"
+"[b]注æ„:[/b]这个属性åªåœ¨é¡¹ç›®å¯åŠ¨æ—¶è¯»å–。è¦åœ¨è¿è¡Œæ—¶æ”¹å˜ç‰©ç† FPS,请改为设置 "
+"[member Engine.iterations_per_second]。\n"
+"[b]注æ„:[/b]æ¯ä¸ªæ¸²æŸ“帧最多åªèƒ½æ¨¡æ‹Ÿ [member max_physics_steps_per_frame] 个物"
+"ç†å‘¨æœŸã€‚如果为了追赶渲染,需è¦åœ¨æ¯ä¸ªæ¸²æŸ“帧中模拟更多物ç†å‘¨æœŸï¼Œæ¸¸æˆçœ‹ä¸ŠåŽ»ä¼šæ˜¯"
+"é™é€Ÿçš„(å³ä¾¿åœ¨ç‰©ç†è®¡ç®—中始终使用 [code]delta[/code])。因此,如果增大了 "
+"[member physics/common/physics_ticks_per_second],而且远大于默认值,那么建议"
+"将 [member physics/common/max_physics_steps_per_frame] 也调大。"
+
+msgid ""
"Thread model for rendering. Rendering on a thread can vastly improve "
"performance, but synchronizing to the main thread can cause a bit more "
"jitter."
@@ -21457,11 +40072,197 @@ msgstr ""
"多的抖动。"
msgid ""
+"Default background clear color. Overridable per [Viewport] using its "
+"[Environment]. See [member Environment.background_mode] and [member "
+"Environment.background_color] in particular. To change this default color "
+"programmatically, use [method RenderingServer.set_default_clear_color]."
+msgstr ""
+"默认清å±é¢œè‰²ã€‚[Viewport] å¯ä½¿ç”¨å…¶ [Environment] è¿›è¡Œè¦†ç›–ã€‚å…·ä½“è§ [member "
+"Environment.background_mode] å’Œ [member Environment.background_color]。è¦é€šè¿‡"
+"代ç æ›´æ”¹æ­¤é»˜è®¤é¢œè‰²ï¼Œè¯·ä½¿ç”¨ [method RenderingServer.set_default_clear_color]。"
+
+msgid ""
+"Quality target to use when [member rendering/environment/ssao/quality] is "
+"set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality "
+"and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] "
+"provides much higher quality than any of the other settings at the cost of "
+"performance."
+msgstr ""
+"当 [member rendering/environment/ssao/quality] 被设置为 [code]Ultra[/code] 时"
+"所使用的质é‡ç›®æ ‡ã€‚值为 [code]0.0[/code] 时的质é‡å’Œé€Ÿåº¦ä¸Ž [code]Medium[/code] "
+"相似,而值为 [code]1.0[/code] 时的质é‡æ¯”其他任何设置都è¦é«˜å¾—多,代价是牺牲性"
+"能。"
+
+msgid ""
+"Number of blur passes to use when computing screen-space ambient occlusion. "
+"A higher number will result in a smoother look, but will be slower to "
+"compute and will have less high-frequency detail."
+msgstr ""
+"模糊通é“数,在计算å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½æ—¶ä½¿ç”¨ã€‚数值越大,外观越平滑,但计算速度"
+"会å˜æ…¢ï¼Œé«˜é¢‘细节也会å˜å°‘。"
+
+msgid ""
+"Distance at which the screen-space ambient occlusion effect starts to fade "
+"out. Use this hide ambient occlusion at great distances."
+msgstr ""
+"å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½æ•ˆæžœå¼€å§‹æ·¡å‡ºçš„è·ç¦»ã€‚使用该属性å¯ä»¥åœ¨è¿œè·ç¦»å¤„éšè—环境光é®"
+"蔽。"
+
+msgid ""
+"Distance at which the screen-space ambient occlusion is fully faded out. Use "
+"this hide ambient occlusion at great distances."
+msgstr ""
+"å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½æ•ˆæžœå®Œå…¨æ·¡å‡ºçš„è·ç¦»ã€‚使用该属性å¯ä»¥åœ¨è¿œè·ç¦»å¤„éšè—环境光é®"
+"蔽。"
+
+msgid ""
+"If [code]true[/code], screen-space ambient occlusion will be rendered at "
+"half size and then upscaled before being added to the scene. This is "
+"significantly faster but may miss small details. If [code]false[/code], "
+"screen-space ambient occlusion will be rendered at full size."
+msgstr ""
+"如果为 [code]true[/code],å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½å°†ä»¥ä¸€åŠå¤§å°æ¸²æŸ“,然åŽåœ¨è¢«æ·»åŠ åˆ°"
+"场景之å‰æ”¾å¤§ã€‚这明显更快,但å¯èƒ½ä¼šé—æ¼ä¸€äº›å°ç»†èŠ‚。如果为 [code]false[/code],"
+"å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½å°†ä»¥å…¨å°ºå¯¸æ¸²æŸ“。"
+
+msgid ""
+"Quality target to use when [member rendering/environment/ssil/quality] is "
+"set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality "
+"and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] "
+"provides much higher quality than any of the other settings at the cost of "
+"performance. When using the adaptive target, the performance cost scales "
+"with the complexity of the scene."
+msgstr ""
+"当 [member rendering/environment/ssil/quality] 被设置为 [code]Ultra[/code] 时"
+"所使用的质é‡ç›®æ ‡ã€‚值为 [code]0.0[/code] 时的质é‡å’Œé€Ÿåº¦ä¸Ž [code]Medium[/code] "
+"相似,而值为 [code]1.0[/code] 时的质é‡æ¯”其他任何设置都è¦é«˜å¾—多,代价是牺牲性"
+"能。使用适应目标时,性能æŸè€—与场景å¤æ‚度æˆæ­£æ¯”。"
+
+msgid ""
+"Number of blur passes to use when computing screen-space indirect lighting. "
+"A higher number will result in a smoother look, but will be slower to "
+"compute and will have less high-frequency detail."
+msgstr ""
+"模糊通é“数,在计算å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§æ—¶ä½¿ç”¨ã€‚数值越大,外观越平滑,但计算速度会"
+"å˜æ…¢ï¼Œé«˜é¢‘细节也会å˜å°‘。"
+
+msgid ""
+"Distance at which the screen-space indirect lighting effect starts to fade "
+"out. Use this hide screen-space indirect lighting at great distances."
+msgstr ""
+"å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§æ•ˆæžœå¼€å§‹æ·¡å‡ºçš„è·ç¦»ã€‚使用该属性å¯ä»¥åœ¨è¿œè·ç¦»å¤„éšè—å±å¹•ç©ºé—´é—´æŽ¥"
+"光照。"
+
+msgid ""
+"Distance at which the screen-space indirect lighting is fully faded out. Use "
+"this hide screen-space indirect lighting at great distances."
+msgstr ""
+"å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§æ•ˆæžœå®Œå…¨æ·¡å‡ºçš„è·ç¦»ã€‚使用该属性å¯ä»¥åœ¨è¿œè·ç¦»å¤„éšè—å±å¹•ç©ºé—´é—´æŽ¥"
+"光照。"
+
+msgid ""
+"If [code]true[/code], screen-space indirect lighting will be rendered at "
+"half size and then upscaled before being added to the scene. This is "
+"significantly faster but may miss small details and may result in some "
+"objects appearing to glow at their edges."
+msgstr ""
+"如果为 [code]true[/code],å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§å°†ä»¥ä¸€åŠå¤§å°æ¸²æŸ“,然åŽåœ¨è¢«æ·»åŠ åˆ°åœº"
+"景之å‰æ”¾å¤§ã€‚这明显更快,但å¯èƒ½ä¼šé—æ¼ä¸€äº›å°ç»†èŠ‚,部分对象的边缘也会出现å‘光的"
+"情况。"
+
+msgid ""
+"Sets the driver to be used by the renderer when using the Compatibility "
+"renderer. This property can not be edited directly, instead, set the driver "
+"using the platform-specific overrides."
+msgstr ""
+"设置渲染器驱动程åºï¼Œåœ¨ä½¿ç”¨ Compatibility(兼容性)渲染器时使用。这个属性ä¸èƒ½"
+"直接编辑,请改用特定平å°çš„覆盖项æ¥è®¾ç½®é©±åŠ¨ç¨‹åºã€‚"
+
+msgid "Android override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 Android 的覆盖项。"
+
+msgid "iOS override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 iOS 的覆盖项。"
+
+msgid "LinuxBSD override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 LinuxBSD 的覆盖项。"
+
+msgid "macOS override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 macOS 的覆盖项。"
+
+msgid "Web override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 Web 的覆盖项。"
+
+msgid "Windows override for [member rendering/gl_compatibility/driver]."
+msgstr "[member rendering/gl_compatibility/driver] 在 Windows 的覆盖项。"
+
+msgid ""
+"Maximum number of canvas items commands that can be drawn in a single "
+"viewport update. If more render commands are issued they will be ignored. "
+"Decreasing this limit may improve performance on bandwidth limited devices. "
+"Increase this limit if you find that not all objects are being drawn in a "
+"frame."
+msgstr ""
+"å•æ¬¡è§†å£æ›´æ–°ä¸­èƒ½å¤Ÿç»˜åˆ¶çš„画布项目命令的最大数é‡ã€‚如果å‘出了更多的渲染命令,就"
+"会被忽略。é™ä½Žè¿™ä¸ªé™åˆ¶å¯ä»¥åœ¨å¸¦å®½æœ‰é™çš„设备上æ高性能。如果你å‘现ä¸æ˜¯æ‰€æœ‰çš„对"
+"象都在åŒä¸€å¸§ä¸­è¢«ç»˜åˆ¶ï¼Œè¯·æ高这个é™åˆ¶ã€‚"
+
+msgid ""
"Subdivision quadrant size for shadow mapping. See shadow mapping "
"documentation."
msgstr "阴影贴图的细分象é™å¤§å°ã€‚请å‚阅阴影映射文档。"
msgid ""
+"Sets the renderer that will be used by the project. Options are:\n"
+"[b]Forward Plus[/b]: High-end renderer designed for Desktop devices. Has a "
+"higher base overhead, but scales well with complex scenes. Not suitable for "
+"older devices or mobile.\n"
+"[b]Mobile[/b]: Modern renderer designed for mobile devices. Has a lower base "
+"overhead than Forward Plus, but does not scale as well to large scenes with "
+"many elements.\n"
+"[b]GL Compatibility[/b]: Low-end renderer designed for older devices. Based "
+"on the limitations of the OpenGL 3.3/ OpenGL ES 3.0 / WebGL 2 APIs."
+msgstr ""
+"设置项目将使用的渲染器。选项有:\n"
+"[b]Forward Plus[/b]:为桌é¢è®¾å¤‡è®¾è®¡çš„高端渲染器。有较高的基础开销,但能够很好"
+"地扩展到å¤æ‚的场景。ä¸é€‚åˆè€æ—§è®¾å¤‡å’Œç§»åŠ¨è®¾å¤‡ã€‚\n"
+"[b]Mobile[/b]:为移动设备设计的现代渲染器。基础开销比 Forward Plus 低,但在处"
+"ç†æœ‰è®¸å¤šå…ƒç´ çš„大型场景时,扩展性并ä¸ç†æƒ³ã€‚\n"
+"[b]GL Compatibility[/b]:为è€æ—§è®¾å¤‡è®¾è®¡çš„低端渲染器。基于 OpenGL 3.3/ OpenGL "
+"ES 3.0 / WebGL 2 API çš„é™åˆ¶ã€‚"
+
+msgid ""
+"Override for [member rendering/renderer/rendering_method] on mobile devices."
+msgstr "移动设备的 [member rendering/renderer/rendering_method] 覆盖项。"
+
+msgid "Override for [member rendering/renderer/rendering_method] on web."
+msgstr "Web å¹³å°çš„ [member rendering/renderer/rendering_method] 覆盖项。"
+
+msgid ""
+"Sets the driver to be used by the renderer when using a RenderingDevice-"
+"based renderer like the clustered renderer or the mobile renderer. This "
+"property can not be edited directly, instead, set the driver using the "
+"platform-specific overrides."
+msgstr ""
+"设置渲染器驱动程åºï¼Œåœ¨ä½¿ç”¨é›†ç¾¤æ¸²æŸ“器ã€ç§»åŠ¨æ¸²æŸ“器等基于 RenderingDevice 的渲染"
+"器时使用。这个属性ä¸èƒ½ç›´æŽ¥ç¼–辑,请改用特定平å°çš„覆盖项æ¥è®¾ç½®é©±åŠ¨ç¨‹åºã€‚"
+
+msgid "Android override for [member rendering/rendering_device/driver]."
+msgstr "[member rendering/rendering_device/driver] 在 Android 的覆盖项。"
+
+msgid "iOS override for [member rendering/rendering_device/driver]."
+msgstr "[member rendering/rendering_device/driver] 在 iOS 的覆盖项。"
+
+msgid "LinuxBSD override for [member rendering/rendering_device/driver]."
+msgstr "[member rendering/rendering_device/driver] 在 LinuxBSD 的覆盖项。"
+
+msgid "macOS override for [member rendering/rendering_device/driver]."
+msgstr "[member rendering/rendering_device/driver] 在 macOS 的覆盖项。"
+
+msgid "Windows override for [member rendering/rendering_device/driver]."
+msgstr "[member rendering/rendering_device/driver] 在 Windows 的覆盖项。"
+
+msgid ""
"If [code]true[/code], uses faster but lower-quality Lambert material "
"lighting model instead of Burley."
msgstr ""
@@ -21469,12 +40270,62 @@ msgstr ""
"使用 Burley 模型。"
msgid ""
+"The filtering quality to use for [Decal] nodes. When using one of the "
+"anisotropic filtering modes, the anisotropic filtering level is controlled "
+"by [member rendering/textures/default_filters/anisotropic_filtering_level]."
+msgstr ""
+"[Decal] 节点的过滤质é‡ã€‚使用 Anisotropic(å„å‘异性)过滤模å¼æ—¶ï¼Œå„å‘异性过滤"
+"级别由 [member rendering/textures/default_filters/"
+"anisotropic_filtering_level] 控制。"
+
+msgid ""
+"The filtering quality to use for [OmniLight3D] and [SpotLight3D] projectors. "
+"When using one of the anisotropic filtering modes, the anisotropic filtering "
+"level is controlled by [member rendering/textures/default_filters/"
+"anisotropic_filtering_level]."
+msgstr ""
+"[OmniLight3D] å’Œ [SpotLight3D] 投影器的过滤质é‡ã€‚使用 Anisotropic(å„å‘异性)"
+"过滤模å¼æ—¶ï¼Œå„å‘异性过滤级别由 [member rendering/textures/default_filters/"
+"anisotropic_filtering_level] 控制。"
+
+msgid ""
"If [code]true[/code], the texture importer will import lossless textures "
"using the PNG format. Otherwise, it will default to using WebP."
msgstr ""
"如果为 [code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨ PNG æ ¼å¼å¯¼å…¥æ— æŸçº¹ç†ã€‚å¦åˆ™é»˜è®¤ä½¿"
"用 WebP。"
+msgid "Action map configuration to load by default."
+msgstr "默认加载的动作映射é…置。"
+
+msgid "If [code]true[/code] Godot will setup and initialize OpenXR on startup."
+msgstr "如果为 [code]true[/code],Godot 将在å¯åŠ¨æ—¶åˆå§‹åŒ– OpenXR。"
+
+msgid ""
+"Specify whether OpenXR should be configured for an HMD or a hand held device."
+msgstr "指定是å¦åº”为 HMD 或手æŒè®¾å¤‡é…ç½® OpenXR。"
+
+msgid "Specify the default reference space."
+msgstr "指定默认å‚照空间。"
+
+msgid ""
+"If [code]true[/code], OpenXR will manage the depth buffer and use the depth "
+"buffer for advanced reprojection provided this is supported by the XR "
+"runtime. Note that some rendering features in Godot can't be used with this "
+"feature."
+msgstr ""
+"如果为 [code]true[/code],则 OpenXR 会管ç†æ·±åº¦ç¼“冲区,使用深度缓冲区进行高级"
+"å†æŠ•å½±ï¼Œå‰æ是 XR è¿è¡Œæ—¶æ”¯æŒã€‚请注æ„,Godot 中的部分渲染特性无法与该特性一åŒ"
+"使用。"
+
+msgid ""
+"Specify the view configuration with which to configure OpenXR setting up "
+"either Mono or Stereo rendering."
+msgstr "指定视图é…置,用于é…ç½® OpenXR 设置å•è§†åœºæˆ–立体渲染。"
+
+msgid "If [code]true[/code], Godot will compile shaders required for XR."
+msgstr "如果为 [code]true[/code],Godot 将编译 XR 所需的ç€è‰²å™¨ã€‚"
+
msgid "Interpolates an [Object]'s property over time."
msgstr "éšæ—¶é—´å¯¹ [Object] 的属性进行æ’值。"
@@ -21504,12 +40355,23 @@ msgid ""
"interpolating. By default there's no delay."
msgstr "设置该 [PropertyTweener] 开始æ’值的时间,å•ä½ä¸ºç§’。默认无延迟。"
+msgid "Class representing a square mesh facing the camera."
+msgstr "表示é¢å‘相机的正方形网格的类。"
+
msgid "2D in 3D Demo"
msgstr "3D 中的 2D 演示"
+msgid "The quad's size in 3D units."
+msgstr "该四边形的大å°ï¼Œä½¿ç”¨ 3D å•ä½ã€‚"
+
msgid "Quaternion."
msgstr "四元数."
+msgid ""
+"Constructs a default-initialized quaternion with all components set to "
+"[code]0[/code]."
+msgstr "构造默认åˆå§‹åŒ–的四元数,所有分é‡éƒ½è¢«è®¾ç½®ä¸º [code]0[/code]。"
+
msgid "Constructs a [Quaternion] as a copy of the given [Quaternion]."
msgstr "构造给定 [Quaternion] 的副本。"
@@ -21579,6 +40441,22 @@ msgstr ""
"å•ä½å››å…ƒæ•°ï¼Œä»£è¡¨æ— æ—‹è½¬ã€‚相当于å•ä½ [Basis] 矩阵。如果一个å‘é‡è¢«ä¸€ä¸ªå•ä½å››å…ƒæ•°"
"å˜æ¢ï¼Œå®ƒä¸ä¼šæ”¹å˜ã€‚"
+msgid ""
+"Multiplies each component of the [Quaternion] by the given value. This "
+"operation is not meaningful on its own, but it can be used as a part of a "
+"larger expression."
+msgstr ""
+"将该 [Quaternion] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„值。此æ“作本身没有æ„义,但å¯ä»¥ç”¨ä½œæ›´å¤§"
+"表达å¼çš„一部分。"
+
+msgid ""
+"Divides each component of the [Quaternion] by the given value. This "
+"operation is not meaningful on its own, but it can be used as a part of a "
+"larger expression."
+msgstr ""
+"将该 [Quaternion] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„值。此æ“作本身没有æ„义,但å¯ä»¥ç”¨ä½œæ›´å¤§"
+"表达å¼çš„一部分。"
+
msgid "A class for generating pseudo-random numbers."
msgstr "用于生æˆä¼ªéšæœºæ•°çš„类。"
@@ -21744,10 +40622,10 @@ msgid ""
msgstr "移除碰撞例外,这样射线就会报告与指定的 [RID] 的碰撞。"
msgid "If [code]true[/code], collision with [Area2D]s will be reported."
-msgstr "如果为 [code]true[/code],将报告与 [Area2D] 的碰撞。"
+msgstr "如果为 [code]true[/code],则会报告与 [Area2D] 的碰撞。"
msgid "If [code]true[/code], collision with [PhysicsBody2D]s will be reported."
-msgstr "如果为 [code]true[/code],将报告与 [PhysicsBody2D] 的碰撞。"
+msgstr "如果为 [code]true[/code],则会报告与 [PhysicsBody2D] 的碰撞。"
msgid ""
"The ray's collision mask. Only objects in at least one collision layer "
@@ -21768,17 +40646,43 @@ msgid ""
msgstr "如果为 [code]true[/code],父节点将被排除在碰撞检测之外。"
msgid ""
+"If [code]true[/code], the ray will detect a hit when starting inside shapes. "
+"In this case the collision normal will be [code]Vector2(0, 0)[/code]. Does "
+"not affect concave polygon shapes."
+msgstr ""
+"如果为 [code]true[/code],射线会在从形状内部开始时检测到命中。在此情况下,碰"
+"撞法线将为 [code]Vector2(0, 0)[/code]。ä¸ä¼šå½±å“凹多边形形状。"
+
+msgid ""
"The ray's destination point, relative to the RayCast's [code]position[/code]."
msgstr "光线的目标点,相对于该 RayCast 的 [code]position[/code]。"
+msgid "If [code]true[/code], collision with [Area3D]s will be reported."
+msgstr "如果为 [code]true[/code],则会报告与 [Area3D] 的碰撞。"
+
+msgid "If [code]true[/code], collision with [PhysicsBody3D]s will be reported."
+msgstr "如果为 [code]true[/code],则会报告与 [PhysicsBody3D] 的碰撞。"
+
+msgid ""
+"If [code]true[/code], the ray will detect a hit when starting inside shapes. "
+"In this case the collision normal will be [code]Vector3(0, 0, 0)[/code]. "
+"Does not affect shapes with no volume like concave polygon or heightmap."
+msgstr ""
+"如果为 [code]true[/code],射线会在从形状内部开始时检测到命中。在此情况下,碰"
+"撞法线将为 [code]Vector3(0, 0, 0)[/code]。ä¸ä¼šå½±å“无体积的形状,如凹多边形和"
+"高度图。"
+
msgid "Constructs a [Rect2] as a copy of the given [Rect2]."
msgstr "构造给定 [Rect2] 的副本。"
+msgid "Constructs a [Rect2] from a [Rect2i]."
+msgstr "从 [Rect2i] 构造 [Rect2]。"
+
msgid "Constructs a [Rect2] by position and size."
-msgstr "按ä½ç½®å’Œå¤§å°æž„造一个 [Rect2]。"
+msgstr "按ä½ç½®å’Œå¤§å°æž„造 [Rect2]。"
msgid "Constructs a [Rect2] by x, y, width, and height."
-msgstr "通过 xã€yã€å®½åº¦å’Œé«˜åº¦æž„造一个 [Rect2]。"
+msgstr "按 xã€yã€å®½åº¦å’Œé«˜åº¦æž„造 [Rect2]。"
msgid ""
"Returns a [Rect2] with equivalent position and area, modified so that the "
@@ -21792,6 +40696,9 @@ msgid ""
"Returns [code]true[/code] if this [Rect2] completely encloses another one."
msgstr "如果此 [Rect2] 完全包å«å¦ä¸€ä¸ªï¼Œåˆ™è¿”回 [code]true[/code]。"
+msgid "Returns the area of the [Rect2]. See also [method has_area]."
+msgstr "返回该 [Rect2] çš„é¢ç§¯ã€‚å¦è¯·å‚阅 [method has_area]。"
+
msgid ""
"Returns the center of the [Rect2], which is equal to [member position] + "
"([member size] / 2)."
@@ -21823,6 +40730,20 @@ msgid "Constructs a [Rect2i] as a copy of the given [Rect2i]."
msgstr "构造给定 [Rect2i] 的副本。"
msgid ""
+"Constructs a new [Rect2i] from [Rect2]. The floating point coordinates will "
+"be truncated."
+msgstr "从 [Rect2] 构造新的 [Rect2i]。浮点数å标将被截断。"
+
+msgid "Constructs a [Rect2i] by position and size."
+msgstr "按ä½ç½®å’Œå¤§å°æž„造 [Rect2i]。"
+
+msgid "Constructs a [Rect2i] by x, y, width, and height."
+msgstr "按 xã€yã€å®½åº¦å’Œé«˜åº¦æž„造 [Rect2i]。"
+
+msgid "Returns the area of the [Rect2i]. See also [method has_area]."
+msgstr "返回该 [Rect2i] çš„é¢ç§¯ã€‚å¦è¯·å‚阅 [method has_area]。"
+
+msgid ""
"Returns [code]true[/code] if the [Rect2i] has area, and [code]false[/code] "
"if the [Rect2i] is linear, empty, or has a negative [member size]. See also "
"[method get_area]."
@@ -21831,9 +40752,24 @@ msgstr ""
"空的或有负的 [member size],则返回 [code]false[/code] 。å¦è¯·å‚阅 [member "
"get_area]。"
+msgid "Returns [code]true[/code] if the rectangles are not equal."
+msgstr "如果矩形ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the rectangles are equal."
+msgstr "如果矩形相等,则返回 [code]true[/code]。"
+
+msgid "Rectangle shape resource for 2D physics."
+msgstr "矩形形状资æºï¼Œç”¨äºŽ 2D 物ç†ã€‚"
+
+msgid "The rectangle's width and height."
+msgstr "该矩形的宽度和高度。"
+
msgid "Base class for reference-counted objects."
msgstr "引用计数对象的基类。"
+msgid "Returns the current reference count."
+msgstr "返回当å‰çš„引用计数。"
+
msgid ""
"Initializes the internal reference counter. Use this only if you really know "
"what you are doing.\n"
@@ -21961,6 +40897,9 @@ msgstr ""
"编译并指定è¦ä½¿ç”¨çš„æœç´¢æ¨¡å¼ã€‚如果编译æˆåŠŸï¼Œè¿”回 [constant OK]。如果é‡åˆ°é”™è¯¯ï¼Œ"
"细节将被打å°åˆ°æ ‡å‡†è¾“出,并返回一个错误。"
+msgid "Creates and compiles a new [RegEx] object."
+msgstr "创建并编译新 [RegEx] 对象。"
+
msgid "Returns the number of capturing groups in compiled pattern."
msgstr "返回编译模å¼ä¸­æ•èŽ·ç»„çš„æ•°é‡ã€‚"
@@ -22070,9 +41009,112 @@ msgstr ""
"如果为 [code]true[/code],则使用全局å标。如果 [code]false[/code],则使用本地"
"å标。"
+msgid "Abstraction for working with modern low-level graphics APIs."
+msgstr "用于处ç†çŽ°ä»£ä½Žé˜¶å›¾å½¢ API 的抽象。"
+
+msgid "Represents the size of the [enum DeviceType] enum."
+msgstr "代表 [enum DeviceType] 枚举的大å°ã€‚"
+
+msgid "1-dimensional texture."
+msgstr "一维纹ç†ã€‚"
+
+msgid "2-dimensional texture."
+msgstr "二维纹ç†ã€‚"
+
+msgid "3-dimensional texture."
+msgstr "三维纹ç†ã€‚"
+
+msgid "[Cubemap] texture."
+msgstr "[Cubemap] 纹ç†ã€‚"
+
+msgid "Array of 1-dimensional textures."
+msgstr "一维纹ç†æ•°ç»„。"
+
+msgid "Array of 2-dimensional textures."
+msgstr "二维纹ç†æ•°ç»„。"
+
+msgid "Array of [Cubemap] textures."
+msgstr "[Cubemap] 纹ç†æ•°ç»„。"
+
+msgid "Represents the size of the [enum TextureType] enum."
+msgstr "代表 [enum TextureType] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum TextureSamples] enum."
+msgstr "代表 [enum TextureSamples] 枚举的大å°ã€‚"
+
+msgid ""
+"Nearest-neighbor sampler filtering. Sampling at higher resolutions than the "
+"source will result in a pixelated look."
+msgstr "最近邻采样器过滤。按照比æºæ›´é«˜åˆ†è¾¨çŽ‡é‡‡æ ·æ—¶ï¼Œä¼šäº§ç”Ÿåƒç´ åŒ–的效果。"
+
+msgid ""
+"Bilinear sampler filtering. Sampling at higher resolutions than the source "
+"will result in a blurry look."
+msgstr "åŒçº¿æ€§é‡‡æ ·å™¨è¿‡æ»¤ã€‚按照比æºæ›´é«˜åˆ†è¾¨çŽ‡é‡‡æ ·æ—¶ï¼Œä¼šäº§ç”Ÿæ¨¡ç³Šçš„效果。"
+
+msgid ""
+"Point rendering primitive (with constant size, regardless of distance from "
+"camera)."
+msgstr "渲染点的图元(大å°ä¸ºå¸¸é‡ï¼Œå’Œä¸Žç›¸æœºä¹‹é—´çš„è·ç¦»æ— å…³ï¼‰ã€‚"
+
+msgid "Line rendering primitive."
+msgstr "绘制直线的图元。"
+
+msgid "Exclusive or (XOR) logic operation."
+msgstr "逻辑异或(XOR)è¿ç®—。"
+
+msgid "Minimum blending operation (keep the lowest value of the two)."
+msgstr "最å°æ··åˆè¿ç®—(ä¿ç•™ä¸¤è€…之间的较å°å€¼ï¼‰ã€‚"
+
+msgid "Maximum blending operation (keep the highest value of the two)."
+msgstr "最大混åˆè¿ç®—(ä¿ç•™ä¸¤è€…之间的较大值)。"
+
+msgid "Represents the size of the [enum BlendOperation] enum."
+msgstr "代表 [enum BlendOperation] 枚举的大å°ã€‚"
+
+msgid ""
+"Maximum supported 1-dimensional texture size (in pixels on a single axis)."
+msgstr "支æŒçš„一维纹ç†çš„最大尺寸(å•è½´åƒç´ æ•°ï¼‰ã€‚"
+
+msgid ""
+"Maximum supported 2-dimensional texture size (in pixels on a single axis)."
+msgstr "支æŒçš„二维纹ç†çš„最大尺寸(å•è½´åƒç´ æ•°ï¼‰ã€‚"
+
+msgid ""
+"Maximum supported 3-dimensional texture size (in pixels on a single axis)."
+msgstr "支æŒçš„三维纹ç†çš„最大尺寸(å•è½´åƒç´ æ•°ï¼‰ã€‚"
+
+msgid ""
+"Maximum supported cubemap texture size (in pixels on a single axis of a "
+"single face)."
+msgstr "支æŒçš„立方体贴图纹ç†çš„最大尺寸(å•è½´åƒç´ æ•°ï¼‰ã€‚"
+
+msgid "Memory taken by textures."
+msgstr "纹ç†å ç”¨çš„内存。"
+
+msgid "Memory taken by buffers."
+msgstr "缓冲区å ç”¨çš„内存。"
+
+msgid ""
+"Total memory taken. This is greater than the sum of [constant "
+"MEMORY_TEXTURES] and [constant MEMORY_BUFFERS], as it also includes "
+"miscellaneous memory usage."
+msgstr ""
+"内存中å ç”¨ã€‚比 [constant MEMORY_TEXTURES] å’Œ [constant MEMORY_BUFFERS] 的总和"
+"è¦å¤§ï¼Œå› ä¸ºè¿˜ä¼šåŒ…å«å…¶ä»–æ‚项内存å ç”¨ã€‚"
+
+msgid "Returned by functions that return an ID if a value is invalid."
+msgstr "返回 ID 的函数会在值无效时返回此值。"
+
+msgid "Returned by functions that return a format ID if a value is invalid."
+msgstr "è¿”å›žæ ¼å¼ ID 的函数会在值无效时返回此值。"
+
msgid "Server for anything visible."
msgstr "任何å¯è§çš„东西的æœåŠ¡å™¨ã€‚"
+msgid "Optimization using Servers"
+msgstr "使用æœåŠ¡å™¨è¿›è¡Œä¼˜åŒ–"
+
msgid ""
"Sets camera to use orthogonal projection, also known as orthographic "
"projection. Objects remain the same size on the screen no matter how far "
@@ -22086,9 +41128,18 @@ msgid ""
"smaller when they are far away."
msgstr "将相机设置为使用é€è§†æŠ•å½±ã€‚å±å¹•ä¸Šçš„物体在远处时å˜å¾—æ›´å°ã€‚"
+msgid "Sets [Transform3D] of camera."
+msgstr "设置相机的 [Transform3D]。"
+
+msgid "See also [method CanvasItem.draw_lcd_texture_rect_region]."
+msgstr "å¦è§ [method CanvasItem.draw_lcd_texture_rect_region]。"
+
msgid "Clears the [CanvasItem] and removes all commands in it."
msgstr "清除[CanvasItem]并删除其中的所有命令。"
+msgid "Creates a new [CanvasItem] instance and returns its [RID]."
+msgstr "新建 [CanvasItem] 实例并返回其 [RID]。"
+
msgid "Sets the [CanvasItem] to copy a rect to the backbuffer."
msgstr "设置 [CanvasItem] 以将矩形å¤åˆ¶åˆ°åŽå°ç¼“冲区。"
@@ -22172,6 +41223,25 @@ msgstr "设置画布ç¯çš„é˜´å½±è¿‡æ»¤å™¨ï¼Œè¯¦è§ [enum CanvasLightShadowFilter
msgid "Smoothens the shadow. The lower, the smoother."
msgstr "使阴影å˜å¾—平滑。数值越低越光滑。"
+msgid ""
+"Sets the texture to be used by a [PointLight2D]. Equivalent to [member "
+"PointLight2D.texture]."
+msgstr ""
+"设置 [PointLight2D] 所使用的纹ç†ã€‚相当于 [member PointLight2D.texture]。"
+
+msgid ""
+"Sets the offset of a [PointLight2D]'s texture. Equivalent to [member "
+"PointLight2D.offset]."
+msgstr ""
+"设置 [PointLight2D] 纹ç†çš„å移é‡ã€‚相当于 [member PointLight2D.offset]。"
+
+msgid ""
+"Sets the scale factor of a [PointLight2D]'s texture. Equivalent to [member "
+"PointLight2D.texture_scale]."
+msgstr ""
+"设置 [PointLight2D] 纹ç†çš„缩放系数。相当于 [member PointLight2D."
+"texture_scale]。"
+
msgid "Sets the canvas light's [Transform2D]."
msgstr "设置画布ç¯çš„ [Transform2D]。"
@@ -22233,6 +41303,12 @@ msgstr "设置用于“色调映射â€åŽå¤„ç†æ•ˆæžœçš„å˜é‡ã€‚详情请å‚阅
msgid "Returns the parameters of a shader."
msgstr "返回ç€è‰²å™¨çš„å‚数。"
+msgid "Returns the ID of the test cube. Creates one if none exists."
+msgstr "返回测试立方体的 ID。如果ä¸å­˜åœ¨ï¼Œåˆ™ä¼šåˆ›å»ºä¸€ä¸ªã€‚"
+
+msgid "Returns the ID of the test texture. Creates one if none exists."
+msgstr "返回测试纹ç†çš„ ID。如果ä¸å­˜åœ¨ï¼Œåˆ™ä¼šåˆ›å»ºä¸€ä¸ªã€‚"
+
msgid ""
"Returns the name of the video adapter (e.g. \"GeForce GTX 1080/PCIe/"
"SSE2\").\n"
@@ -22250,6 +41326,9 @@ msgstr ""
"返回视频适é…器的供应商(例如 \"NVIDIA Corporation\")。\n"
"[b]注æ„:[/b]当è¿è¡Œç²¾ç®€æˆ–æœåŠ¡å™¨å¯æ‰§è¡Œæ–‡ä»¶æ—¶ï¼Œè¯¥å‡½æ•°è¿”回一个空字符串。"
+msgid "Returns the ID of a white texture. Creates one if none exists."
+msgstr "返回白色纹ç†çš„ ID。如果ä¸å­˜åœ¨ï¼Œåˆ™åˆ›å»ºä¸€ä¸ªã€‚"
+
msgid "Not yet implemented. Always returns [code]false[/code]."
msgstr "还没有实现。总是返回 [code]false[/code]。"
@@ -22281,9 +41360,21 @@ msgid ""
"the objects will be displayed in."
msgstr "设置实例所在的场景。场景是对象将在其中显示的 3D 世界。"
+msgid ""
+"Sets whether an instance is drawn or not. Equivalent to [member Node3D."
+"visible]."
+msgstr "设置是å¦ç»˜åˆ¶å®žä¾‹ã€‚相当于 [member Node3D.visible]。"
+
+msgid ""
+"Sets the color of the light. Equivalent to [member Light3D.light_color]."
+msgstr "设置ç¯å…‰çš„颜色。相当于 [member Light3D.light_color]。"
+
msgid "Not implemented in Godot 3.x."
msgstr "在 Godot 3.x 中没有实现。"
+msgid "Creates a new [LightmapGI] instance."
+msgstr "创建新的 [LightmapGI] 实例。"
+
msgid "Returns the value of a certain material's parameter."
msgstr "返回特定æ质的å‚数值。"
@@ -22353,6 +41444,9 @@ msgstr "返回指定实例将被调制的颜色。"
msgid "Returns the custom data associated with the specified instance."
msgstr "返回与指定实例相关的自定义数æ®ã€‚"
+msgid "Returns the [Transform3D] of the specified instance."
+msgstr "返回指定实例的 [Transform3D]。"
+
msgid ""
"Returns the [Transform2D] of the specified instance. For use when the "
"multimesh is set to use 2D transforms."
@@ -22373,6 +41467,13 @@ msgstr ""
"释为 [code]vec4[/code]。相当于 [method MultiMesh.set_instance_custom_data]。"
msgid ""
+"Sets the [Transform3D] for this instance. Equivalent to [method MultiMesh."
+"set_instance_transform]."
+msgstr ""
+"为此实例设置 [Transform3D]。相当于 [method MultiMesh."
+"set_instance_transform]。"
+
+msgid ""
"Sets the [Transform2D] for this instance. For use when multimesh is used in "
"2D. Equivalent to [method MultiMesh.set_instance_transform_2d]."
msgstr ""
@@ -22486,11 +41587,17 @@ msgstr "设置未选择特定é€æ˜Žè‰²æ—¶ä½¿ç”¨çš„默认é€æ˜Žè‰²ã€‚"
msgid "Returns a shader's code."
msgstr "返回ç€è‰²å™¨çš„代ç ã€‚"
+msgid "Returns the [Transform3D] set for a specific bone of this skeleton."
+msgstr "返回该骨架中指定骨骼的 [Transform3D]。"
+
msgid "Returns the [Transform2D] set for a specific bone of this skeleton."
-msgstr "返回这个骨架的特定骨骼的 [Transform2D]。"
+msgstr "返回该骨架中指定骨骼的 [Transform2D]。"
+
+msgid "Sets the [Transform3D] for a specific bone of this skeleton."
+msgstr "设置该骨架中指定骨骼的 [Transform3D]。"
msgid "Sets the [Transform2D] for a specific bone of this skeleton."
-msgstr "设置这个骨架的特定骨骼的 [Transform2D]。"
+msgstr "设置该骨架中指定骨骼的 [Transform2D]。"
msgid "Returns the number of bones allocated for this skeleton."
msgstr "返回分é…给这个骨架的骨骼数é‡ã€‚"
@@ -22583,6 +41690,12 @@ msgstr "ç€è‰²å™¨æ˜¯ 2D ç€è‰²å™¨ã€‚"
msgid "Shader is a particle shader."
msgstr "ç€è‰²å™¨æ˜¯ç²’å­ç€è‰²å™¨ã€‚"
+msgid "Shader is a sky shader."
+msgstr "ç€è‰²å™¨æ˜¯å¤©ç©ºç€è‰²å™¨ã€‚"
+
+msgid "Shader is a fog shader."
+msgstr "ç€è‰²å™¨æ˜¯é›¾ç€è‰²å™¨ã€‚"
+
msgid "Represents the size of the [enum ShaderMode] enum."
msgstr "代表 [enum ShaderMode] 枚举的大å°ã€‚"
@@ -22665,11 +41778,14 @@ msgid ""
msgstr "绘制的图元由å•æ¡ä¸‰è§’形带组æˆï¼ˆæœ€åŽ 3 个顶点总是会构æˆä¸‰è§’形)。"
msgid "Represents the size of the [enum PrimitiveType] enum."
-msgstr "表示 [enum PrimitiveType] 枚举的大å°ã€‚"
+msgstr "代表 [enum PrimitiveType] 枚举的大å°ã€‚"
msgid "Use [Transform2D] to store MultiMesh transform."
msgstr "使用 [Transform2D] 存储 MultiMesh å˜æ¢ã€‚"
+msgid "Use [Transform3D] to store MultiMesh transform."
+msgstr "使用 [Transform3D] 存储 MultiMesh å˜æ¢ã€‚"
+
msgid "Is a directional (sun) light."
msgstr "是平行光(日光)。"
@@ -22679,6 +41795,24 @@ msgstr "是全å‘光。"
msgid "Is a spot light."
msgstr "是èšå…‰ã€‚"
+msgid "The light's energy multiplier."
+msgstr "该ç¯å…‰çš„能é‡å€æ•°ã€‚"
+
+msgid ""
+"The light's indirect energy multiplier (final indirect energy is [constant "
+"LIGHT_PARAM_ENERGY] * [constant LIGHT_PARAM_INDIRECT_ENERGY])."
+msgstr ""
+"该ç¯å…‰çš„间接能é‡å€æ•°ï¼ˆæœ€ç»ˆçš„间接能é‡ä¸º [constant LIGHT_PARAM_ENERGY] * "
+"[constant LIGHT_PARAM_INDIRECT_ENERGY])。"
+
+msgid ""
+"The light's volumetric fog energy multiplier (final volumetric fog energy is "
+"[constant LIGHT_PARAM_ENERGY] * [constant "
+"LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY])."
+msgstr ""
+"该ç¯å…‰çš„体积雾能é‡å€æ•°ï¼ˆæœ€ç»ˆçš„体积雾能é‡ä¸º [constant LIGHT_PARAM_ENERGY] * "
+"[constant LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY])。"
+
msgid "The light's influence on specularity."
msgstr "ç¯å…‰å¯¹é•œé¢åå°„çš„å½±å“。"
@@ -22717,7 +41851,7 @@ msgid "Bias the shadow lookup to fix self-shadowing artifacts."
msgstr "对阴影查找进行å置,以修å¤è‡ªæˆ‘阴影的å‡è±¡ã€‚"
msgid "Represents the size of the [enum LightParam] enum."
-msgstr "代表[enum LightParam]枚举的大å°ã€‚"
+msgstr "代表 [enum LightParam] 枚举的大å°ã€‚"
msgid "Use a dual paraboloid shadow map for omni lights."
msgstr "对全å‘光使用åŒæŠ›ç‰©é¢é˜´å½±è´´å›¾ã€‚"
@@ -22736,6 +41870,15 @@ msgstr "使用平行光时,使用 2 个分割进行阴影投影。"
msgid "Use 4 splits for shadow projection when using directional light."
msgstr "使用平行光时,使用 4 个分割进行阴影投影。"
+msgid "Use DirectionalLight3D in both sky rendering and scene lighting."
+msgstr "在天空渲染和场景照明中都使用 DirectionalLight3D。"
+
+msgid "Only use DirectionalLight3D in scene lighting."
+msgstr "仅在场景照明中使用 DirectionalLight3D。"
+
+msgid "Only use DirectionalLight3D in sky rendering."
+msgstr "仅在天空渲染中使用 DirectionalLight3D。"
+
msgid "Reflection probe will update reflections once and then stop."
msgstr "å射探针将更新一次å射,然åŽåœæ­¢ã€‚"
@@ -22776,6 +41919,15 @@ msgid ""
"VIEWPORT_CLEAR_NEVER]."
msgstr "视å£è¢«æ¸…除一次,然åŽæ¸…除模å¼è®¾ç½®ä¸º [constant VIEWPORT_CLEAR_NEVER]。"
+msgid "Disable rendering of 3D environment over 2D canvas."
+msgstr "ç¦ç”¨åœ¨ 2D 画布上渲染 3D 环境。"
+
+msgid "Enable rendering of 3D environment over 2D canvas."
+msgstr "å¯ç”¨åœ¨ 2D 画布上渲染 3D 环境。"
+
+msgid "Max value of [enum ViewportEnvironmentMode] enum."
+msgstr "[enum ViewportEnvironmentMode] 枚举的最大值。"
+
msgid "Number of objects drawn in a single frame."
msgstr "在å•å¸§ä¸­ç»˜åˆ¶çš„对象的数é‡ã€‚"
@@ -22797,6 +41949,9 @@ msgstr "显示的对象没有光照信æ¯ã€‚"
msgid "Debug draw draws objects in wireframe."
msgstr "调试绘制,将对象用线框形å¼ç»˜åˆ¶ã€‚"
+msgid "Represents the size of the [enum ViewportVRSMode] enum."
+msgstr "代表 [enum ViewportVRSMode] 枚举的大å°ã€‚"
+
msgid "Use the clear color as background."
msgstr "用é€æ˜Žçš„颜色作为背景。"
@@ -22820,6 +41975,15 @@ msgstr "ä¸è¦æ¸…除背景,使用上一帧渲染的东西作为背景。"
msgid "Represents the size of the [enum EnvironmentBG] enum."
msgstr "代表 [enum EnvironmentBG] 枚举的大å°ã€‚"
+msgid "Disable ambient light."
+msgstr "ç¦ç”¨çŽ¯å¢ƒå…‰ã€‚"
+
+msgid "Specify a specific [Color] for ambient light."
+msgstr "为环境光指定特定的 [Color]。"
+
+msgid "Disable reflections."
+msgstr "ç¦ç”¨å射。"
+
msgid ""
"Output color as they came in. This can cause bright lighting to look blown "
"out, with noticeable clipping in the output colors."
@@ -22843,23 +42007,87 @@ msgstr ""
"使用电影级色调映射器。å¯ä»¥é¿å…对高光的截断,最终的图åƒä¸€èˆ¬æ¯” [constant "
"ENV_TONE_MAPPER_REINHARD] 看上去更鲜艳。"
+msgid "Lowest quality of screen-space ambient occlusion."
+msgstr "最低质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½ã€‚"
+
+msgid "Low quality screen-space ambient occlusion."
+msgstr "低质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½ã€‚"
+
+msgid "Medium quality screen-space ambient occlusion."
+msgstr "中等质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½ã€‚"
+
+msgid "High quality screen-space ambient occlusion."
+msgstr "高质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½ã€‚"
+
+msgid ""
+"Highest quality screen-space ambient occlusion. Uses the adaptive target "
+"setting which can be dynamically adjusted to smoothly balance performance "
+"and visual quality."
+msgstr ""
+"最高质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒå…‰é®è”½ã€‚使用å¯åŠ¨æ€è°ƒæ•´çš„自适应目标设置,以平滑地平衡性"
+"能和视觉质é‡ã€‚"
+
+msgid "Lowest quality of screen-space indirect lighting."
+msgstr "最低质é‡çš„å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§ã€‚"
+
+msgid "Low quality screen-space indirect lighting."
+msgstr "较低质é‡çš„å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§ã€‚"
+
+msgid "High quality screen-space indirect lighting."
+msgstr "较高质é‡çš„å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§ã€‚"
+
+msgid ""
+"Highest quality screen-space indirect lighting. Uses the adaptive target "
+"setting which can be dynamically adjusted to smoothly balance performance "
+"and visual quality."
+msgstr ""
+"最高质é‡çš„å±å¹•ç©ºé—´é—´æŽ¥å…‰ç…§ã€‚使用å¯åŠ¨æ€è°ƒæ•´çš„自适应目标设置,以平滑地平衡性能"
+"和视觉质é‡ã€‚"
+
+msgid ""
+"Lowest quality DOF blur. This is the fastest setting, but you may be able to "
+"see filtering artifacts."
+msgstr "最低质é‡çš„ DOF 模糊。这是最快的设置,但你å¯èƒ½ä¼šçœ‹åˆ°ä¸è‡ªç„¶çš„过滤。"
+
+msgid "Low quality DOF blur."
+msgstr "较低质é‡çš„ DOF 模糊。"
+
+msgid "Medium quality DOF blur."
+msgstr "中等质é‡çš„ DOF 模糊。"
+
+msgid ""
+"Highest quality DOF blur. Results in the smoothest looking blur by taking "
+"the most samples, but is also significantly slower."
+msgstr ""
+"最高质é‡çš„ DOF 模糊。通过采集最多的样本,产生最平滑的模糊效果,但速度也明显å˜"
+"慢。"
+
msgid "The instance does not have a type."
msgstr "实例没有类型。"
msgid "The instance is a mesh."
-msgstr "该实例是一个网格。"
+msgstr "该实例是网格。"
msgid "The instance is a multimesh."
-msgstr "该实例是一个多网格。"
+msgstr "该实例是一个 multimesh。"
msgid "The instance is a particle emitter."
-msgstr "该实例是一个粒å­å‘射器。"
+msgstr "该实例是粒å­å‘射器。"
msgid "The instance is a light."
-msgstr "该实例是一个ç¯ã€‚"
+msgstr "该实例是ç¯ã€‚"
msgid "The instance is a reflection probe."
-msgstr "该实例是一个å射探针。"
+msgstr "该实例是å射探针。"
+
+msgid "The instance is a decal."
+msgstr "该实例是贴花。"
+
+msgid "The instance is a VoxelGI."
+msgstr "该实例是 VoxelGI。"
+
+msgid "The instance is a lightmap."
+msgstr "该实例是光照贴图。"
msgid "Represents the size of the [enum InstanceType] enum."
msgstr "代表 [enum InstanceType] 枚举的大å°ã€‚"
@@ -22872,6 +42100,9 @@ msgstr "几何体实例(网格ã€å¤šç½‘æ ¼ã€å³æ—¶å’Œç²’å­ï¼‰çš„标志的组
msgid "Allows the instance to be used in baked lighting."
msgstr "å…许在烘焙照明中使用实例。"
+msgid "Allows the instance to be used with dynamic global illumination."
+msgstr "å…许在动æ€å…¨å±€å…‰ç…§ä¸­ä½¿ç”¨è¯¥å®žä¾‹ã€‚"
+
msgid "When set, manually requests to draw geometry on next frame."
msgstr "当设置时,手动请求在下一帧绘制几何图形。"
@@ -22905,6 +42136,18 @@ msgid ""
"if needed."
msgstr "ä¹å®«æ ¼åœ¨éœ€è¦çš„地方填充图å—,并在需è¦æ—¶å°†å®ƒä»¬æ‹‰ä¼¸ä¸€ç‚¹ã€‚"
+msgid "Uses the default filter mode for this [Viewport]."
+msgstr "为 [Viewport] 使用默认过滤模å¼ã€‚"
+
+msgid "Max value for [enum CanvasItemTextureFilter] enum."
+msgstr "[enum CanvasItemTextureFilter] 枚举的最大值。"
+
+msgid "Uses the default repeat mode for this [Viewport]."
+msgstr "为 [Viewport] 使用默认é‡å¤æ¨¡å¼ã€‚"
+
+msgid "Max value for [enum CanvasItemTextureRepeat] enum."
+msgstr "[enum CanvasItemTextureRepeat] 枚举的最大值。"
+
msgid "Adds light color additive to the canvas."
msgstr "å‘画布添加浅色。"
@@ -22923,6 +42166,9 @@ msgstr "使用 PCF5 过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
msgid "Use PCF13 filtering to filter canvas light shadows."
msgstr "使用 PCF13 过滤法æ¥è¿‡æ»¤ç”»å¸ƒçš„光影。"
+msgid "Max value of the [enum CanvasLightShadowFilter] enum."
+msgstr "[enum CanvasLightShadowFilter] 枚举的最大值。"
+
msgid "Culling of the canvas occluder is disabled."
msgstr "ç¦ç”¨ç”»å¸ƒé®æŒ¡ç‰©çš„剔除。"
@@ -23028,6 +42274,9 @@ msgstr "用于加载资æºæ–‡ä»¶çš„å•ä¾‹ã€‚"
msgid "Returns the list of recognized extensions for a resource type."
msgstr "返回资æºç±»åž‹çš„已识别扩展å列表。"
+msgid "Unregisters the given [ResourceFormatLoader]."
+msgstr "å–消注册给定的 [ResourceFormatLoader]。"
+
msgid ""
"Changes the behavior on missing sub-resources. The default behavior is to "
"abort loading."
@@ -23089,6 +42338,104 @@ msgstr "GUI 富文本/BBcode 演示"
msgid "Adds raw non-BBCode-parsed text to the tag stack."
msgstr "å°†éž BBCode 解æžçš„原始文本添加到标签栈中。"
+msgid "Clears the tag stack and sets [member text] to an empty string."
+msgstr "清空标签堆栈,并将 [member text] 设置为空字符串。"
+
+msgid ""
+"Returns the [PopupMenu] of this [RichTextLabel]. By default, this menu is "
+"displayed when right-clicking on the [RichTextLabel].\n"
+"You can add custom menu items or remove standard ones. Make sure your IDs "
+"don't conflict with the standard ones (see [enum MenuItems]). For example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" var menu = get_menu()\n"
+" # Remove \"Select All\" item.\n"
+" menu.remove_item(MENU_SELECT_ALL)\n"
+" # Add custom items.\n"
+" menu.add_separator()\n"
+" menu.add_item(\"Duplicate Text\", MENU_MAX + 1)\n"
+" # Connect callback.\n"
+" menu.id_pressed.connect(_on_item_pressed)\n"
+"\n"
+"func _on_item_pressed(id):\n"
+" if id == MENU_MAX + 1:\n"
+" add_text(\"\\n\" + get_parsed_text())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" var menu = GetMenu();\n"
+" // Remove \"Select All\" item.\n"
+" menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);\n"
+" // Add custom items.\n"
+" menu.AddSeparator();\n"
+" menu.AddItem(\"Duplicate Text\", RichTextLabel.MenuItems.Max + 1);\n"
+" // Add event handler.\n"
+" menu.IdPressed += OnItemPressed;\n"
+"}\n"
+"\n"
+"public void OnItemPressed(int id)\n"
+"{\n"
+" if (id == TextEdit.MenuItems.Max + 1)\n"
+" {\n"
+" AddText(\"\\n\" + GetParsedText());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Warning:[/b] This is a required internal node, removing and freeing it "
+"may cause a crash. If you wish to hide it or any of its children, use their "
+"[member Window.visible] property."
+msgstr ""
+"返回该 [RichTextLabel] çš„ [PopupMenu]。默认情况下,这个èœå•ä¼šåœ¨å³é”®å•å‡» "
+"[RichTextLabel] 时显示。\n"
+"ä½ å¯ä»¥åŠ å…¥è‡ªå®šä¹‰çš„èœå•é¡¹ï¼Œæˆ–者移除标准èœå•é¡¹ã€‚请确ä¿ä½ çš„ ID 与标准 ID ä¸å†²çª"
+"ï¼ˆè§ [enum MenuItems])。例如:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" var menu = get_menu()\n"
+" # 移除“全选â€èœå•é¡¹ã€‚\n"
+" menu.remove_item(MENU_SELECT_ALL)\n"
+" # 添加自定义èœå•é¡¹ã€‚\n"
+" menu.add_separator()\n"
+" menu.add_item(\"制作文本副本\", MENU_MAX + 1)\n"
+" # 连接回调。\n"
+" menu.id_pressed.connect(_on_item_pressed)\n"
+"\n"
+"func _on_item_pressed(id):\n"
+" if id == MENU_MAX + 1:\n"
+" add_text(\"\\n\" + get_parsed_text())\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" var menu = GetMenu();\n"
+" // 移除“全选â€èœå•é¡¹ã€‚\n"
+" menu.RemoveItem(RichTextLabel.MenuItems.SelectAll);\n"
+" // 添加自定义èœå•é¡¹ã€‚\n"
+" menu.AddSeparator();\n"
+" menu.AddItem(\"制作文本副本\", RichTextLabel.MenuItems.Max + 1);\n"
+" // 添加事件处ç†å™¨ã€‚\n"
+" menu.IdPressed += OnItemPressed;\n"
+"}\n"
+"\n"
+"public void OnItemPressed(int id)\n"
+"{\n"
+" if (id == TextEdit.MenuItems.Max + 1)\n"
+" {\n"
+" AddText(\"\\n\" + GetParsedText());\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]警告:[/b]这是必è¦çš„内部节点,将其移除或释放å¯èƒ½å¯¼è‡´å´©æºƒã€‚如果你想è¦å°†å…¶éš"
+"è—,或者éšè—å…¶å­èŠ‚点,请使用其 [member Window.visible] 属性。"
+
+msgid "Returns the text without BBCode mark-up."
+msgstr "返回没有 BBCode 标记的文本。"
+
msgid "Returns the current selection text. Does not include BBCodes."
msgstr "返回当å‰é€‰ä¸­çš„文本。ä¸åŒ…括 BBCode。"
@@ -23107,6 +42454,9 @@ msgstr ""
"终止当å‰æ ‡ç­¾ã€‚使用 [code]push_*[/code] 方法之åŽæ‰‹åŠ¨å…³é—­ BBCodes。ä¸éœ€è¦éµå¾ª "
"[code]add_*[/code] 方法。"
+msgid "Adds a [code][bgcolor][/code] tag to the tag stack."
+msgstr "å‘标签栈中添加 [code][bgcolor][/code] 标签。"
+
msgid ""
"Adds a [code][font][/code] tag with a bold font to the tag stack. This is "
"the same as adding a [code][b][/code] tag if not currently in a [code][i][/"
@@ -23129,6 +42479,9 @@ msgstr ""
msgid "Adds a [code][color][/code] tag to the tag stack."
msgstr "在标签栈中添加一个 [code][color][/code] 标签。"
+msgid "Adds a [code][fgcolor][/code] tag to the tag stack."
+msgstr "å‘标签栈中添加 [code][fgcolor][/code] 标签。"
+
msgid ""
"Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for "
"its duration."
@@ -23143,24 +42496,46 @@ msgstr ""
"在标签栈中添加一个 [code][font][/code] 标签,字体为斜体。如果当å‰æ²¡æœ‰ [code]"
"[b][/code] 标签,这与添加 [code][i][/code] 标签相åŒã€‚"
-msgid ""
-"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]"
-"[url=something]{text}[/url][/code], but supports non-[String] metadata types."
-msgstr ""
-"在标签栈中添加一个 [code][meta][/code] 标签。类似于BBCode 的 [code]"
-"[url=something]{text}[/url][/code],但支æŒéž [String] 元数æ®ç±»åž‹ã€‚"
-
msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack."
msgstr "在标签栈中添加一个 [code][font][/code] 标签,该标签为等宽字体。"
msgid "Adds a [code][font][/code] tag with a normal font to the tag stack."
msgstr "在标签栈中添加一个具有正常字体的 [code][font][/code] 标签。"
+msgid "Adds a [code][p][/code] tag to the tag stack."
+msgstr "å‘标签栈中添加 [code][p][/code] 标签。"
+
msgid "Adds a [code][s][/code] tag to the tag stack."
-msgstr "在标签栈中添加一个 [code][s][/code] 标签。"
+msgstr "å‘标签栈中添加 [code][s][/code] 标签。"
+
+msgid "Adds a [code][table=columns,inline_align][/code] tag to the tag stack."
+msgstr "å‘标签栈中添加 [code][table=columns,inline_align][/code] 标签。"
msgid "Adds a [code][u][/code] tag to the tag stack."
-msgstr "在标签栈中添加一个 [code][u][/code] 标签。"
+msgstr "å‘标签栈中添加 [code][u][/code] 标签。"
+
+msgid "Scrolls the window's top line to match [param line]."
+msgstr "滚动窗å£ï¼Œè®©ç¬¬ä¸€è¡Œä¸Ž [param line] 匹é…。"
+
+msgid ""
+"Scrolls the window's top line to match first line of the [param paragraph]."
+msgstr "滚动窗å£ï¼Œè®©ç¬¬ä¸€è¡Œä¸Ž [param paragraph] 的第一行匹é…。"
+
+msgid "Scrolls to the beginning of the current selection."
+msgstr "滚动到当å‰é€‰åŒºçš„开头。"
+
+msgid ""
+"Select all the text.\n"
+"If [member selection_enabled] is [code]false[/code], no selection will occur."
+msgstr ""
+"全选文本。\n"
+"如果 [member selection_enabled] 为 [code]false[/code],则ä¸ä¼šè¿›è¡Œé€‰æ‹©ã€‚"
+
+msgid "Sets color of a table cell border."
+msgstr "设置表格的å•å…ƒæ ¼è¾¹æ¡†é¢œè‰²ã€‚"
+
+msgid "Sets inner padding of a table cell."
+msgstr "设置表格的å•å…ƒæ ¼å†…è¾¹è·ã€‚"
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr "为 [code]true[/code] æ—¶å³é”®å•å‡»ä¼šæ˜¾ç¤ºä¸Šä¸‹æ–‡èœå•ã€‚"
@@ -23209,6 +42584,12 @@ msgstr ""
"与å•ä¸ªåˆ¶è¡¨ç¬¦é•¿åº¦å…³è”的空格数。ä¸å½±å“文本标签中的 [code]\\t[/code],åªå½±å“缩进"
"标签。"
+msgid "If [code]true[/code], text processing is done in a background thread."
+msgstr "如果为 [code]true[/code],则文本处ç†åœ¨åŽå°çº¿ç¨‹ä¸­å®Œæˆã€‚"
+
+msgid "Triggered when the document is fully loaded."
+msgstr "当文档完全加载时触å‘。"
+
msgid ""
"Triggered when the user clicks on content between meta tags. If the meta is "
"defined in text, e.g. [code][url={\"data\"=\"hi\"}]hi[/url][/code], then the "
@@ -23227,13 +42608,16 @@ msgid "Triggers when the mouse enters a meta tag."
msgstr "当鼠标进入元标签时触å‘。"
msgid "Each list item has a number marker."
-msgstr "æ¯ä¸ªåˆ—表项都有一个数字标记。"
+msgstr "æ¯ä¸ªåˆ—表项都有数字标记。"
msgid "Each list item has a letter marker."
-msgstr "æ¯ä¸ªåˆ—表项都有一个字æ¯æ ‡è®°ã€‚"
+msgstr "æ¯ä¸ªåˆ—表项都有字æ¯æ ‡è®°ã€‚"
+
+msgid "Each list item has a roman number marker."
+msgstr "æ¯ä¸ªåˆ—表项都有罗马数字标记。"
msgid "Each list item has a filled circle marker."
-msgstr "æ¯ä¸ªåˆ—表项都有一个实心圆圈标记。"
+msgstr "æ¯ä¸ªåˆ—表项都有实心圆标记。"
msgid "The default text color."
msgstr "默认文本颜色。"
@@ -23244,6 +42628,15 @@ msgstr "字体阴影的颜色。"
msgid "The color of the selection box."
msgstr "选择框的颜色。"
+msgid "The default cell border color."
+msgstr "默认å•å…ƒæ ¼è¾¹æ¡†é¢œè‰²ã€‚"
+
+msgid "The default background color for even rows."
+msgstr "å¶æ•°è¡Œçš„默认背景色。"
+
+msgid "The default background color for odd rows."
+msgstr "奇数行的默认背景色。"
+
msgid "The vertical space between lines."
msgstr "行之间的垂直空间。"
@@ -23274,6 +42667,37 @@ msgstr "用于等宽文本的字体。"
msgid "The default text font."
msgstr "默认的文本字体。"
+msgid "The font size used for bold text."
+msgstr "用于粗体文本的字体大å°ã€‚"
+
+msgid "The font size used for bold italics text."
+msgstr "用于粗斜体文本的字体大å°ã€‚"
+
+msgid "The font size used for italics text."
+msgstr "用于斜体文本的字体大å°ã€‚"
+
+msgid "The font size used for monospace text."
+msgstr "用于等宽文本的字体大å°ã€‚"
+
+msgid "The default text font size."
+msgstr "默认文本字体大å°ã€‚"
+
+msgid ""
+"The background used when the [RichTextLabel] is focused. The [code]focus[/"
+"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a "
+"partially transparent [StyleBox] should be used to ensure the base "
+"[StyleBox] remains visible. A [StyleBox] that represents an outline or an "
+"underline works well for this purpose. To disable the focus visual effect, "
+"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual "
+"effect will harm keyboard/controller navigation usability, so this is not "
+"recommended for accessibility reasons."
+msgstr ""
+"该 [RichTextLabel] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨çš„背景。[code]focus[/code] [StyleBox] 显"
+"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分é€æ˜Žçš„ [StyleBox],确ä¿åŸºç¡€ "
+"[StyleBox] ä»ç„¶å¯è§ã€‚代表轮廓或下划线的 [StyleBox] å¯ä»¥å¾ˆå¥½åœ°å®žçŽ°è¿™ä¸ªç›®çš„。è¦"
+"ç¦ç”¨èšç„¦çš„视觉效果,请指定 [StyleBoxEmpty] 资æºã€‚请注æ„,ç¦ç”¨èšç„¦çš„视觉效果会"
+"å½±å“使用键盘/手柄进行导航的å¯ç”¨æ€§ï¼Œæ‰€ä»¥å‡ºäºŽå¯è®¿é—®æ€§çš„原因,ä¸å»ºè®®è¿™æ ·åšã€‚"
+
msgid "The normal background for the [RichTextLabel]."
msgstr "[RichTextLabel] 的正常背景。"
@@ -23286,6 +42710,51 @@ msgstr "构造空的 [RID],内容为无效的 ID [code]0[/code]。"
msgid "Constructs a [RID] as a copy of the given [RID]."
msgstr "构造给定 [RID] 的副本。"
+msgid "Returns the ID of the referenced low-level resource."
+msgstr "返回引用的底层资æºçš„ ID。"
+
+msgid "Returns [code]true[/code] if the [RID] is not [code]0[/code]."
+msgstr "如果该 [RID] éž [code]0[/code],则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the [RID]s are not equal."
+msgstr "如果 [RID] ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [RID]'s ID is less than [param right]'s ID."
+msgstr ""
+"如果该 [RID] çš„ ID å°äºŽå³ä¾§ [param right] çš„ ID,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [RID]'s ID is less than or equal to [param "
+"right]'s ID."
+msgstr ""
+"如果该 [RID] çš„ ID å°äºŽç­‰äºŽå³ä¾§ [param right] çš„ ID,则返回 [code]true[/"
+"code]。"
+
+msgid ""
+"Returns [code]true[/code] if both [RID]s are equal, which means they both "
+"refer to the same low-level resource."
+msgstr ""
+"如果 [RID] 相等,则返回 [code]true[/code],表示它们引用的是åŒä¸€ä¸ªåº•å±‚资æºã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the [RID]'s ID is greater than [param right]'s "
+"ID."
+msgstr ""
+"如果该 [RID] çš„ ID 大于å³ä¾§ [param right] çš„ ID,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [RID]'s ID is greater than or equal to "
+"[param right]'s ID."
+msgstr ""
+"如果该 [RID] çš„ ID 大于等于å³ä¾§ [param right] çš„ ID,则返回 [code]true[/"
+"code]。"
+
+msgid ""
+"Physics Body which is moved by 2D physics simulation. Useful for objects "
+"that have gravity and can be pushed by other objects."
+msgstr "能够被 2D 物ç†ä»¿çœŸç§»åŠ¨çš„物ç†ç‰©ä½“。å¯ç”¨äºŽå…·æœ‰é‡åŠ›å¹¶ä¸”å¯ä»¥è¢«æŽ¨åŠ¨çš„对象。"
+
msgid "2D Physics Platformer Demo"
msgstr "2D 物ç†å¹³å°è·³è·ƒæ¼”示"
@@ -23390,6 +42859,14 @@ msgid ""
msgstr "使用形状投射å¯ç”¨è¿žç»­ç¢°æ’žæ£€æµ‹ã€‚这是最慢的 CCD 方法,也是最精确的。"
msgid ""
+"Physics Body which is moved by 3D physics simulation. Useful for objects "
+"that have gravity and can be pushed by other objects."
+msgstr "能够被 3D 物ç†ä»¿çœŸç§»åŠ¨çš„物ç†ç‰©ä½“。å¯ç”¨äºŽå…·æœ‰é‡åŠ›å¹¶ä¸”å¯ä»¥è¢«æŽ¨åŠ¨çš„对象。"
+
+msgid "The RigidBody3D's rotational velocity in [i]radians[/i] per second."
+msgstr "该 RigidBody3D 的旋转速度,å•ä½ä¸º[i]弧度[/i]æ¯ç§’。"
+
+msgid ""
"If [code]true[/code], continuous collision detection is used.\n"
"Continuous collision detection tries to predict where a moving body will "
"collide, instead of moving it and correcting its movement if it collided. "
@@ -23455,6 +42932,9 @@ msgstr ""
"用于查询其他 [code]get_connection_*[/code] 方法中的连接元数æ®çš„ [code]idx[/"
"code] å‚数,范围是 [code][0, get_connection_count() - 1][/code]。"
+msgid "Returns the name of the signal at [param idx]."
+msgstr "返回索引为 [param idx] çš„ä¿¡å·çš„å称。"
+
msgid ""
"Returns the number of nodes in the scene.\n"
"The [code]idx[/code] argument used to query node data in other "
@@ -23465,6 +42945,23 @@ msgstr ""
"[code]idx[/code] å‚数用于在其他 [code]get_node_*[/code] 方法中查询节点数æ®ï¼Œ"
"范围为 [code][0, get_node_count() - 1][/code]。"
+msgid "Returns the name of the node at [param idx]."
+msgstr "返回索引为 [param idx] 的节点的å称。"
+
+msgid ""
+"Returns the name of the property at [param prop_idx] for the node at [param "
+"idx]."
+msgstr ""
+"返回索引为 [param idx] 的节点中,索引为 [param prop_idx] 的属性的å称。"
+
+msgid ""
+"Returns the value of the property at [param prop_idx] for the node at [param "
+"idx]."
+msgstr "返回索引为 [param idx] 的节点中,索引为 [param prop_idx] 的属性的值。"
+
+msgid "Returns the type of the node at [param idx]."
+msgstr "返回索引为 [param idx] 的节点的类型。"
+
msgid "Manages the game loop via a hierarchy of nodes."
msgstr "通过节点层次结构管ç†æ¸¸æˆå¾ªçŽ¯ã€‚"
@@ -23488,6 +42985,15 @@ msgstr ""
"设置属性。\n"
"[SceneTree] 是场景所使用的默认 [MainLoop] 实现,因此掌控ç€æ¸¸æˆå¾ªçŽ¯ã€‚"
+msgid "SceneTree"
+msgstr "SceneTree"
+
+msgid "Multiple resolutions"
+msgstr "多分辨率"
+
+msgid "Creates and returns a new [Tween]."
+msgstr "创建并返回一个新的 [Tween]。"
+
msgid ""
"Returns the current frame number, i.e. the total frame count since the "
"application started."
@@ -23628,6 +43134,9 @@ msgstr "当计时器到 0 æ—¶å‘出。"
msgid "A class stored as a resource."
msgstr "作为资æºå­˜å‚¨çš„类。"
+msgid "Scripting documentation index"
+msgstr "脚本文档索引"
+
msgid "Returns the script directly inherited by this script."
msgstr "返回由该脚本直接继承的脚本。"
@@ -23756,6 +43265,20 @@ msgstr "滚动åœæ­¢æ—¶å‘出。"
msgid "Emitted when scrolling is started."
msgstr "滚动开始时å‘出。"
+msgid "Scrolling disabled, scrollbar will be invisible."
+msgstr "ç¦ç”¨æ»šåŠ¨ï¼Œæ»šåŠ¨æ¡ä¸å¯è§ã€‚"
+
+msgid ""
+"Scrolling enabled, scrollbar will be visible only if necessary, i.e. "
+"container's content is bigger than the container."
+msgstr "å¯ç”¨æ»šåŠ¨ï¼Œæ»šåŠ¨æ¡ä»…在需è¦æ—¶å¯è§ï¼Œå³å®¹å™¨çš„内容比容器大时。"
+
+msgid "Scrolling enabled, scrollbar will be always visible."
+msgstr "å¯ç”¨æ»šåŠ¨ï¼Œæ»šåŠ¨æ¡å§‹ç»ˆå¯è§ã€‚"
+
+msgid "Scrolling enabled, scrollbar will be hidden."
+msgstr "å¯ç”¨æ»šåŠ¨ï¼Œæ»šåŠ¨æ¡éšè—。"
+
msgid "The background [StyleBox] of the [ScrollContainer]."
msgstr "[ScrollContainer] 的背景 [StyleBox]。"
@@ -23780,15 +43303,15 @@ msgid "The ray's length."
msgstr "射线的长度。"
msgid "Base class for separators."
-msgstr "分离器的基类。"
+msgstr "分隔器的基类。"
msgid ""
"Separator is a [Control] used for separating other controls. It's purely a "
"visual decoration. Horizontal ([HSeparator]) and Vertical ([VSeparator]) "
"versions are available."
msgstr ""
-"Separator 是一个用于分隔其他控件的[Control] 。它纯粹是一ç§è§†è§‰è£…饰。æ供水平 "
-"([HSeparator]) 和垂直 ([VSeparator]) 版本。"
+"Separator(分隔器)是用于分隔其他控件的 [Control] 。纯粹是视觉装饰。æ供水平"
+"([HSeparator])和垂直([VSeparator])版本。"
msgid "A custom shader program."
msgstr "自定义ç€è‰²å™¨ç¨‹åºã€‚"
@@ -23803,6 +43326,9 @@ msgstr ""
"编写自己的自定义行为æ¥æ¸²æŸ“对象或更新粒å­ä¿¡æ¯ã€‚有关详细说明和用法,请å‚阅下é¢"
"链接的教程。"
+msgid "Shaders documentation index"
+msgstr "ç€è‰²å™¨æ–‡æ¡£ç´¢å¼•"
+
msgid ""
"Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], "
"[constant MODE_SPATIAL] or [constant MODE_PARTICLES]."
@@ -23858,18 +43384,57 @@ msgstr ""
"超过其边è·æ—¶ï¼Œç¢°æ’žç®—法的æˆæœ¬ä¼šæ›´é«˜ï¼Œæ‰€ä»¥è¾¹è·çš„数值越高对性能越好,但代价是边"
"缘的精度会é™ä½Žã€‚"
+msgid ""
+"Removes a collision exception so the shape does report collisions with the "
+"specified [CollisionObject2D] node."
+msgstr "移除碰撞例外,使该形状能够汇报与指定 [CollisionObject2D] 节点的碰撞。"
+
+msgid ""
+"Removes a collision exception so the shape does report collisions with the "
+"specified [RID]."
+msgstr "移除碰撞例外,使该形状能够汇报与指定 [RID] 的碰撞。"
+
+msgid "The [Shape2D]-derived shape to be used for collision queries."
+msgstr "派生自 [Shape2D] 的形状,用于碰撞查询。"
+
+msgid "The [Shape3D]-derived shape to be used for collision queries."
+msgstr "派生自 [Shape3D] 的形状,用于碰撞查询。"
+
msgid "A shortcut for binding input."
msgstr "绑定输入的快æ·æ–¹å¼ã€‚"
+msgid "Built-in type representing a signal defined in an object."
+msgstr "内置类型,代表对象中定义的æŸä¸ªä¿¡å·ã€‚"
+
+msgid "Using Signals"
+msgstr "使用信å·"
+
+msgid "GDScript Basics"
+msgstr "GDScript 基础"
+
msgid "Constructs an empty [Signal] with no object nor signal name bound."
msgstr "构造空的 [Signal],没有绑定对象和信å·å称。"
msgid "Constructs a [Signal] as a copy of the given [Signal]."
msgstr "构造给定 [Signal] 的副本。"
+msgid "Returns the name of this signal."
+msgstr "返回该信å·çš„å称。"
+
+msgid "Returns the object emitting this signal."
+msgstr "返回å‘出该信å·çš„对象。"
+
+msgid ""
+"Returns the ID of the object emitting this signal (see [method Object."
+"get_instance_id])."
+msgstr "返回å‘出该信å·çš„对象的 IDï¼ˆè§ [method Object.get_instance_id])。"
+
msgid "Skeleton for 2D characters and animated objects."
msgstr "2D 角色和动画对象的骨架。"
+msgid "2D skeletons"
+msgstr "2D 骨架"
+
msgid ""
"Returns the number of [Bone2D] nodes in the node hierarchy parented by "
"Skeleton2D."
@@ -23908,6 +43473,73 @@ msgstr ""
"上。"
msgid ""
+"SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a "
+"certain point in 3D by rotating all bones in the chain accordingly."
+msgstr ""
+"SkeletonIK3D å¯ç”¨äºŽå°† [Skeleton3D] 的骨骼链的末端骨骼置于 3D 中的æŸä¸€ç‚¹ï¼Œå¹¶ç›¸"
+"应地旋转骨骼链中的所有骨骼。"
+
+msgid ""
+"SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a "
+"certain point in 3D by rotating all bones in the chain accordingly. A "
+"typical scenario for IK in games is to place a characters feet on the ground "
+"or a characters hands on a currently hold object. SkeletonIK uses "
+"FabrikInverseKinematic internally to solve the bone chain and applies the "
+"results to the [Skeleton3D] [code]bones_global_pose_override[/code] property "
+"for all affected bones in the chain. If fully applied this overwrites any "
+"bone transform from [Animation]s or bone custom poses set by users. The "
+"applied amount can be controlled with the [code]interpolation[/code] "
+"property.\n"
+"[codeblock]\n"
+"# Apply IK effect automatically on every new frame (not the current)\n"
+"skeleton_ik_node.start()\n"
+"\n"
+"# Apply IK effect only on the current frame\n"
+"skeleton_ik_node.start(true)\n"
+"\n"
+"# Stop IK effect and reset bones_global_pose_override on Skeleton\n"
+"skeleton_ik_node.stop()\n"
+"\n"
+"# Apply full IK effect\n"
+"skeleton_ik_node.set_interpolation(1.0)\n"
+"\n"
+"# Apply half IK effect\n"
+"skeleton_ik_node.set_interpolation(0.5)\n"
+"\n"
+"# Apply zero IK effect (a value at or below 0.01 also removes "
+"bones_global_pose_override on Skeleton)\n"
+"skeleton_ik_node.set_interpolation(0.0)\n"
+"[/codeblock]"
+msgstr ""
+"SkeletonIK3D 用于将 [Skeleton3D] 骨骼链的末端骨骼放置在 3D æŸä¸€ç‚¹ä¸Šï¼Œå¹¶ç›¸åº”地"
+"旋转骨骼链中的所有骨骼。游æˆä¸­ IK 的典型场景是将角色的脚放在地é¢ä¸Šï¼Œæˆ–者将角"
+"色的手放在当å‰æŒæœ‰çš„物体上。SkeletonIK 在内部使用 FabrikInverseKinematic æ¥è§£"
+"决骨骼链,并将结果应用于 [Skeleton3D] [code]bones_global_pose_override[/"
+"code] 属性中所有å—å½±å“的骨骼链。如果完全应用,这将覆盖任何æ¥è‡ª [Animation] çš„"
+"骨骼å˜æ¢æˆ–用户设置的骨骼自定义姿势。应用é‡å¯ä»¥ç”¨ [code]interpolation[/code] "
+"属性æ¥æŽ§åˆ¶ã€‚\n"
+"[codeblock]\n"
+"# 在æ¯ä¸€ä¸ªæ–°çš„帧上自动应用 IK 效果(ä¸æ˜¯å½“å‰çš„)。\n"
+"skeleton_ik_node.start()\n"
+"\n"
+"# åªåœ¨å½“å‰å¸§ä¸Šåº”用 IK 效果\n"
+"skeleton_ik_node.start(true)\n"
+"\n"
+"# åœæ­¢ IK 效果并é‡ç½®éª¨éª¼ä¸Šçš„ bones_global_pose_override\n"
+"skeleton_ik_node.stop()\n"
+"\n"
+"# 应用完整的 IK 效果\n"
+"skeleton_ik_node.set_interpolation(1.0)\n"
+"\n"
+"# 应用一åŠçš„ IK 效果\n"
+"skeleton_ik_node.set_interpolation(0.5)\n"
+"\n"
+"# 应用零 IK 效果(数值为 0.01 或低于 0.01 也会移除 Skeleton 上的 "
+"bones_global_pose_override)。\n"
+"skeleton_ik_node.set_interpolation(0.0)\n"
+"[/codeblock]"
+
+msgid ""
"Secondary target position (first is [member target] property or [member "
"target_node]) for the IK chain. Use magnet position (pole target) to control "
"the bending of the IK chain. Only works if the bone chain has more than 2 "
@@ -23965,6 +43597,58 @@ msgstr ""
"如果为 [code]true[/code],指示 IK 求解器在解算器链时考虑次è¦ç£é“目标(æžç‚¹ç›®"
"标)。使用ç£é“ä½ç½®ï¼ˆç£æžç›®æ ‡ï¼‰æ¥æŽ§åˆ¶ IK 链的弯曲。"
+msgid ""
+"Returns the maximum angle constraint for the joint at [param joint_idx]."
+msgstr "返回索引为 [param joint_idx] 的关节的最大角约æŸã€‚"
+
+msgid ""
+"Returns the minimum angle constraint for the joint at [param joint_idx]."
+msgstr "返回索引为 [param joint_idx] 的关节的最å°è§’约æŸã€‚"
+
+msgid "Sets the maximum angle constraint for the joint at [param joint_idx]."
+msgstr "设置索引为 [param joint_idx] 的关节的最大角约æŸã€‚"
+
+msgid "Sets the minimum angle constraint for the joint at [param joint_idx]."
+msgstr "设置索引为 [param joint_idx] 的关节的最å°è§’约æŸã€‚"
+
+msgid "The number of CCDIK joints in the CCDIK modification."
+msgstr "CCDIK 修改中 CCDIK 关节的数é‡ã€‚"
+
+msgid "The number of FABRIK joints in the FABRIK modification."
+msgstr "FABRIK 修改中 FABRIK 关节的数é‡ã€‚"
+
+msgid "Returns the constraint's maximum allowed angle."
+msgstr "返回该约æŸå…许的最大角度。"
+
+msgid "Returns the constraint's minimum allowed angle."
+msgstr "返回该约æŸå…许的最å°è§’度。"
+
+msgid "Sets the constraint's maximum allowed angle."
+msgstr "设置该约æŸå…许的最大角度。"
+
+msgid "Sets the constraint's minimum allowed angle."
+msgstr "设置该约æŸå…许的最å°è§’度。"
+
+msgid "Returns the group of the bone at [param bone_idx]."
+msgstr "返回索引为 [param bone_idx] 的骨骼的分组。"
+
+msgid "Sets the group of the bone at [param bone_idx]."
+msgstr "设置索引为 [param bone_idx] 的骨骼的分组。"
+
+msgid ""
+"A bone name which will use model's height as the coefficient for "
+"normalization. For example, [SkeletonProfileHumanoid] defines it as "
+"[code]Hips[/code]."
+msgstr ""
+"骨骼的å称,将使用模型的高度作为归一化的系数。例如,"
+"[SkeletonProfileHumanoid] 将其定义为 [code]Hips[/code] 。"
+
+msgid "Direction is not calculated."
+msgstr "ä¸è®¡ç®—æ–¹å‘。"
+
+msgid "A humanoid [SkeletonProfile] preset."
+msgstr "人形 [SkeletonProfile] 预设。"
+
msgid "Radiance texture size is 32×32 pixels."
msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º 32×32 åƒç´ ã€‚"
@@ -23975,10 +43659,16 @@ msgid "Radiance texture size is 128×128 pixels."
msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º128×128åƒç´ ã€‚"
msgid "Radiance texture size is 256×256 pixels."
-msgstr "è¾ç…§åº¦çº¹ç†å¤§å°ä¸º 256×256 åƒç´ ã€‚"
+msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º 256×256 åƒç´ ã€‚"
msgid "Radiance texture size is 512×512 pixels."
-msgstr "è¾ç…§åº¦çº¹ç†å¤§å°ä¸º 512×512 åƒç´ ã€‚"
+msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º 512×512 åƒç´ ã€‚"
+
+msgid "Radiance texture size is 1024×1024 pixels."
+msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º 1024×1024 åƒç´ ã€‚"
+
+msgid "Radiance texture size is 2048×2048 pixels."
+msgstr "è¾ç…§åº¦çº¹ç†å°ºå¯¸ä¸º 2048×2048 åƒç´ ã€‚"
msgid "Represents the size of the [enum RadianceSize] enum."
msgstr "代表 [enum RadianceSize] 枚举的大å°ã€‚"
@@ -24066,17 +43756,37 @@ msgstr "超出é™åˆ¶åŽçš„è¡¥å¿ã€‚数值越低,æŸå¤±çš„速度能é‡è¶Šå¤šã€‚
msgid "A soft mesh physics body."
msgstr "柔性网格物ç†ä½“。"
+msgid "SoftBody"
+msgstr "SoftBody"
+
msgid "Returns local translation of a vertex in the surface array."
msgstr "返回表é¢æ•°ç»„中顶点的局部平移。"
msgid "Returns [code]true[/code] if vertex is set to pinned."
msgstr "如果顶点设置为固定,则返回 [code]true[/code]。"
+msgid "If [code]true[/code], the [SoftBody3D] will respond to [RayCast3D]s."
+msgstr "如果为 [code]true[/code],则该 [SoftBody3D] 会å“应 [RayCast3D]。"
+
msgid ""
"Increasing this value will improve the resulting simulation, but can affect "
"performance. Use with care."
msgstr "增加这个值会改善模拟结果,但会影å“性能。请å°å¿ƒä½¿ç”¨ã€‚"
+msgid "The SoftBody3D's mass."
+msgstr "该 SoftBody3D çš„è´¨é‡ã€‚"
+
+msgid ""
+"When [member Node.process_mode] is set to [constant Node."
+"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all "
+"physics interactions with this [SoftBody3D].\n"
+"Automatically re-added to the physics simulation when the [Node] is "
+"processed again."
+msgstr ""
+"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] "
+"时,从物ç†ä»¿çœŸä¸­ç§»é™¤ï¼Œåœæ­¢ä¸Žæ­¤ [SoftBody3D] 的所有物ç†äº¤äº’。\n"
+"当该 [Node] å†æ¬¡è¢«å¤„ç†æ—¶ï¼Œä¼šè‡ªåŠ¨é‡æ–°åŠ å…¥åˆ°ç‰©ç†ä»¿çœŸä¸­ã€‚"
+
msgid "Class representing a spherical [PrimitiveMesh]."
msgstr "表示çƒå½¢ [PrimitiveMesh] 的类。"
@@ -24100,6 +43810,12 @@ msgstr "çƒä½“åŠå¾„."
msgid "Number of segments along the height of the sphere."
msgstr "沿ç€çƒä½“高度的段数。"
+msgid "The sphere's radius in 3D units."
+msgstr "çƒä½“åŠå¾„,使用 3D å•ä½ã€‚"
+
+msgid "Sphere shape resource for 3D collisions."
+msgstr "用于 3D 碰撞的çƒä½“形状资æºã€‚"
+
msgid "The sphere's radius. The shape's diameter is double the radius."
msgstr "çƒä½“çš„åŠå¾„。形状的直径是åŠå¾„的两å€ã€‚"
@@ -24184,12 +43900,6 @@ msgstr "拆分拖动器永远ä¸å¯è§ï¼Œå…¶ç©ºé—´ä¹Ÿè¢«æŠ˜å ã€‚"
msgid "A spotlight, such as a reflector spotlight or a lantern."
msgstr "èšå…‰ç¯ï¼Œå¦‚å射器èšå…‰ç¯æˆ–ç¯ç¬¼ã€‚"
-msgid "The spotlight's angular attenuation curve."
-msgstr "èšå…‰ç¯çš„角度衰å‡æ›²çº¿ã€‚"
-
-msgid "The spotlight's light energy attenuation curve."
-msgstr "èšå…‰ç¯çš„å…‰é‡è¡°å‡æ›²çº¿ã€‚"
-
msgid "A helper node, mostly used in 3rd person cameras."
msgstr "辅助节点,主è¦ç”¨äºŽç¬¬ä¸‰äººç§°ç›¸æœºã€‚"
@@ -24206,14 +43916,73 @@ msgstr ""
"physics_introduction.html#collision-layers-and-masks]《碰撞层与é®ç½©ã€‹[/url]。"
msgid "General-purpose sprite node."
-msgstr "通用精çµå›¾èŠ‚点。"
+msgstr "通用精çµèŠ‚点。"
msgid ""
"A node that displays a 2D texture. The texture displayed can be a region "
"from a larger atlas texture, or a frame from a sprite sheet animation."
msgstr ""
-"显示 2D 纹ç†çš„节点。显示的纹ç†å¯ä»¥æ˜¯æ¥è‡ªè¾ƒå¤§å›¾é›†çº¹ç†çš„区域,也å¯ä»¥æ˜¯æ¥è‡ªç²¾çµ"
-"表动画的帧。"
+"显示 2D 纹ç†çš„节点。显示的纹ç†å¯ä»¥æ˜¯è¾ƒå¤§å›¾é›†çº¹ç†ä¸­çš„æŸä¸ªåŒºåŸŸï¼Œä¹Ÿå¯ä»¥æ˜¯ç²¾çµè¡¨"
+"动画中的æŸä¸€å¸§ã€‚"
+
+msgid ""
+"Returns a [Rect2] representing the Sprite2D's boundary in local coordinates. "
+"Can be used to detect if the Sprite2D was clicked.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _input(event):\n"
+" if event is InputEventMouseButton and event.pressed and event."
+"button_index == MOUSE_BUTTON_LEFT:\n"
+" if get_rect().has_point(to_local(event.position)):\n"
+" print(\"A click!\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Input(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseButton inputEventMouse)\n"
+" {\n"
+" if (inputEventMouse.Pressed && inputEventMouse.ButtonIndex == "
+"MouseButton.Left)\n"
+" {\n"
+" if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))\n"
+" {\n"
+" GD.Print(\"A click!\");\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回代表该 Sprite2D 边界的 [Rect2],使用局部å标。å¯ç”¨äºŽæ£€æµ‹è¯¥ Sprite2D 是å¦"
+"被点击。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _input(event):\n"
+" if event is InputEventMouseButton and event.pressed and event."
+"button_index == MOUSE_BUTTON_LEFT:\n"
+" if get_rect().has_point(to_local(event.position)):\n"
+" print(\"我点ï¼\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Input(InputEvent @event)\n"
+"{\n"
+" if (@event is InputEventMouseButton inputEventMouse)\n"
+" {\n"
+" if (inputEventMouse.Pressed && inputEventMouse.ButtonIndex == "
+"MouseButton.Left)\n"
+" {\n"
+" if (GetRect().HasPoint(ToLocal(inputEventMouse.Position)))\n"
+" {\n"
+" GD.Print(\"我点ï¼\");\n"
+" }\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
msgid ""
"Returns [code]true[/code], if the pixel at the given position is opaque and "
@@ -24259,6 +44028,9 @@ msgid ""
msgstr ""
"è¦æ˜¾ç¤ºçš„图集纹ç†åŒºåŸŸã€‚[member region_enabled] 必须是 [code]true[/code]。"
+msgid "[Texture2D] object to draw."
+msgstr "è¦ç»˜åˆ¶çš„ [Texture2D] 对象。"
+
msgid "The number of rows in the sprite sheet."
msgstr "ç²¾çµè¡¨ä¸­çš„行数。"
@@ -24328,6 +44100,27 @@ msgstr ""
"这个模å¼ä¼šè¿›è¡Œæ ‡å‡†çš„ Alpha æ··åˆã€‚å¯ä»¥æ˜¾ç¤ºåŠé€æ˜ŽåŒºåŸŸï¼Œä½†é€æ˜Žæ质存在é‡å æ—¶å¯èƒ½"
"会暴露é€æ˜Žåº¦æŽ’åºé—®é¢˜ã€‚"
+msgid "Sprite frame library for AnimatedSprite2D and AnimatedSprite3D."
+msgstr "ç²¾çµå¸§åº“,用于 AnimatedSprite2D å’Œ AnimatedSprite3D。"
+
+msgid ""
+"Sprite frame library for an [AnimatedSprite2D] or [AnimatedSprite3D] node. "
+"Contains frames and animation data for playback."
+msgstr ""
+"[AnimatedSprite2D] å’Œ [AnimatedSprite3D] 节点的精çµå¸§åº“。包å«å¸§å’Œç”¨äºŽæ’­æ”¾çš„动"
+"画信æ¯ã€‚"
+
+msgid "Adds a new [param anim] animation to the library."
+msgstr "å‘库中添加新动画 [param anim]。"
+
+msgid "Removes all frames from the [param anim] animation."
+msgstr "删除 [param anim] 动画中的所有帧。"
+
+msgid ""
+"Removes all animations. An empty [code]default[/code] animation will be "
+"created."
+msgstr "移除所有动画。将创建å为 [code]default[/code] 的空动画。"
+
msgid ""
"Returns [code]true[/code] if the given animation is configured to loop when "
"it finishes playing. Otherwise, returns [code]false[/code]."
@@ -24340,20 +44133,58 @@ msgid ""
"are placed in alphabetical order."
msgstr "返回一个包å«æ¯ä¸ªåŠ¨ç”»çš„å称的数组。值按字æ¯é¡ºåºæŽ’列。"
+msgid "Returns the speed in frames per second for the [param anim] animation."
+msgstr "返回 [param anim] 动画的速度,å•ä½ä¸ºå¸§æ¯ç§’。"
+
+msgid "Returns the number of frames for the [param anim] animation."
+msgstr "返回 [param anim] 动画中的帧数。"
+
+msgid ""
+"Returns the texture of the frame [param idx] in the [param anim] animation."
+msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧的纹ç†ã€‚"
+
+msgid "Returns [code]true[/code] if the [param anim] animation exists."
+msgstr "如果 [param anim] 动画存在,则返回 [code]true[/code]。"
+
+msgid "Removes the [param anim] animation."
+msgstr "移除 [param anim] 动画。"
+
+msgid "Removes the [param anim] animation's frame [param idx]."
+msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧。"
+
+msgid "Changes the [param anim] animation's name to [param newname]."
+msgstr "å°† [param anim] 动画的å称更改为 [param newname]。"
+
+msgid "Sets the speed for the [param anim] animation in frames per second."
+msgstr "设置 [param anim] 动画的速度,å•ä½ä¸ºå¸§æ¯ç§’。"
+
+msgid ""
+"Physics body for 2D physics which is static or moves only by script. Useful "
+"for floor and walls."
+msgstr "é™æ€æˆ–者åªèƒ½è¢«è„šæœ¬ç§»åŠ¨çš„ 2D 物ç†ç‰©ä½“。å¯ç”¨äºŽåœ°é¢å’Œå¢™ä½“。"
+
+msgid ""
+"Physics body for 3D physics which is static or moves only by script. Useful "
+"for floor and walls."
+msgstr "é™æ€æˆ–者åªèƒ½è¢«è„šæœ¬ç§»åŠ¨çš„ 3D 物ç†ç‰©ä½“。å¯ç”¨äºŽåœ°é¢å’Œå¢™ä½“。"
+
msgid "Abstraction and base class for stream-based protocols."
msgstr "基于æµçš„å议的抽象和基类。"
msgid "Gets a signed 16-bit value from the stream."
-msgstr "从æµä¸­èŽ·å–ä¸€ä¸ªæœ‰ç¬¦å· 16 ä½å€¼ã€‚"
+msgstr "从æµä¸­èŽ·å–æœ‰ç¬¦å· 16 ä½å€¼ã€‚"
msgid "Gets a signed 32-bit value from the stream."
-msgstr "从æµä¸­èŽ·å–ä¸€ä¸ªæœ‰ç¬¦å· 32 ä½å€¼ã€‚"
+msgstr "从æµä¸­èŽ·å–æœ‰ç¬¦å· 32 ä½å€¼ã€‚"
msgid "Gets a signed 64-bit value from the stream."
-msgstr "从æµä¸­èŽ·å–ä¸€ä¸ªæœ‰ç¬¦å· 64 ä½å€¼ã€‚"
+msgstr "从æµä¸­èŽ·å–æœ‰ç¬¦å· 64 ä½å€¼ã€‚"
msgid "Gets a signed byte from the stream."
-msgstr "从æµä¸­èŽ·å–一个有符å·å­—节。"
+msgstr "从æµä¸­èŽ·å–有符å·å­—节。"
+
+msgid "Returns the number of bytes this [StreamPeer] has available."
+msgstr "返回该 [StreamPeer] å¯ç”¨çš„字节数。"
msgid "Gets a double-precision float from the stream."
msgstr "从æµä¸­èŽ·å–一个åŒç²¾åº¦æµ®ç‚¹æ•°ã€‚"
@@ -24466,16 +44297,266 @@ msgstr ""
"轮询连接以检查传入的字节。在 [method StreamPeer.get_available_bytes] 之å‰è°ƒç”¨"
"它以使其正常工作。"
+msgid "A status representing a [StreamPeerTLS] that is disconnected."
+msgstr "状æ€ï¼Œè¡¨ç¤º [StreamPeerSSL] 已断开连接。"
+
+msgid "A status representing a [StreamPeerTLS] during handshaking."
+msgstr "状æ€ï¼Œè¡¨ç¤º [StreamPeerSSL] 处于æ¡æ‰‹é˜¶æ®µã€‚"
+
+msgid "A status representing a [StreamPeerTLS] that is connected to a host."
+msgstr "状æ€ï¼Œè¡¨ç¤º [StreamPeerSSL] 已连接至主机。"
+
+msgid "A status representing a [StreamPeerTLS] in error state."
+msgstr "状æ€ï¼Œè¡¨ç¤º [StreamPeerSSL] 处于出错状æ€ã€‚"
+
+msgid ""
+"An error status that shows a mismatch in the TLS certificate domain "
+"presented by the host and the domain requested for validation."
+msgstr "错误状æ€ï¼Œè¡¨ç¤ºä¸»æœºçš„ TLS è¯ä¹¦åŸŸå与请求验è¯çš„域åä¸åŒ¹é…。"
+
+msgid "Built-in string Variant type."
+msgstr "内置字符串 Variant 类。"
+
+msgid ""
+"This is the built-in string Variant type (and the one used by GDScript). "
+"Strings may contain any number of Unicode characters, and expose methods "
+"useful for manipulating and generating strings. Strings are reference-"
+"counted and use a copy-on-write approach (every modification to a string "
+"returns a new [String]), so passing them around is cheap in resources.\n"
+"Some string methods have corresponding variations. Variations suffixed with "
+"[code]n[/code] ([method countn], [method findn], [method replacen], etc.) "
+"are [b]case-insensitive[/b] (they make no distinction between uppercase and "
+"lowercase letters). Method variations prefixed with [code]r[/code] ([method "
+"rfind], [method rsplit], etc.) are reversed, and start from the end of the "
+"string, instead of the beginning.\n"
+"[b]Note:[/b] In a boolean context, a string will evaluate to [code]false[/"
+"code] if it is empty ([code]\"\"[/code]). Otherwise, a string will always "
+"evaluate to [code]true[/code]."
+msgstr ""
+"这是内置的字符串 Variant 类型(GDScript 使用的就是这个类型)。字符中中å¯ä»¥åŒ…"
+"å«ä»»æ„æ•°é‡çš„ Unicode 字符,暴露的方法å¯ç”¨äºŽå­—符串æ“作和生æˆã€‚字符串有引用计"
+"数,使用写时å¤åˆ¶æŠ€æœ¯ï¼ˆæ¯æ¬¡å¯¹å­—符串的修改都会返回新的 [String]),所以传递字符"
+"串的资æºæŸè€—很å°ã€‚\n"
+"部分字符串方法有对应的å˜ä½“。åŽç¼€ [code]n[/code] çš„å˜ä½“([method countn]ã€"
+"[method findn]ã€[method replacen] 等)[b]大å°å†™ä¸æ•æ„Ÿ[/b](ä¸åŒºåˆ†å¤§å†™å­—符和å°"
+"写字符)。å‰ç¼€ [code]r[/code] 的方法å˜ä½“([method rfind]ã€[method rsplit] "
+"等)是逆åºçš„,会从字符串末尾开始,而ä¸æ˜¯ä»Žå¼€å¤´å¼€å§‹ã€‚\n"
+"[b]注æ„:[/b]转æ¢ä¸ºå¸ƒå°”值时,空字符串([code]\"\"[/code])为 [code]false[/"
+"code],其他字符串å‡ä¸º [code]true[/code]。"
+
+msgid "GDScript format strings"
+msgstr "GDScript æ ¼å¼å­—符串"
+
msgid "Constructs an empty [String] ([code]\"\"[/code])."
msgstr "构造空的 [String]([code]\"\"[/code])。"
msgid "Constructs a [String] as a copy of the given [String]."
msgstr "构造给定 [String] 的副本。"
+msgid "Constructs a new [String] from the given [NodePath]."
+msgstr "从给定的 [NodePath] 构造新的 [String]。"
+
+msgid "Constructs a new [String] from the given [StringName]."
+msgstr "从给定的 [StringName] 构造新 [String]。"
+
+msgid ""
+"Returns [code]true[/code] if the string begins with the given [param text]. "
+"See also [method ends_with]."
+msgstr ""
+"如果该字符串以给定的 [param text] 开始,则返回 [code]true[/code]。å¦è§ "
+"[method ends_with]。"
+
+msgid ""
+"Returns an array containing the bigrams (pairs of consecutive characters) of "
+"this string.\n"
+"[codeblock]\n"
+"print(\"Get up!\".bigrams()) # Prints [\"Ge\", \"et\", \"t \", \" u\", "
+"\"up\", \"p!\"]\n"
+"[/codeblock]"
+msgstr ""
+"返回包å«è¯¥å­—符串的åŒå­—æ¯ç»„(连续字æ¯çš„组åˆï¼‰çš„数组。\n"
+"[codeblock]\n"
+"print(\"Get up!\".bigrams()) # 输出 [\"Ge\", \"et\", \"t \", \" u\", \"up\", "
+"\"p!\"]\n"
+"[/codeblock]"
+
+msgid ""
+"Converts the string representing a binary number into an [int]. The string "
+"may optionally be prefixed with [code]\"0b\"[/code], and an additional "
+"[code]-[/code] prefix for negative numbers.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"101\".bin_to_int()) # Prints 5\n"
+"print(\"0b101\".bin_to_int()) # Prints 5\n"
+"print(\"-0b10\".bin_to_int()) # Prints -2\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"101\".BinToInt()); // Prints 5\n"
+"GD.Print(\"0b101\".BinToInt()); // Prints 5\n"
+"GD.Print(\"-0b10\".BinToInt()); // Prints -2\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将表示二进制数的字符串转æ¢ä¸º [int]。该字符串å¯ä»¥å‰ç¼€ [code]\"0b\"[/code],负"
+"æ•°å¯ä»¥å‰ç¼€ [code]-[/code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"101\".bin_to_int()) # 输出 5\n"
+"print(\"0b101\".bin_to_int()) # 输出 5\n"
+"print(\"-0b10\".bin_to_int()) # 输出 -2\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"101\".BinToInt()); // 输出 5\n"
+"GD.Print(\"0b101\".BinToInt()); // 输出 5\n"
+"GD.Print(\"-0b10\".BinToInt()); // 输出 -2\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid ""
"Returns a copy of the string with special characters escaped using the C "
"language standard."
-msgstr "返回一个使用 C 语言标准转义的特殊字符的字符串的副本。"
+msgstr "返回该字符串的副本,按照 C 语言标准对特殊字符进行转义。"
+
+msgid ""
+"Returns a copy of the string with escaped characters replaced by their "
+"meanings. Supported escape sequences are [code]\\'[/code], [code]\\\"[/"
+"code], [code]\\\\[/code], [code]\\a[/code], [code]\\b[/code], [code]\\f[/"
+"code], [code]\\n[/code], [code]\\r[/code], [code]\\t[/code], [code]\\v[/"
+"code].\n"
+"[b]Note:[/b] Unlike the GDScript parser, this method doesn't support the "
+"[code]\\uXXXX[/code] escape sequence."
+msgstr ""
+"返回该字符串的副本,转义字符å‡ä½¿ç”¨æœ¬ä¹‰ä»£æ›¿ã€‚支æŒçš„转义åºåˆ—有 [code]\\'[/"
+"code]ã€[code]\\\"[/code]ã€[code]\\\\[/code]ã€[code]\\a[/code]ã€[code]\\b[/"
+"code]ã€[code]\\f[/code]ã€[code]\\n[/code]ã€[code]\\r[/code]ã€[code]\\t[/"
+"code]ã€[code]\\v[/code]。\n"
+"[b]注æ„:[/b]与 GDScript 解æžå™¨ä¸åŒï¼Œè¿™ä¸ªæ–¹æ³•ä¸æ”¯æŒ [code]\\uXXXX[/code] 转义"
+"åºåˆ—。"
+
+msgid ""
+"Changes the appearance of the string: replaces underscores ([code]_[/code]) "
+"with spaces, adds spaces before uppercase letters in the middle of a word, "
+"converts all letters to lowercase, then converts the first one and each one "
+"following a space to uppercase.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"\"move_local_x\".capitalize() # Returns \"Move Local X\"\n"
+"\"sceneFile_path\".capitalize() # Returns \"Scene File Path\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"\"move_local_x\".Capitalize(); // Returns \"Move Local X\"\n"
+"\"sceneFile_path\".Capitalize(); // Returns \"Scene File Path\"\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] This method not the same as the default appearance of "
+"properties in the Inspector dock, as it does not capitalize acronyms "
+"([code]\"2D\"[/code], [code]\"FPS\"[/code], [code]\"PNG\"[/code], etc.) as "
+"you may expect."
+msgstr ""
+"改å˜å­—符串的外观:用空格代替下划线([code]_[/code]),在å•è¯ä¸­é—´çš„大写字æ¯å‰"
+"添加空格,将所有字æ¯è½¬æ¢ä¸ºå°å†™ï¼Œç„¶åŽå°†ç¬¬ä¸€ä¸ªå­—æ¯å’Œç©ºæ ¼åŽçš„æ¯ä¸ªå­—æ¯è½¬æ¢ä¸ºå¤§"
+"写。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"\"move_local_x\".capitalize() # 返回 \"Move Local X\"\n"
+"\"sceneFile_path\".capitalize() # 返回 \"Scene File Path\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"\"move_local_x\".Capitalize(); // 返回 \"Move Local X\"\n"
+"\"sceneFile_path\".Capitalize(); // 返回 \"Scene File Path\"\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]这个方法与检查器é¢æ¿ä¸­å±žæ€§çš„默认外观ä¸ä¸€æ ·ï¼Œä¸ä¼šåƒä½ æœŸæœ›çš„那样将"
+"首字æ¯ç¼©å†™å¤§å†™ï¼ˆ[code]\"2D\"[/code]ã€[code]\"FPS\"[/code]ã€[code]\"PNG\"[/"
+"code] 等)。"
+
+msgid ""
+"Performs a case-sensitive comparison to another string. Returns [code]-1[/"
+"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if "
+"equal. \"Less than\" and \"greater than\" are determined by the [url=https://"
+"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] "
+"of each string, which roughly matches the alphabetical order.\n"
+"With different string lengths, returns [code]1[/code] if this string is "
+"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
+"the length of empty strings is [i]always[/i] [code]0[/code].\n"
+"To get a [bool] result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method nocasecmp_to] and [method "
+"naturalnocasecmp_to]."
+msgstr ""
+"与å¦ä¸€ä¸ªå­—符串进行比较,区分大å°å†™ã€‚å°äºŽæ—¶è¿”回 [code]-1[/code]ã€å¤§äºŽæ—¶è¿”回 "
+"[code]1[/code]ã€ç­‰äºŽæ—¶è¿”回 [code]0[/code]。“å°äºŽâ€å’Œâ€œå¤§äºŽâ€æ¯”较的是字符串中的 "
+"[url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode ç ä½[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚\n"
+"如果字符串长度ä¸åŒï¼Œè¿™ä¸ªå­—符串比 [param to] 字符串长时返回 [code]1[/code],短"
+"时返回 [code]-1[/code]。请注æ„空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
+"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] è¿ç®—符。å¦è§ "
+"[method nocasecmp_to] 和 [method naturalnocasecmp_to]。"
+
+msgid ""
+"Returns a single Unicode character from the decimal [param char]. You may "
+"use [url=https://unicodelookup.com/]unicodelookup.com[/url] or [url=https://"
+"www.unicode.org/charts/]unicode.org[/url] as points of reference.\n"
+"[codeblock]\n"
+"print(String.chr(65)) # Prints \"A\"\n"
+"print(String.chr(129302)) # Prints \"🤖\" (robot face emoji)\n"
+"[/codeblock]"
+msgstr ""
+"æ ¹æ®å进制数 [param char] 返回å•ä¸€ Unicode 字符。你å¯ä»¥ç”¨ [url=https://"
+"unicodelookup.com/]unicodelookup.com[/url] 和 [url=https://www.unicode.org/"
+"charts/]unicode.org[/url] 作为å‚考。\n"
+"[codeblock]\n"
+"print(String.chr(65)) # 输出 \"A\"\n"
+"print(String.chr(129302)) # 输出 \"🤖\"(机器人脸 Emoji)\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if the string contains [param what]. In GDScript, "
+"this corresponds to the [code]in[/code] operator.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"Node\".contains(\"de\")) # Prints true\n"
+"print(\"team\".contains(\"I\")) # Prints false\n"
+"print(\"I\" in \"team\") # Prints false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"Node\".Contains(\"de\")); // Prints true\n"
+"GD.Print(\"team\".Contains(\"I\")); // Prints false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"If you need to know where [param what] is within the string, use [method "
+"find]."
+msgstr ""
+"å¦‚æžœè¯¥å­—ç¬¦ä¸²åŒ…å« [param what],则返回 [code]true[/code]。在 GDScript 中对应 "
+"[code]in[/code] è¿ç®—符。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"Node\".contains(\"de\")) # 输出 true\n"
+"print(\"team\".contains(\"I\")) # 输出 false\n"
+"print(\"I\" in \"team\") # 输出 false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"Node\".Contains(\"de\")); // 输出 true\n"
+"GD.Print(\"team\".Contains(\"I\")); // 输出 false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"如果想è¦çŸ¥é“ [param what] 在该字符串中的ä½ç½®ï¼Œè¯·ä½¿ç”¨ [method find]。"
+
+msgid ""
+"Returns the number of occurrences of the substring [param what] between "
+"[param from] and [param to] positions. If [param to] is 0, the search "
+"continues until the end of the string."
+msgstr ""
+"返回å­ä¸² [param what] 在 [param from] å’Œ [param to] ä½ç½®ä¹‹é—´å‡ºçŽ°çš„次数。如果 "
+"[param to] 为 0,会在剩余字符串中继续æœç´¢ã€‚"
+
+msgid ""
+"Returns the number of occurrences of the substring [param what] between "
+"[param from] and [param to] positions, [b]ignoring case[/b]. If [param to] "
+"is 0, the search continues until the end of the string."
+msgstr ""
+"返回å­ä¸² [param what] 在 [param from] å’Œ [param to] ä½ç½®ä¹‹é—´å‡ºçŽ°çš„次数,[b]忽"
+"略大å°å†™[/b]。如果 [param to] 为 0,会在剩余字符串中继续æœç´¢ã€‚"
msgid ""
"Returns a copy of the string with indentation (leading tabs and spaces) "
@@ -24484,16 +44565,1238 @@ msgstr ""
"返回删除了缩进(å‰å¯¼åˆ¶è¡¨ç¬¦å’Œç©ºæ ¼ï¼‰çš„字符串副本。添加缩进请å‚阅 [method "
"indent]。"
+msgid ""
+"Returns [code]true[/code] if the string ends with the given [param text]. "
+"See also [method begins_with]."
+msgstr ""
+"如果该字符串以给定的 [param text] 结æŸï¼Œåˆ™è¿”回 [code]true[/code]。å¦è§ "
+"[method begins_with]。"
+
+msgid ""
+"Returns the index of the [b]first[/b] [b]case-insensitive[/b] occurrence of "
+"[param what] in this string, or [code]-1[/code] if there are none. The "
+"starting search index can be specified with [param from], continuing to the "
+"end of the string."
+msgstr ""
+"返回这个字符串中 [param what] [b]首次[/b]出现的索引,[b]ä¸åŒºåˆ†å¤§å°å†™[/b],ä¸"
+"存在时则为 [code]-1[/code]。æœç´¢çš„起点å¯ä»¥ç”¨ [param from] 指定,终点为该字符"
+"串的末尾。"
+
+msgid ""
+"If the string is a valid file path, returns the base directory name.\n"
+"[codeblock]\n"
+"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/"
+"to\"\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串是有效的文件路径,则返回基础目录å称。\n"
+"[codeblock]\n"
+"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path 为 \"/path/"
+"to\"\n"
+"[/codeblock]"
+
+msgid ""
+"If the string is a valid file path, returns the full file path, without the "
+"extension.\n"
+"[codeblock]\n"
+"var base = \"/path/to/file.txt\".get_basename() # base is \"/path/to/file\"\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串是有效的文件路径,则返回完整文件路径,ä¸åŒ…括扩展å。\n"
+"[codeblock]\n"
+"var base = \"/path/to/file.txt\".get_basename() # base 为 \"/path/to/file\"\n"
+"[/codeblock]"
+
+msgid ""
+"If the string is a valid file name or path, returns the file extension "
+"without the leading period ([code].[/code]). Otherwise, returns an empty "
+"string.\n"
+"[codeblock]\n"
+"var a = \"/path/to/file.txt\".get_extension() # a is \"txt\"\n"
+"var b = \"cool.txt\".get_extension() # b is \"txt\"\n"
+"var c = \"cool.font.tres\".get_extension() # c is \"tres\"\n"
+"var d = \".pack1\".get_extension() # d is \"pack1\"\n"
+"\n"
+"var e = \"file.txt.\".get_extension() # e is \"\"\n"
+"var f = \"file.txt..\".get_extension() # f is \"\"\n"
+"var g = \"txt\".get_extension() # g is \"\"\n"
+"var h = \"\".get_extension() # h is \"\"\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串是有效的文件å或路径,则返回该文件的扩展å,ä¸å«å¼€å¤´çš„点å·"
+"([code].[/code])。å¦åˆ™è¿”回空字符串。\n"
+"[codeblock]\n"
+"var a = \"/path/to/file.txt\".get_extension() # a 为 \"txt\"\n"
+"var b = \"cool.txt\".get_extension() # b 为 \"txt\"\n"
+"var c = \"cool.font.tres\".get_extension() # c 为 \"tres\"\n"
+"var d = \".pack1\".get_extension() # d 为 \"pack1\"\n"
+"\n"
+"var e = \"file.txt.\".get_extension() # e 为 \"\"\n"
+"var f = \"file.txt..\".get_extension() # f 为 \"\"\n"
+"var g = \"txt\".get_extension() # g 为 \"\"\n"
+"var h = \"\".get_extension() # h 为 \"\"\n"
+"[/codeblock]"
+
+msgid ""
+"If the string is a valid file path, returns the file name, including the "
+"extension.\n"
+"[codeblock]\n"
+"var file = \"/path/to/icon.png\".get_file() # file is \"icon.png\"\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串是有效的文件路径,则返回文件å,包括扩展å。\n"
+"[codeblock]\n"
+"var file = \"/path/to/icon.png\".get_file() # file 为 \"icon.png\"\n"
+"[/codeblock]"
+
+msgid ""
+"Splits the string using a [param delimiter] and returns the substring at "
+"index [param slice]. Returns an empty string if the [param slice] does not "
+"exist.\n"
+"This is faster than [method split], if you only need one substring.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"print(\"i/am/example/hi\".get_slice(\"/\", 2)) # Prints \"example\"\n"
+"[/codeblock]"
+msgstr ""
+"使用分隔符 [param delimiter] 拆分该字符串,返回索引为 [param slice] çš„å­ä¸²ã€‚"
+"如果 [param slice] ä¸å­˜åœ¨åˆ™è¿”回空字符串。\n"
+"åªéœ€è¦ä¸€ä¸ªå­ä¸²æ—¶è¿™ä¸ªæ–¹æ³•æ¯” [method split] 快。\n"
+"[b]示例:[/b]\n"
+"[codeblock]\n"
+"print(\"i/am/example/hi\".get_slice(\"/\", 2)) # 输出 \"example\"\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the total number of slices when the string is split with the given "
+"[param delimiter] (see [method split])."
+msgstr ""
+"返回使用给定的分隔符 [param delimiter] 拆分该字符串åŽåˆ‡ç‰‡çš„æ€»æ•°ï¼ˆè§ [method "
+"split])。"
+
+msgid ""
+"Splits the string using a Unicode character with code [param delimiter] and "
+"returns the substring at index [param slice]. Returns an empty string if the "
+"[param slice] does not exist.\n"
+"This is faster than [method split], if you only need one substring."
+msgstr ""
+"使用 Unicode 字符ç åˆ†éš”符 [param delimiter] 拆分该字符串,返回索引为 [param "
+"slice] çš„å­ä¸²ã€‚如果 [param slice] ä¸å­˜åœ¨åˆ™è¿”回空字符串。\n"
+"åªéœ€è¦ä¸€ä¸ªå­ä¸²æ—¶è¿™ä¸ªæ–¹æ³•æ¯” [method split] 快。"
+
+msgid ""
+"Returns the 32-bit hash value representing the string's contents.\n"
+"[b]Note:[/b] Strings with equal hash values are [i]not[/i] guaranteed to be "
+"the same, as a result of hash collisions. On the countrary, strings with "
+"different hash values are guaranteed to be different."
+msgstr ""
+"返回代表该字符串内容的 32 ä½å“ˆå¸Œå€¼ã€‚\n"
+"[b]注æ„:[/b]由于哈希碰撞的缘故,内容相åŒçš„字符串[i]ä¸ä¸€å®š[/i]会得到相åŒçš„哈"
+"希值。而相对的是,哈希ä¸åŒçš„字符串一定ä¸åŒã€‚"
+
+msgid ""
+"Converts the string representing a hexadecimal number into an [int]. The "
+"string may be optionally prefixed with [code]\"0x\"[/code], and an "
+"additional [code]-[/code] prefix for negative numbers.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"0xff\".hex_to_int()) # Prints 255\n"
+"print(\"ab\".hex_to_int()) # Prints 171\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"0xff\".HexToInt()); // Prints 255\n"
+"GD.Print(\"ab\".HexToInt()); // Prints 171\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将表示å六进制数的字符串转æ¢ä¸º [int]。该字符串å¯ä»¥å‰ç¼€ [code]\"0x\"[/code],"
+"è´Ÿæ•°å¯ä»¥å‰ç¼€ [code]-[/code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(\"0xff\".hex_to_int()) # 输出 255\n"
+"print(\"ab\".hex_to_int()) # 输出 171\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(\"0xff\".HexToInt()); // 输出 255\n"
+"GD.Print(\"ab\".HexToInt()); // 输出 171\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Converts [param size] which represents a number of bytes into a human-"
+"readable form.\n"
+"The result is in [url=https://en.wikipedia.org/wiki/"
+"Binary_prefix#IEC_prefixes]IEC prefix format[/url], which may end in either "
+"[code]\"B\"[/code], [code]\"KiB\"[/code], [code]\"MiB\"[/code], "
+"[code]\"GiB\"[/code], [code]\"TiB\"[/code], [code]\"PiB\"[/code], or "
+"[code]\"EiB\"[/code]."
+msgstr ""
+"将表示字节数的 [param size] 转æ¢ä¸ºäººç±»å¯è¯»çš„å½¢å¼ã€‚\n"
+"结果使用 [url=https://zh.wikipedia.org/wiki/"
+"%E4%BA%8C%E9%80%B2%E4%BD%8D%E5%89%8D%E7%BD%AE%E8%A9%9E]IEC è¯å¤´[/url],结尾å¯"
+"能是 [code]\"B\"[/code]ã€[code]\"KiB\"[/code]ã€[code]\"MiB\"[/code]ã€"
+"[code]\"GiB\"[/code]ã€[code]\"TiB\"[/code]ã€[code]\"PiB\"[/code] 或 "
+"[code]\"EiB\"[/code]。"
+
+msgid ""
+"Indents every line of the string with the given [param prefix]. Empty lines "
+"are not indented. See also [method dedent] to remove indentation.\n"
+"For example, the string can be indented with two tabulations using "
+"[code]\"\\t\\t\"[/code], or four spaces using [code]\" \"[/code]."
+msgstr ""
+"使用å‰ç¼€ [param prefix] 将该字符串中的æ¯ä¸€è¡Œè¿›è¡Œç¼©è¿›ã€‚空行ä¸ç¼©è¿›ã€‚移除缩进请"
+"å‚阅 [method dedent]。\n"
+"例如,该字符串å¯ä»¥ç”¨ [code]\"\\t\\t\"[/code] 缩进两个制表ä½ï¼Œç”¨ [code]\" "
+"\"[/code] 缩进四个空格。"
+
+msgid "Inserts [param what] at the given [param position] in the string."
+msgstr "在该字符串中的 [param position] ä½ç½®æ’å…¥ [param what]。"
+
+msgid ""
+"Returns [code]true[/code] if the string is a path to a file or directory, "
+"and its starting point is explicitly defined. This method is the opposite of "
+"[method is_relative_path].\n"
+"This includes all paths starting with [code]\"res://\"[/code], "
+"[code]\"user://\"[/code], [code]\"C:\\\"[/code], [code]\"/\"[/code], etc."
+msgstr ""
+"如果该字符串为文件或目录的路径,并且显å¼æŒ‡å®šäº†èµ·ç‚¹ï¼Œåˆ™è¿”回 [code]true[/"
+"code]。这个方法与 [method is_relative_path] 相å。\n"
+"包括以 [code]\"res://\"[/code]ã€[code]\"user://\"[/code]ã€[code]\"C:\\\"[/"
+"code]ã€[code]\"/\"[/code] 等开头的路径。"
+
+msgid ""
+"Returns [code]true[/code] if the string's length is [code]0[/code] "
+"([code]\"\"[/code]). See also [method length]."
+msgstr ""
+"如果该字符串的长度为 [code]0[/code]([code]\"\"[/code]),则返回 [code]true[/"
+"code]。å¦è§ [method length]。"
+
+msgid ""
+"Returns [code]true[/code] if the string is a path, and its starting point is "
+"dependent on context. The path could begin from the current directory, or "
+"the current [Node] (if the string is derived from a [NodePath]), and may "
+"sometimes be prefixed with [code]\"./\"[/code]. This method is the opposite "
+"of [method is_absolute_path]."
+msgstr ""
+"如果该字符串为文件或目录的路径,并且起点ä¾èµ–于上下文,则返回 [code]true[/"
+"code]。路径å¯ä»¥æ˜¯ä»Žå½“å‰ç›®å½•å¼€å§‹ï¼Œä¹Ÿå¯ä»¥æ˜¯ä»Žå½“å‰ [Node] 开始(如果该字符串是"
+"从 [NodePath] 得到的),有时候也å¯ä»¥æ˜¯ä½¿ç”¨äº† [code]\"./\"[/code] å‰ç¼€ã€‚这个方"
+"法与 [method is_absolute_path] 相å。"
+
+msgid ""
+"Returns [code]true[/code] if all characters of this string can be found in "
+"[param text] in their original order.\n"
+"[codeblock]\n"
+"var text = \"Wow, incredible!\"\n"
+"\n"
+"print(\"inedible\".is_subsequence_of(text)) # Prints true\n"
+"print(\"Word!\".is_subsequence_of(text)) # Prints true\n"
+"print(\"Window\".is_subsequence_of(text)) # Prints false\n"
+"print(\"\".is_subsequence_of(text)) # Prints true\n"
+"[/codeblock]"
+msgstr ""
+"如果这个字符串中的所有字符都能在 [param text] 中按照原始顺åºæ‰¾åˆ°ï¼Œåˆ™è¿”回 "
+"[code]true[/code]。\n"
+"[codeblock]\n"
+"var text = \"Wow, incredible!\"\n"
+"\n"
+"print(\"inedible\".is_subsequence_of(text)) # 输出 true\n"
+"print(\"Word!\".is_subsequence_of(text)) # 输出 true\n"
+"print(\"Window\".is_subsequence_of(text)) # 输出 false\n"
+"print(\"\".is_subsequence_of(text)) # 输出 true\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if all characters of this string can be found in "
+"[param text] in their original order, [b]ignoring case[/b]."
+msgstr ""
+"如果这个字符串中的所有字符都能在 [param text] 中按照原始顺åºæ‰¾åˆ°ï¼Œ[b]忽略大å°"
+"写[/b],则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this string does not contain characters that "
+"are not allowed in file names ([code]:[/code] [code]/[/code] [code]\\[/code] "
+"[code]?[/code] [code]*[/code] [code]\"[/code] [code]|[/code] [code]%[/code] "
+"[code]<[/code] [code]>[/code])."
+msgstr ""
+"如果该字符串ä¸åŒ…å«æ–‡ä»¶å中ä¸å…许的字符,则返回 [code]true[/code](ä¸å…许的字"
+"符有:[code]:[/code] [code]/[/code] [code]\\[/code] [code]?[/code] [code]*[/"
+"code] [code]\"[/code] [code]|[/code] [code]%[/code] [code]<[/code] [code]>[/"
+"code])。"
+
+msgid ""
+"Returns [code]true[/code] if this string represents a valid floating-point "
+"number. A valid float may contain only digits, one decimal point ([code].[/"
+"code]), and the exponent letter ([code]e[/code]). It may also be prefixed "
+"with a positive ([code]+[/code]) or negative ([code]-[/code]) sign. Any "
+"valid integer is also a valid float (see [method is_valid_int]). See also "
+"[method to_float].\n"
+"[codeblock]\n"
+"print(\"1.7\".is_valid_float()) # Prints true\n"
+"print(\"24\".is_valid_float()) # Prints true\n"
+"print(\"7e3\".is_valid_float()) # Prints true\n"
+"print(\"Hello\".is_valid_float()) # Prints false\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串代表有效的浮点数,则返回 [code]true[/code]。浮点数åªèƒ½åŒ…å«æ•°å­—ã€"
+"一个å°æ•°ç‚¹ï¼ˆ[code].[/code])以åŠæŒ‡æ•°å­—符([code]e[/code])。还å¯ä»¥å‰ç¼€æ­£å·"
+"([code]+[/code])或负å·ï¼ˆ[code]-[/code])。有效的整数åŒæ—¶ä¹Ÿæ˜¯æœ‰æ•ˆçš„浮点数"
+"ï¼ˆè§ [method is_valid_int])。å¦è§ [method to_float]。\n"
+"[codeblock]\n"
+"print(\"1.7\".is_valid_float()) # 输出 true\n"
+"print(\"24\".is_valid_float()) # 输出 true\n"
+"print(\"7e3\".is_valid_float()) # 输出 true\n"
+"print(\"Hello\".is_valid_float()) # 输出 false\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if this string is a valid hexadecimal number. A "
+"valid hexadecimal number only contains digits or letters [code]A[/code] to "
+"[code]F[/code] (either uppercase or lowercase), and may be prefixed with a "
+"positive ([code]+[/code]) or negative ([code]-[/code]) sign.\n"
+"If [param with_prefix] is [code]true[/code], the hexadecimal number needs to "
+"prefixed by [code]\"0x\"[/code] to be considered valid.\n"
+"[codeblock]\n"
+"print(\"A08E\".is_valid_hex_number()) # Prints true\n"
+"print(\"-AbCdEf\".is_valid_hex_number()) # Prints true\n"
+"print(\"2.5\".is_valid_hex_number()) # Prints false\n"
+"\n"
+"print(\"0xDEADC0DE\".is_valid_hex_number(true)) # Prints true\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串代表有效的å六进制数,则返回 [code]true[/code]。有效的å六进制数"
+"åªèƒ½åŒ…å«æ•°å­—æˆ–å­—æ¯ [code]A[/code] 到 [code]F[/code](大å°å†™å‡å¯ï¼‰ï¼Œè¿˜å¯ä»¥å‰ç¼€"
+"æ­£å·ï¼ˆ[code]+[/code])或负å·ï¼ˆ[code]-[/code])。\n"
+"如果 [param with_prefix] 为 [code]true[/code],则å六进制数需è¦æœ‰ "
+"[code]\"0x\"[/code] å‰ç¼€æ‰ç®—有效。\n"
+"[codeblock]\n"
+"print(\"A08E\".is_valid_hex_number()) # 输出 true\n"
+"print(\"-AbCdEf\".is_valid_hex_number()) # 输出 true\n"
+"print(\"2.5\".is_valid_hex_number()) # 输出 false\n"
+"\n"
+"print(\"0xDEADC0DE\".is_valid_hex_number(true)) # 输出 true\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if this string is a valid color in hexadecimal "
+"HTML notation. The string must be a hexadecimal value (see [method "
+"is_valid_hex_number]) of either 3, 4, 6 or 8 digits, and may be prefixed by "
+"a hash sign ([code]#[/code]). Other HTML notations for colors, such as names "
+"or [code]hsl()[/code], are not considered valid. See also [method Color."
+"html]."
+msgstr ""
+"如果该字符串是有效的å六进制 HTML 颜色标记,则返回 [code]true[/code]。该字符"
+"串必须为 3 ä½ã€4 ä½ã€6 ä½æˆ– 8 ä½å­—符的åå…­è¿›åˆ¶å€¼ï¼ˆè§ [method "
+"is_valid_hex_number]),也å¯ä»¥å¸¦æœ‰äº•å·å‰ç¼€ï¼ˆ[code]#[/code])。å称ã€"
+"[code]hsl()[/code] 等其他 HTML 颜色标记法无效。å¦è§ [method Color.html]。"
+
+msgid ""
+"Returns [code]true[/code] if this string is a valid identifier. A valid "
+"identifier may contain only letters, digits and underscores ([code]_[/"
+"code]), and the first character may not be a digit.\n"
+"[codeblock]\n"
+"print(\"node_2d\".is_valid_identifier()) # Prints true\n"
+"print(\"TYPE_FLOAT\".is_valid_identifier()) # Prints true\n"
+"print(\"1st_method\".is_valid_identifier()) # Prints false\n"
+"print(\"MyMethod#2\".is_valid_identifier()) # Prints false\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串为有效的标识符,则返回 [code]true[/code]。有效的标识符仅å¯ä»¥åŒ…å«"
+"å­—æ¯ã€æ•°å­—和下划线([code]_[/code]),第一个字符ä¸èƒ½ä¸ºæ•°å­—。\n"
+"[codeblock]\n"
+"print(\"node_2d\".is_valid_identifier()) # 输出 true\n"
+"print(\"TYPE_FLOAT\".is_valid_identifier()) # 输出 true\n"
+"print(\"1st_method\".is_valid_identifier()) # 输出 false\n"
+"print(\"MyMethod#2\".is_valid_identifier()) # 输出 false\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if this string represents a valid integer. A valid "
+"integer only contains digits, and may be prefixed with a positive ([code]+[/"
+"code]) or negative ([code]-[/code]) sign. See also [method to_int].\n"
+"[codeblock]\n"
+"print(\"7\".is_valid_int()) # Prints true\n"
+"print(\"1.65\".is_valid_int()) # Prints false\n"
+"print(\"Hi\".is_valid_int()) # Prints false\n"
+"print(\"+3\".is_valid_int()) # Prints true\n"
+"print(\"-12\".is_valid_int()) # Prints true\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串代表有效的整数,则返回 [code]true[/code]。有效的整数仅å¯ä»¥åŒ…å«æ•°"
+"字,还å¯ä»¥å‰ç¼€æ­£å·ï¼ˆ[code]+[/code])或负å·ï¼ˆ[code]-[/code])。å¦è§ [method "
+"to_int]。\n"
+"[codeblock]\n"
+"print(\"7\".is_valid_int()) # 输出 true\n"
+"print(\"1.65\".is_valid_int()) # 输出 false\n"
+"print(\"Hi\".is_valid_int()) # 输出 false\n"
+"print(\"+3\".is_valid_int()) # 输出 true\n"
+"print(\"-12\".is_valid_int()) # 输出 true\n"
+"[/codeblock]"
+
+msgid ""
+"Returns [code]true[/code] if this string represents a well-formatted IPv4 or "
+"IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/"
+"Reserved_IP_addresses]reserved IP addresses[/url] such as [code]\"0.0.0.0\"[/"
+"code] and [code]\"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff\"[/code] as valid."
+msgstr ""
+"如果该字符串表示格å¼æ­£ç¡®çš„ IPv4 或 IPv6 地å€ï¼Œåˆ™è¿”回 [code]true[/code]。这个"
+"方法认为 [code]0.0.0.0[/code]ã€[code]\"ffff:ffff:ffff:ffff:ffff:ffff:ffff:"
+"ffff\"[/code] ç­‰[url=https://zh.wikipedia.org/wiki/"
+"%E4%BF%9D%E7%95%99IP%E5%9C%B0%E5%9D%80]ä¿ç•™ IP 地å€[/url]是有效的。"
+
+msgid ""
+"Returns a copy of the string with special characters escaped using the JSON "
+"standard. Because it closely matches the C standard, it is possible to use "
+"[method c_unescape] to unescape the string, if necessary."
+msgstr ""
+"返回该字符串的副本,使用 JSON 标准对特殊字符进行转义。因为与 C 标准éžå¸¸ç±»ä¼¼ï¼Œ"
+"所以需è¦æ—¶å¯ä»¥ç”¨ [method c_unescape] å–消转义。"
+
+msgid ""
+"Returns the first [param length] characters from the beginning of the "
+"string. If [param length] is negative, strips the last [param length] "
+"characters from the string's end.\n"
+"[codeblock]\n"
+"print(\"Hello World!\".left(3)) # Prints \"Hel\"\n"
+"print(\"Hello World!\".left(-4)) # Prints \"Hello Wo\"\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žè¯¥å­—ç¬¦ä¸²å¼€å¤´çš„å‰ [param length] 个字符。如果 [param length] 为负,则会从"
+"è¯¥å­—ç¬¦ä¸²çš„æœ«å°¾å‰¥ç¦»æœ€åŽ [param length] 个字符。\n"
+"[codeblock]\n"
+"print(\"Hello World!\".left(3)) # 输出 \"Hel\"\n"
+"print(\"Hello World!\".left(-4)) # 输出 \"Hello Wo\"\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the number of characters in the string. Empty strings ([code]\"\"[/"
+"code]) always return [code]0[/code]. See also [method is_empty]."
+msgstr ""
+"返回该字符串中的字符数。空字符串([code]\"\"[/code])始终返回 [code]0[/"
+"code]。å¦è§ [method is_empty]。"
+
+msgid ""
+"Formats the string to be at least [param min_length] long by adding [param "
+"character]s to the left of the string, if necessary. See also [method rpad]."
+msgstr ""
+"å¿…è¦æ—¶åœ¨è¯¥å­—符串的左侧添加若干 [param character] 字符,使其长度至少为 [param "
+"min_length]。å¦è§ [method rpad]。"
+
+msgid ""
+"Removes a set of characters defined in [param chars] from the string's "
+"beginning. See also [method rstrip].\n"
+"[b]Note:[/b] [param chars] is not a prefix. Use [method trim_prefix] to "
+"remove a single prefix, rather than a set of characters."
+msgstr ""
+"从该字符串的开头移除 [param chars] 中定义的字符。å¦è§ [method rstrip]。\n"
+"[b]注æ„:[/b][param chars] ä¸æ˜¯å‰ç¼€ã€‚如果è¦ç§»é™¤å‰ç¼€è€Œä¸æ˜¯ä¸€ç»„字符,请使用 "
+"[method trim_prefix]。"
+
+msgid ""
+"Does a simple expression match (also called \"glob\" or \"globbing\"), where "
+"[code]*[/code] matches zero or more arbitrary characters and [code]?[/code] "
+"matches any single character except a period ([code].[/code]). An empty "
+"string or empty expression always evaluates to [code]false[/code]."
+msgstr ""
+"进行简å•çš„表达å¼åŒ¹é…(也å«â€œé€šé…â€ï¼‰ï¼Œ[code]*[/code] 匹é…零个或多个任æ„字符,"
+"[code]?[/code] 匹é…除英文å¥å·å¤–çš„ä»»æ„字符([code].[/code])。使用空字符串或空"
+"表达å¼æ—¶å§‹ç»ˆä¸º [code]false[/code]。"
+
+msgid ""
+"Does a simple [b]case-insensitive[/b] expression match, where [code]*[/code] "
+"matches zero or more arbitrary characters and [code]?[/code] matches any "
+"single character except a period ([code].[/code]). An empty string or empty "
+"expression always evaluates to [code]false[/code]."
+msgstr ""
+"进行简å•çš„[b]大å°å†™ä¸æ•æ„Ÿ[/b]表达å¼åŒ¹é…(也å«â€œé€šé…â€ï¼‰ï¼Œ[code]*[/code] 匹é…零"
+"个或多个任æ„字符,[code]?[/code] 匹é…除英文å¥å·å¤–çš„ä»»æ„字符([code].[/"
+"code])。使用空字符串或空表达å¼æ—¶å§‹ç»ˆä¸º [code]false[/code]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash[/url] of the "
+"string as a [PackedByteArray]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/MD5]MD5 哈希[/url],类型为 "
+"[PackedByteArray]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/MD5]MD5 hash[/url] of the "
+"string as another [String]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/MD5]MD5 哈希[/url],类型 "
+"[String]。"
+
+msgid ""
+"Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to "
+"another string. Returns [code]-1[/code] if less than, [code]1[/code] if "
+"greater than, or [code]0[/code] if equal. \"Less than\" or \"greater than\" "
+"are determined by the [url=https://en.wikipedia.org/wiki/"
+"List_of_Unicode_characters]Unicode code points[/url] of each string, which "
+"roughly matches the alphabetical order. Internally, lowercase characters are "
+"converted to uppercase for the comparison.\n"
+"When used for sorting, natural order comparison orders sequences of numbers "
+"by the combined value of each digit as is often expected, instead of the "
+"single digit's value. A sorted sequence of numbered strings will be [code]"
+"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", "
+"\"3\", ...][/code].\n"
+"With different string lengths, returns [code]1[/code] if this string is "
+"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
+"the length of empty strings is [i]always[/i] [code]0[/code].\n"
+"To get a [bool] result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method nocasecmp_to] and [method casecmp_to]."
+msgstr ""
+"与å¦ä¸€ä¸ªå­—符串进行[b]ä¸åŒºåˆ†å¤§å°å†™[/b]çš„[i]自然顺åº[/i]比较。å°äºŽæ—¶è¿”回 "
+"[code]-1[/code]ã€å¤§äºŽæ—¶è¿”回 [code]1[/code]ã€ç­‰äºŽæ—¶è¿”回 [code]0[/code]。“å°"
+"于â€å’Œâ€œå¤§äºŽâ€æ¯”较的是字符串中的 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode ç ä½[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚内部实现时,会将å°å†™å­—符转æ¢ä¸ºå¤§å†™åŽè¿›è¡Œæ¯”较。\n"
+"使用自然顺åºè¿›è¡ŒæŽ’åºæ—¶ï¼Œä¼šå’Œå¸¸è§é¢„期一样将连续的数字进行组åˆï¼Œè€Œä¸æ˜¯ä¸€ä¸ªä¸ªæ•°"
+"字进行比较。排åºåŽçš„数列为 [code][\"1\", \"2\", \"3\", ...][/code] 而ä¸æ˜¯ "
+"[code][\"1\", \"10\", \"2\", \"3\", ...][/code]。\n"
+"如果字符串长度ä¸åŒï¼Œè¿™ä¸ªå­—符串比 [param to] 字符串长时返回 [code]1[/code],短"
+"时返回 [code]-1[/code]。请注æ„空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
+"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] è¿ç®—符。å¦è§ "
+"[method nocasecmp_to] 和 [method casecmp_to]。"
+
+msgid ""
+"Performs a [b]case-insensitive[/b] comparison to another string. Returns "
+"[code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/"
+"code] if equal. \"Less than\" or \"greater than\" are determined by the "
+"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code "
+"points[/url] of each string, which roughly matches the alphabetical order. "
+"Internally, lowercase characters are converted to uppercase for the "
+"comparison.\n"
+"With different string lengths, returns [code]1[/code] if this string is "
+"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
+"the length of empty strings is [i]always[/i] [code]0[/code].\n"
+"To get a [bool] result from a string comparison, use the [code]==[/code] "
+"operator instead. See also [method casecmp_to] and [method "
+"naturalnocasecmp_to]."
+msgstr ""
+"与å¦ä¸€ä¸ªå­—符串进行[b]ä¸åŒºåˆ†å¤§å°å†™[/b]的比较。å°äºŽæ—¶è¿”回 [code]-1[/code]ã€å¤§äºŽ"
+"时返回 [code]1[/code]ã€ç­‰äºŽæ—¶è¿”回 [code]0[/code]。“å°äºŽâ€å’Œâ€œå¤§äºŽâ€æ¯”较的是字符"
+"串中的 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode ç ä½[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚内部实现时,会将å°å†™å­—符转æ¢ä¸ºå¤§å†™åŽè¿›è¡Œæ¯”较。\n"
+"如果字符串长度ä¸åŒï¼Œè¿™ä¸ªå­—符串比 [param to] 字符串长时返回 [code]1[/code],短"
+"时返回 [code]-1[/code]。请注æ„空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
+"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] è¿ç®—符。å¦è§ "
+"[method casecmp_to] 和 [method naturalnocasecmp_to]。"
+
+msgid ""
+"Converts a [float] to a string representation of a decimal number, with the "
+"number of decimal places specified in [param decimals].\n"
+"If [param decimals] is [code]-1[/code] as by default, the string "
+"representation may only have up to 14 significant digits, with digits before "
+"the decimal point having priority over digits after.\n"
+"Trailing zeros are not included in the string. The last digit is rounded, "
+"not truncated.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"String.num(3.141593) # Returns \"3.141593\"\n"
+"String.num(3.141593, 3) # Returns \"3.142\"\n"
+"String.num(3.14159300) # Returns \"3.141593\"\n"
+"\n"
+"# Here, the last digit will be rounded up,\n"
+"# which reduces the total digit count, since trailing zeros are removed:\n"
+"String.num(42.129999, 5) # Returns \"42.13\"\n"
+"\n"
+"# If `decimals` is not specified, the maximum number of significant digits "
+"is 14:\n"
+"String.num(-0.0000012345432123454321) # Returns \"-0.00000123454321\"\n"
+"String.num(-10000.0000012345432123454321) # Returns \"-10000.0000012345\"\n"
+"[/codeblock]"
+msgstr ""
+"å°† [float] 转æ¢ä¸ºå进制å°æ•°çš„字符串表示,å°æ•°ç‚¹ä½æ•°ç”± [param decimals] 指"
+"定。\n"
+"如果 [param decimals] 为默认的 [code]-1[/code],该字符串表示å¯èƒ½æœ€å¤šåªæœ‰ 14 "
+"ä½æœ‰æ•ˆæ•°å­—,å°æ•°ç‚¹å‰çš„数字优先于å°æ•°ç‚¹åŽçš„数字。\n"
+"该字符串中ä¸åŒ…å«åŽç¼€çš„零。最åŽä¸€ä½æ•°å­—会四èˆäº”入,而ä¸æ˜¯æˆªæ–­ã€‚\n"
+"[b]示例:[/b]\n"
+"[codeblock]\n"
+"String.num(3.141593) # 返回 \"3.141593\"\n"
+"String.num(3.141593, 3) # 返回 \"3.142\"\n"
+"String.num(3.14159300) # 返回 \"3.141593\"\n"
+"\n"
+"# 此处的最åŽä¸€ä½æ•°å­—会进ä½ï¼Œ\n"
+"# æ•°å­—ä½æ•°ä¼šå‡å°‘,因为åŽç¼€çš„零会被移除:\n"
+"String.num(42.129999, 5) # 返回 \"42.13\"\n"
+"\n"
+"# 如果没有指定 `decimals`,最大有效ä½æ•°ä¸º 14:\n"
+"String.num(-0.0000012345432123454321) # 返回 \"-0.00000123454321\"\n"
+"String.num(-10000.0000012345432123454321) # 返回 \"-10000.0000012345\"\n"
+"[/codeblock]"
+
+msgid ""
+"Converts the given [param number] to a string representation, with the given "
+"[param base].\n"
+"By default, [param base] is set to decimal ([code]10[/code]). Other common "
+"bases in programming include binary ([code]2[/code]), [url=https://en."
+"wikipedia.org/wiki/Octal]octal[/url] ([code]8[/code]), hexadecimal "
+"([code]16[/code]).\n"
+"If [param capitalize_hex] is [code]true[/code], digits higher than 9 are "
+"represented in uppercase."
+msgstr ""
+"将给定的数字 [param number] 转æ¢ä¸ºå­—符串表示,进ä½åˆ¶ç”± [param base] 给定。\n"
+"默认情况下 [param base] 为å进制([code]10[/code])。编程中常è§çš„è¿›ä½åˆ¶è¿˜æœ‰äºŒ"
+"进制([code]2[/code])ã€[url=https://zh.wikipedia.org/wiki/"
+"%E5%85%AB%E8%BF%9B%E5%88%B6]八进制[/url]([code]8[/code])ã€å六进制"
+"([code]16[/code])。\n"
+"如果 [param capitalize_hex] 为 [code]true[/code],比 9 大的数ä½ä¼šå¤§å†™ã€‚"
+
+msgid ""
+"Converts the given [param number] to a string representation, in scientific "
+"notation.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var n = -5.2e8\n"
+"print(n) # Prints -520000000\n"
+"print(String.NumScientific(n)) # Prints -5.2e+08\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// This method is not implemented in C#.\n"
+"// Use `string.ToString()` with \"e\" to achieve similar results.\n"
+"var n = -5.2e8f;\n"
+"GD.Print(n); // Prints -520000000\n"
+"GD.Print(n.ToString(\"e1\")); // Prints -5.2e+008\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] In C#, this method is not implemented. To achieve similar "
+"results, see C#'s [url=https://learn.microsoft.com/en-us/dotnet/standard/"
+"base-types/standard-numeric-format-strings]Standard numeric format strings[/"
+"url]"
+msgstr ""
+"将给定的数字 [param number] 转æ¢ä¸ºå­—符串表示,使用科学记数法。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var n = -5.2e8\n"
+"print(n) # 输出 -520000000\n"
+"print(String.NumScientific(n)) # 输出 -5.2e+08\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 这个方法没有在 C# 中实现。\n"
+"// 请在 `string.ToString()` 中使用 \"e\" æ¥å®žçŽ°ç±»ä¼¼çš„结果。\n"
+"var n = -5.2e8f;\n"
+"GD.Print(n); // 输出 -520000000\n"
+"GD.Print(n.ToString(\"e1\")); // 输出 -5.2e+008\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]这个方法没有在 C# 中实现。è¦å®žçŽ°ç±»ä¼¼çš„æ•ˆæžœï¼Œè§ C# çš„"
+"[url=https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-"
+"numeric-format-strings]标准数字格å¼å­—符串[/url]"
+
+msgid ""
+"Converts the given unsigned [int] to a string representation, with the given "
+"[param base].\n"
+"By default, [param base] is set to decimal ([code]10[/code]). Other common "
+"bases in programming include binary ([code]2[/code]), [url=https://en."
+"wikipedia.org/wiki/Octal]octal[/url] ([code]8[/code]), hexadecimal "
+"([code]16[/code]).\n"
+"If [param capitalize_hex] is [code]true[/code], digits higher than 9 are "
+"represented in uppercase."
+msgstr ""
+"å°†ç»™å®šçš„æ— ç¬¦å· [int] 转æ¢ä¸ºå­—符串表示,进ä½åˆ¶ç”± [param base] 给定。\n"
+"默认情况下 [param base] 为å进制([code]10[/code])。编程中常è§çš„è¿›ä½åˆ¶è¿˜æœ‰äºŒ"
+"进制([code]2[/code])ã€[url=https://zh.wikipedia.org/wiki/"
+"%E5%85%AB%E8%BF%9B%E5%88%B6]八进制[/url]([code]8[/code])ã€å六进制"
+"([code]16[/code])。\n"
+"如果 [param capitalize_hex] 为 [code]true[/code],比 9 大的数ä½ä¼šå¤§å†™ã€‚"
+
+msgid ""
+"Formats the string representing a number to have an exact number of [param "
+"digits] [i]after[/i] the decimal point."
+msgstr "æ ¼å¼åŒ–表示数字的字符串,使其å°æ•°ç‚¹[i]åŽ[/i]çš„ä½æ•°ä¸º [param digits]。"
+
+msgid ""
+"Formats the string representing a number to have an exact number of [param "
+"digits] [i]before[/i] the decimal point."
+msgstr "æ ¼å¼åŒ–表示数字的字符串,使其å°æ•°ç‚¹[i]å‰[/i]çš„ä½æ•°ä¸º [param digits]。"
+
+msgid ""
+"Concatenates [param file] at the end of the string as a subpath, adding "
+"[code]/[/code] if necessary.\n"
+"[b]Example:[/b] [code]\"this/is\".path_join(\"path\") == \"this/is/path\"[/"
+"code]."
+msgstr ""
+"å°† [param file] 作为å­è·¯å¾„连接到该字符串的末尾,必è¦æ—¶ä¼šæ·»åŠ  [code]/[/"
+"code]。\n"
+"[b]示例:[/b][code]\"this/is\".path_join(\"path\") == \"this/is/path\"[/"
+"code]。"
+
+msgid ""
+"Repeats this string a number of times. [param count] needs to be greater "
+"than [code]0[/code]. Otherwise, returns an empty string."
+msgstr ""
+"将该字符串é‡å¤è‹¥å¹²æ¬¡ã€‚次数 [param count] 需è¦å¤§äºŽ[code]0[/code] 。å¦åˆ™è¿”回空"
+"字符串。"
+
+msgid ""
+"Replaces all occurrences of [param what] inside the string with the given "
+"[param forwhat]."
+msgstr "将该字符串中出现的所有 [param what] 都替æ¢ä¸ºç»™å®šçš„ [param forwhat]。"
+
+msgid ""
+"Replaces all [b]case-insensitive[/b] occurrences of [param what] inside the "
+"string with the given [param forwhat]."
+msgstr ""
+"将该字符串中出现的所有 [param what] 都替æ¢ä¸ºç»™å®šçš„ [param forwhat],[b]大å°å†™"
+"ä¸æ•æ„Ÿ[/b]。"
+
+msgid ""
+"Returns the index of the [b]last[/b] occurrence of [param what] in this "
+"string, or [code]-1[/code] if there are none. The search's start can be "
+"specified with [param from], continuing to the beginning of the string. This "
+"method is the reverse of [method find]."
+msgstr ""
+"返回这个字符串中 [param what] [b]最åŽä¸€æ¬¡[/b]出现时的索引,ä¸å­˜åœ¨æ—¶åˆ™ä¸º "
+"[code]-1[/code]。æœç´¢çš„起点å¯ä»¥ç”¨ [param from] 指定,终点为该字符串的末尾。这"
+"个方法与 [method find] 相对。"
+
+msgid ""
+"Returns the index of the [b]last[/b] [b]case-insensitive[/b] occurrence of "
+"[param what] in this string, or [code]-1[/code] if there are none. The "
+"starting search index can be specified with [param from], continuing to the "
+"beginning of the string. This method is the reverse of [method findn]."
+msgstr ""
+"返回这个字符串中 [param what] [b]最åŽä¸€æ¬¡[/b]出现时的索引,[b]ä¸åŒºåˆ†å¤§å°å†™[/"
+"b],ä¸å­˜åœ¨æ—¶åˆ™ä¸º [code]-1[/code]。æœç´¢çš„起点å¯ä»¥ç”¨ [param from] 指定,终点为"
+"该字符串的末尾。这个方法与 [method findn] 相对。"
+
+msgid ""
+"Returns the last [param length] characters from the end of the string. If "
+"[param length] is negative, strips the first [param length] characters from "
+"the string's beginning.\n"
+"[codeblock]\n"
+"print(\"Hello World!\".right(3)) # Prints \"ld!\"\n"
+"print(\"Hello World!\".right(-4)) # Prints \"o World!\"\n"
+"[/codeblock]"
+msgstr ""
+"è¿”å›žè¯¥å­—ç¬¦ä¸²æœ«å°¾çš„æœ€åŽ [param length] 个字符。如果 [param length] 为负,则会"
+"ä»Žè¯¥å­—ç¬¦ä¸²çš„å¼€å¤´å‰¥ç¦»å‰ [param length] 个字符。\n"
+"[codeblock]\n"
+"print(\"Hello World!\".right(3)) # 输出 \"ld!\"\n"
+"print(\"Hello World!\".right(-4)) # 输出 \"o World!\"\n"
+"[/codeblock]"
+
+msgid ""
+"Formats the string to be at least [param min_length] long, by adding [param "
+"character]s to the right of the string, if necessary. See also [method lpad]."
+msgstr ""
+"å¿…è¦æ—¶åœ¨è¯¥å­—符串的å³ä¾§æ·»åŠ è‹¥å¹² [param character] 字符,使其长度至少为 [param "
+"min_length]。å¦è§ [method lpad]。"
+
+msgid ""
+"Splits the string using a [param delimiter] and returns an array of the "
+"substrings, starting from the end of the string. The splits in the returned "
+"array appear in the same order as the original string. If [param delimiter] "
+"is an empty string, each substring will be a single character.\n"
+"If [param allow_empty] is [code]false[/code], empty strings between adjacent "
+"delimiters are excluded from the array.\n"
+"If [param maxsplit] is greater than [code]0[/code], the number of splits may "
+"not exceed [param maxsplit]. By default, the entire string is split, which "
+"is mostly identical to [method split].\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var some_string = \"One,Two,Three,Four\"\n"
+"var some_array = some_string.rsplit(\",\", true, 1)\n"
+"\n"
+"print(some_array.size()) # Prints 2\n"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// In C#, there is no String.RSplit() method.\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"使用分隔符 [param delimiter] 将该字符串从末尾开始进行拆分,返回å­å­—符串数组。"
+"返回的数组中,æ¯éƒ¨åˆ†çš„出现顺åºä¸Žå®ƒä»¬åœ¨åŽŸå­—符串中的出现顺åºä¸€è‡´ã€‚如果 [param "
+"delimiter] 为空,则å­ä¸²ä¸ºå•ä¸ªå­—符。\n"
+"如果 [param allow_empty] 为 [code]false[/code],数组中会排除相邻分隔符之间的"
+"空字符串。\n"
+"如果 [param maxsplit] 大于 [code]0[/code],则拆分次数ä¸èƒ½è¶…过 [param "
+"maxsplit]。默认拆分整个字符串,基本与 [method split] 一致。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var some_string = \"One,Two,Three,Four\"\n"
+"var some_array = some_string.rsplit(\",\", true, 1)\n"
+"\n"
+"print(some_array.size()) # 输出 2\n"
+"print(some_array[0]) # 输出 \"One,Two,Three\"\n"
+"print(some_array[1]) # 输出 \"Four\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C# 中没有 String.RSplit() 方法。\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Removes a set of characters defined in [param chars] from the string's end. "
+"See also [method lstrip].\n"
+"[b]Note:[/b] [param chars] is not a suffix. Use [method trim_suffix] to "
+"remove a single suffix, rather than a set of characters."
+msgstr ""
+"从该字符串的结尾移除 [param chars] 中定义的字符。å¦è§ [method rstrip]。\n"
+"[b]注æ„:[/b][param chars] ä¸æ˜¯åŽç¼€ã€‚如果è¦ç§»é™¤åŽç¼€è€Œä¸æ˜¯ä¸€ç»„字符,请使用 "
+"[method trim_suffix]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1[/url] hash of the "
+"string as a [PackedByteArray]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-1]SHA-1[/url] 哈希,类"
+"型为 [PackedByteArray]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/SHA-1]SHA-1[/url] hash of the "
+"string as another [String]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-1]SHA-1[/url] 哈希,类"
+"型为 [String]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256[/url] hash of "
+"the string as a [PackedByteArray]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-2]SHA-256[/url] 哈希,"
+"类型为 [PackedByteArray]。"
+
+msgid ""
+"Returns the [url=https://en.wikipedia.org/wiki/SHA-2]SHA-256[/url] hash of "
+"the string as another [String]."
+msgstr ""
+"返回该字符串的 [url=https://zh.wikipedia.org/wiki/SHA-2]SHA-256[/url] 哈希,"
+"类型为 [String]。"
+
+msgid ""
+"Returns the similarity index ([url=https://en.wikipedia.org/wiki/"
+"S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) of "
+"this string compared to another. A result of [code]1.0[/code] means totally "
+"similar, while [code]0.0[/code] means totally dissimilar.\n"
+"[codeblock]\n"
+"print(\"ABC123\".similarity(\"ABC123\")) # Prints 1.0\n"
+"print(\"ABC123\".similarity(\"XYZ456\")) # Prints 0.0\n"
+"print(\"ABC123\".similarity(\"123ABC\")) # Prints 0.8\n"
+"print(\"ABC123\".similarity(\"abc123\")) # Prints 0.4\n"
+"[/codeblock]"
+msgstr ""
+"返回该字符串与å¦ä¸€ä¸ªå­—符串的相似指数([url=https://zh.wikipedia.org/wiki/"
+"Dice%E7%B3%BB%E6%95%B0]索伦森-戴斯系数[/url])。结果为 [code]1.0[/code] 表示"
+"完全相似,[code]0.0[/code] 表示完全ä¸ç›¸ä¼¼ã€‚\n"
+"[codeblock]\n"
+"print(\"ABC123\".similarity(\"ABC123\")) # 输出 1.0\n"
+"print(\"ABC123\".similarity(\"XYZ456\")) # 输出 0.0\n"
+"print(\"ABC123\".similarity(\"123ABC\")) # 输出 0.8\n"
+"print(\"ABC123\".similarity(\"abc123\")) # 输出 0.4\n"
+"[/codeblock]"
+
+msgid ""
+"If the string is a valid file path, converts the string into a canonical "
+"path. This is the shortest possible path, without [code]\"./\"[/code], and "
+"all the unnecessary [code]\"..\"[/code] and [code]\"/\"[/code].\n"
+"[codeblock]\n"
+"var simple_path = \"./path/to///../file\".simplify_path()\n"
+"print(simple_path) # Prints \"path/file\"\n"
+"[/codeblock]"
+msgstr ""
+"如果该字符串为有效的文件路径,则将其转æ¢ä¸ºè§„范路径。规范路径是最短路径,ä¸å¸¦ "
+"[code]\"./\"[/code] 和所有ä¸å¿…è¦çš„ [code]\"..\"[/code] å’Œ [code]\"/\"[/"
+"code]。\n"
+"[codeblock]\n"
+"var simple_path = \"./path/to///../file\".simplify_path()\n"
+"print(simple_path) # 输出 \"path/file\"\n"
+"[/codeblock]"
+
+msgid ""
+"Splits the string using a [param delimiter] and returns an array of the "
+"substrings. If [param delimiter] is an empty string, each substring will be "
+"a single character. This method is the opposite of [method join].\n"
+"If [param allow_empty] is [code]false[/code], empty strings between adjacent "
+"delimiters are excluded from the array.\n"
+"If [param maxsplit] is greater than [code]0[/code], the number of splits may "
+"not exceed [param maxsplit]. By default, the entire string is split.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n"
+"\n"
+"print(some_array.size()) # Prints 3\n"
+"print(some_array[0]) # Prints \"One\"\n"
+"print(some_array[1]) # Prints \"Two\"\n"
+"print(some_array[2]) # Prints \"Three,Four\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C#'s `Split()` does not support the `maxsplit` parameter.\n"
+"var someArray = \"One,Two,Three\".Split(\",\");\n"
+"\n"
+"GD.Print(someArray[0]); // Prints \"One\"\n"
+"GD.Print(someArray[1]); // Prints \"Two\"\n"
+"GD.Print(someArray[2]); // Prints \"Three\"\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] If you only need one substring from the array, consider using "
+"[method get_slice] which is faster. If you need to split strings with more "
+"complex rules, use the [RegEx] class instead."
+msgstr ""
+"使用分隔符 [param delimiter] 将该字符串进行拆分,返回å­å­—符串数组。如果 "
+"[param delimiter] 为空,则å­ä¸²ä¸ºå•ä¸ªå­—符。这个方法与 [method join] 相对。\n"
+"如果 [param allow_empty] 为 [code]false[/code],数组中会排除相邻分隔符之间的"
+"空字符串。\n"
+"如果 [param maxsplit] 大于 [code]0[/code],则拆分次数ä¸èƒ½è¶…过 [param "
+"maxsplit]。默认拆分整个字符串。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var some_array = \"One,Two,Three,Four\".split(\",\", true, 2)\n"
+"\n"
+"print(some_array.size()) # 输出 3\n"
+"print(some_array[0]) # 输出 \"One\"\n"
+"print(some_array[1]) # 输出 \"Two\"\n"
+"print(some_array[2]) # 输出 \"Three,Four\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C# çš„ `Split()` ä¸æ”¯æŒ `maxsplit` å‚数。\n"
+"var someArray = \"One,Two,Three\".Split(\",\");\n"
+"\n"
+"GD.Print(someArray[0]); // 输出 \"One\"\n"
+"GD.Print(someArray[1]); // 输出 \"Two\"\n"
+"GD.Print(someArray[2]); // 输出 \"Three\"\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]如果你åªéœ€è¦æ•°ç»„中的æŸä¸€ä¸ªå­ä¸²ï¼Œè¯·è€ƒè™‘使用更快的 [method "
+"get_slice]。如果你需è¦ç”¨æ›´å¤æ‚的规则æ¥æ‹†åˆ†å­—符串,请改用 [RegEx] 类。"
+
+msgid ""
+"Splits the string into floats by using a [param delimiter] and returns a "
+"[PackedFloat64Array].\n"
+"If [param allow_empty] is [code]false[/code], empty or invalid [float] "
+"conversions between adjacent delimiters are excluded.\n"
+"[codeblock]\n"
+"var a = \"1,2,4.5\".split_floats(\",\") # a is [1.0, 2.0, 4.5]\n"
+"var c = \"1| ||4.5\".split_floats(\"|\") # c is [1.0, 0.0, 0.0, 4.5]\n"
+"var b = \"1| ||4.5\".split_floats(\"|\", false) # b is [1.0, 4.5]\n"
+"[/codeblock]"
+msgstr ""
+"使用分隔符 [param delimiter] 将该字符串拆分为浮点数,返回 "
+"[PackedFloat64Array]。\n"
+"如果 [param allow_empty] 为 [code]false[/code],则会排除相邻分隔符之间为空或"
+"无法转æ¢ä¸º [float] 的内容。\n"
+"[codeblock]\n"
+"var a = \"1,2,4.5\".split_floats(\",\") # a 为 [1.0, 2.0, 4.5]\n"
+"var c = \"1| ||4.5\".split_floats(\"|\") # c 为 [1.0, 0.0, 0.0, 4.5]\n"
+"var b = \"1| ||4.5\".split_floats(\"|\", false) # b 为 [1.0, 4.5]\n"
+"[/codeblock]"
+
+msgid ""
+"Strips all non-printable characters from the beginning and the end of the "
+"string. These include spaces, tabulations ([code]\\t[/code]), and newlines "
+"([code]\\n[/code] [code]\\r[/code]).\n"
+"If [param left] is [code]false[/code], ignores the string's beginning. "
+"Likewise, if [param right] is [code]false[/code], ignores the string's end."
+msgstr ""
+"从该字符串的开头和结尾剥离所有ä¸å¯æ‰“å°çš„字符。其中包括空格ã€åˆ¶è¡¨ç¬¦"
+"([code]\\t[/code])以åŠæ¢è¡Œç¬¦ï¼ˆ[code]\\n[/code] [code]\\r[/code])。\n"
+"如果 [param left] 为 [code]false[/code],会忽略该字符串的开头。与此类似,如"
+"果 [param right] 为 [code]false[/code],则会忽略该字符串的结尾。"
+
+msgid ""
+"Strips all escape characters from the string. These include all non-"
+"printable control characters of the first page of the ASCII table (values "
+"from 0 to 31), such as tabulation ([code]\\t[/code]) and newline ([code]\\n[/"
+"code], [code]\\r[/code]) characters, but [i]not[/i] spaces."
+msgstr ""
+"从该字符串中剥离所有转义字符。其中包括 ASCII 表第一页的所有ä¸å¯æ‰“å°æŽ§åˆ¶å­—符"
+"(值为 0 到 32),例如制表符(C 中的 [code]\\t[/code])和æ¢è¡Œç¬¦ï¼ˆ[code]\\n[/"
+"code] å’Œ [code]]\\r[/code]) 字符,但[i]ä¸åŒ…括[/i]空格。"
+
+msgid ""
+"Returns part of the string from the position [param from] with length [param "
+"len]. If [param len] is [code]-1[/code] (as by default), returns the rest of "
+"the string starting from the given position."
+msgstr ""
+"返回该字符串中的æŸä¸€éƒ¨åˆ†ï¼Œä½ç½®ä»Ž [param from] 开始,长度为 [param len]。如果 "
+"[param len] 为 [code]-1[/code](默认值),将返回开给定ä½ç½®å¼€å§‹çš„剩余字符。"
+
+msgid ""
+"Converts the string to an [url=https://en.wikipedia.org/wiki/ASCII]ASCII[/"
+"url]/Latin-1 encoded [PackedByteArray]. This method is slightly faster than "
+"[method to_utf8_buffer], but replaces all unsupported characters with spaces."
+msgstr ""
+"将该字符串转æ¢ä¸º [url=https://zh.wikipedia.org/wiki/ASCII]ASCII[/url]/"
+"Latin-1 ç¼–ç çš„ [PackedByteArray]。这个方法比 [method to_utf8_buffer] ç¨å¿«ï¼Œä½†"
+"会把ä¸æ”¯æŒçš„字符都替æ¢ä¸ºç©ºæ ¼ã€‚"
+
+msgid "Returns the string converted to [code]camelCase[/code]."
+msgstr "返回将该字符串转æ¢ä¸ºå°é©¼å³°å‘½å [code]camelCase[/code] 的结果。"
+
+msgid ""
+"Converts the string representing a decimal number into a [float]. This "
+"method stops on the first non-number character, except the first decimal "
+"point ([code].[/code]) and the exponent letter ([code]e[/code]). See also "
+"[method is_valid_float].\n"
+"[codeblock]\n"
+"var a = \"12.35\".to_float() # a is 12.35\n"
+"var b = \"1.2.3\".to_float() # b is 1.2\n"
+"var c = \"12xy3\".to_float() # c is 12.0\n"
+"var d = \"1e3\".to_float() # d is 1000.0\n"
+"var e = \"Hello!\".to_int() # e is 0.0\n"
+"[/codeblock]"
+msgstr ""
+"将代表å进制数的字符串转æ¢ä¸º [float]。该方法会在首个éžæ•°å­—字符处åœæ­¢ï¼Œé™¤éžæ˜¯"
+"首次é‡åˆ° [code].[/code](å°æ•°ç‚¹ï¼‰ä»¥åŠè¡¨ç¤ºæŒ‡æ•°çš„ [code]e[/code]。å¦è§ [method "
+"is_valid_float]。\n"
+"[codeblock]\n"
+"var a = \"12.35\".to_float() # a 为 12.35\n"
+"var b = \"1.2.3\".to_float() # b 为 1.2\n"
+"var c = \"12xy3\".to_float() # c 为 12.0\n"
+"var d = \"1e3\".to_float() # d 为 1000.0\n"
+"var e = \"Hello!\".to_int() # e 为 0.0\n"
+"[/codeblock]"
+
+msgid ""
+"Converts the string representing an integer number into an [int]. This "
+"method removes any non-number character and stops at the first decimal point "
+"([code].[/code]). See also [method is_valid_int].\n"
+"[codeblock]\n"
+"var a = \"123\".to_int() # a is 123\n"
+"var b = \"x1y2z3\".to_int() # b is 123\n"
+"var c = \"-1.2.3\".to_int() # c is -1\n"
+"var d = \"Hello!\".to_int() # d is 0\n"
+"[/codeblock]"
+msgstr ""
+"将代表整数的字符串转æ¢ä¸º [int]。该方法会删除所有éžæ•°å­—字符,并在é‡åˆ° [code]."
+"[/code] åŽåœæ­¢ã€‚å¦è§ [method is_valid_int]。\n"
+"[codeblock]\n"
+"var a = \"123\".to_int() # a 为 123\n"
+"var b = \"x1y2z3\".to_int() # b 为 123\n"
+"var c = \"-1.2.3\".to_int() # c 为 -1\n"
+"var d = \"Hello!\".to_int() # d 为 0\n"
+"[/codeblock]"
+
msgid "Returns the string converted to lowercase."
-msgstr "返回转æ¢ä¸ºå°å†™çš„字符串。"
+msgstr "返回将该字符串转æ¢ä¸ºå°å†™çš„结果。"
+
+msgid "Returns the string converted to [code]PascalCase[/code]."
+msgstr "返回将该字符串转æ¢ä¸ºå¤§é©¼å³°å‘½å [code]PascalCase[/code] 的结果。"
+
+msgid "Returns the string converted to [code]snake_case[/code]."
+msgstr "返回将该字符串转æ¢ä¸ºè›‡å½¢å‘½å [code]snake_case[/code] 的结果。"
msgid "Returns the string converted to uppercase."
-msgstr "返回转æ¢ä¸ºå¤§å†™çš„字符串。"
+msgstr "返回将该字符串转æ¢ä¸ºå¤§å†™çš„结果。"
+
+msgid ""
+"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-16]UTF-16[/"
+"url] encoded [PackedByteArray]."
+msgstr ""
+"将该字符串转æ¢ä¸º [url=https://zh.wikipedia.org/wiki/UTF-16]UTF-16[/url] ç¼–ç "
+"的 [PackedByteArray]。"
+
+msgid ""
+"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-32]UTF-32[/"
+"url] encoded [PackedByteArray]."
+msgstr ""
+"将该字符串转æ¢ä¸º [url=https://zh.wikipedia.org/wiki/UTF-32]UTF-32[/url] ç¼–ç "
+"的 [PackedByteArray]。"
+
+msgid ""
+"Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8[/"
+"url] encoded [PackedByteArray]. This method is slightly slower than [method "
+"to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer "
+"using this method."
+msgstr ""
+"将该字符串转æ¢ä¸º [url=https://zh.wikipedia.org/wiki/UTF-8]UTF-8[/url] ç¼–ç çš„ "
+"[PackedByteArray]。这个方法比 [method to_ascii_buffer] ç¨æ…¢ï¼Œä½†æ”¯æŒæ‰€æœ‰ "
+"UTF-8 字符。大多数情况下请优先使用这个方法。"
+
+msgid ""
+"Removes the given [param prefix] from the start of the string, or returns "
+"the string unchanged."
+msgstr "移除该字符串开头的 [param prefix] å‰ç¼€ï¼Œå¦åˆ™åŽŸæ ·è¿”回该字符串。"
+
+msgid ""
+"Removes the given [param suffix] from the end of the string, or returns the "
+"string unchanged."
+msgstr "移除该字符串末尾的 [param suffix] åŽç¼€ï¼Œå¦åˆ™åŽŸæ ·è¿”回该字符串。"
+
+msgid "Returns the character code at position [param at]."
+msgstr "返回ä½äºŽ [param at] 处的字符的代ç ã€‚"
+
+msgid ""
+"Decodes the string from its URL-encoded format. This method is meant to "
+"properly decode the parameters in a URL when receiving an HTTP request.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"print(url.uri_decode()) # Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"GD.Print(url.URIDecode()) // Prints \"$DOCS_URL/?highlight=Godot Engine:"
+"docs\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将该字符串从 URL ç¼–ç æ ¼å¼ä¸­è§£ç ã€‚该方法的目的是在收到 HTTP è¯·æ±‚æ—¶æ­£ç¡®è§£ç  "
+"URL 中的å‚数。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"print(url.uri_decode()) # 输出 \"$DOCS_URL/?highlight=Godot Engine:docs\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"GD.Print(url.URIDecode()) // 输出 \"$DOCS_URL/?highlight=Godot Engine:"
+"docs\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Encodes the string to URL-friendly format. This method is meant to properly "
+"encode the parameters in a URL when sending an HTTP request.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prefix = \"$DOCS_URL/?highlight=\"\n"
+"var url = prefix + \"Godot Engine:docs\".uri_encode()\n"
+"\n"
+"print(url) # Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var prefix = \"$DOCS_URL/?highlight=\";\n"
+"var url = prefix + \"Godot Engine:docs\".URIEncode();\n"
+"\n"
+"GD.Print(url); // Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"将该字符串按照对 URL å‹å¥½çš„æ ¼å¼è¿›è¡Œç¼–ç ã€‚该方法的目的是在å‘é€ HTTP 请求时,正"
+"ç¡®ç¼–ç  URL 中的å‚数。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var prefix = \"$DOCS_URL/?highlight=\"\n"
+"var url = prefix + \"Godot Engine:docs\".uri_encode()\n"
+"\n"
+"print(url) # 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var prefix = \"$DOCS_URL/?highlight=\";\n"
+"var url = prefix + \"Godot Engine:docs\".URIEncode();\n"
+"\n"
+"GD.Print(url); // 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a copy of the string with all characters that are not allowed in "
+"[method is_valid_filename] replaced with underscores."
+msgstr ""
+"返回该字符串的副本,所有 [method is_valid_filename] 中ä¸å…许的字符都会被替æ¢"
+"为下划线。"
+
+msgid ""
+"Returns a copy of the string with all characters that are not allowed in "
+"[member Node.name] removed ([code].[/code] [code]:[/code] [code]@[/code] "
+"[code]/[/code] [code]\"[/code] [code]%[/code])."
+msgstr ""
+"返回该字符串的副本,所有 [member Node.name] 中ä¸å…许的字符都会被移除([code]."
+"[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]\"[/code] "
+"[code]%[/code]))。"
+
+msgid ""
+"Returns a copy of the string with special characters escaped using the XML "
+"standard. If [param escape_quotes] is [code]true[/code], the single quote "
+"([code]'[/code]) and double quote ([code]\"[/code]) characters are also "
+"escaped."
+msgstr ""
+"返回该字符串的副本,使用 XML 标准对特殊字符进行转义。如果 [param "
+"escape_quotes] 为 [code]true[/code],则å•å¼•å·ï¼ˆ[code]'[/code])和åŒå¼•å·"
+"([code]\"[/code])字符也会被转义。"
msgid ""
"Returns a copy of the string with escaped characters replaced by their "
"meanings according to the XML standard."
-msgstr "è¿”å›žæ ¹æ® XML 标准将转义字符替æ¢ä¸ºå…¶å«ä¹‰çš„字符串副本。"
+msgstr "返回该字符串的副本,转义字符å‡æŒ‰ç…§ XML 标准使用本义代替。"
+
+msgid ""
+"Returns [code]true[/code] if both strings do not contain the same sequence "
+"of characters."
+msgstr "如果两个字符串ä¸ä»¥ç›¸åŒçš„字符åºåˆ—开头,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [String] is not equivalent to the given "
+"[StringName]."
+msgstr ""
+"如果该 [String] 与给定的 [StringName] ä¸ç­‰ä»·ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Appends [param right] at the end of this [String], also known as a string "
+"concatenation."
+msgstr "将 [param right] 追加到该 [String] 的末尾,也称作字符串连接。"
+
+msgid ""
+"Returns [code]true[/code] if the left [String] comes before [param right] in "
+"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/"
+"url], which roughly matches the alphabetical order. Useful for sorting."
+msgstr ""
+"如果左侧的 [String] 比 [param right] é å‰ï¼Œåˆ™è¿”回 [code]true[/code]。使用的"
+"是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚å¯ç”¨äºŽæŽ’åºã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the left [String] comes before [param right] in "
+"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/"
+"url], which roughly matches the alphabetical order, or if both are equal."
+msgstr ""
+"如果左侧的 [String] 比 [param right] é å‰ï¼Œæˆ–两者相等,则返回 [code]true[/"
+"code]。使用的是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚"
+
+msgid ""
+"Returns [code]true[/code] if both strings contain the same sequence of "
+"characters."
+msgstr "如果两个字符串以相åŒçš„字符åºåˆ—开头,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if this [String] is equivalent to the given "
+"[StringName]."
+msgstr "如果该 [String] 与给定的 [StringName] 等价,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the left [String] comes after [param right] in "
+"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/"
+"url], which roughly matches the alphabetical order. Useful for sorting."
+msgstr ""
+"如果左侧的 [String] 比 [param right] é åŽï¼Œåˆ™è¿”回 [code]true[/code]。使用的"
+"是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚å¯ç”¨äºŽæŽ’åºã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the left [String] comes after [param right] in "
+"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode order[/"
+"url], which roughly matches the alphabetical order, or if both are equal."
+msgstr ""
+"如果左侧的 [String] 比 [param right] é åŽï¼Œæˆ–两者相等,则返回 [code]true[/"
+"code]。使用的是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚"
+
+msgid ""
+"Returns a new [String] that only contains the character at [param index]. "
+"Indices start from [code]0[/code]. If [param index] is greater or equal to "
+"[code]0[/code], the character is fetched starting from the beginning of the "
+"string. If [param index] is a negative value, it is fetched starting from "
+"the end. Accessing a string out-of-bounds will cause a run-time error, "
+"pausing the project execution if run from the editor."
+msgstr ""
+"返回åªåŒ…å«ç´¢å¼•ä¸º [param index] 的字符的新 [String]。索引从 [code]0[/code] å¼€"
+"始。如果 [param index] 大于等于 [code]0[/code],则字符是从该字符串的开头开始"
+"获å–的。如果 [param index] 为负,则从末尾开始获å–。越界访问字符串会导致è¿è¡Œæ—¶"
+"错误,从编辑器中è¿è¡Œæ—¶ä¼šå°†é¡¹ç›®æš‚åœã€‚"
msgid "An optimized string type for unique names."
msgstr "针对唯一å称优化的字符串类型。"
@@ -24504,6 +45807,63 @@ msgstr "构造空的 [StringName]。"
msgid "Constructs a [StringName] as a copy of the given [StringName]."
msgstr "构造给定 [StringName] 的副本。"
+msgid ""
+"Creates a new [StringName] from the given [String]. In GDScript, "
+"[code]StringName(\"example\")[/code] is equivalent to [code]&\"example\"[/"
+"code]."
+msgstr ""
+"从给定的 [String] 创建 [StringName]。在 GDScript 中,"
+"[code]StringName(\"example\")[/code] 与 [code]&\"example\"[/code] 等价。"
+
+msgid ""
+"Returns [code]true[/code] if this [StringName] is not equivalent to the "
+"given [String]."
+msgstr ""
+"如果该 [StringName] 与给定的 [String] ä¸ç­‰ä»·ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [StringName] and [param right] do not refer "
+"to the same name. Comparisons between [StringName]s are much faster than "
+"regular [String] comparisons."
+msgstr ""
+"如果该 [StringName] 与 [param right] ä¸æŒ‡å‘åŒä¸€ä¸ªå称,则返回 [code]true[/"
+"code]。[StringName] 间的比较比常规 [String] 间的比较è¦å¿«å¾ˆå¤šã€‚"
+
+msgid ""
+"Returns [code]true[/code] if this [StringName] is equivalent to the given "
+"[String]."
+msgstr "如果该 [StringName] 与给定的 [String] 等价,则返回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the [StringName] and [param right] refer to the "
+"same name. Comparisons between [StringName]s are much faster than regular "
+"[String] comparisons."
+msgstr ""
+"如果该 [StringName] 与 [param right] 指å‘åŒä¸€ä¸ªå称,则返回 [code]true[/"
+"code]。[StringName] 间的比较比常规 [String] 间的比较è¦å¿«å¾ˆå¤šã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the left [StringName] comes after [param right] "
+"in [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode "
+"order[/url], which roughly matches the alphabetical order. Useful for "
+"sorting."
+msgstr ""
+"如果左侧的 [StringName] 比 [param right] é åŽï¼Œåˆ™è¿”回 [code]true[/code]。使用"
+"的是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚å¯ç”¨äºŽæŽ’åºã€‚"
+
+msgid ""
+"Returns [code]true[/code] if the left [StringName] comes after [param right] "
+"in [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode "
+"order[/url], which roughly matches the alphabetical order, or if both are "
+"equal."
+msgstr ""
+"如果左侧的 [StringName] 比 [param right] é åŽï¼Œæˆ–两者相等,则返回 "
+"[code]true[/code]。使用的是 [url=https://zh.wikipedia.org/wiki/"
+"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 顺åº[/url],大致与字æ¯è¡¨"
+"顺åºä¸€è‡´ã€‚å¯ç”¨äºŽæŽ’åºã€‚"
+
msgid "Base class for drawing stylized boxes for the UI."
msgstr "用于为 UI 绘制风格化框的基类。"
@@ -24528,6 +45888,9 @@ msgstr ""
"[code]pressed[/code] 的 [StyleBox]之上。这样的行为有助于 [code]focus[/code] "
"[StyleBox] 在ä¸åŒèŠ‚点上å¤ç”¨ã€‚"
+msgid "Returns the default margin of the specified [enum Side]."
+msgstr "返回指定边 [enum Side] 的默认边è·ã€‚"
+
msgid ""
"Returns the [CanvasItem] that handles its [constant CanvasItem."
"NOTIFICATION_DRAW] or [method CanvasItem._draw] callback at this moment."
@@ -24535,6 +45898,13 @@ msgstr ""
"返回此时处ç†å…¶ [constant CanvasItem.NOTIFICATION_DRAW] 或 [method CanvasItem."
"_draw] 回调的 [CanvasItem]。"
+msgid ""
+"Returns the content margin offset for the specified [enum Side].\n"
+"Positive values reduce size inwards, unlike [Control]'s margin values."
+msgstr ""
+"返回指定边 [enum Side] 的内容边è·å移é‡ã€‚\n"
+"与 [Control] çš„è¾¹è·ä¸åŒï¼Œæ­£å€¼ä¼šå‘内å‡å°å¤§å°ã€‚"
+
msgid "Returns the minimum size that this stylebox can be shrunk to."
msgstr "返回此样å¼ç›’å¯ä»¥ç¼©å°åˆ°çš„最å°å°ºå¯¸ã€‚"
@@ -24546,6 +45916,13 @@ msgstr ""
"返回样å¼ç›’的“å移é‡â€ã€‚这个辅助函数返回一个等价于 [code]Vector2(style."
"get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP))[/code] 的值。"
+msgid ""
+"Sets the default value of the specified [enum Side] to [param offset] pixels."
+msgstr "将指定边 [enum Side] 的默认值设置为 [param offset] åƒç´ ã€‚"
+
+msgid "Sets the default margin to [param offset] pixels for all sides."
+msgstr "将所有边的默认边è·è®¾ç½®ä¸º [param offset] åƒç´ ã€‚"
+
msgid "Test a position in a rectangle, return whether it passes the mask test."
msgstr "测试矩形中的一个ä½ç½®ï¼Œè¿”回它是å¦é€šè¿‡æŽ©ç æµ‹è¯•ã€‚"
@@ -24604,8 +45981,39 @@ msgid ""
"Customizable [StyleBox] with a given set of parameters (no texture required)."
msgstr "å¯é€šè¿‡ä¸€ç³»åˆ—å‚数自定义的 [StyleBox](无需纹ç†ï¼‰ 。"
+msgid "Returns the specified [enum Side]'s border width."
+msgstr "返回指定边 [enum Side] 的边框宽度。"
+
msgid "Returns the smallest border width out of all four borders."
-msgstr "返回所有四个边界中最å°çš„边框宽度。"
+msgstr "返回所有四æ¡è¾¹ä¸­ï¼Œæœ€å°çš„边框宽度。"
+
+msgid ""
+"Returns the given [param corner]'s radius. See [enum Corner] for possible "
+"values."
+msgstr "返回给定角 [param corner] çš„åŠå¾„。å¯èƒ½çš„å–å€¼è§ [enum Corner]。"
+
+msgid "Returns the size of the specified [enum Side]'s expand margin."
+msgstr "返回指定边 [enum Side] 的扩展边è·çš„大å°ã€‚"
+
+msgid "Sets the specified [enum Side]'s border width to [param width] pixels."
+msgstr "将指定边 [enum Side] 的边框宽度设置为 [param width] åƒç´ ã€‚"
+
+msgid "Sets the border width to [param width] pixels for all sides."
+msgstr "将所有边的边框宽度设置为 [param width] åƒç´ ã€‚"
+
+msgid ""
+"Sets the corner radius to [param radius] pixels for the given [param "
+"corner]. See [enum Corner] for possible values."
+msgstr ""
+"将给定角 [param corner] 的圆角åŠå¾„设置为 [param radius] åƒç´ ã€‚å¯èƒ½çš„å–å€¼è§ "
+"[enum Corner]。"
+
+msgid "Sets the corner radius to [param radius] pixels for all corners."
+msgstr "将所有角的圆角åŠå¾„设置为 [param radius] åƒç´ ã€‚"
+
+msgid ""
+"Sets the expand margin to [param size] pixels for the specified [enum Side]."
+msgstr "将指定边 [enum Side] 的扩展边è·è®¾ç½®ä¸º [param size] åƒç´ ã€‚"
msgid ""
"Antialiasing draws a small ring around the edges, which fades to "
@@ -24830,9 +46238,21 @@ msgid ""
"cell is fully stretched. This makes it possible to design bordered styles "
"regardless of the stylebox's size."
msgstr ""
-"基于纹ç†çš„ä¹å®«æ ¼ [StyleBox],类似于 [NinePatchRect]。这个样å¼ç›’会对纹ç†æ‰§è¡Œ "
-"3×3 缩放,其中åªæœ‰ä¸­å¿ƒå•å…ƒä¼šè¢«å®Œå…¨æ‹‰ä¼¸ã€‚这使得无论样å¼ç›’的大å°å¦‚何,都å¯ä»¥è®¾"
-"计有边框的样å¼ã€‚"
+"基于纹ç†çš„ä¹å®«æ ¼ [StyleBox],类似于 [NinePatchRect]。这ç§æ ·å¼ç›’对纹ç†æ‰§è¡Œ "
+"3×3 缩放,åªæœ‰ä¸­å¿ƒå•å…ƒæ ¼ä¼šè¢«å®Œå…¨æ‹‰ä¼¸ã€‚因此无论样å¼ç›’的大å°å¦‚何,都å¯ä»¥è®¾è®¡å¸¦"
+"边框的样å¼ã€‚"
+
+msgid "Returns the expand margin size of the specified [enum Side]."
+msgstr "返回指定边 [enum Side] 的扩展边è·å¤§å°ã€‚"
+
+msgid "Returns the margin size of the specified [enum Side]."
+msgstr "返回指定边 [enum Side] çš„è¾¹è·å¤§å°ã€‚"
+
+msgid "Sets the margin to [param size] pixels for the specified [enum Side]."
+msgstr "将指定边 [enum Side] çš„è¾¹è·è®¾ç½®ä¸º [param size] åƒç´ ã€‚"
+
+msgid "Sets the margin to [param size] pixels for all sides."
+msgstr "将所有边的边è·éƒ½è®¾ç½®ä¸º [param size] åƒç´ ã€‚"
msgid ""
"Controls how the stylebox's texture will be stretched or tiled horizontally. "
@@ -24844,7 +46264,7 @@ msgid ""
"Controls how the stylebox's texture will be stretched or tiled vertically. "
"See [enum AxisStretchMode] for possible values."
msgstr ""
-"控制如何垂直拉伸或平铺 StyleBox 的纹ç†ã€‚å¯èƒ½çš„å–å€¼è§ [enum AxisStretchMode]。"
+"控制如何垂直拉伸或平铺样å¼ç›’的纹ç†ã€‚å¯èƒ½çš„å–å€¼è§ [enum AxisStretchMode]。"
msgid ""
"If [code]true[/code], the nine-patch texture's center tile will be drawn."
@@ -24853,7 +46273,7 @@ msgstr "如果为 [code]true[/code],将绘制ä¹å®«æ ¼çº¹ç†çš„中心图å—。
msgid ""
"Expands the bottom margin of this style box when drawing, causing it to be "
"drawn larger than requested."
-msgstr "绘制时扩展此样å¼ç›’的底部边è·ï¼Œä½¿å…¶ç»˜åˆ¶å¾—比请求的大。"
+msgstr "绘制时扩展此样å¼ç›’的下边è·ï¼Œä½¿å…¶ç»˜åˆ¶å¾—比请求的大。"
msgid ""
"Expands the left margin of this style box when drawing, causing it to be "
@@ -24944,6 +46364,19 @@ msgstr ""
msgid "Creates a sub-view into the screen."
msgstr "在å±å¹•ä¸­åˆ›å»ºå­è§†å›¾ã€‚"
+msgid ""
+"[SubViewport] is a [Viewport] that isn't a [Window], i.e. it doesn't draw "
+"anything by itself. To display something, [SubViewport]'s [member size] must "
+"be non-zero and it should be either put inside a [SubViewportContainer] or "
+"assigned to a [ViewportTexture]."
+msgstr ""
+"[SubViewport] 是 [Viewport] 但ä¸æ˜¯ [Window],å³å®ƒæœ¬èº«ä¸ç»˜åˆ¶ä»»ä½•å†…容。è¦æ˜¾ç¤ºå†…"
+"容,[SubViewport] çš„ [member size] å¿…é¡»éžé›¶ï¼Œå¹¶ä¸”应该被放在 "
+"[SubViewportContainer] 内,或被分é…ç»™ [ViewportTexture]。"
+
+msgid "Using Viewports"
+msgstr "使用视å£"
+
msgid "3D in 2D Demo"
msgstr "2D 中的 3D 演示"
@@ -24956,6 +46389,16 @@ msgstr "动æ€åˆ†å±æ¼”示"
msgid "3D Viewport Scaling Demo"
msgstr "3D Viewport 缩放演示"
+msgid ""
+"The clear mode when the sub-viewport is used as a render target.\n"
+"[b]Note:[/b] This property is intended for 2D usage."
+msgstr ""
+"该å­è§†å£ç”¨ä½œæ¸²æŸ“目标时的清除模å¼ã€‚\n"
+"[b]注æ„:[/b]此属性适用于 2D 用途。"
+
+msgid "The update mode when the sub-viewport is used as a render target."
+msgstr "该å­è§†å£ç”¨ä½œæ¸²æŸ“目标时的更新模å¼ã€‚"
+
msgid "Always clear the render target before drawing."
msgstr "绘制å‰å§‹ç»ˆæ¸…除渲染目标。"
@@ -24981,6 +46424,9 @@ msgstr "仅在渲染目标å¯è§æ—¶æ›´æ–°æ¸²æŸ“目标。这是默认值。"
msgid "Always update the render target."
msgstr "始终更新渲染目标。"
+msgid "Control for holding [SubViewport]s."
+msgstr "用于æŒæœ‰ [SubViewport] 的控件。"
+
msgid "Helper tool to create geometry."
msgstr "创建几何图形的辅助工具。"
@@ -25075,6 +46521,64 @@ msgstr ""
"而你没有为第一个顶点æ交这个信æ¯ï¼Œæ­¤ä¿¡æ¯å¯èƒ½æ ¹æœ¬å°±ä¸ä¼šè¢«ä½¿ç”¨ã€‚"
msgid ""
+"Stores data passed to [method set_custom] as half precision floats, and uses "
+"only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_HALF]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºåŠç²¾åº¦æµ®ç‚¹æ•°ï¼Œåªä½¿ç”¨çº¢è‰²å’Œç»¿è‰²é€šé“。"
+"è§ [constant Mesh.ARRAY_CUSTOM_RG_HALF]。"
+
+msgid ""
+"Stores data passed to [method set_custom] as half precision floats and uses "
+"all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_HALF]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºåŠç²¾åº¦æµ®ç‚¹æ•°ï¼Œä½¿ç”¨æ‰€æœ‰é¢œè‰²é€šé“ã€‚è§ "
+"[constant Mesh.ARRAY_CUSTOM_RGBA_HALF]。"
+
+msgid ""
+"Stores data passed to [method set_custom] as full precision floats, and uses "
+"only red color channel. See [constant Mesh.ARRAY_CUSTOM_R_FLOAT]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºå…¨ç²¾åº¦æµ®ç‚¹æ•°ï¼Œåªä½¿ç”¨çº¢è‰²é€šé“ã€‚è§ "
+"[constant Mesh.ARRAY_CUSTOM_R_FLOAT]。"
+
+msgid ""
+"Stores data passed to [method set_custom] as full precision floats, and uses "
+"only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_FLOAT]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºå…¨ç²¾åº¦æµ®ç‚¹æ•°ï¼Œåªä½¿ç”¨çº¢è‰²å’Œç»¿è‰²é€šé“。"
+"è§ [constant Mesh.ARRAY_CUSTOM_RG_FLOAT]。"
+
+msgid ""
+"Stores data passed to [method set_custom] as full precision floats, and uses "
+"only red, green and blue color channels. See [constant Mesh."
+"ARRAY_CUSTOM_RGB_FLOAT]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºå…¨ç²¾åº¦æµ®ç‚¹æ•°ï¼Œåªä½¿ç”¨çº¢è‰²ã€ç»¿è‰²å’Œè“色"
+"通é“ã€‚è§ [constant Mesh.ARRAY_CUSTOM_RGB_FLOAT]。"
+
+msgid ""
+"Stores data passed to [method set_custom] as full precision floats, and uses "
+"all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT]."
+msgstr ""
+"将传递给 [method set_custom] çš„æ•°æ®å­˜å‚¨ä¸ºå…¨ç²¾åº¦æµ®ç‚¹æ•°ï¼Œä½¿ç”¨æ‰€æœ‰é¢œè‰²é€šé“ã€‚è§ "
+"[constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT]。"
+
+msgid "Each individual vertex can be influenced by only 4 bone weights."
+msgstr "æ¯ä¸ªå•ç‹¬çš„顶点åªèƒ½å—到 4 个骨骼æƒé‡çš„å½±å“。"
+
+msgid "Each individual vertex can be influenced by up to 8 bone weights."
+msgstr "æ¯ä¸ªå•ç‹¬çš„顶点最多能够å—到 8 个骨骼æƒé‡çš„å½±å“。"
+
+msgid "Base Syntax highlighter resource for [TextEdit]."
+msgstr "用于 [TextEdit] 的基础语法高亮器资æºã€‚"
+
+msgid "Font hinting mode."
+msgstr "字体微调模å¼ã€‚"
+
+msgid "Tab bar control."
+msgstr "选项å¡æ æŽ§ä»¶ã€‚"
+
+msgid ""
"Simple tabs control, similar to [TabContainer] but is only in charge of "
"drawing tabs, not interacting with children."
msgstr ""
@@ -25083,6 +46587,9 @@ msgstr ""
msgid "Adds a new tab."
msgstr "添加新选项å¡ã€‚"
+msgid "Clears all tabs."
+msgstr "清空所有选项å¡ã€‚"
+
msgid "Moves the scroll view to make the tab visible."
msgstr "移动滚动视图,使标签å¯è§ã€‚"
@@ -25096,12 +46603,51 @@ msgstr ""
msgid "Returns the previously active tab index."
msgstr "返回上一个活动选项å¡çš„索引。"
+msgid "Returns tab title language code."
+msgstr "返回选项å¡æ ‡é¢˜çš„语言代ç ã€‚"
+
msgid "Returns the number of hidden tabs offsetted to the left."
msgstr "返回å‘å·¦å移的éšè—选项å¡çš„æ•°é‡ã€‚"
msgid "Returns tab [Rect2] with local position and size."
msgstr "返回带有局部ä½ç½®å’Œå¤§å°çš„é€‰é¡¹å¡ [Rect2]。"
+msgid "Returns tab title text base writing direction."
+msgstr "返回选项å¡æ ‡é¢˜æ–‡æœ¬çš„基础书写方å‘。"
+
+msgid "Returns the title of the tab at index [param tab_idx]."
+msgstr "返回索引 [param tab_idx] 处的选项å¡çš„标题。"
+
+msgid ""
+"Returns [code]true[/code] if the tab at index [param tab_idx] is disabled."
+msgstr "如果索引 [param tab_idx] 处的选项å¡è¢«ç¦ç”¨ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the tab at index [param tab_idx] is hidden."
+msgstr "如果索引 [param tab_idx] 处的选项å¡è¢«éšè—,则返回 [code]true[/code]。"
+
+msgid "Moves a tab from [param from] to [param to]."
+msgstr "将选项å¡ä»Ž [param from] 移动到 [param to]。"
+
+msgid "Removes the tab at index [param tab_idx]."
+msgstr "删除索引 [param tab_idx] 处的选项å¡ã€‚"
+
+msgid "Sets an [param icon] for the tab at index [param tab_idx]."
+msgstr "设置索引 [param tab_idx] 处的选项å¡çš„图标。"
+
+msgid ""
+"Sets language code of tab title used for line-breaking and text shaping "
+"algorithms, if left empty current locale is used instead."
+msgstr ""
+"设置选项å¡æ ‡é¢˜çš„语言代ç ï¼Œç”¨äºŽæ–­è¡Œå’Œæ–‡æœ¬å¡‘形算法,如果留空则使用当å‰åŒºåŸŸè®¾"
+"置。"
+
+msgid "Sets tab title base writing direction."
+msgstr "设置选项å¡æ ‡é¢˜çš„基础书写方å‘。"
+
+msgid "Sets a [param title] for the tab at index [param tab_idx]."
+msgstr "设置索引 [param tab_idx] 处的选项å¡çš„标题 [param title]。"
+
msgid "Select tab at index [code]tab_idx[/code]."
msgstr "选择索引 [code]tab_idx[/code] 处的选项å¡ã€‚"
@@ -25109,6 +46655,12 @@ msgid "If [code]true[/code], tabs can be rearranged with mouse drag."
msgstr "如果为 [code]true[/code],å¯ä»¥é€šè¿‡é¼ æ ‡æ‹–动é‡æ–°æŽ’列选项å¡ã€‚"
msgid ""
+"Sets the maximum width which all tabs should be limited to. Unlimited if set "
+"to [code]0[/code]."
+msgstr ""
+"设置所有选项å¡åº”被é™åˆ¶çš„最大宽度。如果设置为 [code]0[/code],则无é™åˆ¶ã€‚"
+
+msgid ""
"if [code]true[/code], the mouse's scroll wheel can be used to navigate the "
"scroll view."
msgstr "如果为 [code]true[/code],鼠标的滚轮å¯ç”¨äºŽå¯¼èˆªæ»šåŠ¨è§†å›¾ã€‚"
@@ -25144,6 +46696,18 @@ msgstr "å•å‡»é€‰é¡¹å¡æ—¶å‘出,å³ä½¿å®ƒæ˜¯å½“å‰é€‰é¡¹å¡ã€‚"
msgid "Emitted when a tab is hovered by the mouse."
msgstr "当鼠标悬åœé€‰é¡¹å¡æ—¶å‘出。"
+msgid "Places tabs to the left."
+msgstr "将选项å¡ç½®äºŽå·¦ä¾§ã€‚"
+
+msgid "Places tabs in the middle."
+msgstr "将选项å¡ç½®äºŽä¸­é—´ã€‚"
+
+msgid "Places tabs to the right."
+msgstr "将选项å¡ç½®äºŽå³ä¾§ã€‚"
+
+msgid "Represents the size of the [enum AlignmentMode] enum."
+msgstr "代表 [enum AlignmentMode] 枚举的大å°ã€‚"
+
msgid "Never show the close buttons."
msgstr "永远ä¸ä¼šæ˜¾ç¤ºå…³é—­æŒ‰é’®ã€‚"
@@ -25154,7 +46718,7 @@ msgid "Show the close button on all tabs."
msgstr "在所有选项å¡ä¸Šæ˜¾ç¤ºå…³é—­æŒ‰é’®ã€‚"
msgid "Represents the size of the [enum CloseButtonDisplayPolicy] enum."
-msgstr "表示 [enum CloseButtonDisplayPolicy] 枚举的大å°ã€‚"
+msgstr "代表 [enum CloseButtonDisplayPolicy] 枚举的大å°ã€‚"
msgid "Font color of disabled tabs."
msgstr "ç¦ç”¨é€‰é¡¹å¡çš„字体颜色。"
@@ -25165,6 +46729,9 @@ msgstr "当å‰æ‰€é€‰é€‰é¡¹å¡çš„字体颜色。"
msgid "The font used to draw tab names."
msgstr "用于绘制选项å¡å称的字体。"
+msgid "Font size of the tab names."
+msgstr "选项å¡å称的字体大å°ã€‚"
+
msgid "The icon for the close button (see [member tab_close_display_policy])."
msgstr "å…³é—­æŒ‰é’®çš„å›¾æ ‡ï¼ˆè§ [member tab_close_display_policy])。"
@@ -25210,9 +46777,21 @@ msgstr "选项å¡å®¹å™¨ã€‚"
msgid "Returns the child [Control] node located at the active tab index."
msgstr "返回ä½äºŽæ´»åŠ¨é€‰é¡¹å¡ç´¢å¼•å¤„çš„å­ [Control] 节点。"
+msgid "Returns the button icon from the tab at index [param tab_idx]."
+msgstr "返回索引为 [param tab_idx] 的选项å¡çš„按钮图标。"
+
+msgid "Returns the [Control] node from the tab at index [param tab_idx]."
+msgstr "返回索引为 [param tab_idx] 的选项å¡çš„ [Control] 节点。"
+
msgid "Returns the number of tabs."
msgstr "返回选项å¡çš„æ•°é‡ã€‚"
+msgid "Sets the button icon from the tab at index [param tab_idx]."
+msgstr "设置索引为 [param tab_idx] 的选项å¡çš„按钮图标。"
+
+msgid "Sets an icon for the tab at index [param tab_idx]."
+msgstr "设置索引为 [param tab_idx] 的选项å¡çš„图标。"
+
msgid ""
"If [code]true[/code], all tabs are drawn in front of the panel. If "
"[code]false[/code], inactive tabs are drawn behind the panel."
@@ -25253,6 +46832,9 @@ msgstr ""
msgid "Emitted when a tab is selected, even if it is the current tab."
msgstr "选择选项å¡æ—¶å‘出,å³ä½¿å®ƒæ˜¯å½“å‰é€‰é¡¹å¡ã€‚"
+msgid "Space between tab's name and its icon."
+msgstr "选项å¡å称与其图标之间的间è·ã€‚"
+
msgid "The icon for the menu button (see [method set_popup])."
msgstr "èœå•æŒ‰é’®çš„å›¾æ ‡ï¼ˆè§ [method set_popup])。"
@@ -25267,6 +46849,21 @@ msgstr "背景填充的样å¼ã€‚"
msgid "A TCP server."
msgstr "TCP æœåŠ¡å™¨ã€‚"
+msgid ""
+"A TCP server. Listens to connections on a port and returns a [StreamPeerTCP] "
+"when it gets an incoming connection.\n"
+"[b]Note:[/b] When exporting to Android, make sure to enable the "
+"[code]INTERNET[/code] permission in the Android export preset before "
+"exporting the project or using one-click deploy. Otherwise, network "
+"communication of any kind will be blocked by Android."
+msgstr ""
+"TCP æœåŠ¡å™¨ã€‚监å¬ç«¯å£ä¸Šçš„连接,并在获得传入连接时返回 [StreamPeerTCP]。\n"
+"[b]注æ„:[/b]导出到安å“时,在导出项目或使用一键部署之å‰ï¼Œè¯·åŠ¡å¿…在安å“导出预设"
+"ä¸­å¼€å¯ [code]INTERNET[/code] æƒé™ã€‚å¦åˆ™ Android 会阻止任何形å¼çš„网络通信。"
+
+msgid "Returns the local port this server is listening to."
+msgstr "返回该æœåŠ¡å™¨æ­£åœ¨ç›‘å¬çš„本地端å£ã€‚"
+
msgid "Returns [code]true[/code] if a connection is available for taking."
msgstr "如果有连接å¯ä¾›èŽ·å–,则返回 [code]true[/code]。"
@@ -25275,6 +46872,28 @@ msgid ""
"connections."
msgstr "如果æœåŠ¡å™¨å½“å‰æ­£åœ¨ä¾¦å¬è¿žæŽ¥ï¼Œåˆ™è¿”回 [code]true[/code]。"
+msgid ""
+"Listen on the [param port] binding to [param bind_address].\n"
+"If [param bind_address] is set as [code]\"*\"[/code] (default), the server "
+"will listen on all available addresses (both IPv4 and IPv6).\n"
+"If [param bind_address] is set as [code]\"0.0.0.0\"[/code] (for IPv4) or "
+"[code]\"::\"[/code] (for IPv6), the server will listen on all available "
+"addresses matching that IP type.\n"
+"If [param bind_address] is set to any valid address (e.g. "
+"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc), the server will "
+"only listen on the interface with that addresses (or fail if no interface "
+"with the given address exists)."
+msgstr ""
+"在 [param port] 上监å¬ä¸Ž [param bind_address] 绑定的地å€ã€‚\n"
+"如果 [param bind_address] 被设置为 [code]\"*\"[/code](默认),该æœåŠ¡å™¨å°†ç›‘å¬"
+"所有å¯ç”¨åœ°å€ï¼ˆåŒ…括 IPv4 å’Œ IPv6)。\n"
+"如果 [param bind_address] 被设置为 [code]\"0.0.0.0\"[/code](用于 IPv4)或 "
+"[code]\"::\"[/code](用于 IPv6),该æœåŠ¡å™¨å°†ç›‘å¬æ‰€æœ‰ç¬¦åˆè¯¥ IP 类型的å¯ç”¨åœ°"
+"å€ã€‚\n"
+"如果 [param bind_address] 被设置为任何有效的地å€ï¼ˆå¦‚ "
+"[code]\"192.168.1.101\"[/code]ã€[code]\"::1\"[/code] 等),该æœåŠ¡å™¨å°†åªåœ¨å…·æœ‰"
+"该地å€çš„接å£ä¸Šç›‘å¬ï¼ˆå¦‚æžœä¸å­˜åœ¨å…·æœ‰è¯¥åœ°å€çš„接å£åˆ™å¤±è´¥ï¼‰ã€‚"
+
msgid "Stops listening."
msgstr "åœæ­¢ç›‘å¬ã€‚"
@@ -25288,12 +46907,36 @@ msgstr "多行文本编辑控件。"
msgid "Clears the undo history."
msgstr "清除撤销历å²ã€‚"
+msgid "Deletes the selected text."
+msgstr "删除选定的文本。"
+
msgid "Deselects the current selection."
msgstr "å–消当å‰é€‰æ‹©ã€‚"
+msgid "Returns the number of carets in this [TextEdit]."
+msgstr "返回该 [TextEdit] 中的光标数。"
+
+msgid "Returns the [HScrollBar] used by [TextEdit]."
+msgstr "设置该 [TextEdit] 所使用的 [HScrollBar]。"
+
msgid "Returns the text of a specific line."
msgstr "返回特定行的文本。"
+msgid "Returns the number of lines in the text."
+msgstr "返回文本中的行数。"
+
+msgid "Returns the icon currently in [param gutter] at [param line]."
+msgstr "è¿”å›žè¾¹æ  [param gutter] 中,当å‰ä½äºŽ [param line] 行的图标。"
+
+msgid "Returns the color currently in [param gutter] at [param line]."
+msgstr "è¿”å›žè¾¹æ  [param gutter] 中,当å‰ä½äºŽ [param line] 行的颜色。"
+
+msgid "Returns the metadata currently in [param gutter] at [param line]."
+msgstr "è¿”å›žè¾¹æ  [param gutter] 中,当å‰ä½äºŽ [param line] 行的元数æ®ã€‚"
+
+msgid "Returns the text currently in [param gutter] at [param line]."
+msgstr "è¿”å›žè¾¹æ  [param gutter] 中,当å‰ä½äºŽ [param line] 行的文本。"
+
msgid "Returns the height of a largest line."
msgstr "返回最大行的高度。"
@@ -25303,8 +46946,8 @@ msgstr "返回给定行æ¢è¡Œçš„次数。"
msgid "Returns an array of [String]s representing each wrapped index."
msgstr "返回代表å„个æ¢è¡Œç´¢å¼•çš„ [String] 数组。"
-msgid "Returns the equivalent minimap line at [param position]"
-msgstr "返回å°åœ°å›¾ [param position] 处等价的行"
+msgid "Returns the number of lines that may be drawn on the minimap."
+msgstr "返回å°åœ°å›¾ä¸Šèƒ½å¤Ÿç»˜åˆ¶çš„行数。"
msgid ""
"Returns the local position and size for the grapheme at the given [param "
@@ -25315,11 +46958,11 @@ msgid ""
"of the line, unlike [method get_pos_at_line_column] which returns the bottom "
"side."
msgstr ""
-"返回字素的本地ä½ç½®å’Œå¤§å°ï¼Œè¯¥å­—ç´ ä½äºŽç»™å®šè¡Œ [code]line[/code] 和列 "
-"[code]column[/code]。如果返回的矩形中,ä½ç½®çš„ [code]x[/code] 或 [code]y[/"
-"code] 等于 [code]-1[/code],表示ä½äºŽè¯¥æŽ§ä»¶çš„å¯è§†èŒƒå›´ä¹‹å¤–。\n"
-"[b]注æ„:[/b]ä½ç½®ä¸­çš„ Y 对应该行的顶部,而 [method get_pos_at_line_column] è¿”"
-"回的则是底部。"
+"返回给定 [param line] å’Œ [param column] 处的字素的局部ä½ç½®å’Œå¤§å°ã€‚如果返回的"
+"矩形的 [code]x[/code] 或 [code]y[/code] ä½ç½®ç­‰äºŽ [code]-1[/code],则该ä½ç½®åœ¨"
+"该控件的å¯è§†åŒºåŸŸä¹‹å¤–。\n"
+"[b]注æ„:[/b]返回的矩形的 Y ä½ç½®å¯¹åº”于该行的顶部,ä¸åƒ [method "
+"get_pos_at_line_column] 返回底边。"
msgid "Returns the text inside the selection."
msgstr "返回选择内的文本。"
@@ -25330,24 +46973,54 @@ msgstr "返回选择开始行。"
msgid "Returns the selection end line."
msgstr "返回选择结æŸè¡Œã€‚"
+msgid "Returns the [TextEdit]'s' tab size."
+msgstr "返回该 [TextEdit] 的制表符大å°ã€‚"
+
msgid "Returns the total width of all gutters and internal padding."
msgstr "返回所有æ ä½åŠå†…部边è·çš„总宽度。"
+msgid "Returns the number of lines that may be drawn."
+msgstr "返回å¯ç»˜åˆ¶çš„行数。"
+
+msgid "Returns the [VScrollBar] of the [TextEdit]."
+msgstr "设置该 [TextEdit] 所使用的 [StyleBox]。"
+
msgid "Returns the number of visible lines, including wrapped text."
msgstr "返回å¯è§è¡Œæ•°ï¼ŒåŒ…括自动æ¢è¡Œã€‚"
+msgid "Returns the word at [param position]."
+msgstr "返回ä½äºŽ [param position] çš„å•è¯ã€‚"
+
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "有“é‡åšâ€åŠ¨ä½œå¯ç”¨æ—¶è¿”回 [code]true[/code]。"
msgid "Returns [code]true[/code] if an \"undo\" action is available."
msgstr "有“撤销â€åŠ¨ä½œå¯ç”¨æ—¶è¿”回 [code]true[/code]。"
+msgid "Returns whether the gutter is clickable."
+msgstr "返回该边æ æ˜¯å¦å¯ç‚¹å‡»ã€‚"
+
+msgid "Returns whether the gutter is currently drawn."
+msgstr "返回该边æ æ˜¯å¦æ­£è¢«ç»˜åˆ¶ã€‚"
+
+msgid "Returns whether the gutter is overwritable."
+msgstr "返回该边æ æ˜¯å¦å¯è¦†å†™ã€‚"
+
+msgid "Returns whether the gutter on the given line is clickable."
+msgstr "返回该边æ çš„给定行是å¦å¯ç‚¹å‡»ã€‚"
+
msgid "Returns if the given line is wrapped."
msgstr "返回给定的行是å¦æ¢è¡Œã€‚"
+msgid "Pastes the primary clipboard."
+msgstr "粘贴主剪贴æ¿ã€‚"
+
msgid "Perform redo operation."
msgstr "执行é‡åšæ“作。"
+msgid "Removes all additional carets."
+msgstr "移除所有é¢å¤–的光标。"
+
msgid ""
"Perform selection, from line/column to line/column.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
@@ -25362,9 +47035,41 @@ msgstr ""
"选择所有文本。\n"
"如果 [member selecting_enabled] 为 [code]false[/code],则ä¸ä¼šå‘生选择。"
+msgid "Sets whether the gutter should be drawn."
+msgstr "设置该边æ æ˜¯å¦åº”被绘制。"
+
+msgid "Sets the name of the gutter."
+msgstr "设置该边æ çš„å称。"
+
+msgid "Sets the gutter to overwritable. See [method merge_gutters]."
+msgstr "设置该边æ ä¸ºå¯è¦†å†™ã€‚è§ [method merge_gutters]。"
+
+msgid "Sets the type of gutter."
+msgstr "设置边æ çš„类型。"
+
+msgid "Set the width of the gutter."
+msgstr "设置该边æ çš„宽度。"
+
msgid "Sets the text for a specific line."
msgstr "设置特定行的文本。"
+msgid "Sets the icon for [param gutter] on [param line] to [param icon]."
+msgstr "å°†è¾¹æ  [param gutter] 在第 [param line] 行的图标设置为 [param icon]。"
+
+msgid "Sets the color for [param gutter] on [param line] to [param color]."
+msgstr "å°†è¾¹æ  [param gutter] 在第 [param line] 行的颜色设置为 [param color]。"
+
+msgid ""
+"Sets the metadata for [param gutter] on [param line] to [param metadata]."
+msgstr ""
+"å°†è¾¹æ  [param gutter] 在第 [param line] 行的元数æ®è®¾ç½®ä¸º [param metadata]。"
+
+msgid "Sets the text for [param gutter] on [param line] to [param text]."
+msgstr "å°†è¾¹æ  [param gutter] 在第 [param line] 行的文本设置为 [param text]。"
+
+msgid "Swaps the two lines."
+msgstr "交æ¢ä¸¤è¡Œã€‚"
+
msgid "Perform undo operation."
msgstr "执行撤销æ“作。"
@@ -25398,6 +47103,13 @@ msgid "The width, in pixels, of the minimap."
msgstr "å°åœ°å›¾çš„宽度(以åƒç´ ä¸ºå•ä½ï¼‰ã€‚"
msgid ""
+"Text shown when the [TextEdit] is empty. It is [b]not[/b] the [TextEdit]'s "
+"default value (see [member text])."
+msgstr ""
+"[TextEdit] 为空时显示的文本。它[b]ä¸æ˜¯[/b] [TextEdit] 的默认值(å‚è§ [member "
+"text])。"
+
+msgid ""
"If there is a horizontal scrollbar, this determines the current horizontal "
"scroll value in pixels."
msgstr "如果有一个水平滚动æ¡ï¼Œè¿™å†³å®šäº†å½“å‰çš„水平滚动值,å•ä½æ˜¯åƒç´ ã€‚"
@@ -25417,9 +47129,15 @@ msgstr ""
"如果为 [code]false[/code],用户或使用[method select]或[method select_all]方法"
"都ä¸èƒ½é€‰æ‹©æ–‡æœ¬ã€‚"
+msgid "Sets the [SyntaxHighlighter] to use."
+msgstr "设置è¦ä½¿ç”¨çš„ [SyntaxHighlighter]。"
+
msgid "String value of the [TextEdit]."
msgstr "[TextEdit] 的字符串值。"
+msgid "Sets the line wrapping mode to use."
+msgstr "设置è¦ä½¿ç”¨çš„æ¢è¡Œæ¨¡å¼ã€‚"
+
msgid ""
"Pastes the clipboard text over the selected text (or at the cursor's "
"position)."
@@ -25443,6 +47161,21 @@ msgstr "æœç´¢æ—¶åŒ¹é…整个å•è¯ã€‚"
msgid "Search from end to beginning."
msgstr "从头到尾æœç´¢ã€‚"
+msgid "Vertical line caret."
+msgstr "垂直线光标。"
+
+msgid "Block caret."
+msgstr "æ–¹å—光标。"
+
+msgid "Draw a string."
+msgstr "绘制字符串。"
+
+msgid "Draw an icon."
+msgstr "绘制图标。"
+
+msgid "Custom draw."
+msgstr "自定义绘制。"
+
msgid ""
"Sets the highlight [Color] of multiple occurrences. [member "
"highlight_all_occurrences] has to be enabled."
@@ -25452,6 +47185,27 @@ msgstr ""
msgid "Sets the [StyleBox] of this [TextEdit]."
msgstr "设置这个 [TextEdit] 的 [StyleBox]。"
+msgid "Aligns text to the given tab-stops."
+msgstr "将文本与给定的制表ä½å¯¹é½ã€‚"
+
+msgid "Text writing direction."
+msgstr "文本书写方å‘。"
+
+msgid "Line alignment rules. For more info see [TextServer]."
+msgstr "行对é½è§„则。详细请å‚阅 [TextServer]。"
+
+msgid "Text orientation."
+msgstr "文本æœå‘。"
+
+msgid "If set to [code]true[/code] text will display control characters."
+msgstr "如果设置为 [code]true[/code],则将在文本中显示控制字符。"
+
+msgid "If set to [code]true[/code] text will display invalid characters."
+msgstr "如果设置为 [code]true[/code],则将在文本中显示无效字符。"
+
+msgid "Text line width."
+msgstr "文本行宽。"
+
msgid "Generate an [PrimitiveMesh] from the text."
msgstr "ä»Žæ–‡æœ¬ç”Ÿæˆ [PrimitiveMesh]。"
@@ -25481,12 +47235,176 @@ msgstr ""
"生æˆçš„网格的深度,设为 [code]0.0[/code] æ—¶åªæœ‰æ­£é¢ï¼Œæ­¤æ—¶çš„ UV 布局会å˜ä¸ºè®©æ­£"
"é¢å æ®æ•´å¼ çº¹ç†ã€‚"
+msgid "Font size of the [TextMesh]'s text."
+msgstr "该 [TextMesh] 文本的字体大å°ã€‚"
+
+msgid ""
+"Language code used for text shaping algorithms, if left empty current locale "
+"is used instead."
+msgstr "语言代ç ï¼Œç”¨äºŽæ–‡æœ¬å¡‘形算法,如果留空则使用当å‰åŒºåŸŸè®¾ç½®ã€‚"
+
+msgid "Vertical space between lines in multiline [TextMesh]."
+msgstr "多行 [TextMesh] 中,行与行之间的垂直间è·ã€‚"
+
msgid "The size of one pixel's width on the text to scale it in 3D."
msgstr "文本上一个åƒç´ å®½åº¦çš„大å°ï¼Œä»¥ 3D 缩放。"
msgid "The text to generate mesh from."
msgstr "用于生æˆç½‘格的文本。"
+msgid "Interface for the fonts and complex text layouts."
+msgstr "用于字体和å¤æ‚排版的接å£ã€‚"
+
+msgid ""
+"[TextServer] is the API backend for managing fonts, and rendering complex "
+"text."
+msgstr "[TextServer] 是用于管ç†å­—体ã€æ¸²æŸ“å¤æ‚文本的 API åŽç«¯ã€‚"
+
+msgid ""
+"Creates new buffer for complex text layout, with the given [param direction] "
+"and [param orientation]. To free the resulting buffer, use [method free_rid] "
+"method.\n"
+"[b]Note:[/b] Direction is ignored if server does not support [constant "
+"FEATURE_BIDI_LAYOUT] feature (supported by [TextServerAdvanced]).\n"
+"[b]Note:[/b] Orientation is ignored if server does not support [constant "
+"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])."
+msgstr ""
+"ä½¿ç”¨ç»™å®šçš„æ–¹å‘ [param direction] å’Œæœå‘ [param orientation] 新建缓冲区,用于"
+"å¤æ‚排版。è¦é‡Šæ”¾ç”Ÿæˆçš„缓冲区,请使用 [method free_rid]方法。\n"
+"[b]注æ„:[/b]如果æœåŠ¡å™¨ä¸æ”¯æŒ [constant FEATURE_BIDI_LAYOUT] 特性,则会忽略方"
+"å‘([TextServerAdvanced] 支æŒï¼‰ã€‚\n"
+"[b]注æ„:[/b]如果æœåŠ¡å™¨ä¸æ”¯æŒ [constant FEATURE_VERTICAL_LAYOUT] 特性,则会忽"
+"ç•¥æœå‘([TextServerAdvanced] 支æŒï¼‰ã€‚"
+
+msgid ""
+"Draws box displaying character hexadecimal code. Used for replacing missing "
+"characters."
+msgstr "绘制显示字符å六进制ç çš„框。用于替æ¢ç¼ºå¤±çš„字符。"
+
+msgid ""
+"Removes all rendered glyphs information from the cache entry.\n"
+"[b]Note:[/b] This function will not remove textures associated with the "
+"glyphs, use [method font_remove_texture] to remove them manually."
+msgstr ""
+"从缓存æ¡ç›®ä¸­ç§»é™¤æ‰€æœ‰çš„渲染字形信æ¯ã€‚\n"
+"[b]注æ„:[/b]该函数ä¸ä¼šç§»é™¤ä¸Žå­—形关è”的纹ç†ï¼Œè¯·ä½¿ç”¨ [method "
+"font_remove_texture] 手动移除。"
+
+msgid "Removes all font sizes from the cache entry."
+msgstr "从缓存æ¡ç›®ä¸­ç§»é™¤æ‰€æœ‰çš„字体大å°ã€‚"
+
+msgid ""
+"Removes all textures from font cache entry.\n"
+"[b]Note:[/b] This function will not remove glyphs associated with the "
+"texture, use [method font_remove_glyph] to remove them manually."
+msgstr ""
+"从字体缓存æ¡ç›®ä¸­ç§»é™¤æ‰€æœ‰çš„纹ç†ã€‚\n"
+"[b]注æ„:[/b]该函数ä¸ä¼šç§»é™¤ä¸Žçº¹ç†å…³è”的字形,请使用 [method "
+"font_remove_glyph] 手动移除。"
+
+msgid ""
+"Draws single glyph into a canvas item at the position, using [param "
+"font_rid] at the size [param size].\n"
+"[b]Note:[/b] Glyph index is specific to the font, use glyphs indices "
+"returned by [method shaped_text_get_glyphs] or [method "
+"font_get_glyph_index].\n"
+"[b]Note:[/b] If there are pending glyphs to render, calling this function "
+"might trigger the texture cache update."
+msgstr ""
+"在画布项中æŸä¸ªä½ç½®ç»˜åˆ¶å•ä¸ªå­—形,使用的字体为 [param font_rid],大å°ä¸º [param "
+"size]。\n"
+"[b]注æ„:[/b]字形索引是特定于字体的,请使用 [method shaped_text_get_glyphs] "
+"或 [method font_get_glyph_index] 返回的字形索引。\n"
+"[b]注æ„:[/b]如果有待渲染的字形,调用这个函数å¯èƒ½ä¼šè§¦å‘纹ç†ç¼“存的更新。"
+
+msgid ""
+"Draws single glyph outline of size [param outline_size] into a canvas item "
+"at the position, using [param font_rid] at the size [param size].\n"
+"[b]Note:[/b] Glyph index is specific to the font, use glyphs indices "
+"returned by [method shaped_text_get_glyphs] or [method "
+"font_get_glyph_index].\n"
+"[b]Note:[/b] If there are pending glyphs to render, calling this function "
+"might trigger the texture cache update."
+msgstr ""
+"在画布项中æŸä¸ªä½ç½®ç»˜åˆ¶å•ä¸ªå­—形轮廓,使用的字体为 [param font_rid],大å°ä¸º "
+"[param size]。\n"
+"[b]注æ„:[/b]字形索引是特定于字体的,请使用 [method shaped_text_get_glyphs] "
+"或 [method font_get_glyph_index] 返回的字形索引。\n"
+"[b]注æ„:[/b]如果有待渲染的字形,调用这个函数å¯èƒ½ä¼šè§¦å‘纹ç†ç¼“存的更新。"
+
+msgid "Returns font anti-aliasing mode."
+msgstr "返回字体的抗锯齿模å¼ã€‚"
+
+msgid "Returns font embolden strength."
+msgstr "返回字体的加粗力度。"
+
+msgid "Returns bitmap font fixed size."
+msgstr "返回ä½å›¾å­—体的固定大å°ã€‚"
+
+msgid "Returns [code]true[/code] if font texture mipmap generation is enabled."
+msgstr "如果å¯ç”¨äº†å­—ä½“çº¹ç† mipmap 生æˆï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Returns the font oversampling factor, shared by all fonts in the TextServer."
+msgstr "返回字体过采样系数,由 TextServer 中的所有字体共享。"
+
+msgid "Returns size of the glyph."
+msgstr "返回该字形的大å°ã€‚"
+
+msgid "Returns font OpenType feature set override."
+msgstr "返回字体 OpenType 特性集覆盖。"
+
+msgid "Sets size of the glyph."
+msgstr "设置字形的大å°ã€‚"
+
+msgid "Sets font hinting mode. Used by dynamic fonts only."
+msgstr "设置字体微调模å¼ã€‚仅由动æ€å­—体使用。"
+
+msgid "Sets the font family name."
+msgstr "设置该字体的家æ—å称。"
+
+msgid "Sets font OpenType feature set override."
+msgstr "设置字体 OpenType 特性集覆盖。"
+
+msgid "Adds override for [method font_is_script_supported]."
+msgstr "为 [method font_is_script_supported] 添加覆盖。"
+
+msgid "Sets the font style name."
+msgstr "设置字体的样å¼å称。"
+
+msgid "Sets font subpixel glyph positioning mode."
+msgstr "设置字体的次åƒç´ å­—形定ä½æ¨¡å¼ã€‚"
+
+msgid "Sets font cache texture image data."
+msgstr "设置字体的缓存纹ç†å›¾åƒæ•°æ®ã€‚"
+
+msgid ""
+"Converts a number from the Western Arabic (0..9) to the numeral systems used "
+"in [param language].\n"
+"If [param language] is omitted, the active locale will be used."
+msgstr ""
+"将数字从阿拉伯数字(0..9)转æ¢ä¸º [param language] 语言的记数系统。\n"
+"如果çœç•¥ [param language],则会使用激活的区域设置。"
+
+msgid "Returns the name of the server interface."
+msgstr "返回该æœåŠ¡å™¨æŽ¥å£çš„å称。"
+
+msgid "Returns [code]true[/code] if locale is right-to-left."
+msgstr "如果区域设置为从å³è‡³å·¦ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Converts [param number] from the numeral systems used in [param language] to "
+"Western Arabic (0..9)."
+msgstr ""
+"将数字 [param number] 从 [param language] 的记数系统转æ¢ä¸ºé˜¿æ‹‰ä¼¯æ•°å­—"
+"(0..9)。"
+
+msgid "Returns direction of the text."
+msgstr "返回文本的方å‘。"
+
+msgid "Returns text orientation."
+msgstr "返回文本æœå‘。"
+
msgid "Returns size of the text."
msgstr "返回该文本的大å°ã€‚"
@@ -25508,6 +47426,60 @@ msgstr ""
"返回字素的索引,该字素ä½äºŽåŸºçº¿ä¸ŠæŒ‡å®šåƒç´ å移的ä½ç½®ï¼Œå¦‚果没有找到,则返回 "
"[code]-1[/code]。"
+msgid "Horizontal RGB subpixel layout."
+msgstr "æ°´å¹³ RGB 次åƒç´ å¸ƒå±€ã€‚"
+
+msgid "Horizontal BGR subpixel layout."
+msgstr "æ°´å¹³ BGR 次åƒç´ å¸ƒå±€ã€‚"
+
+msgid "Vertical RGB subpixel layout."
+msgstr "åž‚ç›´ RGB 次åƒç´ å¸ƒå±€ã€‚"
+
+msgid "Vertical BGR subpixel layout."
+msgstr "åž‚ç›´ BGR 次åƒç´ å¸ƒå±€ã€‚"
+
+msgid "Text direction is determined based on contents and current locale."
+msgstr "文本的书写方å‘由根æ®å†…容和当å‰åŒºåŸŸè®¾ç½®ç¡®å®šã€‚"
+
+msgid "Text is written from left to right."
+msgstr "文本从左至å³ä¹¦å†™ã€‚"
+
+msgid "Text is written from right to left."
+msgstr "文本从å³è‡³å·¦ä¹¦å†™ã€‚"
+
+msgid ""
+"Text writing direction is the same as base string writing direction. Used "
+"for BiDi override only."
+msgstr "文本的书写方å‘与基础字符串书写方å‘一致。仅用于 BiDi 覆盖。"
+
+msgid "Text is written horizontally."
+msgstr "文本水平书写。"
+
+msgid ""
+"Left to right text is written vertically from top to bottom.\n"
+"Right to left text is written vertically from bottom to top."
+msgstr ""
+"从左至å³çš„文本从上到下垂直书写。\n"
+"从å³è‡³å·¦çš„文本从下到上垂直书写。"
+
+msgid "Do not justify text."
+msgstr "ä¸ä¸¤ç«¯å¯¹é½æ–‡æœ¬ã€‚"
+
+msgid "Justify text by adding and removing kashidas."
+msgstr "通过添加和移除 Kashida æ¥ä¸¤ç«¯å¯¹é½æ–‡æœ¬ã€‚"
+
+msgid "Justify text by changing width of the spaces between the words."
+msgstr "通过更改å•è¯ä¹‹é—´ç©ºæ ¼çš„宽度æ¥ä¸¤ç«¯å¯¹é½æ–‡æœ¬ã€‚"
+
+msgid "Remove trailing and leading spaces from the justified text."
+msgstr "从两端对é½çš„文本中移除å‰ç¼€å’ŒåŽç¼€çš„空格。"
+
+msgid "Only apply justification to the part of the text after the last tab."
+msgstr "仅对最åŽä¸€ä¸ªåˆ¶è¡¨ç¬¦ä¹‹åŽçš„文本应用两端对é½ã€‚"
+
+msgid "Autowrap is disabled."
+msgstr "自动æ¢è¡Œå·²ç¦ç”¨ã€‚"
+
msgid "Do not break the line."
msgstr "ä¸æ¢è¡Œã€‚"
@@ -25581,6 +47553,42 @@ msgstr "ç¦ç”¨å­—体æ示(更平滑但ä¸é‚£ä¹ˆæ¸…晰)。"
msgid "Use the light font hinting mode."
msgstr "使用浅色字体æ示模å¼ã€‚"
+msgid "TextServer supports simple text layouts."
+msgstr "TextServer 支æŒç®€å•æŽ’版。"
+
+msgid "TextServer supports bidirectional text layouts."
+msgstr "TextServer 支æŒåŒå‘排版。"
+
+msgid "TextServer supports vertical layouts."
+msgstr "TextServer 支æŒåž‚直布局。"
+
+msgid "TextServer supports complex text shaping."
+msgstr "TextServer 支æŒå¤æ‚文本塑形。"
+
+msgid "TextServer supports justification using kashidas."
+msgstr "TextServer 支æŒä½¿ç”¨ kashida 进行两端对é½ã€‚"
+
+msgid ""
+"TextServer supports complex line/word breaking rules (e.g. dictionary based)."
+msgstr "TextServer 支æŒå¤æ‚æ–­è¡Œ/æ–­è¯è§„则(例如基于字典)。"
+
+msgid "TextServer supports loading bitmap fonts."
+msgstr "TextServer 支æŒåŠ è½½ä½å›¾å­—体。"
+
+msgid "TextServer supports loading dynamic (TrueType, OpeType, etc.) fonts."
+msgstr "TextServer 支æŒåŠ è½½åŠ¨æ€å­—体(TrueTypeã€OpeType 等)。"
+
+msgid ""
+"TextServer supports multichannel signed distance field dynamic font "
+"rendering."
+msgstr "TextServer 支æŒå¤šé€šé“有符å·è·ç¦»åœºåŠ¨æ€å­—体的渲染。"
+
+msgid "TextServer supports loading system fonts."
+msgstr "TextServer 支æŒåŠ è½½ç³»ç»Ÿå­—体。"
+
+msgid "TextServer supports variable fonts."
+msgstr "TextServer 支æŒå¯å˜å­—体。"
+
msgid "Contour point is on the curve."
msgstr "轮廓点在曲线上。"
@@ -25594,24 +47602,158 @@ msgid ""
"Bézier arc."
msgstr "轮廓点ä¸åœ¨æ›²çº¿ä¸Šï¼Œè€Œæ˜¯ä½œä¸ºä¸‰æ¬¡è´å¡žå°”曲线的控制点。"
+msgid "Spacing for each glyph."
+msgstr "æ¯ä¸ªå­—形的间è·ã€‚"
+
msgid "Spacing for the space character."
msgstr "空格字符的间è·ã€‚"
+msgid "Spacing at the top of the line."
+msgstr "行顶部的间è·ã€‚"
+
+msgid "Spacing at the bottom of the line."
+msgstr "行底部的间è·ã€‚"
+
+msgid "Font is bold."
+msgstr "字体为粗体。"
+
+msgid "Use default Unicode BiDi algorithm."
+msgstr "使用默认的 Unicode BiDi 算法。"
+
+msgid "BiDi override for URI."
+msgstr "URI 的 BiDi 覆盖。"
+
+msgid "BiDi override for file path."
+msgstr "文件路径的 BiDi 覆盖。"
+
+msgid "BiDi override for email."
+msgstr "电å­é‚®ä»¶çš„ BiDi 覆盖。"
+
+msgid ""
+"BiDi override for lists.\n"
+"Structured text options: list separator [code]String[/code]."
+msgstr ""
+"列表的 BiDi 覆盖。\n"
+"结构化文本选项:列表分隔符 [code]String[/code]。"
+
+msgid "BiDi override for GDScript."
+msgstr "GDScript 的 BiDi 覆盖。"
+
+msgid "User defined structured text BiDi override function."
+msgstr "用户定义的结构化文本 BiDi 覆盖函数。"
+
+msgid ""
+"Text Server using HarfBuzz, ICU and SIL Graphite to support BiDi, complex "
+"text layouts and contextual OpenType features."
+msgstr ""
+"文本æœåŠ¡å™¨ï¼Œä½¿ç”¨ HarfBuzzã€ICU å’Œ SIL Graphite æ¥æ”¯æŒ BiDiã€å¤æ‚排版和上下文 "
+"OpenType 特性。"
+
+msgid "Base class for TextServer custom implementations (plugins)."
+msgstr "TextServer 自定义实现(æ’件)的基类。"
+
+msgid "External TextServer implementations should inherit from this class."
+msgstr "外部 TextServer 实现应该继承这个类。"
+
+msgid ""
+"Fallback implementation of the Text Server, without BiDi and complex text "
+"layout support."
+msgstr "文本æœåŠ¡å™¨çš„回退实现,ä¸æ”¯æŒåŒå‘排版和å¤æ‚排版。"
+
+msgid "Manager for the font and complex text layout servers."
+msgstr "字体和å¤æ‚排版æœåŠ¡å™¨çš„管ç†å™¨ã€‚"
+
+msgid ""
+"[TextServerManager] is the API backend for loading, enumeration and "
+"switching [TextServer]s.\n"
+"[b]Note:[/b] Switching text server at runtime is possible, but will "
+"invalidate all fonts and text buffers. Make sure to unload all controls, "
+"fonts, and themes before doing so."
+msgstr ""
+"[TextServerManager] 是加载ã€æžšä¸¾å’Œåˆ‡æ¢ [TextServer] çš„ API åŽç«¯ã€‚\n"
+"[b]注æ„:[/b]文本æœåŠ¡å™¨å¯ä»¥åœ¨è¿è¡Œæ—¶åˆ‡æ¢ï¼Œä½†ä¼šå¯¼è‡´æ‰€æœ‰å­—体和文本缓冲区失效。请"
+"ç¡®ä¿åœ¨åˆ‡æ¢ä¹‹å‰å¸è½½æ‰€æœ‰æŽ§ä»¶ã€å­—体和主题。"
+
+msgid "Registers an [TextServer] interface."
+msgstr "注册 [TextServer] 接å£ã€‚"
+
+msgid "Finds an interface by its name."
+msgstr "按å称查找接å£ã€‚"
+
+msgid "Returns the interface registered at a given index."
+msgstr "返回在给定索引处注册的接å£ã€‚"
+
+msgid "Returns the number of interfaces currently registered."
+msgstr "返回当å‰æ³¨å†Œçš„接å£æ•°ã€‚"
+
+msgid ""
+"Returns a list of available interfaces the index and name of each interface."
+msgstr "返回å¯ç”¨æŽ¥å£çš„列表,包å«æ¯ä¸ªæŽ¥å£çš„索引å·å’Œå称。"
+
+msgid "Returns the primary [TextServer] interface currently in use."
+msgstr "返回当å‰ä½¿ç”¨çš„主 [TextServer] 接å£ã€‚"
+
+msgid "Sets the primary [TextServer] interface."
+msgstr "设置主 [TextServer] 接å£ã€‚"
+
msgid "Emitted when a new interface has been added."
msgstr "添加新接å£æ—¶è§¦å‘。"
msgid "Emitted when an interface is removed."
msgstr "当接å£è¢«ç§»é™¤æ—¶è§¦å‘。"
+msgid "Base class for all texture types."
+msgstr "所有纹ç†ç±»åž‹çš„基类。"
+
msgid "Texture for 2D and 3D."
msgstr "用于 2D å’Œ 3D 的纹ç†ã€‚"
+msgid "Returns the texture height in pixels."
+msgstr "返回该纹ç†çš„高度,å•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Returns the texture size in pixels."
+msgstr "返回该纹ç†çš„大å°ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Returns the texture width in pixels."
+msgstr "返回该纹ç†çš„宽度,å•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "Base class for 3-dimensionnal textures."
+msgstr "3D 纹ç†çš„基类。"
+
+msgid "Called when the [Texture3D]'s data is queried."
+msgstr "查询该 [Texture3D] çš„æ•°æ®æ—¶è¢«è°ƒç”¨ã€‚"
+
+msgid "Called when the [Texture3D]'s depth is queried."
+msgstr "查询该 [Texture3D] 的深度时被调用。"
+
+msgid "Called when the [Texture3D]'s format is queried."
+msgstr "查询该 [Texture3D] çš„æ ¼å¼æ—¶è¢«è°ƒç”¨ã€‚"
+
+msgid "Called when the [Texture3D]'s height is queried."
+msgstr "查询该 [Texture3D] 的高度时被调用。"
+
+msgid "Called when the [Texture3D]'s width is queried."
+msgstr "查询该 [Texture3D] 的宽度时被调用。"
+
+msgid "Called when the presence of mipmaps in the [Texture3D] is queried."
+msgstr "查询该 [Texture3D] çš„ Mipmap 是å¦å­˜åœ¨æ—¶è¢«è°ƒç”¨ã€‚"
+
msgid ""
"Returns the current format being used by this texture. See [enum Image."
"Format] for details."
msgstr "返回纹ç†å½“å‰ä½¿ç”¨çš„æ ¼å¼ã€‚è¯¦æƒ…è§ [enum Image.Format]。"
msgid ""
+"Returns the [Texture3D]'s height in pixels. Width is typically represented "
+"by the Y axis."
+msgstr "返回该 [Texture3D] 的高度,å•ä½ä¸ºåƒç´ ã€‚宽度通常由 Y 轴表示。"
+
+msgid ""
+"Returns the [Texture3D]'s width in pixels. Width is typically represented by "
+"the X axis."
+msgstr "返回该 [Texture3D] 的宽度,å•ä½ä¸ºåƒç´ ã€‚宽度通常由 X 轴表示。"
+
+msgid ""
"Texture-based button. Supports Pressed, Hover, Disabled and Focused states."
msgstr "基于纹ç†çš„按钮。支æŒæŒ‰ä¸‹ã€æ‚¬åœã€åœç”¨å’Œç„¦ç‚¹çŠ¶æ€ã€‚"
@@ -25690,6 +47832,36 @@ msgid ""
"other side clips to the node's limits."
msgstr "缩放纹ç†ï¼Œä½¿è¾ƒçŸ­çš„一边适应边界矩形。å¦ä¸€è¾¹åˆ™è£å‰ªåˆ°èŠ‚点的界é™å†…。"
+msgid "Called when the [TextureLayered]'s format is queried."
+msgstr "查询该 [TextureLayered] çš„æ ¼å¼æ—¶è¢«è°ƒç”¨ã€‚"
+
+msgid "Called when the the [TextureLayered]'s height is queried."
+msgstr "查询该 [TextureLayered] 的高度时被调用。"
+
+msgid "Called when the data for a layer in the [TextureLayered] is queried."
+msgstr "查询该 [TextureLayered] 中æŸä¸€å±‚çš„æ•°æ®æ—¶è¢«è°ƒç”¨ã€‚"
+
+msgid "Called when the layers' type in the [TextureLayered] is queried."
+msgstr "查询该 [TextureLayered] 的层类型时被调用。"
+
+msgid "Called when the number of layers in the [TextureLayered] is queried."
+msgstr "查询该 [TextureLayered] 的层数时被调用。"
+
+msgid "Called when the [TextureLayered]'s width queried."
+msgstr "查询该 [TextureLayered] 的宽度时被调用。"
+
+msgid "Called when the presence of mipmaps in the [TextureLayered] is queried."
+msgstr "查询该 [TextureLayered] çš„ Mipmap 是å¦å­˜åœ¨æ—¶è¢«è°ƒç”¨ã€‚"
+
+msgid "Texture is a generic [Texture2DArray]."
+msgstr "纹ç†ä¸ºé€šç”¨çš„ [Texture2DArray]。"
+
+msgid "Texture is a [Cubemap], with each side in its own layer (6 in total)."
+msgstr "纹ç†ä¸º [Cubemap],æ¯ä¸€é¢éƒ½æœ‰è‡ªå·±çš„层(共 6 层)。"
+
+msgid "Texture is a [CubemapArray], with each cubemap being made of 6 layers."
+msgstr "纹ç†ä¸º [CubemapArray],æ¯ä¸ªç«‹æ–¹ä½“贴图都由 6 层组æˆã€‚"
+
msgid ""
"Texture-based progress bar. Useful for loading screens and life or stamina "
"bars."
@@ -25837,11 +48009,20 @@ msgid ""
"See [enum StretchMode]."
msgstr "控件纹ç†åœ¨è°ƒæ•´èŠ‚ç‚¹è¾¹ç•ŒçŸ©å½¢æ—¶çš„è¡Œä¸ºã€‚è§ [enum StretchMode]。"
+msgid "The node's [Texture2D] resource."
+msgstr "该节点的 [Texture2D] 资æºã€‚"
+
msgid ""
"Scale the texture to fit the node's bounding rectangle, center it and "
"maintain its aspect ratio."
msgstr "缩放纹ç†ä»¥é€‚应节点的边界矩形,使其居中并ä¿æŒå…¶é•¿å®½æ¯”。"
+msgid "GUI skinning"
+msgstr "GUI 皮肤"
+
+msgid "Using the theme editor"
+msgstr "使用主题编辑器"
+
msgid ""
"Adds an empty theme type for every valid data type.\n"
"[b]Note:[/b] Empty types are not saved with the theme. This method only "
@@ -25860,6 +48041,64 @@ msgstr ""
"移除该主题类型,优雅地丢弃其中定义的主题项目。如果该类型为å˜ç§ï¼Œåˆ™è¯¥ä¿¡æ¯ä¹Ÿä¼š"
"被消除。如果该类型为类型å˜ç§çš„基础类型,则那些å˜ç§ä¼šå¤±åŽ»å…¶åŸºç¡€ç±»åž‹ã€‚"
+msgid ""
+"Creates or changes the value of the [Color] property defined by [param name] "
+"and [param theme_type]. Use [method clear_color] to remove the property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的 [Color] 属"
+"性的值。移除该属性请使用 [method clear_color]。"
+
+msgid ""
+"Creates or changes the value of the constant property defined by [param "
+"name] and [param theme_type]. Use [method clear_constant] to remove the "
+"property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的常é‡å±žæ€§çš„"
+"值。移除该属性请使用 [method clear_constant]。"
+
+msgid ""
+"Creates or changes the value of the [Font] property defined by [param name] "
+"and [param theme_type]. Use [method clear_font] to remove the property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的 [Font] 属"
+"性的值。移除该属性请使用 [method clear_font]。"
+
+msgid ""
+"Creates or changes the value of the font size property defined by [param "
+"name] and [param theme_type]. Use [method clear_font_size] to remove the "
+"property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的字体大å°å±ž"
+"性的值。移除该属性请使用 [method clear_font_size]。"
+
+msgid ""
+"Creates or changes the value of the icon property defined by [param name] "
+"and [param theme_type]. Use [method clear_icon] to remove the property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的图标属性的"
+"值。移除该属性请使用 [method clear_icon]。"
+
+msgid ""
+"Creates or changes the value of the [StyleBox] property defined by [param "
+"name] and [param theme_type]. Use [method clear_stylebox] to remove the "
+"property."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的 "
+"[StyleBox] 属性的值。移除该属性请使用 [method clear_stylebox]。"
+
+msgid ""
+"Creates or changes the value of the theme property of [param data_type] "
+"defined by [param name] and [param theme_type]. Use [method "
+"clear_theme_item] to remove the property.\n"
+"Fails if the [param value] type is not accepted by [param data_type].\n"
+"[b]Note:[/b] This method is analogous to calling the corresponding data type "
+"specific method, but can be used for more generalized logic."
+msgstr ""
+"创建或改å˜ç”±å称 [param name] 和主题类型 [param theme_type] 定义的主题属性的"
+"值。移除该属性请使用 [method clear_theme_item]。\n"
+"如果 [param value] 的类型ä¸è¢« [param data_type] 所接å—,则失败。\n"
+"[b]注æ„:[/b]这个方法类似于调用相应的数æ®ç±»åž‹ç‰¹å®šæ–¹æ³•ï¼Œä½†å¯ä»¥ç”¨äºŽæ›´é€šç”¨é€»è¾‘。"
+
msgid "Theme's [Color] item type."
msgstr "主题的 [Color] 颜色项类型。"
@@ -25869,12 +48108,24 @@ msgstr "主题的常é‡é¡¹ç±»åž‹ã€‚"
msgid "Theme's [Font] item type."
msgstr "主题的 [Font] 字体项类型。"
+msgid "Theme's font size item type."
+msgstr "主题的字体大å°é¡¹ç±»åž‹ã€‚"
+
+msgid "Theme's icon [Texture2D] item type."
+msgstr "主题的图标 [Texture2D] 项类型。"
+
msgid "Theme's [StyleBox] item type."
msgstr "主题的 [StyleBox] 项目类型。"
msgid "Maximum value for the DataType enum."
msgstr "æ•°æ®ç±»åž‹æžšä¸¾çš„最大值。"
+msgid ""
+"An engine singleton providing access to static [Theme] information, such as "
+"default and project theme, and fallback values."
+msgstr ""
+"引擎å•ä¾‹ï¼Œç”¨äºŽè®¿é—®é™æ€ [Theme] ä¿¡æ¯ï¼Œå¦‚默认主题和项目主题,以åŠå›žé€€å€¼ç­‰ã€‚"
+
msgid "A unit of execution in a process."
msgstr "执行过程中的执行å•å…ƒã€‚"
@@ -25919,22 +48170,130 @@ msgstr "具有标准优先级的线程。"
msgid "A thread running with higher priority than normally."
msgstr "以比正常情况更高的优先级è¿è¡Œçš„线程。"
+msgid "Settings for a single tile in a [TileSet]."
+msgstr "[TileSet] 中å•ä¸ªå›¾å—的设置。"
+
+msgid ""
+"[TileData] object represents a single tile in a [TileSet]. It is usually "
+"edited using the tileset editor, but it can be modified at runtime using "
+"[method TileMap._tile_data_runtime_update]."
+msgstr ""
+"[TileData] 对象代表 [TileSet] 中的å•ä¸ªå›¾å—,通常使用图å—集编辑器进行编辑,但"
+"也å¯ä»¥åœ¨è¿è¡Œæ—¶ä½¿ç”¨ [method TileMap._tile_data_runtime_update] 进行修改。"
+
+msgid "Color modulation of the tile."
+msgstr "该图å—的颜色调制。"
+
msgid "Node for 2D tile-based maps."
msgstr "基于 2D 图å—的地图节点。"
+msgid ""
+"Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list "
+"of tiles which are used to create grid-based maps. A TileMap may have "
+"several layers, layouting tiles on top of each other."
+msgstr ""
+"基于 2D 图å—的地图节点。Tilemap(图å—地图)使用 [TileSet],其中包å«äº†å›¾å—的列"
+"表,用于创建基于栅格的地图。TileMap å¯ä»¥æœ‰è‹¥å¹²å›¾å±‚,å¯ä»¥å°†å›¾å—布局在彼此之"
+"上。"
+
msgid "Using Tilemaps"
-msgstr "使用图å—地图"
+msgstr "使用 Tilemap"
msgid "2D Hexagonal Demo"
msgstr "2D 六边形演示"
+msgid ""
+"Called with a TileData object about to be used internally by the TileMap, "
+"allowing its modification at runtime.\n"
+"This method is only called if [method _use_tile_data_runtime_update] is "
+"implemented and returns [code]true[/code] for the given tile [param coords] "
+"and [param layer].\n"
+"[b]Warning:[/b] The [param tile_data] object's sub-resources are the same as "
+"the one in the TileSet. Modifying them might impact the whole TileSet. "
+"Instead, make sure to duplicate those resources.\n"
+"[b]Note:[/b] If the properties of [param tile_data] object should change "
+"over time, use [method force_update] to trigger a TileMap update."
+msgstr ""
+"会使用 TileMap 内部å³å°†ä½¿ç”¨çš„ TileData 对象æ¥è°ƒç”¨ï¼Œä»Žè€Œå®žçŽ°è¿è¡Œæ—¶ä¿®æ”¹ã€‚\n"
+"这个方法被调用的å‰æ是:实现了 [method _use_tile_data_runtime_update],并且对"
+"给定的图å—åæ ‡ [param coords] 和层 [param layer] 返回 [code]true[/code] 。\n"
+"[b]警告:[/b]该 [param tile_data] 对象的å­èµ„æºå’Œ TileSet 中的å­èµ„æºæ˜¯ä¸€æ ·çš„。"
+"对它们进行修改å¯èƒ½ä¼šå½±å“整个 TileSet。请确ä¿åˆ¶ä½œè¿™äº›èµ„æºçš„副本å†è¿›è¡Œä¿®æ”¹ã€‚\n"
+"[b]注æ„:[/b]如果 [param tile_data] 对象的属性è¦éšæ—¶é—´å˜åŒ–,请使用 [method "
+"force_update] æ¥è§¦å‘ TileMap 更新。"
+
+msgid ""
+"Should return [code]true[/code] if the tile at coordinates [param coords] on "
+"layer [param layer] requires a runtime update.\n"
+"[b]Warning:[/b] Make sure this function only return [code]true[/code] when "
+"needed. Any tile processed at runtime without a need for it will imply a "
+"significant performance penalty."
+msgstr ""
+"如果ä½äºŽå±‚ [param layer] åæ ‡ [param coords] 的图å—需è¦è¿è¡Œæ—¶æ›´æ–°ï¼Œåˆ™åº”返回 "
+"[code]true[/code]。\n"
+"[b]警告:[/b]请确ä¿è¿™ä¸ªå‡½æ•°åªåœ¨éœ€è¦æ—¶è¿”回 [code]true[/code]。任何在没有需è¦çš„"
+"情况下在è¿è¡Œæ—¶å¤„ç†çš„图å—都将导致显著的性能æŸå¤±ã€‚"
+
+msgid ""
+"Adds a layer at the given position [param to_position] in the array. If "
+"[param to_position] is negative, the position is counted from the end, with "
+"[code]-1[/code] adding the layer at the end of the array."
+msgstr ""
+"在数组中的给定ä½ç½® [param to_position] 添加层。如果 [param to_position] 为负"
+"数,则ä½ç½®ä»Žç»“尾处开始计数,[code]-1[/code] 会把层添加在数组的末尾。"
+
msgid "Clears all cells."
msgstr "清除所有å•å…ƒæ ¼ã€‚"
+msgid "Clears all cells on the given layer."
+msgstr "清除给定图层中的所有å•å…ƒæ ¼ã€‚"
+
+msgid "Erases the cell on layer [param layer] at coordinates [param coords]."
+msgstr "擦除图层 [param layer] 上ä½äºŽåæ ‡ [param coords] 处的å•å…ƒæ ¼ã€‚"
+
msgid "Clears cells that do not exist in the tileset."
msgstr "清除图å—集中ä¸å­˜åœ¨çš„å•å…ƒæ ¼ã€‚"
msgid ""
+"Triggers an update of the TileMap. If [param layer] is provided, only "
+"updates the given layer.\n"
+"[b]Note:[/b] The TileMap node updates automatically when one of its "
+"properties is modified. A manual update is only needed if runtime "
+"modifications (implemented in [method _tile_data_runtime_update]) need to be "
+"applied.\n"
+"[b]Warning:[/b] Updating the TileMap is computationally expensive and may "
+"impact performance. Try to limit the number of updates and the tiles they "
+"impact (by placing frequently updated tiles in a dedicated layer for "
+"example)."
+msgstr ""
+"è§¦å‘ TileMap 的更新。如果æ供了 [param layer],则åªæ›´æ–°ç»™å®šçš„层。\n"
+"[b]注æ„:[/b]TileMap 节点的属性被修改时,该节点会自动更新。åªæœ‰åœ¨éœ€è¦åº”用è¿è¡Œ"
+"时修改(在 [method _tile_data_runtime_update] 中实现)时æ‰éœ€è¦æ‰‹åŠ¨æ›´æ–°ã€‚\n"
+"[b]警告:[/b]æ›´æ–° TileMap 的计算é‡å¾ˆå¤§ï¼Œå¯èƒ½ä¼šå½±å“性能。请尽é‡é™åˆ¶æ›´æ–°çš„次数"
+"å’Œå—å½±å“的图å—(例如,将ç»å¸¸æ›´æ–°çš„图å—放在专门的层中)。"
+
+msgid "Returns a TileMap layer's modulate."
+msgstr "返回 TileMap 图层的调制颜色。"
+
+msgid "Returns a TileMap layer's name."
+msgstr "返回 TileMap 图层的å称。"
+
+msgid "Returns a TileMap layer's Y sort origin."
+msgstr "返回 TileMap 图层的 Y 排åºåŽŸç‚¹ã€‚"
+
+msgid "Returns a TileMap layer's Z-index value."
+msgstr "返回 TileMap 图层的 Z 索引值。"
+
+msgid "Returns the number of layers in the TileMap."
+msgstr "返回 TileMap 图层的数é‡ã€‚"
+
+msgid "Returns if a layer is enabled."
+msgstr "返回图层是å¦è¢«å¯ç”¨ã€‚"
+
+msgid "Returns if a layer Y-sorts its tiles."
+msgstr "返回图层是å¦å¯¹å…¶å›¾å—进行 Y 排åºã€‚"
+
+msgid ""
"The TileMap's quadrant size. Optimizes drawing by batching, using chunks of "
"this size."
msgstr "该 TileMap 的象é™å¤§å°ã€‚会使用这个大å°çš„区å—对绘制进行批处ç†ä¼˜åŒ–。"
@@ -25942,8 +48301,210 @@ msgstr "该 TileMap 的象é™å¤§å°ã€‚会使用这个大å°çš„区å—对绘制进
msgid "The assigned [TileSet]."
msgstr "指定的 [TileSet] 图å—集。"
+msgid "Use the debug settings to determine visibility."
+msgstr "使用调试设置确定å¯è§æ€§ã€‚"
+
+msgid "Always hide."
+msgstr "始终éšè—。"
+
+msgid "Always show."
+msgstr "始终显示。"
+
msgid "Tile library for tilemaps."
-msgstr "图å—地图的图å—库。"
+msgstr "Tilemap 的图å—库。"
+
+msgid ""
+"A TileSet is a library of tiles for a [TileMap]. A TileSet handles a list of "
+"[TileSetSource], each of them storing a set of tiles.\n"
+"Tiles can either be from a [TileSetAtlasSource], that render tiles out of a "
+"texture with support for physics, navigation, etc... or from a "
+"[TileSetScenesCollectionSource] which exposes scene-based tiles.\n"
+"Tiles are referenced by using three IDs: their source ID, their atlas "
+"coordinates ID and their alternative tile ID.\n"
+"A TileSet can be configured so that its tiles expose more or less "
+"properties. To do so, the TileSet resources uses property layers, that you "
+"can add or remove depending on your needs.\n"
+"For example, adding a physics layer allows giving collision shapes to your "
+"tiles. Each layer having dedicated properties (physics layer an mask), you "
+"may add several TileSet physics layers for each type of collision you need.\n"
+"See the functions to add new layers for more information."
+msgstr ""
+"TileSet 是 [TileMap] 的图å—库。TileSet å¤„ç† [TileSetSource] 列表,æ¯ä¸ªè¡¨ä¸­å­˜"
+"储一组图å—。\n"
+"图å—æ—¢å¯ä»¥æ¥è‡ª [TileSetAtlasSource],å¯ä»¥æ¸²æŸ“纹ç†ä¸­çš„图å—,支æŒç‰©ç†ã€å¯¼èˆªç­‰åŠŸ"
+"能,也å¯ä»¥æ¥è‡ª [TileSetScenesCollectionSource],æ供基于场景的图å—。\n"
+"图å—通过使用三个 ID æ¥å¼•ç”¨ï¼šæº IDã€å›¾é›†åæ ‡ IDã€å¤‡é€‰å›¾å— ID。\n"
+"TileSet å¯ä»¥é…置图å—暴露哪些属性。为了åšåˆ°è¿™ä¸€ç‚¹ï¼ŒTileSet 资æºä½¿ç”¨äº†å±žæ€§å±‚,"
+"ä½ å¯ä»¥æ ¹æ®éœ€è¦è¿›è¡Œæ·»åŠ å’Œåˆ é™¤ã€‚\n"
+"例如,添加物ç†å±‚å¯ä»¥ä¸ºç“·ç –æ供碰撞形状。ä¸åŒçš„层都有ä¸åŒçš„属性(物ç†å±‚å’Œé®"
+"罩),è¦å®žçŽ°ä¸åŒç±»åž‹çš„碰撞,你也å¯ä»¥æ·»åŠ å¤šä¸ª TileSet 物ç†å±‚。\n"
+"更多信æ¯è¯·å‚阅添加新层的函数。"
+
+msgid "Returns the custom data layers count."
+msgstr "返回自定义数æ®å±‚çš„æ•°é‡ã€‚"
+
+msgid "Returns the navigation layers count."
+msgstr "返回导航层的数é‡ã€‚"
+
+msgid "Returns the occlusion layers count."
+msgstr "返回é®æŒ¡å±‚çš„æ•°é‡ã€‚"
+
+msgid "Returns the physics layers count."
+msgstr "返回物ç†å±‚çš„æ•°é‡ã€‚"
+
+msgid "Returns a terrain's color."
+msgstr "返回地形的颜色。"
+
+msgid "Returns a terrain's name."
+msgstr "返回地形的å称。"
+
+msgid "Returns a terrain set mode."
+msgstr "返回地形集模å¼ã€‚"
+
+msgid "Returns the terrain sets count."
+msgstr "返回地形集的数é‡ã€‚"
+
+msgid "Returns the number of terrains in the given terrain set."
+msgstr "返回给定地形集中的地形数。"
+
+msgid "Changes a source's ID."
+msgstr "更改æºçš„ ID。"
+
+msgid ""
+"Sets a terrain's color. This color is used for identifying the different "
+"terrains in the TileSet editor."
+msgstr "设置地形的颜色。该颜色用于在 TileSet 编辑器中区分ä¸åŒçš„地形。"
+
+msgid "Sets a terrain's name."
+msgstr "设置地形的å称。"
+
+msgid ""
+"Sets a terrain mode. Each mode determines which bits of a tile shape is used "
+"to match the neighboring tiles' terrains."
+msgstr ""
+"设置地形模å¼ã€‚æ¯ç§æ¨¡å¼å†³å®šäº†å›¾å—形状的哪一个ä½è¢«ç”¨æ¥åŒ¹é…相邻图å—的地形。"
+
+msgid ""
+"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), "
+"changes the way tiles are indexed in the TileMap grid."
+msgstr ""
+"对于所有åŠå移形状(等轴ã€å…­è¾¹å½¢å’ŒåŠå移正方形),更改图å—在 TileMap 栅格中的"
+"索引方å¼ã€‚"
+
+msgid ""
+"For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), "
+"determines the offset axis."
+msgstr "对于所有åŠå移形状(等轴ã€å…­è¾¹å½¢å’ŒåŠå移正方形),确定å移轴。"
+
+msgid "The tile shape."
+msgstr "图å—的形状。"
+
+msgid ""
+"The tile size, in pixels. For all tile shapes, this size corresponds to the "
+"encompassing rectangle of the tile shape. This is thus the minimal cell size "
+"required in an atlas."
+msgstr ""
+"图å—的大å°ï¼Œå•ä½ä¸ºåƒç´ ã€‚无论图å—是什么形状,这个大å°å¯¹åº”的都是图å—形状的包围"
+"矩形。因此,这是图集所需的最å°å•å…ƒæ ¼å¤§å°ã€‚"
+
+msgid "Enables/Disable uv clipping when rendering the tiles."
+msgstr "渲染图å—æ—¶å¯ç”¨/ç¦ç”¨ UV è£å‰ªã€‚"
+
+msgid "Rectangular tile shape."
+msgstr "矩形图å—形状。"
+
+msgid ""
+"Diamond tile shape (for isometric look).\n"
+"[b]Note:[/b] Isometric [TileSet] works best if [TileMap] and all its layers "
+"have Y-sort enabled."
+msgstr ""
+"钻石图å—形状(用于等轴外观)。\n"
+"[b]注æ„:[/b]等轴 [TileSet] 在 [TileMap] åŠå…¶æ‰€æœ‰å›¾å±‚都å¯ç”¨äº†Y 排åºæ—¶æ•ˆæžœæœ€"
+"好。"
+
+msgid ""
+"Rectangular tile shape with one row/column out of two offset by half a tile."
+msgstr "矩形图å—形状,æ¯éš”一行/列å移åŠä¸ªå›¾å—。"
+
+msgid "Hexagonal tile shape."
+msgstr "六边形图å—形状。"
+
+msgid "Horizontal half-offset."
+msgstr "æ°´å¹³åŠå移。"
+
+msgid "Vertical half-offset."
+msgstr "åž‚ç›´åŠå移。"
+
+msgid "Neighbor on the right side."
+msgstr "å³ä¾§ç›¸é‚»å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the right corner."
+msgstr "å³è§’相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the bottom right side."
+msgstr "å³ä¸‹ä¾§ç›¸é‚»å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the bottom right corner."
+msgstr "å³ä¸‹è§’相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the bottom side."
+msgstr "下侧相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the bottom corner."
+msgstr "下角相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the bottom left side."
+msgstr "左下侧相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the bottom left corner."
+msgstr "左下角相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the left side."
+msgstr "左侧相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the left corner."
+msgstr "左角相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the top left side."
+msgstr "左上侧相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the top left corner."
+msgstr "左上角相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the top side."
+msgstr "上侧相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the top corner."
+msgstr "上角相邻å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor on the top right side."
+msgstr "å³ä¸Šä¾§ç›¸é‚»å•å…ƒæ ¼ã€‚"
+
+msgid "Neighbor in the top right corner."
+msgstr "å³ä¸Šè§’相邻å•å…ƒæ ¼ã€‚"
+
+msgid "The atlas texture."
+msgstr "图集纹ç†ã€‚"
+
+msgid ""
+"Returns whether the scene tile with [param id] displays a placeholder in the "
+"editor."
+msgstr "返回 ID 为 [param id] 的场景图å—是å¦åœ¨ç¼–辑器中显示å ä½å›¾ã€‚"
+
+msgid "Returns the scene tile ID of the scene tile at [param index]."
+msgstr "返回索引为 [param index] 的场景图å—çš„åœºæ™¯å›¾å— ID。"
+
+msgid "Returns the [PackedScene] resource of scene tile with [param id]."
+msgstr "返回 ID 为 [param id] 的场景图å—çš„ [PackedScene] 资æºã€‚"
+
+msgid "Returns the number or scene tiles this TileSet source has."
+msgstr "返回该 TileSet æºä¸­åœºæ™¯å›¾å—çš„æ•°é‡ã€‚"
+
+msgid "Returns whether this TileSet source has a scene tile with [param id]."
+msgstr "返回该 TileSet æºæ˜¯å¦åŒ…å« ID 为 [param id] 的场景图å—。"
+
+msgid "Remove the scene tile with [param id]."
+msgstr "移除 ID 为 [param id] 的场景图å—。"
msgid "Time singleton for working with time."
msgstr "用于处ç†æ—¶é—´çš„ Time å•ä¾‹ã€‚"
@@ -26209,6 +48770,9 @@ msgstr ""
"如果为 [code]true[/code],定时器会被暂åœï¼Œå¹¶ä¸”ä¸å†å¤„ç†ï¼Œå³ä½¿è°ƒç”¨ [method "
"start],直到它被å–消暂åœã€‚"
+msgid "Processing callback. See [enum TimerProcessCallback]."
+msgstr "处ç†å›žè°ƒã€‚è§ [enum TimerProcessCallback]。"
+
msgid ""
"Update the timer during the physics step at each frame (fixed framerate "
"processing)."
@@ -26217,6 +48781,12 @@ msgstr "在æ¯ä¸€å¸§çš„物ç†è¿ç®—步骤中更新定时器,å³å›ºå®šå¸§çŽ‡å¤„
msgid "Update the timer during the idle time at each frame."
msgstr "在æ¯ä¸€å¸§ç©ºé—²æ—¶é—´å†…更新定时器。"
+msgid "TLS configuration for clients and servers."
+msgstr "客户端与æœåŠ¡å™¨çš„ TLS é…置。"
+
+msgid "Class representing a torus [PrimitiveMesh]."
+msgstr "表示圆环 [PrimitiveMesh] 的类。"
+
msgid "Button for touch screen devices for gameplay use."
msgstr "触摸å±è®¾å¤‡çš„按钮,供游æˆä½¿ç”¨ã€‚"
@@ -26271,6 +48841,9 @@ msgstr ""
"如果为 [code]true[/code],按钮的形状会在æ供的纹ç†ä¸­å±…中。如果没有使用纹ç†ï¼Œ"
"这个属性就没有效果。"
+msgid "If [code]true[/code], the button's shape is visible in the editor."
+msgstr "如果为 [code]true[/code],则该按钮的形状在编辑器中å¯è§ã€‚"
+
msgid "The button's texture for the normal state."
msgstr "该按钮在正常状æ€ä¸‹çš„纹ç†ã€‚"
@@ -26306,13 +48879,22 @@ msgid ""
msgstr ""
"用于 2D 线性å˜æ¢çš„ 2×3 矩阵(2 è¡Œ 3 列),å¯ä»¥è¡¨ç¤ºå¹³ç§»ã€æ—‹è½¬ã€ç¼©æ”¾ç­‰å˜æ¢ã€‚ç”±"
"三个 [Vector2] 值组æˆï¼š[member x]ã€[member y]ã€[member origin]。\n"
-"更多信æ¯è¯·é˜…读文档文章《矩阵和å˜æ¢ã€‹ã€‚"
+"更多信æ¯è¯·é˜…读文档文章《矩阵与å˜æ¢ã€‹ã€‚"
+
+msgid ""
+"Constructs a default-initialized [Transform2D] set to [constant IDENTITY]."
+msgstr "构造默认åˆå§‹åŒ–为 [constant IDENTITY] çš„ [Transform2D]。"
msgid "Constructs a [Transform2D] as a copy of the given [Transform2D]."
msgstr "构造给定 [Transform2D] 的副本。"
msgid "Constructs the transform from a given angle (in radians) and position."
-msgstr "从一个给定的角度(å•ä½ä¸ºå¼§åº¦ï¼‰å’Œä½ç½®æž„造å˜æ¢ã€‚"
+msgstr "从给定的角度(å•ä½ä¸ºå¼§åº¦ï¼‰å’Œä½ç½®æž„造å˜æ¢ã€‚"
+
+msgid ""
+"Constructs the transform from a given angle (in radians), scale, skew (in "
+"radians) and position."
+msgstr "从给定的角度(å•ä½ä¸ºå¼§åº¦ï¼‰ã€ç¼©æ”¾ã€å斜(å•ä½ä¸ºå¼§åº¦ï¼‰å’Œä½ç½®æž„造å˜æ¢ã€‚"
msgid ""
"Constructs the transform from 3 [Vector2] values representing [member x], "
@@ -26324,7 +48906,7 @@ msgstr ""
msgid ""
"Returns the inverse of the transform, under the assumption that the "
"transformation is composed of rotation, scaling and translation."
-msgstr "返回å˜æ¢çš„å值,å‡è®¾å˜æ¢æ˜¯ç”±æ—‹è½¬ã€ç¼©æ”¾å’Œå¹³ç§»ç»„æˆçš„。"
+msgstr "返回该å˜æ¢çš„逆,å‡è®¾å˜æ¢ç”±æ—‹è½¬ã€ç¼©æ”¾å’Œå¹³ç§»ç»„æˆã€‚"
msgid ""
"Returns a vector transformed (multiplied) by the basis matrix.\n"
@@ -26341,14 +48923,17 @@ msgstr ""
"该方法ä¸è€ƒè™‘平移(原点å‘é‡ï¼‰ã€‚"
msgid "Returns the transform's origin (translation)."
-msgstr "返回å˜æ¢çš„原点(平移)。"
+msgstr "返回该å˜æ¢çš„原点(平移)。"
msgid "Returns the transform's rotation (in radians)."
-msgstr "返回å˜æ¢çš„旋转(å•ä½ä¸ºå¼§åº¦ï¼‰ã€‚"
+msgstr "返回该å˜æ¢çš„旋转(å•ä½ä¸ºå¼§åº¦ï¼‰ã€‚"
msgid "Returns the scale."
msgstr "返回缩放。"
+msgid "Returns the transform's skew (in radians)."
+msgstr "返回该å˜æ¢çš„å斜(å•ä½ä¸ºå¼§åº¦ï¼‰ã€‚"
+
msgid ""
"Returns the inverse of the transform, under the assumption that the "
"transformation is composed of rotation and translation (no scaling, use "
@@ -26405,7 +48990,7 @@ msgstr ""
"用于 3D 线性å˜æ¢çš„ 3×4 矩阵(3 è¡Œ 4 列),å¯ä»¥è¡¨ç¤ºå¹³ç§»ã€æ—‹è½¬ã€ç¼©æ”¾ç­‰å˜æ¢ã€‚它"
"由一个 [member basis]ï¼ˆå‰ 3 列)和一个 [member origin] çš„ [Vector3](最åŽä¸€"
"列)组æˆã€‚\n"
-"更多信æ¯è¯·é˜…读文档文章《矩阵和å˜æ¢ã€‹ã€‚"
+"更多信æ¯è¯·é˜…读文档文章《矩阵与å˜æ¢ã€‹ã€‚"
msgid "Constructs a [Transform3D] as a copy of the given [Transform3D]."
msgstr "构造给定 [Transform3D] 的副本。"
@@ -26423,6 +49008,13 @@ msgid ""
"Equivalent to array index [code]3[/code]."
msgstr "å˜æ¢çš„平移å移é‡ï¼Œå³ç¬¬ 3ã€4 列。相当于数组索引 [code]3[/code]。"
+msgid ""
+"[Transform3D] with no translation, rotation or scaling applied. When applied "
+"to other data structures, [constant IDENTITY] performs no transformation."
+msgstr ""
+"没有应用平移ã€æ—‹è½¬ã€ç¼©æ”¾çš„ [Transform3D]。当应用于其他数æ®ç»“构时,[constant "
+"IDENTITY] ä¸æ‰§è¡Œå˜æ¢ã€‚"
+
msgid "Language Translation."
msgstr "语言翻译。"
@@ -26431,8 +49023,17 @@ msgid ""
"map a string to another string."
msgstr "翻译是å¯ä»¥æŒ‰éœ€åŠ è½½å’Œå¸è½½çš„资æºï¼Œå°†ä¸€ä¸ªå­—符串映射到å¦ä¸€ä¸ªå­—符串。"
+msgid "Internationalizing games"
+msgstr "将游æˆå›½é™…化"
+
+msgid "Locales"
+msgstr "区域设置"
+
msgid "Virtual method to override [method get_message]."
-msgstr "é‡å†™ [method get_message] 的虚方法。"
+msgstr "覆盖 [method get_message] 的虚方法。"
+
+msgid "Virtual method to override [method get_plural_message]."
+msgstr "覆盖 [method get_plural_message] 的虚方法。"
msgid "Erases a message."
msgstr "删除信æ¯ã€‚"
@@ -26463,6 +49064,21 @@ msgstr "添加一个 [Translation] 资æºã€‚"
msgid "Clears the server from all translations."
msgstr "清除æœåŠ¡å™¨ä¸­çš„所有翻译。"
+msgid "Returns array of known country codes."
+msgstr "返回已知地区代ç çš„数组。"
+
+msgid "Returns array of known language codes."
+msgstr "返回已知语言代ç çš„数组。"
+
+msgid "Returns array of known script codes."
+msgstr "返回已知文字代ç çš„数组。"
+
+msgid "Returns readable country name for the [param country] code."
+msgstr "è¿”å›žåœ°åŒºä»£ç  [param country] çš„å¯è¯»åœ°åŒºå。"
+
+msgid "Returns readable language name for the [param language] code."
+msgstr "è¿”å›žè¯­è¨€ä»£ç  [param language] çš„å¯è¯»è¯­è¨€å。"
+
msgid "Returns an array of all loaded locales of the project."
msgstr "返回项目中所有已加载的区域设置的数组。"
@@ -26482,6 +49098,17 @@ msgstr ""
"返回区域设置的语言åŠå…¶å˜ä½“。例如,[code]\"en_US\"[/code] 将返回 "
"[code]\"English (United States)\"[/code]。"
+msgid "Returns readable script name for the [param script] code."
+msgstr "è¿”å›žæ–‡å­—ä»£ç  [param script] çš„å¯è¯»æ–‡å­—å称。"
+
+msgid ""
+"Returns the current locale of the editor.\n"
+"[b]Note:[/b] When called from an exported project returns the same value as "
+"[method get_locale]."
+msgstr ""
+"返回编辑器的当å‰åŒºåŸŸè®¾ç½®ã€‚\n"
+"[b]注æ„:[/b]从导出åŽçš„项目中调用时,返回值与 [method get_locale] 相åŒã€‚"
+
msgid "Removes the given translation from the server."
msgstr "从æœåŠ¡å™¨ä¸­åˆ é™¤ç»™å®šçš„翻译。"
@@ -26515,7 +49142,13 @@ msgstr ""
"SELECT_MULTI] 模å¼ä¸‹å¯è§ã€‚"
msgid "Returns the column's title."
-msgstr "返回列的标题。"
+msgstr "返回该列的标题。"
+
+msgid "Returns column title base writing direction."
+msgstr "返回列标题的基础书写方å‘。"
+
+msgid "Returns column title language code."
+msgstr "返回列标题的语言代ç ã€‚"
msgid "Returns the column's width in pixels."
msgstr "返回列的宽度,å•ä½æ˜¯åƒç´ ã€‚"
@@ -26580,6 +49213,18 @@ msgstr "使 [Tree] 跳转到指定的 [TreeItem]。"
msgid "Sets the title of a column."
msgstr "设置æŸä¸€åˆ—的标题。"
+msgid "Sets column title base writing direction."
+msgstr "设置列标题的基础书写方å‘。"
+
+msgid ""
+"Sets language code of column title used for line-breaking and text shaping "
+"algorithms, if left empty current locale is used instead."
+msgstr ""
+"设置列标题的语言代ç ï¼Œç”¨äºŽæ–­è¡Œå’Œæ–‡æœ¬å¡‘形算法,如果留空则使用当å‰åŒºåŸŸè®¾ç½®ã€‚"
+
+msgid "Selects the specified [TreeItem] and column."
+msgstr "选中指定的 [TreeItem] 和列。"
+
msgid ""
"If [code]true[/code], the currently selected cell may be selected again."
msgstr "如果为 [code]true[/code],å¯ä»¥å†æ¬¡é€‰æ‹©å½“å‰é€‰å®šçš„å•å…ƒã€‚"
@@ -26728,6 +49373,9 @@ msgstr ""
msgid "[Color] of the guideline."
msgstr "å‚考线的 [Color] 颜色。"
+msgid "The default [Color] of the relationship lines."
+msgstr "关系线的默认 [Color]。"
+
msgid "Default text [Color] of the title button."
msgstr "标题按钮的默认文本 [Color] 颜色。"
@@ -26758,6 +49406,9 @@ msgid ""
"enabled for the item."
msgstr "项目开头的水平边è·ã€‚在项目å¯ç”¨æŠ˜å åŠŸèƒ½æ—¶ä½¿ç”¨ã€‚"
+msgid "The default width of the relationship lines."
+msgstr "关系线的默认宽度。"
+
msgid ""
"The maximum distance between the mouse cursor and the control's border to "
"trigger border scrolling when dragging."
@@ -26775,54 +49426,82 @@ msgid "[Font] of the title button's text."
msgstr "标题按钮文本的 [Font] 字体。"
msgid "The arrow icon used when a foldable item is not collapsed."
-msgstr "当一个å¯æŠ˜å çš„项没有被折å æ—¶ï¼Œä½¿ç”¨çš„箭头图标。"
+msgstr "箭头图标,å¯æŠ˜å é¡¹æœªæŠ˜å æ—¶ä½¿ç”¨ã€‚"
+
+msgid ""
+"The arrow icon used when a foldable item is collapsed (for left-to-right "
+"layouts)."
+msgstr "箭头图标,å¯æŠ˜å é¡¹å·²æŠ˜å æ—¶ä½¿ç”¨ï¼ˆç”¨äºŽä»Žå·¦è‡³å³å¸ƒå±€ï¼‰ã€‚"
+
+msgid ""
+"The arrow icon used when a foldable item is collapsed (for right-to-left "
+"layouts)."
+msgstr "箭头图标,å¯æŠ˜å é¡¹å·²æŠ˜å æ—¶ä½¿ç”¨ï¼ˆç”¨äºŽä»Žå³è‡³å·¦å¸ƒå±€ï¼‰ã€‚"
msgid ""
"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode "
"cell is checked."
msgstr ""
-"当 [constant TreeItem.CELL_MODE_CHECK] 模å¼å•å…ƒæ ¼è¢«é€‰ä¸­æ—¶ï¼Œæ˜¾ç¤ºçš„选中图标。"
+"å¤é€‰å›¾æ ‡ï¼Œæ¨¡å¼ä¸º [constant TreeItem.CELL_MODE_CHECK] çš„å•å…ƒæ ¼å¤„于勾选状æ€æ—¶æ˜¾"
+"示。"
+
+msgid ""
+"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode "
+"cell is indeterminate."
+msgstr ""
+"å¤é€‰å›¾æ ‡ï¼Œæ¨¡å¼ä¸º [constant TreeItem.CELL_MODE_CHECK] çš„å•å…ƒæ ¼å¤„于中间状æ€æ—¶æ˜¾"
+"示。"
msgid ""
"The arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode "
"cell."
-msgstr "为 [constant TreeItem.CELL_MODE_RANGE] 模å¼å•å…ƒæ˜¾ç¤ºçš„箭头图标。"
+msgstr "箭头图标,模å¼ä¸º [constant TreeItem.CELL_MODE_RANGE] çš„å•å…ƒæ ¼æ˜¾ç¤ºã€‚"
msgid ""
"The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode "
"cell is unchecked."
msgstr ""
-"当 [constant TreeItem.CELL_MODE_CHECK] 模å¼å•å…ƒæœªè¢«é€‰ä¸­æ—¶ï¼Œè¦æ˜¾ç¤ºçš„选中图标。"
+"å¤é€‰å›¾æ ‡ï¼Œæ¨¡å¼ä¸º [constant TreeItem.CELL_MODE_CHECK] çš„å•å…ƒæ ¼å¤„于未选状æ€æ—¶æ˜¾"
+"示。"
msgid ""
"The updown arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] "
"mode cell."
-msgstr "为 [constant TreeItem.CELL_MODE_RANGE] 模å¼å•å…ƒæ˜¾ç¤ºçš„å‘下箭头图标。"
+msgstr ""
+"上下箭头图标,模å¼ä¸º [constant TreeItem.CELL_MODE_RANGE] çš„å•å…ƒæ ¼æ˜¾ç¤ºã€‚"
msgid "[StyleBox] used when a button in the tree is pressed."
-msgstr "当树中的按钮被按下时使用的 [StyleBox]。"
+msgstr "树中的按钮处于按下状æ€æ—¶ä½¿ç”¨çš„ [StyleBox]。"
msgid "[StyleBox] used for the cursor, when the [Tree] is being focused."
-msgstr "当 [Tree] 获得焦点时,用于光标的 [StyleBox]。"
+msgstr "用作光标的 [StyleBox],该 [Tree] 处于èšç„¦çŠ¶æ€æ—¶ä½¿ç”¨ã€‚"
msgid "[StyleBox] used for the cursor, when the [Tree] is not being focused."
-msgstr "当 [Tree] 未获èšç„¦æ—¶ï¼Œç”¨äºŽå…‰æ ‡çš„ [StyleBox]。"
+msgstr "用作光标的 [StyleBox],该 [Tree] 处于失焦状æ€æ—¶ä½¿ç”¨ã€‚"
msgid ""
"Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell."
-msgstr "[constant TreeItem.CELL_MODE_CUSTOM] 模å¼çš„å•å…ƒæ ¼é»˜è®¤çš„ [StyleBox]。"
+msgstr "模å¼ä¸º [constant TreeItem.CELL_MODE_RANGE] çš„å•å…ƒæ ¼çš„默认 [StyleBox]。"
msgid ""
"[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's "
"hovered."
msgstr ""
-"当 [constant TreeItem.CELL_MODE_CUSTOM] 模å¼çš„å•å…ƒæ ¼è¢«æ‚¬åœæ—¶çš„ [StyleBox]。"
+"模å¼ä¸º [constant TreeItem.CELL_MODE_RANGE] çš„å•å…ƒæ ¼å¤„于悬åœçŠ¶æ€æ—¶çš„ "
+"[StyleBox]。"
msgid ""
"[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's "
"pressed."
msgstr ""
-"当 [constant TreeItem.CELL_MODE_CUSTOM] 模å¼çš„å•å…ƒæ ¼è¢«æŒ‰ä¸‹æ—¶çš„ [StyleBox]。"
+"模å¼ä¸º [constant TreeItem.CELL_MODE_RANGE] çš„å•å…ƒæ ¼å¤„于按下状æ€æ—¶çš„ "
+"[StyleBox]。"
+
+msgid "The focused style for the [Tree], drawn on top of everything."
+msgstr "该 [Tree] çš„èšç„¦æ ·å¼ï¼Œç»˜åˆ¶åœ¨æ‰€æœ‰ä¸œè¥¿ä¹‹ä¸Šã€‚"
+
+msgid "The background style for the [Tree]."
+msgstr "该 [Tree] 的背景样å¼ã€‚"
msgid ""
"[StyleBox] for the selected items, used when the [Tree] is not being focused."
@@ -26864,9 +49543,24 @@ msgstr "å–消选择指定列。"
msgid "Returns the column's cell mode."
msgstr "返回该列的å•å…ƒæ ¼æ¨¡å¼ã€‚"
+msgid "Returns the number of child items."
+msgstr "返回å­é¡¹çš„æ•°é‡ã€‚"
+
+msgid "Returns the custom background color of column [param column]."
+msgstr "返回列 [param column] 的自定义背景色。"
+
+msgid "Returns the custom color of column [param column]."
+msgstr "返回列 [param column] 的自定义颜色。"
+
msgid "Returns [code]true[/code] if [code]expand_right[/code] is set."
msgstr "如果设置了 [code]expand_right[/code],则返回 [code]true[/code]。"
+msgid "Returns the TreeItem's first child."
+msgstr "返回该 TreeItem 的第一个å­é¡¹ã€‚"
+
+msgid "Returns the given column's icon [Texture2D]. Error if no icon is set."
+msgstr "返回给定列的图标 [Texture2D]。如果未设置图标,则会出错。"
+
msgid "Returns the column's icon's maximum width."
msgstr "返回列的图标的最大宽度。"
@@ -26908,6 +49602,27 @@ msgstr "返回给定列的文本。"
msgid "Returns the given column's text alignment."
msgstr "返回给定列的文本对é½æ–¹å¼ã€‚"
+msgid "Returns the given column's tooltip text."
+msgstr "设置给定列的工具æ示文本。"
+
+msgid "Returns the [Tree] that owns this TreeItem."
+msgstr "返回拥有此 TreeItem 的 [Tree]。"
+
+msgid "Returns [code]true[/code] if the given [param column] is checked."
+msgstr "如果给定的列 [param column] 被勾选,则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the given [param column] is editable."
+msgstr "如果给定的列 [param column] å¯ç¼–辑,则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the given [param column] is indeterminate."
+msgstr "如果给定的列 [param column] 未确定,则返回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the given [param column] is selectable."
+msgstr "如果给定的列 [param column] å¯é€‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid "Returns [code]true[/code] if the given [param column] is selected."
+msgstr "如果给定的列 [param column] 被选中,则返回 [code]true[/code]。"
+
msgid ""
"Removes the given child [TreeItem] and all its children from the [Tree]. "
"Note that it doesn't free the item from memory, so it can be reused later. "
@@ -26917,6 +49632,9 @@ msgstr ""
"释放该项,所以之åŽå¯é‡æ–°ä½¿ç”¨ã€‚è¦å®Œå…¨åˆ é™¤ä¸€ä¸ª [TreeItem],请使用 [method "
"Object.free]。"
+msgid "Selects the given [param column]."
+msgstr "选中 [param column] 指定的列。"
+
msgid ""
"Sets the given column's custom background color and whether to just use it "
"as an outline."
@@ -26925,6 +49643,16 @@ msgstr "设置给定列的自定义背景颜色,以åŠæ˜¯å¦åªå°†å…¶ä½œä¸ºä¸€
msgid "Sets the given column's custom color."
msgstr "设置给定列的自定义颜色。"
+msgid "If [code]true[/code], the given [param column] is editable."
+msgstr "如果为 [code]true[/code],则给定的列 [param column] å¯ç¼–辑。"
+
+msgid ""
+"If [code]true[/code], the given [param column] is expanded to the right."
+msgstr "如果为 [code]true[/code],则给定的列 [param column] å‘å³æ‰©å±•ã€‚"
+
+msgid "Sets the given column's icon [Texture2D]."
+msgstr "设置给定列的图标 [Texture2D]。"
+
msgid "Sets the given column's icon's maximum width."
msgstr "设置给定列图标的最大宽度。"
@@ -26988,10 +49716,16 @@ msgid ""
"[Tweener]s."
msgstr "通过脚本进行通用动画的轻é‡çº§å¯¹è±¡ï¼Œä½¿ç”¨ [Tweener]。"
+msgid "Aborts all tweening operations and invalidates the [Tween]."
+msgstr "中止所有补间æ“作,并使该 [Tween] 无效。"
+
msgid ""
"Pauses the tweening. The animation can be resumed by using [method play]."
msgstr "æš‚åœè¡¥é—´ã€‚å¯ä»¥ä½¿ç”¨ [method play] æ¢å¤åŠ¨ç”»ã€‚"
+msgid "Resumes a paused or stopped [Tween]."
+msgstr "æ¢å¤å·²æš‚åœæˆ–å·²åœæ­¢çš„ [Tween]。"
+
msgid ""
"Scales the speed of tweening. This affects all [Tweener]s and their delays."
msgstr "补间的速度缩放。影å“所有 [Tweener] åŠå…¶å»¶è¿Ÿã€‚"
@@ -27004,6 +49738,26 @@ msgstr ""
"完æˆä¸€æ¬¡å¾ªçŽ¯æ—¶è§¦å‘ï¼ˆè§ [method set_loops]),会æ供该循环的索引å·ã€‚这个信å·ä¸"
"会在最åŽä¸€æ¬¡å¾ªçŽ¯åŽè§¦å‘,这ç§æƒ…况请使用 [signal finished] 代替。"
+msgid "The [Tween] updates during the physics frame."
+msgstr "该 [Tween] 在物ç†å¸§æœŸé—´æ›´æ–°ã€‚"
+
+msgid "The [Tween] updates during the idle frame."
+msgstr "该 [Tween] 在空闲帧期间更新。"
+
+msgid ""
+"If the [Tween] has a bound node, it will process when that node can process "
+"(see [member Node.process_mode]). Otherwise it's the same as [constant "
+"TWEEN_PAUSE_STOP]."
+msgstr ""
+"如果该 [Tween] 绑定了节点,它将在该节点å¯ä»¥å¤„ç†æ—¶è¿›è¡Œå¤„ç†ï¼ˆè§ [member Node."
+"process_mode])。å¦åˆ™ä¸Ž [constant TWEEN_PAUSE_STOP] 相åŒã€‚"
+
+msgid "If [SceneTree] is paused, the [Tween] will also pause."
+msgstr "如果 [SceneTree] 被暂åœï¼Œåˆ™è¯¥ [Tween] 也会暂åœã€‚"
+
+msgid "The [Tween] will process regardless of whether [SceneTree] is paused."
+msgstr "无论 [SceneTree] 是å¦è¢«æš‚åœï¼Œè¯¥ [Tween] 都会处ç†ã€‚"
+
msgid "The animation is interpolated linearly."
msgstr "动画是线性æ’值的。"
@@ -27012,20 +49766,20 @@ msgstr "动画使用正弦函数进行æ’值。"
msgid ""
"The animation is interpolated with a quintic (to the power of 5) function."
-msgstr "åŠ¨ç”»æ˜¯ç”¨äº”æ¬¡æ–¹ï¼Œå³ 5 的幂函数进行æ’值的。"
+msgstr "动画使用五次(5 次方)函数进行æ’值。"
msgid ""
"The animation is interpolated with a quartic (to the power of 4) function."
-msgstr "åŠ¨ç”»æ˜¯ç”¨ä¸€ä¸ªå››æ¬¡æ–¹ï¼Œå³ 4 的幂函数æ’值的。"
+msgstr "动画使用四次(4 次方)函数进行æ’值。"
msgid ""
"The animation is interpolated with a quadratic (to the power of 2) function."
-msgstr "åŠ¨ç”»æ˜¯ç”¨äºŒæ¬¡æ–¹ï¼Œå³ 2 的幂函数æ’值的。"
+msgstr "动画使用二次(2 次方)函数进行æ’值。"
msgid ""
"The animation is interpolated with an exponential (to the power of x) "
"function."
-msgstr "åŠ¨ç”»æ˜¯ç”¨ä¸€ä¸ªæŒ‡æ•°ï¼Œå³ x 的幂函数æ’值的。"
+msgstr "动画使用指数(x 次方)函数进行æ’值。"
msgid ""
"The animation is interpolated with elasticity, wiggling around the edges."
@@ -27033,7 +49787,7 @@ msgstr "动画弹性æ’值,在边缘摆动。"
msgid ""
"The animation is interpolated with a cubic (to the power of 3) function."
-msgstr "åŠ¨ç”»æ˜¯ç”¨ä¸€ä¸ªç«‹æ–¹ï¼Œå³ 3 的幂函数æ’值的。"
+msgstr "动画使用三次(3 次方)函数进行æ’值。"
msgid "The animation is interpolated with a function using square roots."
msgstr "动画使用平方根的函数进行æ’值。"
@@ -27060,6 +49814,17 @@ msgid ""
"interpolation is fastest at both ends."
msgstr "[constant EASE_IN] å’Œ [constant EASE_OUT] 的组åˆã€‚两端的æ’值最快。"
+msgid "Abstract class for all Tweeners used by [Tween]."
+msgstr "[Tween] 使用的所有 Tweener(补间器)的抽象类。"
+
+msgid ""
+"Tweeners are objects that perform a specific animating task, e.g. "
+"interpolating a property or calling a method at a given time. A [Tweener] "
+"can't be created manually, you need to use a dedicated method from [Tween]."
+msgstr ""
+"Tweener 是执行特定动画化的任务的对象,例如,在给定的时间,æ’值一个属性或调用"
+"一个方法。[Tweener] ä¸èƒ½è¢«æ‰‹åŠ¨åˆ›å»ºï¼Œæ‚¨éœ€è¦ä½¿ç”¨ [Tween] 中的专用方法。"
+
msgid "Emitted when the [Tweener] has just finished its job."
msgstr "当该 [Tweener] 刚刚完æˆå…¶ä»»åŠ¡æ—¶è§¦å‘。"
@@ -27067,6 +49832,257 @@ msgid "Helper class to implement a UDP server."
msgstr "用于实现 UDP æœåŠ¡å™¨çš„辅助类。"
msgid ""
+"A simple server that opens a UDP socket and returns connected "
+"[PacketPeerUDP] upon receiving new packets. See also [method PacketPeerUDP."
+"connect_to_host].\n"
+"After starting the server ([method listen]), you will need to [method poll] "
+"it at regular intervals (e.g. inside [method Node._process]) for it to "
+"process new packets, delivering them to the appropriate [PacketPeerUDP], and "
+"taking new connections.\n"
+"Below a small example of how it can be used:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# server_node.gd\n"
+"class_name ServerNode\n"
+"extends Node\n"
+"\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+"\n"
+"func _process(delta):\n"
+" server.poll() # Important!\n"
+" if server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var packet = peer.get_packet()\n"
+" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer."
+"get_packet_port()])\n"
+" print(\"Received data: %s\" % [packet.get_string_from_utf8()])\n"
+" # Reply so it knows we received the message.\n"
+" peer.put_packet(packet)\n"
+" # Keep a reference so we can keep contacting the remote peer.\n"
+" peers.append(peer)\n"
+"\n"
+" for i in range(0, peers.size()):\n"
+" pass # Do something with the connected peers.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ServerNode.cs\n"
+"using Godot;\n"
+"using System.Collections.Generic;\n"
+"\n"
+"public partial class ServerNode : Node\n"
+"{\n"
+" private UdpServer _server = new UdpServer();\n"
+" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _server.Listen(4242);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" _server.Poll(); // Important!\n"
+" if (_server.IsConnectionAvailable())\n"
+" {\n"
+" PacketPeerUdp peer = _server.TakeConnection();\n"
+" byte[] packet = peer.GetPacket();\n"
+" GD.Print($\"Accepted Peer: {peer.GetPacketIP()}:{peer."
+"GetPacketPort()}\");\n"
+" GD.Print($\"Received Data: {packet.GetStringFromUtf8()}\");\n"
+" // Reply so it knows we received the message.\n"
+" peer.PutPacket(packet);\n"
+" // Keep a reference so we can keep contacting the remote peer.\n"
+" _peers.Add(peer);\n"
+" }\n"
+" foreach (var peer in _peers)\n"
+" {\n"
+" // Do something with the peers.\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# client_node.gd\n"
+"class_name ClientNode\n"
+"extends Node\n"
+"\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+"\n"
+"func _process(delta):\n"
+" if !connected:\n"
+" # Try to contact server\n"
+" udp.put_packet(\"The answer is... 42!\".to_utf8())\n"
+" if udp.get_available_packet_count() > 0:\n"
+" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n"
+" connected = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ClientNode.cs\n"
+"using Godot;\n"
+"\n"
+"public partial class ClientNode : Node\n"
+"{\n"
+" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
+" private bool _connected = false;\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" if (!_connected)\n"
+" {\n"
+" // Try to contact server\n"
+" _udp.PutPacket(\"The Answer Is..42!\".ToUtf8());\n"
+" }\n"
+" if (_udp.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"Connected: {_udp.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" _connected = true;\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"一个简å•çš„æœåŠ¡ï¼Œå®ƒæ‰“开一个 UDP 套接字,并在接收到新数æ®åŒ…时,返回已连接的 "
+"[PacketPeerUDP]。å¦è§ [method PacketPeerUDP.connect_to_host]。\n"
+"在å¯åŠ¨æœåŠ¡ï¼ˆ[method listen])åŽï¼Œæ‚¨éœ€è¦å®šæœŸï¼ˆä¾‹å¦‚在 [method Node._process] 内"
+"部)对其 [method poll],以处ç†æ–°çš„æ•°æ®åŒ…,将数æ®åŒ…传递给适当的 "
+"[PacketPeerUDP],并且接å—新的连接。\n"
+"下é¢æ˜¯ä¸€ä¸ªå¦‚何使用它的å°ä¾‹å­ï¼š\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# server_node.gd\n"
+"class_name ServerNode\n"
+"extends Node\n"
+"\n"
+"var server := UDPServer.new()\n"
+"var peers = []\n"
+"\n"
+"func _ready():\n"
+" server.listen(4242)\n"
+"\n"
+"func _process(delta):\n"
+" server.poll() # é‡è¦ï¼\n"
+" if server.is_connection_available():\n"
+" var peer : PacketPeerUDP = server.take_connection()\n"
+" var packet = peer.get_packet()\n"
+" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer."
+"get_packet_port()])\n"
+" print(\"Received data: %s\" % [packet.get_string_from_utf8()])\n"
+" # 回å¤ï¼Œä»¥ä¾¿å®ƒçŸ¥é“我们收到了消æ¯ã€‚\n"
+" peer.put_packet(packet)\n"
+" # ä¿ç•™ä¸€ä¸ªå¼•ç”¨ï¼Œä»¥ä¾¿æˆ‘们å¯ä»¥ç»§ç»­è”系远程对等体。\n"
+" peers.append(peer)\n"
+"\n"
+" for i in range(0, peers.size()):\n"
+" pass # 与已连接的对等体,一起åšä¸€äº›äº‹æƒ…。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ServerNode.cs\n"
+"using Godot;\n"
+"using System.Collections.Generic;\n"
+"\n"
+"public partial class ServerNode : Node\n"
+"{\n"
+" private UdpServer _server = new UdpServer();\n"
+" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _server.Listen(4242);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" _server.Poll(); // é‡è¦ï¼\n"
+" if (_server.IsConnectionAvailable())\n"
+" {\n"
+" PacketPeerUdp peer = _server.TakeConnection();\n"
+" byte[] packet = peer.GetPacket();\n"
+" GD.Print($\"Accepted Peer: {peer.GetPacketIP()}:{peer."
+"GetPacketPort()}\");\n"
+" GD.Print($\"Received Data: {packet.GetStringFromUtf8()}\");\n"
+" // 回å¤ï¼Œä»¥ä¾¿å®ƒçŸ¥é“我们收到了消æ¯ã€‚\n"
+" peer.PutPacket(packet);\n"
+" // ä¿ç•™ä¸€ä¸ªå¼•ç”¨ï¼Œä»¥ä¾¿æˆ‘们å¯ä»¥ç»§ç»­è”系远程对等体。\n"
+" _peers.Add(peer);\n"
+" }\n"
+" foreach (var peer in _peers)\n"
+" {\n"
+" // 与对等体,一起åšä¸€äº›äº‹æƒ…。\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# client_node.gd\n"
+"class_name ClientNode\n"
+"extends Node\n"
+"\n"
+"var udp := PacketPeerUDP.new()\n"
+"var connected = false\n"
+"\n"
+"func _ready():\n"
+" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
+"\n"
+"func _process(delta):\n"
+" if !connected:\n"
+" # å°è¯•è”ç³»æœåŠ¡å™¨\n"
+" udp.put_packet(\"The answer is... 42!\".to_utf8())\n"
+" if udp.get_available_packet_count() > 0:\n"
+" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n"
+" connected = true\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// ClientNode.cs\n"
+"using Godot;\n"
+"\n"
+"public partial class ClientNode : Node\n"
+"{\n"
+" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
+" private bool _connected = false;\n"
+"\n"
+" public override void _Ready()\n"
+" {\n"
+" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
+" }\n"
+"\n"
+" public override void _Process(double delta)\n"
+" {\n"
+" if (!_connected)\n"
+" {\n"
+" // å°è¯•è”ç³»æœåŠ¡å™¨\n"
+" _udp.PutPacket(\"The Answer Is..42!\".ToUtf8());\n"
+" }\n"
+" if (_udp.GetAvailablePacketCount() > 0)\n"
+" {\n"
+" GD.Print($\"Connected: {_udp.GetPacket()."
+"GetStringFromUtf8()}\");\n"
+" _connected = true;\n"
+" }\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns [code]true[/code] if a packet with a new address/port combination "
"was received on the socket."
msgstr ""
@@ -27122,6 +50138,22 @@ msgstr ""
msgid "Helper to manage undo/redo operations in the editor or custom tools."
msgstr "在编辑器或自定义工具中管ç†æ’¤é”€åŠé‡åšæ“作的辅助工具。"
+msgid "Gets the action name from its index."
+msgstr "æ ¹æ®ç´¢å¼•èŽ·å–动作å称。"
+
+msgid "Gets the index of the current action."
+msgstr "获å–当å‰åŠ¨ä½œçš„索引。"
+
+msgid ""
+"Gets the name of the current action, equivalent to "
+"[code]get_action_name(get_current_action())[/code]."
+msgstr ""
+"获å–当å‰åŠ¨ä½œçš„å称,等价于 [code]get_action_name(get_current_action())[/"
+"code]。"
+
+msgid "Returns how many elements are in the history."
+msgstr "返回历å²ä¸­æœ‰å¤šå°‘元素。"
+
msgid ""
"Gets the version. Every time a new action is committed, the [UndoRedo]'s "
"version number is increased automatically.\n"
@@ -27430,6 +50462,222 @@ msgstr "内存分é…错误。"
msgid "The most important data type in Godot."
msgstr "Godot 中最é‡è¦çš„æ•°æ®ç±»åž‹ã€‚"
+msgid ""
+"In computer programming, a Variant class is a class that is designed to "
+"store a variety of other types. Dynamic programming languages like PHP, Lua, "
+"JavaScript and GDScript like to use them to store variables' data on the "
+"backend. With these Variants, properties are able to change value types "
+"freely.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = 2 # foo is dynamically an integer\n"
+"foo = \"Now foo is a string!\"\n"
+"foo = RefCounted.new() # foo is an Object\n"
+"var bar: int = 2 # bar is a statically typed integer.\n"
+"# bar = \"Uh oh! I can't make static variables become a different type!\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C# is statically typed. Once a variable has a type it cannot be changed. "
+"You can use the `var` keyword to let the compiler infer the type "
+"automatically.\n"
+"var foo = 2; // Foo is a 32-bit integer (int). Be cautious, integers in "
+"GDScript are 64-bit and the direct C# equivalent is `long`.\n"
+"// foo = \"foo was and will always be an integer. It cannot be turned into a "
+"string!\";\n"
+"var boo = \"Boo is a string!\";\n"
+"var ref = new RefCounted(); // var is especially useful when used together "
+"with a constructor.\n"
+"\n"
+"// Godot also provides a Variant type that works like an union of all the "
+"Variant-compatible types.\n"
+"Variant fooVar = 2; // fooVar is dynamically an integer (stored as a `long` "
+"in the Variant type).\n"
+"fooVar = \"Now fooVar is a string!\";\n"
+"fooVar = new RefCounted(); // fooVar is a GodotObject.\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Godot tracks all scripting API variables within Variants. Without even "
+"realizing it, you use Variants all the time. When a particular language "
+"enforces its own rules for keeping data typed, then that language is "
+"applying its own custom logic over the base Variant scripting API.\n"
+"- GDScript automatically wrap values in them. It keeps all data in plain "
+"Variants by default and then optionally enforces custom static typing rules "
+"on variable types.\n"
+"- C# is statically typed, but uses its own implementation of the "
+"[code]Variant[/code] type in place of Godot's Variant class when it needs to "
+"represent a dynamic value. A [code]Variant[/code] can be assigned any "
+"compatible type implicitly but converting requires an explicit cast.\n"
+"The global [method @GlobalScope.typeof] function returns the enumerated "
+"value of the Variant type stored in the current variable (see [enum Variant."
+"Type]).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = 2\n"
+"match typeof(foo):\n"
+" TYPE_NIL:\n"
+" print(\"foo is null\")\n"
+" TYPE_INTEGER:\n"
+" print(\"foo is an integer\")\n"
+" TYPE_OBJECT:\n"
+" # Note that Objects are their own special category.\n"
+" # To get the name of the underlying Object type, you need the "
+"`get_class()` method.\n"
+" print(\"foo is a(n) %s\" % foo.get_class()) # inject the class name "
+"into a formatted string.\n"
+" # Note also that there is not yet any way to get a script's "
+"`class_name` string easily.\n"
+" # To fetch that value, you can use [member ProjectSettings."
+"get_global_class_list].\n"
+" # Open your project.godot file to see it up close.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"Variant foo = 2;\n"
+"switch (foo.VariantType)\n"
+"{\n"
+" case Variant.Type.Nil:\n"
+" GD.Print(\"foo is null\");\n"
+" break;\n"
+" case Variant.Type.Int:\n"
+" GD.Print(\"foo is an integer\");\n"
+" break;\n"
+" case Variant.Type.Object:\n"
+" // Note that Objects are their own special category.\n"
+" // You can convert a Variant to a GodotObject and use reflection to "
+"get its name.\n"
+" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n"
+" break;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"A Variant takes up only 20 bytes and can store almost any engine datatype "
+"inside of it. Variants are rarely used to hold information for long periods "
+"of time. Instead, they are used mainly for communication, editing, "
+"serialization and moving data around.\n"
+"Godot has specifically invested in making its Variant class as flexible as "
+"possible; so much so that it is used for a multitude of operations to "
+"facilitate communication between all of Godot's systems.\n"
+"A Variant:\n"
+"- Can store almost any datatype.\n"
+"- Can perform operations between many variants. GDScript uses Variant as its "
+"atomic/native datatype.\n"
+"- Can be hashed, so it can be compared quickly to other variants.\n"
+"- Can be used to convert safely between datatypes.\n"
+"- Can be used to abstract calling methods and their arguments. Godot exports "
+"all its functions through variants.\n"
+"- Can be used to defer calls or move data between threads.\n"
+"- Can be serialized as binary and stored to disk, or transferred via "
+"network.\n"
+"- Can be serialized to text and use it for printing values and editable "
+"settings.\n"
+"- Can work as an exported property, so the editor can edit it universally.\n"
+"- Can be used for dictionaries, arrays, parsers, etc.\n"
+"[b]Containers (Array and Dictionary):[/b] Both are implemented using "
+"variants. A [Dictionary] can match any datatype used as key to any other "
+"datatype. An [Array] just holds an array of Variants. Of course, a Variant "
+"can also hold a [Dictionary] and an [Array] inside, making it even more "
+"flexible.\n"
+"Modifications to a container will modify all references to it. A [Mutex] "
+"should be created to lock it if multi-threaded access is desired."
+msgstr ""
+"在计算机编程中,Variant(å˜ä½“)类是用æ¥å­˜å‚¨å„ç§å…¶ä»–ç±»åž‹çš„ç±»ã€‚åƒ PHP〠Lua〠"
+"JavaScript å’Œ GDScript 这样的动æ€ç¼–程语言喜欢用它们在åŽç«¯å­˜å‚¨å˜é‡æ•°æ®ã€‚使用 "
+"Variant,属性å¯ä»¥è‡ªç”±åœ°æ›´æ”¹å€¼ç±»åž‹ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = 2 # foo 是动æ€ç±»åž‹çš„æ•´æ•°\n"
+"foo = \"现在 foo 是字符串ï¼\"\n"
+"foo = RefCounted.new() # foo 是 Object\n"
+"var bar: int = 2 # bar 是é™æ€ç±»åž‹çš„整数。\n"
+"# bar = \"诶呀ï¼æˆ‘没法让é™æ€ç±»åž‹çš„å˜é‡å˜æˆå…¶ä»–类型ï¼\"\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// C# 是é™æ€ç±»åž‹çš„。å˜é‡è®¾ç½®ç±»åž‹åŽæ— æ³•æ”¹å˜ã€‚ä½ å¯ä»¥ç”¨ `var` 关键字让编译器自动"
+"推断类型。\n"
+"var foo = 2; // foo 是 32 ä½æ•´æ•°ï¼ˆint)。请注æ„,GDScript 中的整数是 64 ä½"
+"的,在 C# 中与之等价的是 `long`。\n"
+"// foo = \"foo 过去ã€çŽ°åœ¨ã€å°†æ¥éƒ½æ˜¯æ•´æ•°ï¼Œæ²¡æ³•å˜æˆå­—符串ï¼\";\n"
+"var boo = \"boo 是字符串ï¼\";\n"
+"var ref = new RefCounted(); // var éžå¸¸é€‚åˆä¸Žæž„造函数é…åˆä½¿ç”¨ã€‚\n"
+"\n"
+"// Godot 也æ供了 Variant 类,类似于所有与 Variant 兼容类型的 union。\n"
+"Variant fooVar = 2; // fooVar 是动æ€ç±»åž‹çš„整数(在 Variant 类型中存储为 "
+"`long`)。\n"
+"fooVar = \"现在 fooVar 是字符串ï¼\";\n"
+"fooVar = new RefCounted(); // fooVar 是 GodotObject。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Godot 在 Variant 中跟踪所有脚本 API å˜é‡ã€‚你一直在无æ„中使用 Variant。æŸç§è¯­"
+"言为ä¿æŒæ•°æ®ç±»åž‹è€Œæ‰§è¡Œè‡ªå·±çš„规则时,那么就是该语言在基础 Variant 脚本 API 上"
+"应用了自定义的逻辑。\n"
+"- GDScript 会自动将数值进行包装。默认情况下会将所有数æ®ä¿å­˜åœ¨æ™®é€šçš„ Variant "
+"中,也å¯ä»¥é€‰æ‹©å¯¹å˜é‡ç±»åž‹æ‰§è¡Œè‡ªå®šä¹‰çš„é™æ€ç±»åž‹è§„则。\n"
+"- C# 是é™æ€ç±»åž‹çš„,但是当它需è¦è¡¨ç¤ºåŠ¨æ€å€¼æ—¶ï¼Œå°±ä¼šåœ¨éœ€è¦ Godot çš„ Variant 类的"
+"地方使用它自己实现的 [code]Variant[/code] 类型。[code]Variant[/code] å¯ä»¥ç”¨ä»»"
+"æ„兼容类型éšå¼èµ‹å€¼ï¼Œä½†å之则需è¦æ˜¾å¼ç±»åž‹è½¬æ¢ã€‚\n"
+"全局函数 [method @GlobalScope.typeof] 返回的是枚举类型的值,表示当å‰å˜é‡ä¸­æ‰€"
+"存储的 Variant ç±»åž‹ï¼ˆè§ [enum Variant.Type])。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var foo = 2\n"
+"match typeof(foo):\n"
+" TYPE_NIL:\n"
+" print(\"foo 为 null\")\n"
+" TYPE_INTEGER:\n"
+" print(\"foo 为整数\")\n"
+" TYPE_OBJECT:\n"
+" # 请注æ„,Object 有自己的特殊分类。\n"
+" # è¦èŽ·å–实际的 Object 类型å称,你需è¦ä½¿ç”¨ `get_class()` 方法。\n"
+" print(\"foo is a(n) %s\" % foo.get_class()) # 将类å注入格å¼å­—符串"
+"中。\n"
+" # å¦å¤–请注æ„,目å‰æ²¡æœ‰æ¯”较方便的方法æ¥èŽ·å–脚本的 `class_name` 字符"
+"串。\n"
+" # 如果è¦èŽ·å–,你å¯ä»¥ä½¿ç”¨ [member ProjectSettings."
+"get_global_class_list]。\n"
+" # 请打开 project.godot 文件查看。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"Variant foo = 2;\n"
+"switch (foo.VariantType)\n"
+"{\n"
+" case Variant.Type.Nil:\n"
+" GD.Print(\"foo 为 null\");\n"
+" break;\n"
+" case Variant.Type.Int:\n"
+" GD.Print(\"foo 为整数\");\n"
+" break;\n"
+" case Variant.Type.Object:\n"
+" // 请注æ„,Object 有自己的特殊分类。\n"
+" // å¯ä»¥å°† Variant 转æ¢ä¸º GodotObject,通过å射获å–å称。\n"
+" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n"
+" break;\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Variant åªå  20 个字节,å¯ä»¥åœ¨å…¶ä¸­å­˜å‚¨å‡ ä¹Žæ‰€æœ‰çš„引擎数æ®ç±»åž‹ã€‚Variant 很少用"
+"于长期ä¿å­˜ä¿¡æ¯ï¼Œä¸»è¦è¿˜æ˜¯ç”¨äºŽé€šä¿¡ã€ç¼–辑ã€åºåˆ—化和移动数æ®ã€‚\n"
+"Godot 特别致力于使其 Variant 类尽å¯èƒ½çµæ´»ï¼›ä»¥ä½¿å®ƒå¯è¢«ç”¨äºŽå„ç§æ“作,促进 "
+"Godot 所有系统之间的è”系。\n"
+"Variant:\n"
+"- å¯ä»¥å­˜å‚¨å‡ ä¹Žä»»ä½•æ•°æ®ç±»åž‹ã€‚\n"
+"- å¯ä»¥åœ¨è®¸å¤š Variant 之间执行æ“作。GDScript 使用 Variant 作为其原å­/原生数æ®"
+"类型。\n"
+"- å¯ä»¥è¢«å“ˆå¸Œï¼Œæ‰€ä»¥å¯ä»¥å¿«é€Ÿä¸Žå…¶ä»– Variant 进行比较。\n"
+"- å¯ä»¥ç”¨äºŽæ•°æ®ç±»åž‹ä¹‹é—´çš„安全转æ¢ã€‚\n"
+"- å¯ä»¥ç”¨æ¥æŠ½è±¡è°ƒç”¨æ–¹æ³•å’Œå®ƒä»¬çš„å‚数。Godot 通过 Variant 导出所有函数。\n"
+"- å¯ä»¥ç”¨æ¥æŽ¨è¿Ÿè°ƒç”¨æˆ–在线程之间移动数æ®ã€‚\n"
+"- å¯ä»¥åºåˆ—化为二进制并存储到ç£ç›˜ï¼Œæˆ–通过网络传输。\n"
+"- å¯ä»¥åºåˆ—化为文本,用于打å°æ•°å€¼å’Œå¯ç¼–辑设置项。\n"
+"- å¯ä»¥ä½œä¸ºä¸€ä¸ªå¯¼å‡ºçš„属性工作,所以编辑器å¯ä»¥é€šç”¨åœ°è¿›è¡Œç¼–辑。\n"
+"- å¯ä»¥ç”¨äºŽå­—å…¸ã€æ•°ç»„ã€è§£æžå™¨ç­‰ã€‚\n"
+"[b]容器(数组和字典):[/b]它们都是用 Variant æ¥å®žçŽ°çš„。[Dictionary] å¯ä»¥å°†ä»»"
+"何作为键的数æ®ç±»åž‹åŒ¹é…到到任何其他数æ®ç±»åž‹ã€‚[Array] 就是æŒæœ‰ Variant 的数组。"
+"当然,Variant 也å¯ä»¥åœ¨é‡Œé¢å†å®¹çº³ [Dictionary] å’Œ [Array],使其更加çµæ´»ã€‚\n"
+"对容器的修改会修改所有对它的引用。如果需è¦å¤šçº¿ç¨‹è®¿é—®ï¼Œåº”该创建 [Mutex] æ¥å¯¹å®ƒ"
+"进行é”定。"
+
+msgid "Variant class introduction"
+msgstr "Variant 类简介"
+
msgid "Vertical box container."
msgstr "åž‚ç›´ç›’å¼å®¹å™¨ã€‚"
@@ -27439,12 +50687,21 @@ msgstr "åž‚ç›´ç›’å¼å®¹å™¨ã€‚请å‚阅 [BoxContainer]。"
msgid "The vertical space between the [VBoxContainer]'s elements."
msgstr "[VBoxContainer] 的元素之间的垂直空间。"
+msgid "Vector used for 2D math using floating point coordinates."
+msgstr "浮点数åæ ‡å‘é‡ï¼Œç”¨äºŽ 2D 数学。"
+
msgid "3Blue1Brown Essence of Linear Algebra"
msgstr "3Blue1Brown《线性代数的本质》"
msgid "Constructs a [Vector2] as a copy of the given [Vector2]."
msgstr "构造给定 [Vector2] 的副本。"
+msgid "Constructs a new [Vector2] from [Vector2i]."
+msgstr "从 [Vector2i] 构造新的 [Vector2]。"
+
+msgid "Constructs a new [Vector2] from the given [param x] and [param y]."
+msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2]。"
+
msgid ""
"Returns a new vector with all components in absolute values (i.e. positive)."
msgstr "返回一个新的å‘é‡ï¼Œå…¶æ‰€æœ‰åˆ†é‡éƒ½æ˜¯ç»å¯¹å€¼ï¼Œå³æ­£å€¼ã€‚"
@@ -27474,6 +50731,13 @@ msgid ""
msgstr "返回一个新的å‘é‡ï¼Œæ‰€æœ‰çš„å‘é‡éƒ½è¢«å››èˆäº”入,å‘负无穷大。"
msgid ""
+"Returns [code]true[/code] if this vector is finite, by calling [method "
+"@GlobalScope.is_finite] on each component."
+msgstr ""
+"如果该å‘é‡æ— ç©·ï¼Œåˆ™è¿”回 [code]true[/code],判断方法是对æ¯ä¸ªåˆ†é‡è°ƒç”¨ [method "
+"@GlobalScope.is_finite]。"
+
+msgid ""
"Returns [code]true[/code] if the vector is normalized, [code]false[/code] "
"otherwise."
msgstr ""
@@ -27512,6 +50776,18 @@ msgid ""
"[1][/code]."
msgstr "å‘é‡çš„ Y 分é‡ã€‚也å¯ä»¥é€šè¿‡ä½¿ç”¨ç´¢å¼•ä½ç½® [code][1][/code] 访问。"
+msgid ""
+"Enumerated value for the X axis. Returned by [method max_axis_index] and "
+"[method min_axis_index]."
+msgstr ""
+"X 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。"
+
+msgid ""
+"Enumerated value for the Y axis. Returned by [method max_axis_index] and "
+"[method min_axis_index]."
+msgstr ""
+"Y 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。"
+
msgid "Zero vector, a vector with all components set to [code]0[/code]."
msgstr "零å‘é‡ï¼Œæ‰€æœ‰åˆ†é‡éƒ½è®¾ç½®ä¸º [code]0[/code] çš„å‘é‡ã€‚"
@@ -27535,12 +50811,170 @@ msgstr "上å•ä½å‘é‡ã€‚在 2D 中 Y 是å‘下的,所以这个å‘é‡æŒ‡å‘ -
msgid "Down unit vector. Y is down in 2D, so this vector points +Y."
msgstr "下å•ä½å‘é‡ã€‚在 2D 中 Y 是å‘下的,所以这个å‘é‡æŒ‡å‘ +Y。"
+msgid ""
+"Multiplies each component of the [Vector2] by the components of the given "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) * Vector2(3, 4)) # Prints \"(30, 80)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector2] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) * Vector2(3, 4)) # 输出 \"(30, 80)\"\n"
+"[/codeblock]"
+
+msgid "Multiplies each component of the [Vector2] by the given [float]."
+msgstr "将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。"
+
+msgid "Multiplies each component of the [Vector2] by the given [int]."
+msgstr "将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [int]。"
+
+msgid ""
+"Adds each component of the [Vector2] by the components of the given "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) + Vector2(3, 4)) # Prints \"(13, 24)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector2] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) + Vector2(3, 4)) # 输出 \"(13, 24)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector2] by the components of the given "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) - Vector2(3, 4)) # Prints \"(7, 16)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector2] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) - Vector2(3, 4)) # 输出 \"(7, 16)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector2] by the components of the given "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) / Vector2(2, 5)) # Prints \"(5, 4)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector2] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2(10, 20) / Vector2(2, 5)) # 输出 \"(5, 4)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector2] by the given [float]."
+msgstr "将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。"
+
+msgid "Divides each component of the [Vector2] by the given [int]."
+msgstr "将该 [Vector2] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Vector used for 2D math using integer coordinates."
+msgstr "æ•´æ•°åæ ‡å‘é‡ï¼Œç”¨äºŽ 2D 数学。"
+
msgid "Constructs a [Vector2i] as a copy of the given [Vector2i]."
msgstr "构造给定 [Vector2i] 的副本。"
+msgid ""
+"Constructs a new [Vector2i] from [Vector2]. The floating point coordinates "
+"will be truncated."
+msgstr "从 [Vector2] 构造新的 [Vector2i]。浮点数å标将被截断。"
+
+msgid "Constructs a new [Vector2i] from the given [param x] and [param y]."
+msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2i]。"
+
+msgid "Returns [code]true[/code] if the vectors are not equal."
+msgstr "如果å‘é‡ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回 [code]true[/code]。"
+
+msgid ""
+"Multiplies each component of the [Vector2i] by the components of the given "
+"[Vector2i].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) * Vector2i(3, 4)) # Prints \"(30, 80)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector2i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) * Vector2i(3, 4)) # 输出 \"(30, 80)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Vector2i] by the given [float]. Returns a "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 15) * 0.9) # Prints \"(9, 13.5)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。返回的是 [Vector2]。\n"
+"[codeblock]\n"
+"print(Vector2i(10, 15) * 0.9) # 输出 \"(9, 13.5)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Adds each component of the [Vector2i] by the components of the given "
+"[Vector2i].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) + Vector2i(3, 4)) # Prints \"(13, 24)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector2i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) + Vector2i(3, 4)) # 输出 \"(13, 24)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector2i] by the components of the given "
+"[Vector2i].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) - Vector2i(3, 4)) # Prints \"(7, 16)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector2i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) - Vector2i(3, 4)) # 输出 \"(7, 16)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector2i] by the components of the given "
+"[Vector2i].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) / Vector2i(2, 5)) # Prints \"(5, 4)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector2i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) / Vector2i(2, 5)) # 输出 \"(5, 4)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector2i] by the given [float]. Returns a "
+"[Vector2].\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) / 2.9) # Prints \"(5, 10)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。返回的是 [Vector2]。\n"
+"[codeblock]\n"
+"print(Vector2i(10, 20) / 2.9) # 输出 \"(5, 10)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector2i] by the given [int]."
+msgstr "将该 [Vector2i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Vector used for 3D math using floating point coordinates."
+msgstr "浮点数åæ ‡å‘é‡ï¼Œç”¨äºŽ 3D 数学。"
+
msgid "Constructs a [Vector3] as a copy of the given [Vector3]."
msgstr "构造给定 [Vector3] 的副本。"
+msgid "Constructs a new [Vector3] from [Vector3i]."
+msgstr "从 [Vector3i] 构造新的 [Vector3]。"
+
+msgid "Returns a [Vector3] with the given components."
+msgstr "返回具有给定分é‡çš„ [Vector3]。"
+
msgid "Returns the unsigned minimum angle to the given vector, in radians."
msgstr "返回与给定å‘é‡çš„无符å·æœ€å°è§’度,å•ä½ä¸ºå¼§åº¦ã€‚"
@@ -27554,6 +50988,12 @@ msgid ""
msgstr "å‘é‡çš„ Z 分é‡ã€‚也å¯ä»¥é€šè¿‡ä½¿ç”¨ç´¢å¼•ä½ç½® [code][2][/code] 访问。"
msgid ""
+"Enumerated value for the Z axis. Returned by [method max_axis_index] and "
+"[method min_axis_index]."
+msgstr ""
+"Z 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。"
+
+msgid ""
"Left unit vector. Represents the local direction of left, and the global "
"direction of west."
msgstr "å·¦å•ä½å‘é‡ã€‚代表局部的左方å‘,全局的西方å‘。"
@@ -27579,15 +51019,352 @@ msgid ""
"direction of south."
msgstr "åŽå•ä½å‘é‡ã€‚代表局部的åŽæ–¹å‘,全局的å—æ–¹å‘。"
+msgid ""
+"Inversely transforms (multiplies) the [Vector3] by the given [Basis] matrix."
+msgstr "使用给定的 [Basis] 矩阵逆å˜æ¢ï¼ˆä¹˜ï¼‰è¯¥ [Vector3]。"
+
+msgid ""
+"Multiplies each component of the [Vector3] by the components of the given "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # Prints \"(30, 80, 150)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector3] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # 输出 \"(30, 80, 150)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Adds each component of the [Vector3] by the components of the given "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) + Vector3(3, 4, 5)) # Prints \"(13, 24, 35)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector3] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) + Vector3(3, 4, 5)) # 输出 \"(13, 24, 35)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector3] by the components of the given "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) - Vector3(3, 4, 5)) # Prints \"(7, 16, 25)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector3] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) - Vector3(3, 4, 5)) # 输出 \"(7, 16, 25)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector3] by the components of the given "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) / Vector3(2, 5, 3)) # Prints \"(5, 4, 10)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector3] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3(10, 20, 30) / Vector3(2, 5, 3)) # 输出 \"(5, 4, 10)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector3] by the given [float]."
+msgstr "将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。"
+
+msgid "Divides each component of the [Vector3] by the given [int]."
+msgstr "将该 [Vector3] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Vector used for 3D math using integer coordinates."
+msgstr "æ•´æ•°åæ ‡å‘é‡ï¼Œç”¨äºŽ 3D 数学。"
+
msgid "Constructs a [Vector3i] as a copy of the given [Vector3i]."
msgstr "构造给定 [Vector3i] 的副本。"
+msgid ""
+"Constructs a new [Vector3i] from [Vector3]. The floating point coordinates "
+"will be truncated."
+msgstr "从 [Vector3] 构造新的 [Vector3i]。浮点数å标将被截断。"
+
+msgid "Returns a [Vector3i] with the given components."
+msgstr "返回具有给定分é‡çš„ [Vector3i]。"
+
+msgid ""
+"Multiplies each component of the [Vector3i] by the components of the given "
+"[Vector3i].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # Prints \"(30, 80, 150)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector3i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # 输出 \"(30, 80, 150)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Vector3i] by the given [float]. Returns a "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 15, 20) * 0.9) # Prints \"(9, 13.5, 18)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。返回的是 [Vector3]。\n"
+"[codeblock]\n"
+"print(Vector3i(10, 15, 20) * 0.9) # 输出 \"(9, 13.5, 18)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Adds each component of the [Vector3i] by the components of the given "
+"[Vector3i].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # Prints \"(13, 24, 35)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector3i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # 输出 \"(13, 24, 35)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector3i] by the components of the given "
+"[Vector3i].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # Prints \"(7, 16, 25)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector3i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # 输出 \"(7, 16, 25)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector3i] by the components of the given "
+"[Vector3i].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # Prints \"(5, 4, 10)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector3i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # 输出 \"(5, 4, 10)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector3i] by the given [float]. Returns a "
+"[Vector3].\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) / 2.9) # Prints \"(5, 10, 15)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。返回的是 [Vector3]。\n"
+"[codeblock]\n"
+"print(Vector3i(10, 20, 30) / 2.9) # 输出 \"(5, 10, 15)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector3i] by the given [int]."
+msgstr "将该 [Vector3i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Vector used for 4D math using floating point coordinates."
+msgstr "浮点数åæ ‡å‘é‡ï¼Œç”¨äºŽ 4D 数学。"
+
msgid "Constructs a [Vector4] as a copy of the given [Vector4]."
msgstr "构造给定 [Vector4] 的副本。"
+msgid "Constructs a new [Vector4] from the given [Vector4i]."
+msgstr "从给定的 [Vector4i] 构造新的 [Vector4]。"
+
+msgid "Returns a [Vector4] with the given components."
+msgstr "返回具有给定分é‡çš„ [Vector4]。"
+
+msgid "Returns the dot product of this vector and [param with]."
+msgstr "返回该å‘é‡ä¸Ž [param with] 的点积。"
+
+msgid ""
+"Enumerated value for the W axis. Returned by [method max_axis_index] and "
+"[method min_axis_index]."
+msgstr ""
+"W 轴的枚举值。由 [method max_axis_index] 和 [method min_axis_index] 返回。"
+
+msgid ""
+"Multiplies each component of the [Vector4] by the components of the given "
+"[Vector4].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # Prints \"(30, 80, "
+"150, 240)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector4] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # 输出 \"(30, 80, 150, "
+"240)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Vector4] by the given [float].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) * 2) # Prints \"(20, 40, 60, 80)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Adds each component of the [Vector4] by the components of the given "
+"[Vector4].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # Prints \"(13, 24, 35, "
+"46)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector4] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # 输出 \"(13, 24, 35, "
+"46)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector4] by the components of the given "
+"[Vector4].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # Prints \"(7, 16, 25, "
+"34)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector4] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # 输出 \"(7, 16, 25, "
+"34)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector4] by the components of the given "
+"[Vector4].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # Prints \"(5, 4, 10, "
+"10)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector4] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # 输出 \"(5, 4, 10, "
+"10)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector4] by the given [float].\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) / 2 # Prints \"(5, 10, 15, 20)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。\n"
+"[codeblock]\n"
+"print(Vector4(10, 20, 30, 40) / 2 # 输出 \"(5, 10, 15, 20)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector4] by the given [int]."
+msgstr "将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
+msgid "Vector used for 4D math using integer coordinates."
+msgstr "æ•´æ•°åæ ‡å‘é‡ï¼Œç”¨äºŽ 4D 数学。"
+
msgid "Constructs a [Vector4i] as a copy of the given [Vector4i]."
msgstr "构造给定 [Vector4i] 的副本。"
+msgid "Constructs a new [Vector4i] from the given [Vector4]."
+msgstr "从给定的 [Vector4] 构造新的 [Vector4i]。"
+
+msgid "Returns a [Vector4i] with the given components."
+msgstr "返回具有给定分é‡çš„ [Vector4i]。"
+
+msgid ""
+"Multiplies each component of the [Vector4i] by the components of the given "
+"[Vector4i].\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6)) # Prints \"(30, 80, "
+"150, 240)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®š [Vector4i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6))# 输出 \"(30, 80, 150, "
+"240)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Multiplies each component of the [Vector4i] by the given [float].\n"
+"Returns a Vector4 value due to floating-point operations.\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) * 2) # Prints \"(20, 40, 60, 80)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡ä¹˜ä»¥ç»™å®šçš„ [float]。\n"
+"由于浮点数è¿ç®—,返回值为 Vector4。\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Adds each component of the [Vector4i] by the components of the given "
+"[Vector4i].\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # Prints \"(13, 24, "
+"35, 46)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡åŠ ä¸Šç»™å®š [Vector4i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # 输出 \"(13, 24, 35, "
+"46)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Subtracts each component of the [Vector4i] by the components of the given "
+"[Vector4i].\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # Prints \"(7, 16, "
+"25, 34)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡å‡åŽ»ç»™å®š [Vector4i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # 输出 \"(7, 16, 25, "
+"34)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector4i] by the components of the given "
+"[Vector4i].\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # Prints \"(5, 4, 10, "
+"10)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®š [Vector4i] 的对应分é‡ã€‚\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # 输出 \"(5, 4, 10, "
+"10)\"\n"
+"[/codeblock]"
+
+msgid ""
+"Divides each component of the [Vector4i] by the given [float].\n"
+"Returns a Vector4 value due to floating-point operations.\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) / 2 # Prints \"(5, 10, 15, 20)\"\n"
+"[/codeblock]"
+msgstr ""
+"将该 [Vector4i] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [float]。\n"
+"由于浮点数è¿ç®—,返回值为 Vector4。\n"
+"[codeblock]\n"
+"print(Vector4i(10, 20, 30, 40) / 2 # 输出 \"(5, 10, 15, 20)\"\n"
+"[/codeblock]"
+
+msgid "Divides each component of the [Vector4i] by the given [int]."
+msgstr "将该 [Vector4] çš„æ¯ä¸ªåˆ†é‡é™¤ä»¥ç»™å®šçš„ [int]。"
+
msgid "Physics body that simulates the behavior of a car."
msgstr "模拟汽车行为的物ç†ä½“。"
@@ -27687,7 +51464,58 @@ msgid "Vertical version of [FlowContainer]."
msgstr "[FlowContainer] 的垂直版本。"
msgid "Base resource for video streams."
-msgstr "视频æµçš„资æºåŸºç±»ã€‚"
+msgstr "视频æµçš„基础资æºã€‚"
+
+msgid "Returns the number of audio channels."
+msgstr "返回音频通é“çš„æ•°é‡ã€‚"
+
+msgid "Returns the video duration in seconds, if known, or 0 if unknown."
+msgstr "视频时长已知时返回视频时长,未知时返回 0。"
+
+msgid ""
+"Return the current playback timestamp. Called in response to the [member "
+"VideoStreamPlayer.stream_position] getter."
+msgstr ""
+"返回当å‰æ’­æ”¾æ—¶é—´æˆ³ã€‚èŽ·å– [member VideoStreamPlayer.stream_position] 时会被调"
+"用。"
+
+msgid "Allocates a [Texture2D] in which decoded video frames will be drawn."
+msgstr "分é…一个 [Texture2D],解ç å¾—到的视频帧会在其中绘制。"
+
+msgid "Returns the paused status, as set by [method _set_paused]."
+msgstr "返回暂åœçŠ¶æ€ï¼Œç”± [method _set_paused] 设置。"
+
+msgid ""
+"Called in response to [member VideoStreamPlayer.autoplay] or [method "
+"VideoStreamPlayer.play]. Note that manual playback may also invoke [method "
+"_stop] multiple times before this method is called. [method _is_playing] "
+"should return true once playing."
+msgstr ""
+"[member VideoStreamPlayer.autoplay] 或 [method VideoStreamPlayer.play] 时会被"
+"调用。请注æ„,手动播放在这个方法被调用å‰ä¹Ÿå¯èƒ½å¤šæ¬¡è°ƒç”¨ [method _stop]。开始播"
+"æ”¾åŽ [method _is_playing] 就应该返回 true。"
+
+msgid ""
+"Seeks to [code]time[/code] seconds. Called in response to the [member "
+"VideoStreamPlayer.stream_position] setter."
+msgstr ""
+"检索至第 [code]time[/code] 秒。设置 [member VideoStreamPlayer."
+"stream_position] 时会被调用。"
+
+msgid ""
+"Select the audio track [code]idx[/code]. Called when playback starts, and in "
+"response to the [member VideoStreamPlayer.audio_track] setter."
+msgstr ""
+"选择 [code]idx[/code] 音轨。播放开始时,或者设置 [member VideoStreamPlayer."
+"audio_track] 时会被调用。"
+
+msgid ""
+"Set the paused status of video playback. [method _is_paused] must return "
+"[code]paused[/code]. Called in response to the [member VideoStreamPlayer."
+"paused] setter."
+msgstr ""
+"设置视频播放的暂åœçŠ¶æ€ã€‚[method _is_paused] 必须返回 [code]paused[/code]。设"
+"置 [member VideoStreamPlayer.paused] 时会被调用。"
msgid "Control for playing video streams."
msgstr "用于播放视频æµçš„控件。"
@@ -27756,6 +51584,31 @@ msgstr "播放结æŸæ—¶è§¦å‘。"
msgid "[VideoStream] resource for Ogg Theora videos."
msgstr "[VideoStream] Ogg Theora 视频的资æºã€‚"
+msgid "Base class for viewports."
+msgstr "视å£çš„基类。"
+
+msgid ""
+"A Viewport creates a different view into the screen, or a sub-view inside "
+"another viewport. Children 2D Nodes will display on it, and children "
+"Camera3D 3D nodes will render on it too.\n"
+"Optionally, a viewport can have its own 2D or 3D world, so they don't share "
+"what they draw with other viewports.\n"
+"Viewports can also choose to be audio listeners, so they generate positional "
+"audio depending on a 2D or 3D camera child of it.\n"
+"Also, viewports can be assigned to different screens in case the devices "
+"have multiple screens.\n"
+"Finally, viewports can also behave as render targets, in which case they "
+"will not be visible unless the associated texture is used to draw."
+msgstr ""
+"Viewport(视å£ï¼‰ä¼šåœ¨å±å¹•ä¸­åˆ›å»ºä¸åŒçš„视图,或是在其他视å£ä¸­åˆ›å»ºå­è§†å›¾ã€‚视å£ä¸Š"
+"会显示 2D å­èŠ‚点,也会渲染 Camera3D 3D å­èŠ‚点。\n"
+"视å£ä¹Ÿå¯ä»¥æ‹¥æœ‰è‡ªå·±çš„ 2D 或 3D 世界,这样就ä¸ä¼šä¸Žå…¶ä»–视å£å…±äº«ç»˜åˆ¶çš„内容。\n"
+"视å£ä¹Ÿå¯ä»¥é€‰æ‹©ä½œä¸ºéŸ³é¢‘监å¬å™¨ï¼Œè¿™æ ·å°±å¯ä»¥æ ¹æ® 2D 或 3D 相机å­èŠ‚点生æˆä½ç½®éŸ³"
+"频。\n"
+"å¦å¤–,在设备有多个å±å¹•çš„情况下,å¯ä»¥å°†è§†å£åˆ†é…ç»™ä¸åŒçš„å±å¹•ã€‚\n"
+"最åŽï¼Œè§†å£ä¹Ÿå¯ä»¥å……当渲染目标,在这ç§æƒ…况下,除éžä½¿ç”¨ä¸Žå…¶ç›¸å…³è”的纹ç†è¿›è¡Œç»˜"
+"制,å¦åˆ™å®ƒä»¬å°†ä¸å¯è§ã€‚"
+
msgid ""
"Returns the first valid [World2D] for this viewport, searching the [member "
"world_2d] property of itself and any Viewport ancestor."
@@ -27763,6 +51616,9 @@ msgstr ""
"返回该视å£çš„首个有效 [World2D],在它自身åŠä»»ä½• Viewport 祖先节点的 [member "
"world_2d] 属性中查找。"
+msgid "Returns an individual bit on the rendering layer mask."
+msgstr "返回渲染层é®ç½©ä¸Šçš„æŸä¸ªæ¯”特ä½ã€‚"
+
msgid ""
"Returns the mouse's position in this [Viewport] using the coordinate system "
"of this [Viewport]."
@@ -27805,6 +51661,10 @@ msgid "If [code]true[/code], the viewport will process 3D audio streams."
msgstr "如果为 [code]true[/code],该视å£å°†å¤„ç† 3D 音频æµã€‚"
msgid ""
+"The rendering layers in which this [Viewport] renders [CanvasItem] nodes."
+msgstr "渲染层,该 [Viewport] 会渲染ä½äºŽè¿™äº›å±‚中的 [CanvasItem] 节点。"
+
+msgid ""
"The canvas transform of the viewport, useful for changing the on-screen "
"positions of all child [CanvasItem]s. This is relative to the global canvas "
"transform of the viewport."
@@ -27815,6 +51675,9 @@ msgstr ""
msgid "The overlay mode for test rendered geometry in debug purposes."
msgstr "在调试时,用于测试渲染的几何图形的å åŠ æ¨¡å¼ã€‚"
+msgid "Disable 3D rendering (but keep 2D rendering)."
+msgstr "ç¦ç”¨ 3D 渲染(但ä¿ç•™ 2D 渲染)。"
+
msgid ""
"The global canvas transform of the viewport. The canvas transform is "
"relative to this."
@@ -27853,6 +51716,9 @@ msgstr "如果为 [code]true[/code],该视å£åº”使其背景渲染为é€æ˜Žã€‚
msgid "The custom [World2D] which can be used as 2D environment source."
msgstr "自定义的 [World2D],å¯ä»¥ä½œä¸º 2D 环境æºã€‚"
+msgid "The custom [World3D] which can be used as 3D environment source."
+msgstr "自定义的 [World3D],å¯ä»¥ä½œä¸º 3D 环境æºã€‚"
+
msgid "Emitted when a Control node grabs keyboard focus."
msgstr "当控件节点获å–键盘焦点时触å‘。"
@@ -27871,6 +51737,19 @@ msgstr "此象é™å°†è¢«åˆ†æˆ 16 个方å‘,并被最多 16 张阴影贴图使ç
msgid "This quadrant will be split 64 ways and used by up to 64 shadow maps."
msgstr "这个象é™å°†è¢«åˆ†æˆ 64 个方å‘,并被最多 64 张阴影贴图使用。"
+msgid ""
+"Represents the size of the [enum PositionalShadowAtlasQuadrantSubdiv] enum."
+msgstr "代表 [enum PositionalShadowAtlasQuadrantSubdiv] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum Scaling3DMode] enum."
+msgstr "代表 [enum Scaling3DMode] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum MSAA] enum."
+msgstr "代表 [enum MSAA] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum ScreenSpaceAA] enum."
+msgstr "代表 [enum ScreenSpaceAA] 枚举的大å°ã€‚"
+
msgid "Amount of objects in frame."
msgstr "帧中对象的数é‡ã€‚"
@@ -27881,7 +51760,7 @@ msgid "Amount of draw calls in frame."
msgstr "帧中的绘制调用é‡ã€‚"
msgid "Represents the size of the [enum RenderInfo] enum."
-msgstr "表示 [enum RenderInfo] 枚举的大å°ã€‚"
+msgstr "代表 [enum RenderInfo] 枚举的大å°ã€‚"
msgid "Objects are displayed normally."
msgstr "对象正常显示。"
@@ -27889,6 +51768,9 @@ msgstr "对象正常显示。"
msgid "Objects are displayed in wireframe style."
msgstr "对象以线框风格显示。"
+msgid "Represents the size of the [enum VRSMode] enum."
+msgstr "代表 [enum VRSMode] 枚举的大å°ã€‚"
+
msgid "Texture which displays the content of a [Viewport]."
msgstr "显示 [Viewport] 内容的纹ç†ã€‚"
@@ -27899,6 +51781,12 @@ msgstr ""
"显示 [Viewport] 节点的路径。该路径是相对于场景根的,而ä¸æ˜¯ç›¸å¯¹äºŽä½¿ç”¨è¯¥çº¹ç†çš„"
"节点。"
+msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]."
+msgstr "对应 [constant Node.PROCESS_MODE_INHERIT]。"
+
+msgid "Corresponds to [constant Node.PROCESS_MODE_ALWAYS]."
+msgstr "对应 [constant Node.PROCESS_MODE_ALWAYS]。"
+
msgid "Enables certain nodes only when approximately visible."
msgstr "åªåœ¨å¤§çº¦å¯è§æ—¶å¯ç”¨æŸäº›èŠ‚点。"
@@ -27913,6 +51801,15 @@ msgstr ""
"[b]注æ„:[/b]一旦添加到场景树中,需è¦ä¸€å¸§æ¥è®¡ç®—节点的å¯è§æ€§ï¼Œæ‰€ä»¥è¿™ä¸ªæ–¹æ³•å°†åœ¨"
"它被实例化åŽç«‹å³è¿”回 [code]false[/code],å³ä½¿å±å¹•åœ¨ç»˜åˆ¶è¿‡ç¨‹ä¸­ã€‚"
+msgid "The VisibleOnScreenNotifier2D's bounding rectangle."
+msgstr "该 VisibleOnScreenNotifier2D 的边界矩形。"
+
+msgid "Emitted when the VisibleOnScreenNotifier2D enters the screen."
+msgstr "当该 VisibleOnScreenNotifier2D 进入å±å¹•æ—¶å‘出。"
+
+msgid "Emitted when the VisibleOnScreenNotifier2D exits the screen."
+msgstr "当该 VisibleOnScreenNotifier2D 退出å±å¹•æ—¶å‘出。"
+
msgid "Detects approximately when the node is visible on screen."
msgstr "大约在节点在å±å¹•ä¸Šå¯è§æ—¶è¿›è¡Œæ£€æµ‹ã€‚"
@@ -27927,6 +51824,15 @@ msgstr ""
"[b]注æ„:[/b]一旦添加到场景树中,需è¦ä¸€å¸§æ¥è®¡ç®—节点的å¯è§æ€§ï¼Œæ‰€ä»¥è¿™ä¸ªæ–¹æ³•å°†åœ¨"
"它被实例化åŽç«‹å³è¿”回 [code]false[/code],å³ä½¿å±å¹•åœ¨ç»˜åˆ¶è¿‡ç¨‹ä¸­ã€‚"
+msgid "The VisibleOnScreenNotifier3D's bounding box."
+msgstr "该 VisibleOnScreenNotifier3D 的边界框。"
+
+msgid "Emitted when the VisibleOnScreenNotifier3D enters the screen."
+msgstr "当该 VisibleOnScreenNotifier3D 进入å±å¹•æ—¶å‘出。"
+
+msgid "Emitted when the VisibleOnScreenNotifier3D exits the screen."
+msgstr "当该 VisibleOnScreenNotifier3D 退出å±å¹•æ—¶å‘出。"
+
msgid "Parent of all visual 3D nodes."
msgstr "所有å¯è§† 3D 节点的父节点。"
@@ -27989,8 +51895,59 @@ msgstr "片段ç€è‰²å™¨ï¼Œå¯¹ç‰‡æ®µï¼ˆåƒç´ ï¼‰è¿›è¡Œæ“作。"
msgid "A shader for light calculations."
msgstr "用于光线计算的ç€è‰²å™¨ã€‚"
+msgid "A function for the \"start\" stage of particle shader."
+msgstr "ç²’å­ç€è‰²å™¨çš„“开始â€é˜¶æ®µæ‰€ä½¿ç”¨çš„函数。"
+
+msgid "A function for the \"process\" stage of particle shader."
+msgstr "ç²’å­ç€è‰²å™¨çš„“处ç†â€é˜¶æ®µæ‰€ä½¿ç”¨çš„函数。"
+
+msgid ""
+"A function for the \"collide\" stage (particle collision handler) of "
+"particle shader."
+msgstr "ç²’å­ç€è‰²å™¨çš„“碰撞â€é˜¶æ®µæ‰€ä½¿ç”¨çš„函数(粒å­ç¢°æ’žå¤„ç†å™¨ï¼‰ã€‚"
+
+msgid ""
+"A function for the \"start\" stage of particle shader, with customized "
+"output."
+msgstr "ç²’å­ç€è‰²å™¨çš„“开始â€é˜¶æ®µæ‰€ä½¿ç”¨çš„函数,带自定义输出。"
+
+msgid ""
+"A function for the \"process\" stage of particle shader, with customized "
+"output."
+msgstr "ç²’å­ç€è‰²å™¨çš„“处ç†â€é˜¶æ®µæ‰€ä½¿ç”¨çš„函数,带自定义输出。"
+
msgid "Represents the size of the [enum Type] enum."
-msgstr "表示 [enum Type] 枚举的大å°ã€‚"
+msgstr "代表 [enum Type] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum VaryingMode] enum."
+msgstr "代表 [enum VaryingMode] 枚举的大å°ã€‚"
+
+msgid "Varying is of type [float]."
+msgstr "Varying 的类型为 [float]。"
+
+msgid "Varying is of type [int]."
+msgstr "Varying 的类型为 [int]。"
+
+msgid "Varying is of type unsigned [int]."
+msgstr "Varying çš„ç±»åž‹ä¸ºæ— ç¬¦å· [int]。"
+
+msgid "Varying is of type [Vector2]."
+msgstr "Varying 的类型为 [Vector2]。"
+
+msgid "Varying is of type [Vector3]."
+msgstr "Varying 的类型为 [Vector3]。"
+
+msgid "Varying is of type [Vector4]."
+msgstr "Varying 的类型为 [Vector2]。"
+
+msgid "Varying is of type [bool]."
+msgstr "Varying 的类型为 [bool]。"
+
+msgid "Varying is of type [Transform3D]."
+msgstr "Varying 的类型为 [Transform2D]。"
+
+msgid "Represents the size of the [enum VaryingType] enum."
+msgstr "代表 [enum VariantType] 枚举的大å°ã€‚"
msgid "Base class for nodes in a visual shader graph."
msgstr "å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­èŠ‚点的基类。"
@@ -28029,29 +51986,49 @@ msgstr ""
msgid ""
"Floating-point scalar. Translated to [code]float[/code] type in shader code."
-msgstr "浮点标é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­è¢«è½¬æ¢æˆ[code]float[/code]类型。"
+msgstr "浮点数类型。在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]float[/code] 类型。"
+
+msgid "Integer scalar. Translated to [code]int[/code] type in shader code."
+msgstr "æ•´æ•°æ ‡é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]int[/code] 类型。"
+
+msgid ""
+"Unsigned integer scalar. Translated to [code]uint[/code] type in shader code."
+msgstr "无符å·æ•´æ•°æ ‡é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]uint[/code] 类型。"
+
+msgid ""
+"2D vector of floating-point values. Translated to [code]vec2[/code] type in "
+"shader code."
+msgstr "浮点数 2D å‘é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]vec2[/code] 类型。"
msgid ""
"3D vector of floating-point values. Translated to [code]vec3[/code] type in "
"shader code."
-msgstr "浮点值的 3D å‘é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­è½¬æ¢ä¸º [code]vec3[/code] 类型。"
+msgstr "浮点数 3D å‘é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]vec3[/code] 类型。"
+
+msgid ""
+"4D vector of floating-point values. Translated to [code]vec4[/code] type in "
+"shader code."
+msgstr "浮点数 4D å‘é‡ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]vec4[/code] 类型。"
msgid "Boolean type. Translated to [code]bool[/code] type in shader code."
-msgstr "布尔类型。在ç€è‰²å™¨ä»£ç ä¸­è½¬æ¢ä¸º [code]bool[/code] 类型。"
+msgstr "布尔值类型。在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]bool[/code] 类型。"
msgid "Transform type. Translated to [code]mat4[/code] type in shader code."
-msgstr "å˜æ¢ç±»åž‹ã€‚在ç€è‰²å™¨ä»£ç ä¸­è½¬æ¢ä¸º [code]mat4[/code] 类型。"
+msgstr "å˜æ¢ç±»åž‹ã€‚在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]mat4[/code] 类型。"
msgid ""
"Sampler type. Translated to reference of sampler uniform in shader code. Can "
"only be used for input ports in non-uniform nodes."
msgstr ""
-"采样器类型。转æ¢ä¸ºç€è‰²å™¨ä»£ç ä¸­çš„采样器 uniform 引用。åªèƒ½ç”¨äºŽéž uniform 节点"
-"中的输入端å£ã€‚"
+"采样器类型。在ç€è‰²å™¨ä»£ç ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为对采样器 uniform 的引用。åªèƒ½ç”¨äºŽéž "
+"uniform 节点的输入端å£ã€‚"
msgid "Represents the size of the [enum PortType] enum."
msgstr "表示 [enum PortType] 枚举的大å°ã€‚"
+msgid "Represents the size of the [enum BillboardType] enum."
+msgstr "代表 [enum BillboardType] 枚举的大å°ã€‚"
+
msgid "A boolean constant to be used within the visual shader graph."
msgstr "在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä½¿ç”¨çš„布尔常é‡ã€‚"
@@ -28079,12 +52056,30 @@ msgid ""
"values."
msgstr "将值é™åˆ¶åœ¨[code]min[/code]å’Œ[code]max[/code]之间。"
+msgid "A type of operands and returned value."
+msgstr "æ“作数和返回值的类型。"
+
msgid "A floating-point scalar."
msgstr "浮点标é‡ã€‚"
+msgid "An integer scalar."
+msgstr "æ•´æ•°æ ‡é‡ã€‚"
+
+msgid "An unsigned integer scalar."
+msgstr "无符å·æ•´æ•°æ ‡é‡ã€‚"
+
+msgid "A 2D vector type."
+msgstr "2D å‘é‡ç±»åž‹ã€‚"
+
msgid "A 3D vector type."
msgstr "3Då‘é‡ç±»åž‹ã€‚"
+msgid "A 4D vector type."
+msgstr "4D å‘é‡ç±»åž‹ã€‚"
+
+msgid "Represents the size of the [enum OpType] enum."
+msgstr "代表 [enum OpType] 枚举的大å°ã€‚"
+
msgid "A [Color] constant to be used within the visual shader graph."
msgstr "[Color] 常é‡ï¼Œåœ¨å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä½¿ç”¨ã€‚"
@@ -28155,6 +52150,9 @@ msgstr ""
"return vec3(r, g, b);\n"
"[/codeblock]"
+msgid "Represents the size of the [enum Function] enum."
+msgstr "代表 [enum Function] 枚举的大å°ã€‚"
+
msgid "A [Color] operator to be used within the visual shader graph."
msgstr "在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä½¿ç”¨çš„ [Color] è¿ç®—符。"
@@ -28312,9 +52310,15 @@ msgstr ""
"}\n"
"[/codeblock]"
+msgid "Represents the size of the [enum Operator] enum."
+msgstr "代表 [enum Operator] 枚举的大å°ã€‚"
+
msgid "Translated to [code]uniform vec4[/code] in the shader language."
msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­è¢«è½¬æ¢æˆ [code]uniform vec4[/code]。"
+msgid "A title of the node."
+msgstr "节点的标题。"
+
msgid "A comparison function for common types within the visual shader graph."
msgstr "å¯è§†åŒ–ç€è‰²å™¨å›¾å†…常è§ç±»åž‹çš„比较函数。"
@@ -28339,6 +52343,9 @@ msgstr "布林类型。"
msgid "A transform ([code]mat4[/code]) type."
msgstr "å˜æ¢ç±»åž‹ï¼Œå³ [code]mat4[/code]。"
+msgid "Represents the size of the [enum ComparisonType] enum."
+msgstr "代表 [enum ComparisonType] 枚举的大å°ã€‚"
+
msgid "Comparison for equality ([code]a == b[/code])."
msgstr "ç›¸ç­‰æ¯”è¾ƒï¼Œå³ [code]a == b[/code]。"
@@ -28377,6 +52384,9 @@ msgid ""
"condition."
msgstr "如果å‘é‡ä¸­çš„ä»»æ„分é‡æ»¡è¶³æ¯”较æ¡ä»¶ï¼Œåˆ™ç»“果为真。"
+msgid "Represents the size of the [enum Condition] enum."
+msgstr "代表 [enum Condition] 枚举的大å°ã€‚"
+
msgid ""
"Translated to [code]texture(cubemap, vec3)[/code] in the shader language. "
"Returns a color vector and alpha channel as scalar."
@@ -28394,6 +52404,9 @@ msgid ""
"TextureType] for options."
msgstr "定义æºçº¹ç†æ供的数æ®ç±»åž‹ã€‚选项å‚阅[enum TextureType]。"
+msgid "Represents the size of the [enum Source] enum."
+msgstr "代表 [enum Source] 枚举的大å°ã€‚"
+
msgid "No hints are added to the uniform declaration."
msgstr "在uniform声明中未添加æ示。"
@@ -28417,6 +52430,9 @@ msgid ""
msgstr ""
"用于定义自定义 [VisualShaderNode] 的虚类,以便在å¯è§†åŒ–ç€è‰²å™¨ç¼–辑器中使用。"
+msgid "Visual Shader plugins"
+msgstr "å¯è§†åŒ–ç€è‰²å™¨æ’件"
+
msgid ""
"Override this method to define the description of the associated custom node "
"in the Visual Shader Editor's members dialog.\n"
@@ -28514,6 +52530,9 @@ msgstr "在 [code]x[/code] 中使用局部差分的导数。"
msgid "Derivative in [code]y[/code] using local differencing."
msgstr "在 [code]y[/code] 中使用局部差分的导数。"
+msgid "Represents the size of the [enum Precision] enum."
+msgstr "代表 [enum Precision] 枚举的大å°ã€‚"
+
msgid "Translates to [code]determinant(x)[/code] in the shader language."
msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­ç¿»è¯‘æˆ[code]determinant(x)[/code]。"
@@ -28556,6 +52575,135 @@ msgstr ""
"值为 [code]N[/code]。å¦åˆ™ï¼Œå°†è¿”回 [code]-N[/code]。"
msgid ""
+"Returns the sine of the parameter. Translates to [code]sin(x)[/code] in the "
+"Godot Shader Language."
+msgstr ""
+"返回å‚数的正弦值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]sin(x)[/code]。"
+
+msgid ""
+"Returns the cosine of the parameter. Translates to [code]cos(x)[/code] in "
+"the Godot Shader Language."
+msgstr ""
+"返回å‚数的余弦值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]cos(x)[/code]。"
+
+msgid ""
+"Returns the tangent of the parameter. Translates to [code]tan(x)[/code] in "
+"the Godot Shader Language."
+msgstr ""
+"返回å‚数的正切值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]tan(x)[/code]。"
+
+msgid ""
+"Returns the arc-sine of the parameter. Translates to [code]asin(x)[/code] in "
+"the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„å正弦值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]asin(x)[/code]。"
+
+msgid ""
+"Returns the arc-cosine of the parameter. Translates to [code]acos(x)[/code] "
+"in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„å余弦值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]acos(x)[/code]。"
+
+msgid ""
+"Returns the arc-tangent of the parameter. Translates to [code]atan(x)[/code] "
+"in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„å正切值。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]atan(x)[/code]。"
+
+msgid ""
+"Returns the hyperbolic sine of the parameter. Translates to [code]sinh(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„åŒæ›²æ­£å¼¦å€¼ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]sinh(x)[/"
+"code]。"
+
+msgid ""
+"Returns the hyperbolic cosine of the parameter. Translates to [code]cosh(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„åŒæ›²ä½™å¼¦å€¼ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]cosh(x)[/"
+"code]。"
+
+msgid ""
+"Returns the hyperbolic tangent of the parameter. Translates to [code]tanh(x)"
+"[/code] in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„åŒæ›²æ­£åˆ‡å€¼ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]tanh(x)[/"
+"code]。"
+
+msgid ""
+"Returns the natural logarithm of the parameter. Translates to [code]log(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"返回å‚数的自然对数。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]log(x)[/code]。"
+
+msgid ""
+"Returns the natural exponentiation of the parameter. Translates to "
+"[code]exp(x)[/code] in the Godot Shader Language."
+msgstr ""
+"返回该å‚数的自然指数。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]exp(x)[/code]。"
+
+msgid ""
+"Returns the square root of the parameter. Translates to [code]sqrt(x)[/code] "
+"in the Godot Shader Language."
+msgstr ""
+"返回å‚数的平方根。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]sqrt(x)[/code]。"
+
+msgid ""
+"Returns the absolute value of the parameter. Translates to [code]abs(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"返回å‚æ•°çš„ç»å¯¹å€¼ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]abs(x)[/code]。"
+
+msgid ""
+"Extracts the sign of the parameter. Translates to [code]sign(x)[/code] in "
+"the Godot Shader Language."
+msgstr ""
+"æå–å‚数的符å·ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]sign(x)[/code]。"
+
+msgid ""
+"Finds the nearest integer less than or equal to the parameter. Translates to "
+"[code]floor(x)[/code] in the Godot Shader Language."
+msgstr ""
+"查找å°äºŽæˆ–等于å‚数的最接近的整数。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 "
+"[code]floor(x)[/code]。"
+
+msgid ""
+"Finds the nearest integer to the parameter. Translates to [code]round(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"查找最接近å‚数的整数。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]round(x)[/"
+"code]。"
+
+msgid ""
+"Finds the nearest integer that is greater than or equal to the parameter. "
+"Translates to [code]ceil(x)[/code] in the Godot Shader Language."
+msgstr ""
+"查找大于或等于å‚数的最接近的整数。在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 "
+"[code]ceil(x)[/code]。"
+
+msgid ""
+"Computes the fractional part of the argument. Translates to [code]fract(x)[/"
+"code] in the Godot Shader Language."
+msgstr ""
+"计算å‚æ•°çš„å°æ•°éƒ¨åˆ†ã€‚在 Godot ç€è‰²å™¨è¯­è¨€ä¸­ï¼Œä¼šè¢«ç¿»è¯‘为 [code]fract(x)[/code]。"
+
+msgid "Sums two numbers using [code]a + b[/code]."
+msgstr "使用 [code]a + b[/code] 将两个数字相加。"
+
+msgid "Subtracts two numbers using [code]a - b[/code]."
+msgstr "使用 [code]a - b[/code] 将两个数字相å‡ã€‚"
+
+msgid "Multiplies two numbers using [code]a * b[/code]."
+msgstr "使用 [code]a * b[/code] 将两个数字相乘。"
+
+msgid "Divides two numbers using [code]a / b[/code]."
+msgstr "使用 [code]a / b[/code] 将两个数字相除。"
+
+msgid "Translated to [code]uniform float[/code] in the shader language."
+msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­è¢«ç¿»è¯‘为 [code]uniform float[/code]。"
+
+msgid ""
"Minimum value for range hints. Used if [member hint] is set to [constant "
"HINT_RANGE] or [constant HINT_RANGE_STEP]."
msgstr ""
@@ -28597,7 +52745,7 @@ msgstr ""
"[code]hint_range(min, max, step)[/code]。"
msgid "Represents the size of the [enum Hint] enum."
-msgstr "表示 [enum Hint] 枚举的大å°ã€‚"
+msgstr "代表 [enum Hint] 枚举的大å°ã€‚"
msgid "A Fresnel effect to be used within the visual shader graph."
msgstr "在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä½¿ç”¨çš„è²æ¶…尔效果。"
@@ -28719,6 +52867,9 @@ msgstr ""
"æ供对ç€è‰²å™¨å¯ç”¨çš„输入å˜é‡ï¼ˆå†…置)的访问。关于æ¯ç§ç€è‰²å™¨ç±»åž‹çš„å¯ç”¨å†…ç½®å˜é‡åˆ—"
"表,请å‚阅ç€è‰²å™¨å‚考(查看[code]教程[/code]部分的链接)。"
+msgid "Shading reference index"
+msgstr "ç€è‰²å‚考索引"
+
msgid ""
"A boolean comparison operator to be used within the visual shader graph."
msgstr "布尔比较è¿ç®—符,在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä½¿ç”¨ã€‚"
@@ -28741,10 +52892,44 @@ msgid ""
msgstr ""
"与 [code]NaN[/code] 比较(ä¸æ˜¯ä¸€ä¸ªæ•°å­—;表示无效的数字结果,如除以 0)。"
+msgid "This node can be used in fragment shaders."
+msgstr "该节点å¯ç”¨äºŽç‰‡æ®µç€è‰²å™¨ã€‚"
+
+msgid ""
+"Linearly interpolates between two values within the visual shader graph."
+msgstr "在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ï¼Œåœ¨ä¸¤ä¸ªå€¼ä¹‹é—´è¿›è¡Œçº¿æ€§æ’值。"
+
msgid "Translates to [code]mix(a, b, weight)[/code] in the shader language."
msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­è½¬æ¢ä¸º [code]mix(a, b, weight)[/code]。"
msgid ""
+"The [code]a[/code] and [code]b[/code] ports use a 2D vector type. The "
+"[code]weight[/code] port uses a scalar type."
+msgstr ""
+"[code]a[/code] å’Œ [code]b[/code] 端å£ä½¿ç”¨ 2D å‘é‡ç±»åž‹ã€‚[code]weight[/code] 端"
+"å£ä½¿ç”¨æ ‡é‡ç±»åž‹ã€‚"
+
+msgid ""
+"The [code]a[/code] and [code]b[/code] ports use a 3D vector type. The "
+"[code]weight[/code] port uses a scalar type."
+msgstr ""
+"[code]a[/code] å’Œ [code]b[/code] 端å£ä½¿ç”¨ 3D å‘é‡ç±»åž‹ã€‚[code]weight[/code] 端"
+"å£ä½¿ç”¨æ ‡é‡ç±»åž‹ã€‚"
+
+msgid ""
+"The [code]a[/code] and [code]b[/code] ports use a 4D vector type. The "
+"[code]weight[/code] port uses a scalar type."
+msgstr ""
+"[code]a[/code] å’Œ [code]b[/code] 端å£ä½¿ç”¨ 4D å‘é‡ç±»åž‹ã€‚[code]weight[/code] 端"
+"å£ä½¿ç”¨æ ‡é‡ç±»åž‹ã€‚"
+
+msgid "Performs a fused multiply-add operation within the visual shader graph."
+msgstr "在å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ï¼Œæ‰§è¡Œä¹˜åŠ èžåˆè¿ç®—。"
+
+msgid "A floating-point scalar type."
+msgstr "浮点数标é‡ç±»åž‹ã€‚"
+
+msgid ""
"Calculates an outer product of two vectors within the visual shader graph."
msgstr "计算å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ä¸¤ä¸ªå‘é‡çš„外积。"
@@ -28771,8 +52956,59 @@ msgstr ""
"æ­¤å¯è§†åŒ–ç€è‰²å™¨èŠ‚点以 \"输出\" å—çš„å½¢å¼å‡ºçŽ°åœ¨æ‰€æœ‰ç€è‰²å™¨å›¾ä¸­ï¼Œæœ‰å¤šä¸ªè¾“出值端"
"å£ã€‚"
+msgid "A base type for the parameters within the visual shader graph."
+msgstr "å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ï¼Œå‚数的基础类型。"
+
+msgid "Defines the scope of the parameter."
+msgstr "定义该å‚数的作用域。"
+
+msgid "Represents the size of the [enum Qualifier] enum."
+msgstr "代表 [enum Qualifier] 枚举的大å°ã€‚"
+
+msgid "A reference to an existing [VisualShaderNodeParameter]."
+msgstr "对现有 [VisualShaderNodeParameter] 的引用。"
+
+msgid "A visual shader node that accelerates particles."
+msgstr "对粒å­è¿›è¡ŒåŠ é€Ÿçš„å¯è§†ç€è‰²å™¨èŠ‚点。"
+
+msgid "The particles will be accelerated based on their velocity."
+msgstr "ç²’å­ä¼šæ ¹æ®é€Ÿåº¦è¿›è¡ŒåŠ é€Ÿã€‚"
+
+msgid "The particles will be accelerated towards or away from the center."
+msgstr "ç²’å­ä¼šæ ¹æ®æœå‘中心或远离中心的方å‘进行加速。"
+
+msgid "Represents the size of the [enum Mode] enum."
+msgstr "代表 [enum Mode] 枚举的大å°ã€‚"
+
+msgid "If enabled, the particle starts with the position defined by this node."
+msgstr "如果å¯ç”¨ï¼Œåˆ™ç²’å­ä»Žè¯¥èŠ‚点所定义的ä½ç½®å¼€å§‹ã€‚"
+
+msgid ""
+"If enabled, the particle starts with the rotation and scale defined by this "
+"node."
+msgstr "如果å¯ç”¨ï¼Œåˆ™ç²’å­ä»Žè¯¥èŠ‚点所定义的旋转和缩放开始。"
+
+msgid "If enabled,the particle starts with the velocity defined by this node."
+msgstr "如果å¯ç”¨ï¼Œåˆ™ç²’å­ä»Žè¯¥èŠ‚点所定义的速度开始。"
+
+msgid "If enabled, the particle starts with the color defined by this node."
+msgstr "如果å¯ç”¨ï¼Œåˆ™ç²’å­ä»Žè¯¥èŠ‚点所定义的颜色开始。"
+
+msgid ""
+"If enabled, the particle starts with the [code]CUSTOM[/code] data defined by "
+"this node."
+msgstr "如果å¯ç”¨ï¼Œåˆ™ç²’å­ä»Žè¯¥èŠ‚点所定义的 [code]CUSTOM[/code] 自定义数æ®å¼€å§‹ã€‚"
+
+msgid "A base class for particle emitters."
+msgstr "ç²’å­å‘射器的基类。"
+
+msgid ""
+"If [code]true[/code], the angle will be interpreted in degrees instead of "
+"radians."
+msgstr "如果为 [code]true[/code],夹角会被解释为度数,而ä¸æ˜¯å¼§åº¦æ•°ã€‚"
+
msgid "The size of the node in the visual shader graph."
-msgstr "å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­èŠ‚点的大å°ã€‚"
+msgstr "å¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ï¼Œè¯¥èŠ‚点的大å°ã€‚"
msgid ""
"Translates to [code]step(edge, x)[/code] in the shader language.\n"
@@ -28783,6 +53019,9 @@ msgstr ""
"如果 [code]x[/code] å°äºŽ [code]edge[/code],返回 [code]0.0[/code],å¦åˆ™è¿”回 "
"[code]1.0[/code]。"
+msgid "A transform type."
+msgstr "å˜æ¢ç±»åž‹ã€‚"
+
msgid ""
"Performs a lookup operation on the provided texture, with support for "
"multiple texture sources to choose from."
@@ -28824,6 +53063,12 @@ msgstr "对作为 uniform ç€è‰²å™¨æ供的纹ç†è¿›è¡ŒæŸ¥æ‰¾æ“作。"
msgid "Sets the default color if no texture is assigned to the uniform."
msgstr "如果没有给 uniform 分é…纹ç†ï¼Œåˆ™è®¾ç½®é»˜è®¤é¢œè‰²ã€‚"
+msgid "Represents the size of the [enum ColorDefault] enum."
+msgstr "代表 [enum ColorDefault] 枚举的大å°ã€‚"
+
+msgid "Represents the size of the [enum TextureSource] enum."
+msgstr "代表 [enum TextureSource] 枚举的大å°ã€‚"
+
msgid ""
"Performs a uniform texture lookup with triplanar within the visual shader "
"graph."
@@ -28842,6 +53087,9 @@ msgstr ""
"使用四个类型为 [code]vec3[/code] çš„å‘é‡åˆ›å»ºä¸€ä¸ª 4x4 å˜æ¢çŸ©é˜µã€‚æ¯ä¸ªå‘é‡æ˜¯çŸ©é˜µ"
"中的一行,最åŽä¸€åˆ—是一个 [code]vec4(0, 0, 0, 1)[/code]。"
+msgid "A constant [Transform3D], which can be used as an input node."
+msgstr "[Transform3D] 常é‡ï¼Œå¯ç”¨ä½œè¾“入节点。"
+
msgid ""
"Takes a 4x4 transform matrix and decomposes it into four [code]vec3[/code] "
"values, one from each row of the matrix."
@@ -28896,11 +53144,14 @@ msgid ""
msgstr ""
"å°†å‘é‡ [code]b[/code] 乘以å˜æ¢ [code]a[/code],跳过å˜æ¢çš„最åŽä¸€è¡Œå’Œä¸€åˆ—。"
+msgid "A constant [Vector2], which can be used as an input node."
+msgstr "[Vector2] 常é‡ï¼Œå¯ç”¨ä½œè¾“入节点。"
+
msgid "A [Vector3] constant to be used within the visual shader graph."
msgstr "[Vector3] 常é‡ï¼Œç”¨äºŽå¯è§†åŒ–ç€è‰²å™¨å›¾ä¸­ã€‚"
msgid "A constant [Vector3], which can be used as an input node."
-msgstr "å¸¸é‡ [Vector3],它å¯ä»¥ä½œä¸ºè¾“入节点使用。"
+msgstr "[Vector3] 常é‡ï¼Œå¯ç”¨ä½œè¾“入节点。"
msgid "A [Vector3] constant which represents the state of this node."
msgstr "[Vector3] 常é‡ï¼Œè¡¨ç¤ºè¯¥èŠ‚点的状æ€ã€‚"
@@ -28908,6 +53159,9 @@ msgstr "[Vector3] 常é‡ï¼Œè¡¨ç¤ºè¯¥èŠ‚点的状æ€ã€‚"
msgid "Translated to [code]uniform vec3[/code] in the shader language."
msgstr "在ç€è‰²å™¨è¯­è¨€ä¸­è¢«è½¬æ¢æˆ [code]uniform vec3[/code]。"
+msgid "A constant 4D vector, which can be used as an input node."
+msgstr "4D 常å‘é‡ï¼Œå¯ç”¨ä½œè¾“入节点。"
+
msgid ""
"Returns the distance between two points. To be used within the visual shader "
"graph."
@@ -29165,17 +53419,17 @@ msgstr ""
"custom_step]属性的自定义步长。"
msgid "Vertical version of [Separator]."
-msgstr "[Separator]的垂直版本。"
+msgstr "[Separator] 的垂直版本。"
msgid ""
"Vertical version of [Separator]. Even though it looks vertical, it is used "
"to separate objects horizontally."
-msgstr "[Separator]的垂直版本。尽管它看起æ¥æ˜¯åž‚直的,但它用æ¥æ°´å¹³åˆ†ç¦»å¯¹è±¡ã€‚"
+msgstr "[Separator] 的垂直版本。尽管外观是垂直的,但作用是水平分隔对象。"
msgid ""
"The width of the area covered by the separator. Effectively works like a "
"minimum width."
-msgstr "分隔符所覆盖区域的宽度。以最å°å®½åº¦æ—¶æœ‰æ•ˆå·¥ä½œã€‚"
+msgstr "分隔器覆盖区域的宽度。效果上和最å°å®½åº¦ä¸€è‡´ã€‚"
msgid ""
"The style for the separator line. Works best with [StyleBoxLine] (remember "
@@ -29615,6 +53869,9 @@ msgstr "返回给定对等体的 IP 地å€ã€‚"
msgid "Returns the remote port of the given peer."
msgstr "返回给定对等体的远程端å£ã€‚"
+msgid "A WebSocket connection."
+msgstr "WebSocket 连接。"
+
msgid ""
"Returns [code]true[/code] if the last received packet was sent as a text "
"payload. See [enum WriteMode]."
@@ -29632,6 +53889,220 @@ msgid ""
"(any byte combination is allowed)."
msgstr "指定 WebSockets 消æ¯åº”以二进制有效载è·çš„å½¢å¼ä¼ è¾“(å…许任何字节组åˆï¼‰ã€‚"
+msgid "XR interface using WebXR."
+msgstr "使用 WebXR çš„ AR/VR 接å£ã€‚"
+
+msgid ""
+"WebXR is an open standard that allows creating VR and AR applications that "
+"run in the web browser.\n"
+"As such, this interface is only available when running in Web exports.\n"
+"WebXR supports a wide range of devices, from the very capable (like Valve "
+"Index, HTC Vive, Oculus Rift and Quest) down to the much less capable (like "
+"Google Cardboard, Oculus Go, GearVR, or plain smartphones).\n"
+"Since WebXR is based on JavaScript, it makes extensive use of callbacks, "
+"which means that [WebXRInterface] is forced to use signals, where other XR "
+"interfaces would instead use functions that return a result immediately. "
+"This makes [WebXRInterface] quite a bit more complicated to initialize than "
+"other XR interfaces.\n"
+"Here's the minimum code required to start an immersive VR session:\n"
+"[codeblock]\n"
+"extends Node3D\n"
+"\n"
+"var webxr_interface\n"
+"var vr_supported = false\n"
+"\n"
+"func _ready():\n"
+" # We assume this node has a button as a child.\n"
+" # This button is for the user to consent to entering immersive VR mode.\n"
+" $Button.pressed.connect(self._on_button_pressed)\n"
+"\n"
+" webxr_interface = XRServer.find_interface(\"WebXR\")\n"
+" if webxr_interface:\n"
+" # WebXR uses a lot of asynchronous callbacks, so we connect to "
+"various\n"
+" # signals in order to receive them.\n"
+" webxr_interface.session_supported.connect(self."
+"_webxr_session_supported)\n"
+" webxr_interface.session_started.connect(self."
+"_webxr_session_started)\n"
+" webxr_interface.session_ended.connect(self._webxr_session_ended)\n"
+" webxr_interface.session_failed.connect(self._webxr_session_failed)\n"
+"\n"
+" # This returns immediately - our _webxr_session_supported() method\n"
+" # (which we connected to the \"session_supported\" signal above) "
+"will\n"
+" # be called sometime later to let us know if it's supported or not.\n"
+" webxr_interface.is_session_supported(\"immersive-vr\")\n"
+"\n"
+"func _webxr_session_supported(session_mode, supported):\n"
+" if session_mode == 'immersive-vr':\n"
+" vr_supported = supported\n"
+"\n"
+"func _on_button_pressed():\n"
+" if not vr_supported:\n"
+" OS.alert(\"Your browser doesn't support VR\")\n"
+" return\n"
+"\n"
+" # We want an immersive VR session, as opposed to AR ('immersive-ar') or "
+"a\n"
+" # simple 3DoF viewer ('viewer').\n"
+" webxr_interface.session_mode = 'immersive-vr'\n"
+" # 'bounded-floor' is room scale, 'local-floor' is a standing or sitting\n"
+" # experience (it puts you 1.6m above the ground if you have 3DoF "
+"headset),\n"
+" # whereas as 'local' puts you down at the XROrigin.\n"
+" # This list means it'll first try to request 'bounded-floor', then\n"
+" # fallback on 'local-floor' and ultimately 'local', if nothing else is\n"
+" # supported.\n"
+" webxr_interface.requested_reference_space_types = 'bounded-floor, local-"
+"floor, local'\n"
+" # In order to use 'local-floor' or 'bounded-floor' we must also\n"
+" # mark the features as required or optional.\n"
+" webxr_interface.required_features = 'local-floor'\n"
+" webxr_interface.optional_features = 'bounded-floor'\n"
+"\n"
+" # This will return false if we're unable to even request the session,\n"
+" # however, it can still fail asynchronously later in the process, so we\n"
+" # only know if it's really succeeded or failed when our\n"
+" # _webxr_session_started() or _webxr_session_failed() methods are "
+"called.\n"
+" if not webxr_interface.initialize():\n"
+" OS.alert(\"Failed to initialize\")\n"
+" return\n"
+"\n"
+"func _webxr_session_started():\n"
+" $Button.visible = false\n"
+" # This tells Godot to start rendering to the headset.\n"
+" get_viewport().use_xr = true\n"
+" # This will be the reference space type you ultimately got, out of the\n"
+" # types that you requested above. This is useful if you want the game "
+"to\n"
+" # work a little differently in 'bounded-floor' versus 'local-floor'.\n"
+" print (\"Reference space type: \" + webxr_interface."
+"reference_space_type)\n"
+"\n"
+"func _webxr_session_ended():\n"
+" $Button.visible = true\n"
+" # If the user exits immersive mode, then we tell Godot to render to the "
+"web\n"
+" # page again.\n"
+" get_viewport().use_xr = false\n"
+"\n"
+"func _webxr_session_failed(message):\n"
+" OS.alert(\"Failed to initialize: \" + message)\n"
+"[/codeblock]\n"
+"There are a couple ways to handle \"controller\" input:\n"
+"- Using [XRController3D] nodes and their [signal XRController3D."
+"button_pressed] and [signal XRController3D.button_released] signals. This is "
+"how controllers are typically handled in XR apps in Godot, however, this "
+"will only work with advanced VR controllers like the Oculus Touch or Index "
+"controllers, for example.\n"
+"- Using the [signal select], [signal squeeze] and related signals. This "
+"method will work for both advanced VR controllers, and non-traditional input "
+"sources like a tap on the screen, a spoken voice command or a button press "
+"on the device itself.\n"
+"You can use both methods to allow your game or app to support a wider or "
+"narrower set of devices and input methods, or to allow more advanced "
+"interactions with more advanced devices."
+msgstr ""
+"WebXR 是一ç§å¼€æ”¾æ ‡å‡†ï¼Œå…许创建在网络æµè§ˆå™¨ä¸­è¿è¡Œçš„ VR å’Œ AR 应用程åºã€‚\n"
+"因此,此接å£ä»…在 Web 导出中è¿è¡Œæ—¶å¯ç”¨ã€‚\n"
+"WebXR 支æŒèŒƒå›´å¹¿æ³›çš„设备,从功能强大的设备(如 Valve Indexã€HTC Viveã€Oculus "
+"Rift å’Œ Quest)到功能低得多的设备(如 Google Cardboardã€Oculus Goã€GearVR 或"
+"普通智能手机)。\n"
+"由于 WebXR 基于 JavaScript,它大é‡ä½¿ç”¨å›žè°ƒï¼Œè¿™æ„å‘³ç€ [WebXRInterface] 被迫使"
+"用信å·ï¼Œè€Œå…¶ä»– XR 接å£å°†æ”¹ä¸ºä½¿ç”¨ç«‹å³è¿”回结果的函数。这使得 [WebXRInterface] "
+"çš„åˆå§‹åŒ–比其他 XR 接å£è¦å¤æ‚得多。\n"
+"以下是å¯åŠ¨æ²‰æµ¸å¼ VR 会è¯æ‰€éœ€çš„最少代ç ï¼š\n"
+"[codeblock]\n"
+"extends Node3D\n"
+"\n"
+"var webxr_interface\n"
+"var vr_supported = false\n"
+"\n"
+"func _ready():\n"
+" # 我们å‡è®¾è¿™ä¸ªèŠ‚点有一个按钮作为å­èŠ‚点。\n"
+" # 该按钮供用户åŒæ„è¿›å…¥æ²‰æµ¸å¼ VR 模å¼ã€‚\n"
+" $Button.pressed.connect(self._on_button_pressed)\n"
+"\n"
+" webxr_interface = XRServer.find_interface(\"WebXR\")\n"
+" if webxr_interface:\n"
+" # WebXR 使用了很多异步回调,所以我们连接å„ç§\n"
+" # ä¿¡å·ï¼Œä»¥ä¾¿æŽ¥æ”¶å®ƒä»¬ã€‚\n"
+" webxr_interface.session_supported.connect(self."
+"_webxr_session_supported)\n"
+" webxr_interface.session_started.connect(self."
+"_webxr_session_started)\n"
+" webxr_interface.session_ended.connect(self._webxr_session_ended)\n"
+" webxr_interface.session_failed.connect(self._webxr_session_failed)\n"
+"\n"
+" # 这会立å³è¿”回——我们的 _webxr_session_supported() 方法\n"
+" # (我们连接到上é¢çš„“session_supportedâ€ä¿¡å·ï¼‰å°†\n"
+" # 在ç¨åŽçš„æŸä¸ªæ—¶é—´è¢«è°ƒç”¨ï¼Œè®©æˆ‘们知é“它是å¦å—支æŒã€‚\n"
+" webxr_interface.is_session_supported(\"immersive-vr\")\n"
+"\n"
+"func _webxr_session_supported(session_mode, supported):\n"
+" if session_mode == 'immersive-vr':\n"
+" vr_supported = supported\n"
+"\n"
+"func _on_button_pressed():\n"
+" if not vr_supported:\n"
+" OS.alert(\"Your browser doesn't support VR\")\n"
+" return\n"
+"\n"
+" # 我们想è¦ä¸€ä¸ªæ²‰æµ¸å¼ VR 会è¯ï¼Œè€Œä¸æ˜¯ AR('immersive-ar')或\n"
+" # 简å•çš„ 3DoF 查看器('viewer')。\n"
+" webxr_interface.session_mode = 'immersive-vr'\n"
+" # 'bounded-floor' 是房间比例,'local-floor' 是站立或åç€\n"
+" # 的体验(如果你有 3DoF 头戴设备,它会让你离地 1.6m),\n"
+" # 而“localâ€ä¼šè®©ä½ åœ¨ XROrigin 下。\n"
+" # 这个列表æ„味ç€å®ƒä¼šé¦–å…ˆå°è¯•è¯·æ±‚“bounded-floorâ€ï¼Œç„¶åŽ\n"
+" # 回退到“local-floorâ€ï¼Œæœ€åŽæ˜¯â€œlocalâ€ï¼Œå¦‚果没有别的\n"
+" # 支æŒçš„è¯ã€‚\n"
+" webxr_interface.requested_reference_space_types = 'bounded-floor, local-"
+"floor, local'\n"
+" # 为了使用“local-floorâ€æˆ–“bounded-floorâ€ï¼Œæˆ‘们还必须\n"
+" # 将功能标记为必需或å¯é€‰ã€‚\n"
+" webxr_interface.required_features = 'local-floor'\n"
+" webxr_interface.optional_features = 'bounded-floor'\n"
+"\n"
+" # 如果我们甚至无法请求会è¯ï¼Œè¿™å°†è¿”回 false,\n"
+" # 但是,它ä»ç„¶å¯ä»¥åœ¨ç¨åŽçš„过程中异步失败,\n"
+" # 因此我们åªæœ‰åœ¨è°ƒç”¨ _webxr_session_started() 或\n"
+" # _webxr_session_failed() 方法时æ‰çŸ¥é“它是真的æˆåŠŸè¿˜æ˜¯å¤±è´¥ã€‚\n"
+" if not webxr_interface.initialize():\n"
+" OS.alert(\"Failed to initialize\")\n"
+" return\n"
+"\n"
+"func _webxr_session_started():\n"
+" $Button.visible = false\n"
+" # 这告诉 Godot 开始渲染到头戴设备。\n"
+" get_viewport().use_xr = true\n"
+" # 这将是您最终获得的å‚考空间类型,与您在上é¢è¯·æ±‚的类型ä¸åŒã€‚\n"
+" # 如果您希望游æˆåœ¨ “bounded-floor†和 “local-floorâ€\n"
+" # 中的è¿è¡Œæ–¹å¼æœ‰æ‰€ä¸åŒï¼Œè¿™å°†å¾ˆæœ‰ç”¨ã€‚\n"
+" print (\"Reference space type: \" + webxr_interface."
+"reference_space_type)\n"
+"\n"
+"func _webxr_session_ended():\n"
+" $Button.visible = true\n"
+" # 如果用户退出沉浸å¼æ¨¡å¼ï¼Œé‚£ä¹ˆæˆ‘们会告诉 Godot\n"
+" # å†æ¬¡æ¸²æŸ“到网页。\n"
+" get_viewport().use_xr = false\n"
+"\n"
+"func _webxr_session_failed(message):\n"
+" OS.alert(\"Failed to initialize: \" + message)\n"
+"[/codeblock]\n"
+"有几ç§æ–¹æ³•å¯ä»¥å¤„ç†â€œæŽ§åˆ¶å™¨â€è¾“入:\n"
+"- 使用 [XRController3D] 节点åŠå…¶ [signal XRController3D.button_pressed] å’Œ "
+"[signal XRController3D.button_released] ä¿¡å·ã€‚这是 Godot 中 XR 应用程åºé€šå¸¸å¤„"
+"ç†æŽ§åˆ¶å™¨çš„æ–¹å¼ï¼Œä½†æ˜¯ï¼Œè¿™ä»…适用于高级 VR 控制器,例如 Oculus Touch 或 Index 控"
+"制器。\n"
+"- 使用 [signal select]ã€[signal squeeze] 和其他相关信å·ã€‚è¿™ç§æ–¹æ³•é€‚用于高级 "
+"VR 控制器和éžä¼ ç»Ÿè¾“å…¥æºï¼Œä¾‹å¦‚å±å¹•ä¸Šçš„轻敲ã€è¯­éŸ³å‘½ä»¤æˆ–设备本身的按钮按下。\n"
+"您å¯ä»¥ä½¿ç”¨è¿™ä¸¤ç§æ–¹æ³•æ¥è®©æ‚¨çš„游æˆæˆ–应用程åºæ”¯æŒæ›´å¤šæˆ–更窄的设备和输入法集,或"
+"者å…许与更高级的设备进行更高级的交互。"
+
msgid ""
"Checks if the given [code]session_mode[/code] is supported by the user's "
"browser.\n"
@@ -29680,6 +54151,177 @@ msgstr "目标射线由手æŒæŒ‡ç¤ºå™¨å‘射,很å¯èƒ½æ˜¯ VR 触摸控制器ã€
msgid "Target ray from touch screen, mouse or other tactile input device."
msgstr "目标射线由触摸å±ã€é¼ æ ‡ç­‰è§¦è§‰è¾“入设备å‘射。"
+msgid "Base class for all windows."
+msgstr "所有窗å£çš„基类。"
+
+msgid ""
+"A node that creates a window. The window can either be a native system "
+"window or embedded inside another [Window] (see [member Viewport."
+"gui_embed_subwindows]).\n"
+"At runtime, [Window]s will not close automatically when requested. You need "
+"to handle it manually using [signal close_requested] (this applies both to "
+"clicking close button and clicking outside popup)."
+msgstr ""
+"创建窗å£çš„节点。该窗å£å¯èƒ½æ˜¯åŽŸç”Ÿç³»ç»Ÿçª—å£ï¼Œä¹Ÿå¯ä»¥æ˜¯åµŒå…¥åˆ°å…¶ä»– [Window] 中的窗"
+"å£ï¼ˆè§ [member Viewport.gui_embed_subwindows])。\n"
+"在è¿è¡Œæ—¶ï¼Œ[Window] ä¸ä¼šåœ¨è¯·æ±‚关闭时自动关闭。你需è¦ä½¿ç”¨ [signal "
+"close_requested] 手动处ç†ï¼ˆé€‚用于点击关闭按钮和点击弹出窗å£å¤–部)。"
+
+msgid "Returns layout direction and text writing direction."
+msgstr "返回排版方å‘和文本书写方å‘。"
+
+msgid "Causes the window to grab focus, allowing it to receive user input."
+msgstr "使该窗å£èŽ·å¾—焦点,从而接收用户输入。"
+
+msgid "Returns [code]true[/code] if the window is focused."
+msgstr "如果该窗å£å·²èŽ·å¾—焦点,则返回 [code]true[/code]。"
+
+msgid "Sets a specified window flag."
+msgstr "设置指定的窗å£æ ‡å¿—。"
+
+msgid ""
+"If [param active] is [code]true[/code], enables system's native IME (Input "
+"Method Editor)."
+msgstr ""
+"如果 [param active] 为 [code]true[/code],则å¯ç”¨ç³»ç»Ÿçš„原生 IME(输入法编辑"
+"器)。"
+
+msgid "Moves IME to the given position."
+msgstr "å°† IME 移动到给定ä½ç½®ã€‚"
+
+msgid ""
+"Sets layout direction and text writing direction. Right-to-left layouts are "
+"necessary for certain languages (e.g. Arabic and Hebrew)."
+msgstr ""
+"设置布局方å‘和文本书写方å‘。æŸäº›è¯­è¨€éœ€è¦ä»Žå³è‡³å·¦çš„布局(例如阿拉伯语和希伯æ¥"
+"语)。"
+
+msgid ""
+"Enables font oversampling. This makes fonts look better when they are scaled "
+"up."
+msgstr "å¯ç”¨å­—体过采样。会使得字体在放大åŽæ›´å¥½çœ‹ã€‚"
+
+msgid ""
+"Toggles if any text should automatically change to its translated version "
+"depending on the current locale."
+msgstr "切æ¢æ˜¯å¦æ‰€æœ‰æ–‡æœ¬éƒ½åº”该根æ®å½“å‰åŒºåŸŸè®¾ç½®è‡ªåŠ¨å˜ä¸ºç¿»è¯‘åŽçš„版本。"
+
+msgid "The screen the window is currently on."
+msgstr "该窗å£å½“å‰æ‰€åœ¨çš„å±å¹•ã€‚"
+
+msgid ""
+"Sets a polygonal region of the window which accepts mouse events. Mouse "
+"events outside the region will be passed through.\n"
+"Passing an empty array will disable passthrough support (all mouse events "
+"will be intercepted by the window, which is the default behavior).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Set region, using Path2D node.\n"
+"$Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()\n"
+"\n"
+"# Set region, using Polygon2D node.\n"
+"$Window.mouse_passthrough_polygon = $Polygon2D.polygon\n"
+"\n"
+"# Reset region to default.\n"
+"$Window.mouse_passthrough_polygon = []\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Set region, using Path2D node.\n"
+"GetNode<Window>(\"Window\").MousePassthrough = GetNode<Path2D>(\"Path2D\")."
+"Curve.GetBakedPoints();\n"
+"\n"
+"// Set region, using Polygon2D node.\n"
+"GetNode<Window>(\"Window\").MousePassthrough = "
+"GetNode<Polygon2D>(\"Polygon2D\").Polygon;\n"
+"\n"
+"// Reset region to default.\n"
+"GetNode<Window>(\"Window\").MousePassthrough = new Vector2[] {};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] This property is ignored if [member mouse_passthrough] is set "
+"to [code]true[/code].\n"
+"[b]Note:[/b] On Windows, the portion of a window that lies outside the "
+"region is not drawn, while on Linux (X11) and macOS it is.\n"
+"[b]Note:[/b] This property is implemented on Linux (X11), macOS and Windows."
+msgstr ""
+"设置窗å£çš„一个接å—鼠标事件的多边形区域。该区域外的鼠标事件将被传递出去。\n"
+"传递一个空数组将ç¦ç”¨ç©¿é€æ”¯æŒï¼ˆæ‰€æœ‰é¼ æ ‡äº‹ä»¶å°†è¢«çª—å£æ‹¦æˆªï¼Œè¿™æ˜¯é»˜è®¤è¡Œä¸ºï¼‰ã€‚\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 设置区域,使用 Path2D 节点。\n"
+"$Window.mouse_passthrough_polygon = $Path2D.curve.get_baked_points()\n"
+"\n"
+"# 设置区域,使用 Polygon2D 节点。\n"
+"$Window.mouse_passthrough_polygon = $Polygon2D.polygon\n"
+"\n"
+"# é‡ç½®åŒºåŸŸä¸ºé»˜è®¤å€¼ã€‚\n"
+"$Window.mouse_passthrough_polygon = []\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 设置区域,使用 Path2D 节点。\n"
+"GetNode<Window>(\"Window\").MousePassthrough = GetNode<Path2D>(\"Path2D\")."
+"Curve.GetBakedPoints();\n"
+"\n"
+"// 设置区域,使用 Polygon2D 节点。\n"
+"GetNode<Window>(\"Window\").MousePassthrough = "
+"GetNode<Polygon2D>(\"Polygon2D\").Polygon;\n"
+"\n"
+"// é‡ç½®åŒºåŸŸä¸ºé»˜è®¤å€¼ã€‚\n"
+"GetNode<Window>(\"Window\").MousePassthrough = new Vector2[] {};\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注æ„:[/b]如果 [member mouse_passthrough] 设置为 [code]true[/code],则忽略"
+"此属性。\n"
+"[b]注æ„:[/b]在 Windows 上,ä½äºŽåŒºåŸŸå¤–的窗å£éƒ¨åˆ†ä¸ä¼šè¢«ç»˜åˆ¶ï¼Œè€Œåœ¨ Linux (X11) "
+"和 macOS 上则会被绘制。\n"
+"[b]注æ„:[/b]该属性在 Linux (X11)ã€macOS å’Œ Windows 上实现。"
+
+msgid "The window's position in pixels."
+msgstr "该窗å£çš„ä½ç½®ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
+msgid "The window's size in pixels."
+msgstr "该窗å£çš„大å°ï¼Œå•ä½ä¸ºåƒç´ ã€‚"
+
+msgid ""
+"If [code]true[/code], the window can't be resized. Minimize and maximize "
+"buttons are disabled."
+msgstr ""
+"如果为 [code]true[/code],则无法调整窗å£å¤§å°ã€‚最å°åŒ–和最大化按钮被ç¦ç”¨ã€‚"
+
+msgid "If [code]true[/code], the window is visible."
+msgstr "如果为 [code]true[/code],则该窗å£å¯è§ã€‚"
+
+msgid ""
+"Emitted when the [Window]'s DPI changes as a result of OS-level changes (e."
+"g. moving the window from a Retina display to a lower resolution one).\n"
+"[b]Note:[/b] Only implemented on macOS."
+msgstr ""
+"该 [Window] çš„ DPI 由于æ“作系统级别的更改而å‘生更改时å‘出(例如将该窗å£ä»Ž "
+"Retina å±å¹•ç§»åŠ¨åˆ°äº†æ›´ä½Žåˆ†è¾¨çŽ‡çš„å±å¹•ï¼‰ã€‚\n"
+"[b]注æ„:[/b]仅在 macOS 上实现。"
+
+msgid "Emitted when the [Window] gains focus."
+msgstr "当该 [Window] 获得焦点时å‘出。"
+
+msgid "Emitted when the [Window] loses its focus."
+msgstr "当该 [Window] 失去焦点时å‘出。"
+
+msgid ""
+"Full screen window mode. Note that this is not [i]exclusive[/i] full screen. "
+"On Windows and Linux, a borderless window is used to emulate full screen. On "
+"macOS, a new desktop is used to display the running project.\n"
+"Regardless of the platform, enabling full screen will change the window size "
+"to match the monitor's size. Therefore, make sure your project supports "
+"[url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple "
+"resolutions[/url] when enabling full screen mode."
+msgstr ""
+"å…¨å±çª—å£æ¨¡å¼ã€‚请注æ„,这ä¸æ˜¯[i]独å çš„[/i]å…¨å±æ˜¾ç¤ºã€‚在 Windows å’Œ Linux 上,无"
+"边框窗å£ç”¨äºŽæ¨¡æ‹Ÿå…¨å±ã€‚在 macOS 上,会创建一个新的桌é¢ç”¨äºŽæ˜¾ç¤ºæ­£åœ¨è¿è¡Œçš„项"
+"目。\n"
+"无论平å°å¦‚何,å¯ç”¨å…¨å±éƒ½ä¼šæ›´æ”¹çª—å£å¤§å°ä»¥åŒ¹é…显示器的大å°ã€‚因此,请确ä¿æ‚¨çš„项"
+"目在å¯ç”¨å…¨å±æ¨¡å¼æ—¶æ”¯æŒ[url=$DOCS_URL/tutorials/rendering/"
+"multiple_resolutions.html]多ç§åˆ†è¾¨çŽ‡[/url]。"
+
msgid ""
"The window can't be resizing by dragging its resize grip. It's still "
"possible to resize the window using [member size]. This flag is ignored for "
@@ -29689,21 +54331,60 @@ msgstr ""
"整窗å£çš„大å°ã€‚这个标志对于全å±çª—å£æ¥è¯´æ˜¯è¢«å¿½ç•¥çš„。用 [member unresizable] 设"
"置。"
+msgid "Max value of the [enum Flags]."
+msgstr "[enum Flags] 的最大值。"
+
+msgid "Initial window position is determined by [member position]."
+msgstr "åˆå§‹çª—å£ä½ç½®ç”± [member position] 决定。"
+
+msgid "Initial window position is a center of the primary screen."
+msgstr "åˆå§‹çª—å£ä½ç½®ä¸ºä¸»å±å¹•çš„中心。"
+
+msgid "Initial window position is a center of the main window screen."
+msgstr "åˆå§‹çª—å£ä½ç½®ä¸ºä¸»çª—å£å±å¹•çš„中心。"
+
+msgid "Initial window position is a center of [member current_screen] screen."
+msgstr "åˆå§‹çª—å£ä½ç½®ä¸º [member current_screen] å±å¹•çš„中心。"
+
msgid "The color of the title's text."
msgstr "标题文本的颜色。"
+msgid "The color of the title's text outline."
+msgstr "标题文本轮廓的颜色。"
+
+msgid "Horizontal position offset of the close button."
+msgstr "关闭按钮的水平ä½ç½®å移。"
+
+msgid "Vertical position offset of the close button."
+msgstr "关闭按钮的垂直ä½ç½®å移。"
+
+msgid "Height of the title bar."
+msgstr "标题æ çš„高度。"
+
+msgid "The size of the title outline."
+msgstr "标题轮廓的尺寸。"
+
msgid "The font used to draw the title."
msgstr "用于绘制标题的字体。"
+msgid "The size of the title font."
+msgstr "标题字体的大å°ã€‚"
+
msgid "The icon for the close button."
msgstr "关闭按钮的图标。"
+msgid "The icon for the close button when it's being pressed."
+msgstr "关闭按钮被按下时的图标。"
+
msgid "Class that has everything pertaining to a 2D world."
msgstr "拥有与 2D 世界有关的所有内容的类。"
msgid "Class that has everything pertaining to a world."
msgstr "拥有与世界相关的一切的类。"
+msgid "The World3D's [Environment]."
+msgstr "该 World3D 的 [Environment]。"
+
msgid "The line's distance from the origin."
msgstr "该直线与原点的è·ç¦»ã€‚"
@@ -29718,6 +54399,30 @@ msgid ""
msgstr ""
"æ­¤ [WorldEnvironment] 世界环境所使用的 [Environment] 环境资æºï¼Œå®šä¹‰é»˜è®¤å±žæ€§ã€‚"
+msgid "An X509 certificate (e.g. for TLS)."
+msgstr "X509 è¯ä¹¦ï¼ˆä¾‹å¦‚用于 TLS)。"
+
+msgid ""
+"The X509Certificate class represents an X509 certificate. Certificates can "
+"be loaded and saved like any other [Resource].\n"
+"They can be used as the server certificate in [method StreamPeerTLS."
+"accept_stream] (along with the proper [CryptoKey]), and to specify the only "
+"certificate that should be accepted when connecting to an TLS server via "
+"[method StreamPeerTLS.connect_to_stream]."
+msgstr ""
+"X509Certificate 类代表 X509 è¯ä¹¦ã€‚è¯ä¹¦å¯ä»¥åƒå…¶ä»–çš„ [Resource] 资æºä¸€æ ·åŠ è½½å’Œ"
+"ä¿å­˜ã€‚\n"
+"å¯ä»¥ç”¨ä½œ [method StreamPeerTLS.accept_stream] 中的æœåŠ¡å™¨è¯ä¹¦ï¼ˆæ­é…正确的 "
+"[CryptoKey]),也å¯ä»¥ç”¨äºŽæŒ‡å®šé€šè¿‡ [method StreamPeerTLS.connect_to_stream] è¿ž"
+"接到 TLS æœåŠ¡å™¨æ—¶åº”该接å—的唯一è¯ä¹¦ã€‚"
+
+msgid "Loads a certificate from [param path] (\"*.crt\" file)."
+msgstr "从路径 [param path] 加载è¯ä¹¦ï¼ˆâ€œ*.crtâ€æ–‡ä»¶ï¼‰ã€‚"
+
+msgid ""
+"Saves a certificate to the given [param path] (should be a \"*.crt\" file)."
+msgstr "å°†è¯ä¹¦ä¿å­˜åˆ°ç»™å®šçš„路径 [param path](应该是“*.crtâ€æ–‡ä»¶ï¼‰ã€‚"
+
msgid ""
"Low-level class for creating parsers for [url=https://en.wikipedia.org/wiki/"
"XML]XML[/url] files."
@@ -29764,6 +54469,13 @@ msgid ""
msgstr ""
"检查当å‰å…ƒç´ æ˜¯å¦ä¸ºç©ºï¼ˆåªé€‚用于完全空的标签,例如 [code]<element\\>[/code])。"
+msgid "Opens an XML [param file] for parsing. This returns an error code."
+msgstr "打开 XML 文件 [param file] 进行解æžã€‚返回的是错误ç ã€‚"
+
+msgid ""
+"Opens an XML raw [param buffer] for parsing. This returns an error code."
+msgstr "打开 XML 缓冲区 [param buffer] 进行解æžã€‚返回的是错误ç ã€‚"
+
msgid "Reads the next node of the file. This returns an error code."
msgstr "读å–文件的下一个节点。返回的是错误ç ã€‚"
@@ -29822,6 +54534,9 @@ msgid ""
"tracking."
msgstr "应用了一些 AR/VR 规则的相机节点,例如ä½ç½®è·Ÿè¸ªã€‚"
+msgid "XR documentation index"
+msgstr "XR 文档索引"
+
msgid "A spatial node representing a spatially-tracked controller."
msgstr "表示空间跟踪控制器的空间节点。"
@@ -29831,6 +54546,9 @@ msgstr "当该控制器上的一个按钮被按下时触å‘。"
msgid "Emitted when a button on this controller is released."
msgstr "当该控制器上的一个按钮被释放时触å‘。"
+msgid "Base class for an XR interface implementation."
+msgstr "XR 接å£å®žçŽ°çš„基类。"
+
msgid ""
"If this is an AR interface that requires displaying a camera feed as the "
"background, this method returns the feed ID in the [CameraServer] for this "
@@ -29845,11 +54563,21 @@ msgid ""
msgstr "返回 [enum Capabilities] 标签的组åˆï¼Œæ供关于这个接å£åŠŸèƒ½çš„ä¿¡æ¯ã€‚"
msgid ""
+"Returns the name of this interface (OpenXR, OpenVR, OpenHMD, ARKit, etc)."
+msgstr "返回该接å£çš„å称(OpenXRã€OpenVRã€OpenHMDã€ARKit 等)。"
+
+msgid ""
"Returns the resolution at which we should render our intermediate results "
"before things like lens distortion are applied by the VR platform."
msgstr "返回在VRå¹³å°åº”用镜头失真等内容之å‰æ¸²æŸ“的中间结果的分辨率。"
msgid ""
+"Returns the an array of supported environment blend modes, see [enum "
+"XRInterface.EnvironmentBlendMode]."
+msgstr ""
+"返回支æŒçš„环境混åˆæ¨¡å¼æ•°ç»„ï¼Œè§ [enum XRInterface.EnvironmentBlendMode]。"
+
+msgid ""
"If supported, returns the status of our tracking. This will allow you to "
"provide feedback to the user whether there are issues with positional "
"tracking."
@@ -29857,6 +54585,55 @@ msgstr ""
"如果支æŒï¼Œè¿”回我们的跟踪状æ€ã€‚这将使你能够å‘用户å馈,是å¦å­˜åœ¨ä½ç½®è·Ÿè¸ªçš„é—®"
"题。"
+msgid ""
+"Sets the active environment blend mode.\n"
+"[param mode] is the [enum XRInterface.EnvironmentBlendMode] starting with "
+"the next frame.\n"
+"[b]Note:[/b] Not all runtimes support all environment blend modes, so it is "
+"important to check this at startup. For example:\n"
+"[codeblock]\n"
+" func _ready():\n"
+" var xr_interface : XRInterface = XRServer."
+"find_interface(\"OpenXR\")\n"
+" if xr_interface and xr_interface.is_initialized():\n"
+" var vp : Viewport = get_viewport()\n"
+" vp.use_xr = true\n"
+" var acceptable_modes = [ XRInterface."
+"XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE ]\n"
+" var modes = xr_interface."
+"get_supported_environment_blend_modes()\n"
+" for mode in acceptable_modes:\n"
+" if mode in modes:\n"
+" xr_interface."
+"set_environment_blend_mode(mode)\n"
+" break\n"
+"[/codeblock]"
+msgstr ""
+"设置活动的环境混åˆæ¨¡å¼ã€‚\n"
+"[param mode] 为下一帧开始的 [enum XRInterface.EnvironmentBlendMode]。\n"
+"[b]注æ„:[/b]ä¸æ˜¯æ‰€æœ‰çš„è¿è¡Œæ—¶éƒ½æ”¯æŒå…¨éƒ¨çš„环境混åˆæ¨¡å¼ï¼Œæ‰€ä»¥åœ¨å¯åŠ¨æ—¶è¿›è¡Œæ£€æŸ¥å¾ˆ"
+"é‡è¦ã€‚例如:\n"
+"[codeblock]\n"
+" func _ready():\n"
+" var xr_interface : XRInterface = XRServer."
+"find_interface(\"OpenXR\")\n"
+" if xr_interface and xr_interface.is_initialized():\n"
+" var vp : Viewport = get_viewport()\n"
+" vp.use_xr = true\n"
+" var acceptable_modes = [ XRInterface."
+"XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE ]\n"
+" var modes = xr_interface."
+"get_supported_environment_blend_modes()\n"
+" for mode in acceptable_modes:\n"
+" if mode in modes:\n"
+" xr_interface."
+"set_environment_blend_mode(mode)\n"
+" break\n"
+"[/codeblock]"
+
+msgid "Stops passthrough."
+msgstr "åœæ­¢ç©¿é€ã€‚"
+
msgid "Turns the interface off."
msgstr "关闭接å£ã€‚"
@@ -29873,6 +54650,9 @@ msgstr "此接å£å¯ä»¥ä¸Žæ­£å¸¸çš„渲染输出一起工作(éžåŸºäºŽ HMD çš„
msgid "This interface supports stereoscopic rendering."
msgstr "该接å£æ”¯æŒç«‹ä½“渲染。"
+msgid "This interface supports quad rendering (not yet supported by Godot)."
+msgstr "该接å£æ”¯æŒå››è¾¹å½¢æ¸²æŸ“(Godot å°šä¸æ”¯æŒï¼‰ã€‚"
+
msgid "This interface supports AR (video background and real world tracking)."
msgstr "该接å£æ”¯æŒ AR(视频背景和真实世界跟踪)。"
@@ -29899,6 +54679,25 @@ msgid ""
"turned off, etc.)."
msgstr "追踪功能失效(相机未æ’电或被é®æŒ¡ã€ç¯å¡”关闭,等等)。"
+msgid "Opaque blend mode. This is typically used for VR devices."
+msgstr "ä¸é€æ˜Žæ··åˆæ¨¡å¼ã€‚通常用于 VR 设备。"
+
+msgid ""
+"Additive blend mode. This is typically used for AR devices or VR devices "
+"with passthrough."
+msgstr "加法混åˆæ¨¡å¼ã€‚通常用于带有穿é€åŠŸèƒ½çš„ AR 或 VR 设备。"
+
+msgid ""
+"Alpha blend mode. This is typically used for AR or VR devices with "
+"passthrough capabilities. The alpha channel controls how much of the "
+"passthrough is visible. Alpha of 0.0 means the passthrough is visible and "
+"this pixel works in ADDITIVE mode. Alpha of 1.0 means that the passthrough "
+"is not visible and this pixel works in OPAQUE mode."
+msgstr ""
+"Alpha æ··åˆæ¨¡å¼ã€‚通常用于带有穿é€åŠŸèƒ½çš„ AR 或 VR 设备。Alpha 通é“控制穿é€çš„å¯"
+"è§ç¨‹åº¦ã€‚Alpha 为 0.0 表示穿é€å¯è§ã€è¯¥åƒç´ å¤„于加法模å¼ã€‚Alpha 为 1.0 表示穿é€"
+"ä¸å¯è§ï¼Œè¯¥åƒç´ å¤„于ä¸é€æ˜Žæ¨¡å¼ã€‚"
+
msgid "The origin point in AR/VR."
msgstr "AR/VR 的原点。"
@@ -30019,7 +54818,7 @@ msgstr ""
msgid ""
"The profile associated with this tracker, interface dependent but will "
"indicate the type of controller being tracked."
-msgstr "与此追踪器关è”çš„é…置文件,å–决于界é¢ï¼Œä½†å°†æŒ‡ç¤ºè¢«è¿½è¸ªçš„控制器类型。"
+msgstr "与此追踪器关è”çš„é…置,å–决于界é¢ï¼Œä½†å°†æŒ‡ç¤ºè¢«è¿½è¸ªçš„控制器类型。"
msgid "The type of tracker."
msgstr "该追踪器的类型。"
@@ -30185,7 +54984,7 @@ msgid ""
"Resets the orientation but keeps the tilt of the device. So if we're looking "
"down, we keep looking down but heading will be reset."
msgstr ""
-"é‡ç½®æ–¹å‘,但ä¿æŒè®¾å¤‡çš„倾斜度。因此,如果我们正在往下看,会继续往下看,但方å‘"
+"é‡ç½®æ–¹å‘,但ä¿æŒè®¾å¤‡çš„倾斜度。因此,如果我们正在往下看,会继续往下看,但航å‘"
"会被é‡ç½®ã€‚"
msgid ""
@@ -30193,6 +54992,84 @@ msgid ""
"gets centered."
msgstr "ä¸é‡ç½® HMD çš„æ–¹å‘,åªè®©çŽ©å®¶çš„ä½ç½®å±…中。"
+msgid "Allows the creation of zip files."
+msgstr "å…许创建 zip 文件。"
+
+msgid ""
+"This class implements a writer that allows storing the multiple blobs in a "
+"zip archive.\n"
+"[codeblock]\n"
+"func write_zip_file():\n"
+" var writer := ZIPPacker.new()\n"
+" var err := writer.open(\"user://archive.zip\")\n"
+" if err != OK:\n"
+" return err\n"
+" writer.start_file(\"hello.txt\")\n"
+" writer.write_file(\"Hello World\".to_utf8_buffer())\n"
+" writer.close_file()\n"
+"\n"
+" writer.close()\n"
+" return OK\n"
+"[/codeblock]"
+msgstr ""
+"该类实现了一个写入器,å¯ä»¥å°†å¤šä¸ª blob 存储在一个压缩文件中。\n"
+"[codeblock]\n"
+"func write_zip_file():\n"
+" var writer := ZIPPacker.new()\n"
+" var err := writer.open(\"user://archive.zip\")\n"
+" if err != OK:\n"
+" return err\n"
+" writer.start_file(\"hello.txt\")\n"
+" writer.write_file(\"Hello World\".to_utf8_buffer())\n"
+" writer.close_file()\n"
+"\n"
+" writer.close()\n"
+" return OK\n"
+"[/codeblock]"
+
+msgid ""
+"Write the given [param data] to the file.\n"
+"Needs to be called after [method start_file]."
+msgstr ""
+"将给定的 [param data] 写到文件中。\n"
+"需è¦åœ¨ [method start_file] 之åŽè°ƒç”¨ã€‚"
+
+msgid "Allows reading the content of a zip file."
+msgstr "å…è®¸è¯»å– zip 文件的内容。"
+
+msgid ""
+"This class implements a reader that can extract the content of individual "
+"files inside a zip archive.\n"
+"[codeblock]\n"
+"func read_zip_file():\n"
+" var reader := ZIPReader.new()\n"
+" var err := reader.open(\"user://archive.zip\")\n"
+" if err != OK:\n"
+" return PackedByteArray()\n"
+" var res := reader.read_file(\"hello.txt\")\n"
+" reader.close()\n"
+" return res\n"
+"[/codeblock]"
+msgstr ""
+"该类实现了一个å¯ä»¥æå– zip 存档中å„个文件内容的读å–器。\n"
+"[codeblock]\n"
+"func read_zip_file():\n"
+" var reader := ZIPReader.new()\n"
+" var err := reader.open(\"user://archive.zip\")\n"
+" if err != OK:\n"
+" return PackedByteArray()\n"
+" var res := reader.read_file(\"hello.txt\")\n"
+" reader.close()\n"
+" return res\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the list of names of all files in the loaded archive.\n"
+"Must be called after [method open]."
+msgstr ""
+"返回加载的存档中所有文件的å称列表。\n"
+"必须在 [method open] 之åŽè°ƒç”¨ã€‚"
+
msgid ""
"Opens the zip archive at the given [param path] and reads its file index."
msgstr "打开给定 [param path] 的压缩文件,并读å–其文件索引。"
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index aadc71c5b8..2f7e68e463 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -115,7 +115,7 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
if (state.canvas_instance_data_buffers[state.current_data_buffer_index].fence != GLsync()) {
GLint syncStatus;
- glGetSynciv(state.canvas_instance_data_buffers[state.current_data_buffer_index].fence, GL_SYNC_STATUS, sizeof(GLint), nullptr, &syncStatus);
+ glGetSynciv(state.canvas_instance_data_buffers[state.current_data_buffer_index].fence, GL_SYNC_STATUS, 1, nullptr, &syncStatus);
if (syncStatus == GL_UNSIGNALED) {
// If older than 2 frames, wait for sync OpenGL can have up to 3 frames in flight, any more and we need to sync anyway.
if (state.canvas_instance_data_buffers[state.current_data_buffer_index].last_frame_used < RSG::rasterizer->get_frame_number() - 2) {
@@ -224,13 +224,12 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
l = l->next_ptr;
ERR_CONTINUE(!clight);
}
- Transform2D to_light_xform = (p_canvas_transform * l->light_shader_xform).affine_inverse();
Vector2 canvas_light_pos = p_canvas_transform.xform(l->xform.get_origin()); //convert light position to canvas coordinates, as all computation is done in canvas coords to avoid precision loss
state.light_uniforms[index].position[0] = canvas_light_pos.x;
state.light_uniforms[index].position[1] = canvas_light_pos.y;
- _update_transform_2d_to_mat2x4(to_light_xform, state.light_uniforms[index].matrix);
+ _update_transform_2d_to_mat2x4(l->light_shader_xform.affine_inverse(), state.light_uniforms[index].matrix);
_update_transform_2d_to_mat2x4(l->xform_cache.affine_inverse(), state.light_uniforms[index].shadow_matrix);
state.light_uniforms[index].height = l->height * (p_canvas_transform.columns[0].length() + p_canvas_transform.columns[1].length()) * 0.5; //approximate height conversion to the canvas size, since all calculations are done in canvas coords to avoid precision loss
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index 600aa908cc..7cbce428cb 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -198,7 +198,11 @@ void RasterizerGLES3::finalize() {
memdelete(config);
}
+RasterizerGLES3 *RasterizerGLES3::singleton = nullptr;
+
RasterizerGLES3::RasterizerGLES3() {
+ singleton = this;
+
#ifdef GLAD_ENABLED
if (!gladLoaderLoadGL()) {
ERR_PRINT("Error initializing GLAD");
@@ -281,7 +285,7 @@ void RasterizerGLES3::prepare_for_blitting_render_targets() {
utils->capture_timestamps_end();
}
-void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer) {
+void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer, bool p_first) {
GLES3::RenderTarget *rt = GLES3::TextureStorage::get_singleton()->get_render_target(p_render_target);
ERR_FAIL_COND(!rt);
@@ -307,12 +311,14 @@ void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, Display
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, GLES3::TextureStorage::system_fbo);
- if (p_screen_rect.position != Vector2()) {
- // Viewport doesn't cover entire window so clear window to black before blitting.
+ if (p_first) {
Size2i win_size = DisplayServer::get_singleton()->window_get_size();
- glViewport(0, 0, win_size.width, win_size.height);
- glClearColor(0.0, 0.0, 0.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
+ if (p_screen_rect.position != Vector2() || p_screen_rect.size != rt->size) {
+ // Viewport doesn't cover entire window so clear window to black before blitting.
+ glViewport(0, 0, win_size.width, win_size.height);
+ glClearColor(0.0, 0.0, 0.0, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ }
}
Vector2i screen_rect_end = p_screen_rect.get_end();
@@ -334,7 +340,7 @@ void RasterizerGLES3::blit_render_targets_to_screen(DisplayServer::WindowID p_sc
RID rid_rt = blit.render_target;
Rect2 dst_rect = blit.dst_rect;
- _blit_render_target_to_screen(rid_rt, p_screen, dst_rect, blit.multi_view.use_layer ? blit.multi_view.layer : 0);
+ _blit_render_target_to_screen(rid_rt, p_screen, dst_rect, blit.multi_view.use_layer ? blit.multi_view.layer : 0, i == 0);
}
}
diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h
index 446c6af338..e29ccefdbd 100644
--- a/drivers/gles3/rasterizer_gles3.h
+++ b/drivers/gles3/rasterizer_gles3.h
@@ -67,8 +67,9 @@ protected:
GLES3::CopyEffects *copy_effects = nullptr;
RasterizerCanvasGLES3 *canvas = nullptr;
RasterizerSceneGLES3 *scene = nullptr;
+ static RasterizerGLES3 *singleton;
- void _blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer);
+ void _blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer, bool p_first = true);
public:
RendererUtilities *get_utilities() { return utilities; }
@@ -107,6 +108,7 @@ public:
_ALWAYS_INLINE_ double get_frame_delta_time() const { return delta; }
_ALWAYS_INLINE_ double get_total_time() const { return time_total; }
+ static RasterizerGLES3 *get_singleton() { return singleton; }
RasterizerGLES3();
~RasterizerGLES3();
};
diff --git a/drivers/gles3/shaders/sky.glsl b/drivers/gles3/shaders/sky.glsl
index e59bca8b07..2455ffb8e2 100644
--- a/drivers/gles3/shaders/sky.glsl
+++ b/drivers/gles3/shaders/sky.glsl
@@ -21,12 +21,13 @@ out vec2 uv_interp;
/* clang-format on */
void main() {
- uv_interp = vertex_attrib;
#ifdef USE_INVERTED_Y
- gl_Position = vec4(uv_interp, 1.0, 1.0);
+ uv_interp = vertex_attrib;
#else
- gl_Position = vec4(uv_interp.x, uv_interp.y * -1.0, 1.0, 1.0);
+ // We're doing clockwise culling so flip the order
+ uv_interp = vec2(vertex_attrib.x, vertex_attrib.y * -1.0);
#endif
+ gl_Position = vec4(uv_interp, 1.0, 1.0);
}
/* clang-format off */
@@ -145,9 +146,6 @@ void main() {
cube_normal.x = (uv_interp.x + projection.x) / projection.y;
cube_normal.y = (-uv_interp.y - projection.z) / projection.w;
#endif
-#ifndef USE_INVERTED_Y
- cube_normal.y *= -1.0;
-#endif
cube_normal = mat3(orientation) * cube_normal;
cube_normal = normalize(cube_normal);
diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp
index 2c530e3ae6..c585895f4b 100644
--- a/drivers/gles3/storage/material_storage.cpp
+++ b/drivers/gles3/storage/material_storage.cpp
@@ -38,6 +38,7 @@
#include "texture_storage.h"
#include "drivers/gles3/rasterizer_canvas_gles3.h"
+#include "drivers/gles3/rasterizer_gles3.h"
using namespace GLES3;
@@ -1721,7 +1722,7 @@ MaterialStorage::MaterialStorage() {
actions.default_filter = ShaderLanguage::FILTER_LINEAR_MIPMAP;
actions.default_repeat = ShaderLanguage::REPEAT_ENABLE;
- actions.check_multiview_samplers = true;
+ actions.check_multiview_samplers = RasterizerGLES3::get_singleton()->is_xr_enabled();
actions.global_buffer_array_variable = "global_shader_uniforms";
shaders.compiler_scene.initialize(actions);
diff --git a/editor/editor_build_profile.cpp b/editor/editor_build_profile.cpp
index 386284b230..b112818e83 100644
--- a/editor/editor_build_profile.cpp
+++ b/editor/editor_build_profile.cpp
@@ -35,6 +35,7 @@
#include "editor/editor_file_dialog.h"
#include "editor/editor_file_system.h"
#include "editor/editor_node.h"
+#include "editor/editor_paths.h"
#include "editor/editor_property_name_processor.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
@@ -473,7 +474,7 @@ void EditorBuildProfileManager::_find_files(EditorFileSystemDirectory *p_dir, co
void EditorBuildProfileManager::_detect_classes() {
HashMap<String, DetectedFile> previous_file_cache;
- Ref<FileAccess> f = FileAccess::open("res://.godot/editor/used_class_cache", FileAccess::READ);
+ Ref<FileAccess> f = FileAccess::open(EditorPaths::get_singleton()->get_project_settings_dir().path_join("used_class_cache"), FileAccess::READ);
if (f.is_valid()) {
while (!f->eof_reached()) {
String l = f->get_line();
@@ -497,7 +498,7 @@ void EditorBuildProfileManager::_detect_classes() {
HashSet<StringName> used_classes;
// Find classes and update the disk cache in the process.
- f = FileAccess::open("res://.godot/editor/used_class_cache", FileAccess::WRITE);
+ f = FileAccess::open(EditorPaths::get_singleton()->get_project_settings_dir().path_join("used_class_cache"), FileAccess::WRITE);
for (const KeyValue<String, DetectedFile> &E : updated_file_cache) {
String l = E.key + "::" + itos(E.value.timestamp) + "::" + E.value.md5 + "::";
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index 3de4379c5d..50826f572a 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -1705,6 +1705,11 @@ EditorFileDialog::EditorFileDialog() {
ED_SHORTCUT("file_dialog/move_favorite_up", TTR("Move Favorite Up"), KeyModifierMask::CMD_OR_CTRL | Key::UP);
ED_SHORTCUT("file_dialog/move_favorite_down", TTR("Move Favorite Down"), KeyModifierMask::CMD_OR_CTRL | Key::DOWN);
+ if (EditorSettings::get_singleton()) {
+ ED_SHORTCUT_OVERRIDE("file_dialog/toggle_favorite", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::F);
+ ED_SHORTCUT_OVERRIDE("file_dialog/toggle_mode", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::V);
+ }
+
HBoxContainer *pathhb = memnew(HBoxContainer);
dir_prev = memnew(Button);
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index da4c1328cd..bc0a876c7c 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -3374,6 +3374,9 @@ void EditorInspector::set_keying(bool p_active) {
}
void EditorInspector::set_read_only(bool p_read_only) {
+ if (p_read_only == read_only) {
+ return;
+ }
read_only = p_read_only;
update_tree();
}
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index b854da8e4f..3555caac8a 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -7203,6 +7203,7 @@ EditorNode::EditorNode() {
file_menu->add_separator();
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open", TTR("Quick Open..."), KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::O), FILE_QUICK_OPEN);
+ ED_SHORTCUT_OVERRIDE("editor/quick_open", "macos", KeyModifierMask::META + KeyModifierMask::CTRL + Key::O);
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_scene", TTR("Quick Open Scene..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::O), FILE_QUICK_OPEN_SCENE);
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_script", TTR("Quick Open Script..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::ALT + Key::O), FILE_QUICK_OPEN_SCRIPT);
@@ -7274,7 +7275,7 @@ EditorNode::EditorNode() {
project_menu->add_separator();
project_menu->add_shortcut(ED_SHORTCUT("editor/reload_current_project", TTR("Reload Current Project")), RELOAD_CURRENT_PROJECT);
ED_SHORTCUT_AND_COMMAND("editor/quit_to_project_list", TTR("Quit to Project List"), KeyModifierMask::CTRL + KeyModifierMask::SHIFT + Key::Q);
- ED_SHORTCUT_OVERRIDE("editor/quit_to_project_list", "macos", KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::Q);
+ ED_SHORTCUT_OVERRIDE("editor/quit_to_project_list", "macos", KeyModifierMask::META + KeyModifierMask::CTRL + KeyModifierMask::ALT + Key::Q);
project_menu->add_shortcut(ED_GET_SHORTCUT("editor/quit_to_project_list"), RUN_PROJECT_MANAGER, true);
// Spacer to center 2D / 3D / Script buttons.
@@ -7996,10 +7997,10 @@ EditorNode::EditorNode() {
ED_SHORTCUT_AND_COMMAND("editor/editor_script", TTR("Open Script Editor"), KeyModifierMask::CTRL | Key::F3);
ED_SHORTCUT_AND_COMMAND("editor/editor_assetlib", TTR("Open Asset Library"), KeyModifierMask::CTRL | Key::F4);
- ED_SHORTCUT_OVERRIDE("editor/editor_2d", "macos", KeyModifierMask::ALT | Key::KEY_1);
- ED_SHORTCUT_OVERRIDE("editor/editor_3d", "macos", KeyModifierMask::ALT | Key::KEY_2);
- ED_SHORTCUT_OVERRIDE("editor/editor_script", "macos", KeyModifierMask::ALT | Key::KEY_3);
- ED_SHORTCUT_OVERRIDE("editor/editor_assetlib", "macos", KeyModifierMask::ALT | Key::KEY_4);
+ ED_SHORTCUT_OVERRIDE("editor/editor_2d", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::KEY_1);
+ ED_SHORTCUT_OVERRIDE("editor/editor_3d", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::KEY_2);
+ ED_SHORTCUT_OVERRIDE("editor/editor_script", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::KEY_3);
+ ED_SHORTCUT_OVERRIDE("editor/editor_assetlib", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::KEY_4);
ED_SHORTCUT_AND_COMMAND("editor/editor_next", TTR("Open the next Editor"));
ED_SHORTCUT_AND_COMMAND("editor/editor_prev", TTR("Open the previous Editor"));
diff --git a/editor/editor_paths.cpp b/editor/editor_paths.cpp
index 36ebeb8c33..389c16fd66 100644
--- a/editor/editor_paths.cpp
+++ b/editor/editor_paths.cpp
@@ -218,7 +218,7 @@ EditorPaths::EditorPaths() {
// Validate or create project-specific editor data dir,
// including shader cache subdir.
- if (Engine::get_singleton()->is_project_manager_hint() || Main::is_cmdline_tool()) {
+ if (Engine::get_singleton()->is_project_manager_hint() || (Main::is_cmdline_tool() && !ProjectSettings::get_singleton()->is_project_loaded())) {
// Nothing to create, use shared editor data dir for shader cache.
Engine::get_singleton()->set_shader_cache_path(data_dir);
} else {
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index c90f8e9bf0..b4f5eeda84 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -1384,8 +1384,13 @@ float EditorSettings::get_auto_display_scale() const {
// Shortcuts
+void EditorSettings::_add_shortcut_default(const String &p_name, const Ref<Shortcut> &p_shortcut) {
+ shortcuts[p_name] = p_shortcut;
+}
+
void EditorSettings::add_shortcut(const String &p_name, const Ref<Shortcut> &p_shortcut) {
shortcuts[p_name] = p_shortcut;
+ shortcuts[p_name]->set_meta("customized", true);
}
bool EditorSettings::is_shortcut(const String &p_name, const Ref<InputEvent> &p_event) const {
@@ -1489,12 +1494,12 @@ void ED_SHORTCUT_OVERRIDE_ARRAY(const String &p_path, const String &p_feature, c
}
}
- // Override the existing shortcut only if it wasn't customized by the user (i.e. still "original").
- sc->set_meta("original", events.duplicate(true));
-
- if (Shortcut::is_event_array_equal(sc->get_events(), sc->get_meta("original"))) {
+ // Override the existing shortcut only if it wasn't customized by the user.
+ if (!sc->has_meta("customized")) {
sc->set_events(events);
}
+
+ sc->set_meta("original", events.duplicate(true));
}
Ref<Shortcut> ED_SHORTCUT(const String &p_path, const String &p_name, Key p_keycode) {
@@ -1543,7 +1548,7 @@ Ref<Shortcut> ED_SHORTCUT_ARRAY(const String &p_path, const String &p_name, cons
sc->set_name(p_name);
sc->set_events(events);
sc->set_meta("original", events.duplicate(true)); //to compare against changes
- EditorSettings::get_singleton()->add_shortcut(p_path, sc);
+ EditorSettings::get_singleton()->_add_shortcut_default(p_path, sc);
return sc;
}
diff --git a/editor/editor_settings.h b/editor/editor_settings.h
index e8775636a3..e1d3e757e0 100644
--- a/editor/editor_settings.h
+++ b/editor/editor_settings.h
@@ -170,6 +170,7 @@ public:
String get_editor_layouts_config() const;
float get_auto_display_scale() const;
+ void _add_shortcut_default(const String &p_name, const Ref<Shortcut> &p_shortcut);
void add_shortcut(const String &p_name, const Ref<Shortcut> &p_shortcut);
bool is_shortcut(const String &p_name, const Ref<InputEvent> &p_event) const;
Ref<Shortcut> get_shortcut(const String &p_name) const;
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 52482ecb16..ab061c4d5c 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -186,7 +186,7 @@ void InspectorDock::_menu_option_confirm(int p_option, bool p_confirmed) {
}
}
- int history_id = EditorUndoRedoManager::get_singleton()->get_history_for_object(current).id;
+ int history_id = EditorUndoRedoManager::get_singleton()->get_history_id_for_object(current);
EditorUndoRedoManager::get_singleton()->clear_history(true, history_id);
EditorNode::get_singleton()->edit_item(current, inspector);
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index ccbc7c3d74..a584d357cd 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -3814,6 +3814,7 @@ ScriptEditor::ScriptEditor() {
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save", TTR("Save"), KeyModifierMask::ALT | KeyModifierMask::CMD_OR_CTRL | Key::S), FILE_SAVE);
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_as", TTR("Save As...")), FILE_SAVE_AS);
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KeyModifierMask::SHIFT | KeyModifierMask::ALT | Key::S), FILE_SAVE_ALL);
+ ED_SHORTCUT_OVERRIDE("script_editor/save_all", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::S);
file_menu->get_popup()->add_separator();
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Tool Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | Key::R), FILE_TOOL_RELOAD_SOFT);
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/copy_path", TTR("Copy Script Path")), FILE_COPY_PATH);
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 9fe1d8af99..5e70a407dd 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -2270,6 +2270,7 @@ void ScriptTextEditor::register_editor() {
ED_SHORTCUT("script_text_editor/unindent", TTR("Unindent"), KeyModifierMask::SHIFT | Key::TAB);
ED_SHORTCUT("script_text_editor/toggle_comment", TTR("Toggle Comment"), KeyModifierMask::CMD_OR_CTRL | Key::K);
ED_SHORTCUT("script_text_editor/toggle_fold_line", TTR("Fold/Unfold Line"), KeyModifierMask::ALT | Key::F);
+ ED_SHORTCUT_OVERRIDE("script_text_editor/toggle_fold_line", "macos", KeyModifierMask::CTRL | KeyModifierMask::META | Key::F);
ED_SHORTCUT("script_text_editor/fold_all_lines", TTR("Fold All Lines"), Key::NONE);
ED_SHORTCUT("script_text_editor/unfold_all_lines", TTR("Unfold All Lines"), Key::NONE);
ED_SHORTCUT("script_text_editor/duplicate_selection", TTR("Duplicate Selection"), KeyModifierMask::SHIFT | KeyModifierMask::CTRL | Key::D);
diff --git a/editor/plugins/tiles/atlas_merging_dialog.cpp b/editor/plugins/tiles/atlas_merging_dialog.cpp
index eaf72d36ba..8404ea0969 100644
--- a/editor/plugins/tiles/atlas_merging_dialog.cpp
+++ b/editor/plugins/tiles/atlas_merging_dialog.cpp
@@ -245,7 +245,9 @@ bool AtlasMergingDialog::_get(const StringName &p_name, Variant &r_ret) const {
void AtlasMergingDialog::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_VISIBILITY_CHANGED: {
- _update_texture();
+ if (is_visible()) {
+ _update_texture();
+ }
} break;
}
}
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 1d510703b0..c00ef326d0 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -2240,11 +2240,11 @@ void ProjectManager::_open_selected_projects_ask() {
return;
}
- const Size2i popup_min_width = Size2i(600.0 * EDSCALE, 0);
+ const Size2i popup_min_size = Size2i(600.0 * EDSCALE, 400.0 * EDSCALE);
if (selected_list.size() > 1) {
multi_open_ask->set_text(vformat(TTR("You requested to open %d projects in parallel. Do you confirm?\nNote that usual checks for engine version compatibility will be bypassed."), selected_list.size()));
- multi_open_ask->popup_centered(popup_min_width);
+ multi_open_ask->popup_centered(popup_min_size);
return;
}
@@ -2266,7 +2266,7 @@ void ProjectManager::_open_selected_projects_ask() {
// Check if the config_version property was empty or 0.
if (config_version == 0) {
ask_update_settings->set_text(vformat(TTR("The selected project \"%s\" does not specify its supported Godot version in its configuration file (\"project.godot\").\n\nProject path: %s\n\nIf you proceed with opening it, it will be converted to Godot's current configuration file format.\n\nWarning: You won't be able to open the project with previous versions of the engine anymore."), project.project_name, project.path));
- ask_update_settings->popup_centered(popup_min_width);
+ ask_update_settings->popup_centered(popup_min_size);
return;
}
// Check if we need to convert project settings from an earlier engine version.
@@ -2279,14 +2279,14 @@ void ProjectManager::_open_selected_projects_ask() {
ask_update_settings->set_text(vformat(TTR("The selected project \"%s\" was generated by an older engine version, and needs to be converted for this version.\n\nProject path: %s\n\nDo you want to convert it?\n\nWarning: You won't be able to open the project with previous versions of the engine anymore."), project.project_name, project.path));
ask_update_settings->get_ok_button()->set_text(TTR("Convert project.godot"));
}
- ask_update_settings->popup_centered(popup_min_width);
+ ask_update_settings->popup_centered(popup_min_size);
ask_update_settings->get_cancel_button()->grab_focus(); // To prevent accidents.
return;
}
// Check if the file was generated by a newer, incompatible engine version.
if (config_version > ProjectSettings::CONFIG_VERSION) {
dialog_error->set_text(vformat(TTR("Can't open project \"%s\" at the following path:\n\n%s\n\nThe project settings were created by a newer engine version, whose settings are not compatible with this version."), project.project_name, project.path));
- dialog_error->popup_centered(popup_min_width);
+ dialog_error->popup_centered(popup_min_size);
return;
}
// Check if the project is using features not supported by this build of Godot.
@@ -2315,7 +2315,7 @@ void ProjectManager::_open_selected_projects_ask() {
warning_message += TTR("Open anyway? Project will be modified.");
ask_update_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
ask_update_settings->set_text(warning_message);
- ask_update_settings->popup_centered(popup_min_width);
+ ask_update_settings->popup_centered(popup_min_size);
return;
}
@@ -2325,7 +2325,7 @@ void ProjectManager::_open_selected_projects_ask() {
void ProjectManager::_full_convert_button_pressed() {
ask_update_settings->hide();
- ask_full_convert_dialog->popup_centered(Size2i(600.0 * EDSCALE, 0));
+ ask_full_convert_dialog->popup_centered(Size2i(600.0 * EDSCALE, 400.0 * EDSCALE));
ask_full_convert_dialog->get_cancel_button()->grab_focus();
}
diff --git a/editor/translations/editor/ar.po b/editor/translations/editor/ar.po
index 51d860efe7..719f8fd49e 100644
--- a/editor/translations/editor/ar.po
+++ b/editor/translations/editor/ar.po
@@ -71,13 +71,14 @@
# أحمد النور <ahmed2699@gmail.com>, 2022.
# Commander Gordon <gordoncommander@gmail.com>, 2022.
# Abdulrahman <abdelrahman.ramadan686@gmail.com>, 2022.
+# "Ali F. Abbas" <alifuadabbas@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-09 09:37+0000\n"
-"Last-Translator: Nabeel20 <nabeelandnizam@gmail.com>\n"
+"PO-Revision-Date: 2023-02-18 04:10+0000\n"
+"Last-Translator: \"Ali F. Abbas\" <alifuadabbas@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -146,18 +147,160 @@ msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
msgstr ""
"المحور الأÙقي لمركز التحكم Joystick الثاني، المÙطلق الأيسر، Sony L2ØŒ Xbox LT"
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "عصا التحكم 2 المحور Y, الزر الأيمن, زر R2 على Sony, زر RT على Xbox"
+
+msgid "Joystick 3 X-Axis"
+msgstr "المحور X لعصا التحكم 3"
+
+msgid "Joystick 3 Y-Axis"
+msgstr "المحور Y لعصا التحكم 3"
+
+msgid "Joystick 4 X-Axis"
+msgstr "المحور X لعصا التحكم 4"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "المحور Y لعصا التحكم 4"
+
+msgid "Unknown Joypad Axis"
+msgstr "محور ذراع تحكم غير معروÙ"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "حركةذراع التحكم على المحور d% (s%) مع قيمة 2f.%"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "Ù…Ùتاح الحركة الأسÙÙ„, زر X على سوني, زر A على Xbox, زر B على Nintendo"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Ù…Ùتاح الحركة الأيمن, زر O على سوني, زر B على Xbox, زر A على Nintendo"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr ""
+"Ù…Ùتاح الحركة الأيسر, زر المربع على سوني, زر X على Xbox, زر Y على Nintendo"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr ""
+"Ù…Ùتاح الحركة الأعلى, زر المثلث على سوني, زر Y على Xbox, زر X على Nintendo"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr ""
+"Ù…Ùتاح الرجوع, زر الإختيار على سوني, زر الرجوع على Xbox, زر - على Nintendo"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "الدليل, Sony PS, زر الرئيسية على Xbox"
+
+msgid "Start, Nintendo +"
+msgstr "البداية, زر + على Nintendo"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "الإتجاه الأيسر على عصا التحكم, زر L3 على Sony, زر L/LS على Xbox"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "الإتجاه الأيمن على عصا التحكم, زر R3 على Sony, زر R/RS على Xbox"
+
+msgid "Left Shoulder, Sony L1, Xbox LB"
+msgstr "زر الكت٠الأيسر, زر L1 على Sony, زر LB على Xbox"
+
+msgid "Right Shoulder, Sony R1, Xbox RB"
+msgstr "زر الكت٠الأيمن, زر R1 على Sony, زر RB على Xbox"
+
+msgid "D-pad Up"
+msgstr "زر ذراع التحكم الأعلى"
+
+msgid "D-pad Down"
+msgstr "زر ذراع التحكم الأسÙÙ„"
+
+msgid "D-pad Left"
+msgstr "زر ذراع التحكم الأيسر"
+
+msgid "D-pad Right"
+msgstr "زر ذراع التحكم الأيمن"
+
+msgid "Xbox Share, PS5 Microphone, Nintendo Capture"
+msgstr "Xbox مشاركة, PS5 ميكروÙون, Nintendo إلتقاط"
+
+msgid "Xbox Paddle 1"
+msgstr "Xbox المجدا٠1"
+
+msgid "Xbox Paddle 2"
+msgstr "Xbox المجدا٠2"
+
+msgid "Xbox Paddle 3"
+msgstr "Xbox المجدا٠3"
+
+msgid "Xbox Paddle 4"
+msgstr "Xbox المجدا٠4"
+
+msgid "PS4/5 Touchpad"
+msgstr "PS4/5 لوحة اللمس"
+
+msgid "Joypad Button %d"
+msgstr "ذراع التحكم d%"
+
+msgid "Pressure:"
+msgstr "الضغط:"
+
+msgid "touched"
+msgstr "Ù„Ùمست"
+
+msgid "released"
+msgstr "تÙركت"
+
+msgid "Screen %s at (%s) with %s touch points"
+msgstr "الشاشة s% ÙÙŠ (s%) مع s% نقاط لمس"
+
+msgid ""
+"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
+msgstr "الشاشة سÙحبت مع s% نقاط لمس ÙÙŠ الموقع (s%) مع سرعة (s%)"
+
+msgid "Magnify Gesture at (%s) with factor %s"
+msgstr "إيماءة تكبير ÙÙŠ (s%) مع العامل s%"
+
+msgid "Pan Gesture at (%s) with delta (%s)"
+msgstr "إيماءة حركة ÙÙŠ (s%) مع معامل دلتا (s%)"
+
+msgid "MIDI Input on Channel=%s Message=%s"
+msgstr "إدخال MIDI على القناة=s% الرسالة=s%"
+
+msgid "Input Event with Shortcut=%s"
+msgstr "حدث إدخال مع إختصار=s%"
+
+msgid "Accept"
+msgstr "قبول"
+
msgid "Select"
msgstr "حدد"
msgid "Cancel"
msgstr "إلغاء"
+msgid "Focus Next"
+msgstr "حدد التالي"
+
+msgid "Focus Prev"
+msgstr "حدد السابق"
+
+msgid "Left"
+msgstr "يساراً"
+
+msgid "Right"
+msgstr "يميناً"
+
msgid "Up"
msgstr "أعلى"
msgid "Down"
msgstr "أسÙÙ„"
+msgid "Page Up"
+msgstr "الصÙحة السابقة"
+
+msgid "Page Down"
+msgstr "الصÙحة التالية"
+
+msgid "Home"
+msgstr "الرئيسية"
+
msgid "End"
msgstr "النهاية"
@@ -176,21 +319,123 @@ msgstr "تراجع"
msgid "Redo"
msgstr "إعادة تراجع"
+msgid "Completion Query"
+msgstr "إستعلام إكمال"
+
+msgid "New Line"
+msgstr "سطر جديد"
+
+msgid "New Blank Line"
+msgstr "سطر Ùارغ جديد"
+
+msgid "New Line Above"
+msgstr "سطر جديد ÙÙŠ الأعلى"
+
+msgid "Indent"
+msgstr "المساÙØ© البادئة"
+
+msgid "Dedent"
+msgstr "إنعدام المساÙØ© البادئة"
+
+msgid "Backspace"
+msgstr "Ù…Ùتاح التراجع"
+
+msgid "Backspace Word"
+msgstr "تراجع عن كلمة"
+
+msgid "Backspace all to Left"
+msgstr "أرجع الكل إلى اليسار"
+
msgid "Delete"
msgstr "حذÙ"
+msgid "Delete Word"
+msgstr "حذ٠كلمة"
+
+msgid "Delete all to Right"
+msgstr "حذ٠الكل إلى اليمين"
+
+msgid "Caret Left"
+msgstr "علامة إقحام على اليسار"
+
+msgid "Caret Word Left"
+msgstr "علامة إقحام الكلمة على اليسار"
+
+msgid "Caret Right"
+msgstr "علامة إقحام على اليمين"
+
+msgid "Caret Word Right"
+msgstr "علامة إقحام الكلمة على اليمين"
+
+msgid "Caret Up"
+msgstr "علامة الإقحام العليا"
+
+msgid "Caret Down"
+msgstr "عالمة الإقحام السÙلى"
+
+msgid "Caret Line Start"
+msgstr "علامة إقحام بداية السطر"
+
+msgid "Caret Line End"
+msgstr "علامة إقحام نهاية السطر"
+
+msgid "Caret Page Up"
+msgstr "علامة إقحام الصÙحة السابقة"
+
+msgid "Caret Page Down"
+msgstr "علامة إقحام الصÙحة التالية"
+
+msgid "Caret Document Start"
+msgstr "علامة إقحام بداية المستند"
+
+msgid "Caret Document End"
+msgstr "علامة إقحام نهاية المستند"
+
+msgid "Caret Add Below"
+msgstr "علامة إقحام إضاÙØ© للأسÙÙ„"
+
+msgid "Caret Add Above"
+msgstr "علامة إقحام إضاÙØ© للأعلى"
+
+msgid "Scroll Up"
+msgstr "مرر لأعلى"
+
+msgid "Scroll Down"
+msgstr "مرر لأسÙÙ„"
+
msgid "Select All"
msgstr "تحديد الكل"
+msgid "Select Word Under Caret"
+msgstr "حدد كلمة تحت علامة الإقحام"
+
+msgid "Add Selection for Next Occurrence"
+msgstr "أض٠التحديد للتكرار التالي"
+
+msgid "Clear Carets and Selection"
+msgstr "مسح التحديد و علامات الإقحام"
+
+msgid "Toggle Insert Mode"
+msgstr "التبديل إلى وضع الإدخال"
+
msgid "Duplicate Nodes"
msgstr "مضاعÙØ© العÙقد"
msgid "Delete Nodes"
msgstr "حذ٠العÙقد"
+msgid "Go Up One Level"
+msgstr "إذهب مرحلة للأعلى"
+
msgid "Refresh"
msgstr "تحديث"
+msgid "Show Hidden"
+msgstr "أظهر الملÙات المخÙية"
+
+msgid "Swap Input Direction"
+msgstr "تبديل جهة الإدخال"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "مدخلات خاطئة %d (لم يتم تمريرها) ÙÙŠ التعبير"
@@ -212,6 +457,12 @@ msgstr "معامل غير صالح لإنشاء '%s'"
msgid "On call to '%s':"
msgstr "عند استدعاء '%s':"
+msgid "Built-in script"
+msgstr "النص المÙدمج:"
+
+msgid "Built-in"
+msgstr "Ù…Ùدمج:"
+
msgid "B"
msgstr "بايت"
@@ -233,6 +484,18 @@ msgstr "بيبي بايت (PiB)"
msgid "EiB"
msgstr "إكسي بايت (EiB)"
+msgid "Example: %s"
+msgstr "مثال: s%"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "العنصر: d%"
+msgstr[1] "العنصر: d%"
+msgstr[2] "العنصران: d%"
+msgstr[3] "العناصر: d%"
+msgstr[4] "العناصر: d%"
+msgstr[5] "العناصر: d%"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -243,9 +506,18 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Ùعالية action بهذا الاسم '%s' موجودة سلÙاً."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "لا يمكن التراجع - الإجراء هو Ù†Ùس الإجراء الأولي"
+
+msgid "Revert Action"
+msgstr "التراجع عن الإجراء"
+
msgid "Add Event"
msgstr "إضاÙØ© حَدث"
+msgid "Remove Action"
+msgstr "مسح الإجراء"
+
msgid "Add"
msgstr "أضÙ"
@@ -261,6 +533,9 @@ msgstr "الوقت:"
msgid "Value:"
msgstr "القيمة:"
+msgid "Update Selected Key Handles"
+msgstr "تحديث المÙاتيح المحددة"
+
msgid "Insert Key Here"
msgstr "أدخل المÙتاح هنا"
@@ -459,6 +734,9 @@ msgstr "موقع"
msgid "Scale"
msgstr "المقياس"
+msgid "BlendShape"
+msgstr "â€â€®Ø´ÙƒÙ„ ممزوج"
+
msgid "Methods"
msgstr "دوال"
@@ -541,12 +819,6 @@ msgstr "إستعمل منحنيات بيزر"
msgid "Create RESET Track(s)"
msgstr "إنشاء مسار(ات) إعادة التعيين (RESET)"
-msgid "Anim. Optimizer"
-msgstr "Ù…Ùحسن الحركة"
-
-msgid "Max. Angular Error:"
-msgstr "أقصي أخطاء زواية:"
-
msgid "Optimize"
msgstr "تحسين"
@@ -1536,9 +1808,6 @@ msgstr "Ø¥Ùتح"
msgid "Select Current Folder"
msgstr "تحديد المجلد الحالي"
-msgid "File exists, overwrite?"
-msgstr "المل٠موجود، إستبدال؟"
-
msgid "Select This Folder"
msgstr "حدد هذا المجلد"
@@ -3176,7 +3445,7 @@ msgid "Import As:"
msgstr "إستيراد ك:"
msgid "Preset"
-msgstr "إعداد Ù…Ùسبق"
+msgstr "المعد مسبقا"
msgid "Save Scenes, Re-Import, and Restart"
msgstr "احÙظ المشاهد، إعادة-الإستيراد، وإعادة التشغيل"
@@ -7053,9 +7322,6 @@ msgstr "تغيير المنطقة الميتة للÙعالية Action deadzone"
msgid "Erase Input Action"
msgstr "مسح إجراء الإدخال"
-msgid "Rename Input Action Event"
-msgstr "إعادة تسمية حدث Ùعالية الإدخال"
-
msgid "Project Settings (project.godot)"
msgstr "إعدادات المشروع (project.godot)"
@@ -8124,9 +8390,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "العÙقدة الرئيسة لمÙشغل الرسومات المتحركة ليست عÙقدة صالحة."
-msgid "Pick a color from the editor window."
-msgstr "اختر لوناً من ناÙذة المÙحرر."
-
msgid "Switch between hexadecimal and code values."
msgstr "بدّل بين القيم البرمجية والسداسية العشرية."
@@ -8156,9 +8419,6 @@ msgstr "تنبيه!"
msgid "Please Confirm..."
msgstr "ÙŠÙرجى التأكيد..."
-msgid "Must use a valid extension."
-msgstr "يجب أن يستخدم صيغة صحيحة."
-
msgid "Enable grid minimap."
msgstr "تÙعيل الخريطة المصغرة للشبكة."
diff --git a/editor/translations/editor/bg.po b/editor/translations/editor/bg.po
index 227c371174..dceb2a6a32 100644
--- a/editor/translations/editor/bg.po
+++ b/editor/translations/editor/bg.po
@@ -23,7 +23,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
+"PO-Revision-Date: 2023-02-18 04:10+0000\n"
"Last-Translator: Любомир ВаÑилев <lyubomirv@gmx.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/bg/>\n"
@@ -37,15 +37,75 @@ msgstr ""
msgid "Physical"
msgstr "ФизичеÑки"
+msgid "Left Mouse Button"
+msgstr "ЛÑв бутон на мишката"
+
+msgid "Right Mouse Button"
+msgstr "ДеÑен бутон на мишката"
+
+msgid "Middle Mouse Button"
+msgstr "Среден бутон на мишката"
+
+msgid "Mouse Wheel Up"
+msgstr "Колелцето на мишката нагоре"
+
+msgid "Mouse Wheel Down"
+msgstr "Колелцето на мишката надолу"
+
+msgid "Mouse Wheel Left"
+msgstr "Колелцето на мишката налÑво"
+
+msgid "Mouse Wheel Right"
+msgstr "Колелцето на мишката надÑÑно"
+
+msgid "Mouse Thumb Button 1"
+msgstr "Страничен бутон 1 на мишката"
+
+msgid "Mouse Thumb Button 2"
+msgstr "Страничен бутон 2 на мишката"
+
msgid "Button"
msgstr "Бутон"
+msgid "Double Click"
+msgstr "Двойно щракване"
+
+msgid "D-pad Left"
+msgstr "КръÑтат бутон налÑво"
+
+msgid "D-pad Right"
+msgstr "КръÑтат бутон надÑÑно"
+
+msgid "Joypad Button %d"
+msgstr "Бутон %d на контролера"
+
+msgid "Accept"
+msgstr "Потвърждаване"
+
msgid "Cancel"
msgstr "Отказ"
+msgid "Focus Next"
+msgstr "ФокуÑиране върху Ñледващото"
+
+msgid "Focus Prev"
+msgstr "ФокуÑиране върху предишното"
+
+msgid "Left"
+msgstr "ÐалÑво"
+
+msgid "Right"
+msgstr "ÐадÑÑно"
+
msgid "Down"
msgstr "Ðадолу"
+msgid "Page Up"
+msgstr "Страница нагоре"
+
+msgid "Page Down"
+msgstr "Страница надолу"
+
msgid "End"
msgstr "Край"
@@ -58,18 +118,84 @@ msgstr "Копиране"
msgid "Paste"
msgstr "ПоÑтавÑне"
+msgid "New Line"
+msgstr "Ðов ред"
+
+msgid "Indent"
+msgstr "Увеличаване на отÑтъпа"
+
+msgid "Dedent"
+msgstr "ÐамалÑване на отÑтъпа"
+
msgid "Delete"
msgstr "Изтриване"
+msgid "Delete Word"
+msgstr "Изтриване на дума"
+
+msgid "Delete all to Right"
+msgstr "Изтриване на вÑичко вдÑÑно"
+
+msgid "Caret Left"
+msgstr "КурÑор налÑво"
+
+msgid "Caret Word Left"
+msgstr "КурÑор Ñ Ð´ÑƒÐ¼Ð° налÑво"
+
+msgid "Caret Right"
+msgstr "КурÑор надÑÑно"
+
+msgid "Caret Word Right"
+msgstr "КурÑор Ñ Ð´ÑƒÐ¼Ð° надÑÑно"
+
+msgid "Caret Down"
+msgstr "КурÑор надолу"
+
+msgid "Caret Line Start"
+msgstr "КурÑор в началото на реда"
+
+msgid "Caret Line End"
+msgstr "КурÑор в ÐºÑ€Ð°Ñ Ð½Ð° реда"
+
+msgid "Caret Page Up"
+msgstr "КурÑор Ñтраница нагоре"
+
+msgid "Caret Page Down"
+msgstr "КурÑор Ñтраница надолу"
+
+msgid "Caret Document Start"
+msgstr "КурÑор в началото на документа"
+
+msgid "Caret Document End"
+msgstr "КурÑор в ÐºÑ€Ð°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°"
+
+msgid "Scroll Up"
+msgstr "Превъртане нагоре"
+
+msgid "Scroll Down"
+msgstr "Превъртане надолу"
+
msgid "Select All"
msgstr "Избиране на вÑичко"
+msgid "Clear Carets and Selection"
+msgstr "ИзчиÑтване на курÑорите и избраното"
+
+msgid "Toggle Insert Mode"
+msgstr "Превключване на режима на вмъкване"
+
msgid "Duplicate Nodes"
msgstr "Дублиране на обектите"
msgid "Delete Nodes"
msgstr "Изтриване на обектите"
+msgid "Show Hidden"
+msgstr "Показване на Ñкритите"
+
+msgid "Swap Input Direction"
+msgstr "ПромÑна на направлението на въвеждане"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Ðеправилен входен параметър %d (не е подаден) в израза"
@@ -92,6 +218,12 @@ msgstr "Ðеправилни аргументи за изграждане на â
msgid "On call to '%s':"
msgstr "При извикване на „%s“:"
+msgid "Built-in script"
+msgstr "Вграден Ñкрипт"
+
+msgid "Built-in"
+msgstr "Вграден"
+
msgid "B"
msgstr "Б"
@@ -116,6 +248,36 @@ msgstr "ЕиБ"
msgid "An action with the name '%s' already exists."
msgstr "Вече ÑъщеÑтвува дейÑтвие Ñ Ð¸Ð¼ÐµÑ‚Ð¾ „%s“."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "ÐÑма нищо за отмÑна – дейÑтвието е Ñъщото като първоначалното"
+
+msgid "Revert Action"
+msgstr "ОтмÑна на дейÑтвието"
+
+msgid "Add Event"
+msgstr "ДобавÑне на Ñъбитие"
+
+msgid "Remove Action"
+msgstr "Премахване на дейÑтвието"
+
+msgid "Cannot Remove Action"
+msgstr "ДейÑтвието не може да Ñе премахне"
+
+msgid "Edit Event"
+msgstr "Редактиране на Ñъбитието"
+
+msgid "Remove Event"
+msgstr "Премахване на Ñъбитието"
+
+msgid "Filter by name..."
+msgstr "Филтриране по име…"
+
+msgid "Clear All"
+msgstr "ИзчиÑтване на вÑичко"
+
+msgid "Add New Action"
+msgstr "ДобавÑне на ново дейÑтвие"
+
msgid "Add"
msgstr "ДобавÑне"
@@ -143,6 +305,12 @@ msgstr "ДобавÑне на точка на Безие"
msgid "Move Bezier Points"
msgstr "ПремеÑтване на точки на Безие"
+msgid "Select All Keys"
+msgstr "Избиране на вÑички ключове"
+
+msgid "Deselect All Keys"
+msgstr "Премахване на избора на вÑички ключове"
+
msgid "Change Animation Length"
msgstr "ПромÑна на продължителноÑтта на анимациÑта"
@@ -152,6 +320,15 @@ msgstr "Промени Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ†Ð¸ÐºÑŠÐ»"
msgid "Property Track"
msgstr "Пътечка за ÑвойÑтво"
+msgid "3D Position Track"
+msgstr "Пътечка за 3-измерна позициÑ"
+
+msgid "3D Rotation Track"
+msgstr "Пътечка за 3-измерна ротациÑ"
+
+msgid "3D Scale Track"
+msgstr "Пътечка за 3-измерно Ñкалиране"
+
msgid "Call Method Track"
msgstr "Пътечка за извикване на метод"
@@ -188,6 +365,9 @@ msgstr "ПромÑна на Ð¿ÑŠÑ‚Ñ Ð½Ð° пътечката"
msgid "Toggle this track on/off."
msgstr "Включване/изключване на тази пътечка."
+msgid "Use Blend"
+msgstr "Използване на ÑмеÑване"
+
msgid "Update Mode (How this property is set)"
msgstr "Режим на обновÑване (как Ñе задава ÑтойноÑÑ‚ на това ÑвойÑтво)"
@@ -213,9 +393,18 @@ msgstr "Завъртане:"
msgid "Scale:"
msgstr "Мащаб:"
+msgid "Blend Shape:"
+msgstr "Форма за ÑмеÑване:"
+
msgid "Type:"
msgstr "Тип:"
+msgid "(Invalid, expected type: %s)"
+msgstr "(Ðеправилно, очакван тип: %s)"
+
+msgid "Start (s):"
+msgstr "Ðачало (Ñек):"
+
msgid "Toggle Track Enabled"
msgstr "Включване/изключване на пътечката"
@@ -234,12 +423,21 @@ msgstr "Линейно"
msgid "Cubic"
msgstr "Кубично"
+msgid "Linear Angle"
+msgstr "Линеен ъгъл"
+
+msgid "Cubic Angle"
+msgstr "Кубичен ъгъл"
+
msgid "Insert Key"
msgstr "Вмъкване на ключ"
msgid "Duplicate Key(s)"
msgstr "Дублиране на ключа/ключовете"
+msgid "Add RESET Value(s)"
+msgstr "ДобавÑне на ÐУЛИРÐÐЕ на ÑтойноÑÑ‚(и)"
+
msgid "Delete Key(s)"
msgstr "Изтриване на ключа/ключовете"
@@ -255,6 +453,12 @@ msgstr "ПромÑна на режима на повтарÑне на анима
msgid "Remove Anim Track"
msgstr "Премахване на анимационната пътечка"
+msgid "Create new track for %s and insert key?"
+msgstr "Да Ñе Ñъздаде ли нова пътечка за %s и да Ñе вмъкне ключ?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "Да Ñе Ñъздадат ли %d нови пътечки и да Ñе вмъкнат ключове?"
+
msgid "Create"
msgstr "Създаване"
@@ -273,6 +477,11 @@ msgstr "ПромÑна на Ñтъпката на анимациÑта"
msgid "Rearrange Tracks"
msgstr "Пренареждане на пътечките"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr ""
+"Пътечките за форма на ÑмеÑване могат да работÑÑ‚ Ñамо Ñ Ð¾Ð±ÐµÐºÑ‚Ð¸ от тип "
+"MeshInstance3D."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -303,9 +512,15 @@ msgstr "ДобавÑне на ключ за пътечка Ñ Ð¼ÐµÑ‚Ð¾Ð´"
msgid "Position"
msgstr "ПозициÑ"
+msgid "Rotation"
+msgstr "РотациÑ"
+
msgid "Scale"
msgstr "Скалиране"
+msgid "BlendShape"
+msgstr "Форма на ÑмеÑване"
+
msgid "Methods"
msgstr "Методи"
@@ -409,6 +624,9 @@ msgstr "Свързване към Ñкрипт:"
msgid "From Signal:"
msgstr "От Ñигнал:"
+msgid "Go to Source"
+msgstr "Към източника"
+
msgid "Scene does not contain any script."
msgstr "Сцената не Ñъдържа Ñкриптове."
@@ -418,6 +636,9 @@ msgstr "Избиране на метод"
msgid "Remove"
msgstr "Премахване"
+msgid "Unbind Signal Arguments:"
+msgstr "ÐеÑвързани аргументи на Ñигнал:"
+
msgid "Receiver Method:"
msgstr "Метод-получател:"
@@ -433,6 +654,9 @@ msgstr "Свързване"
msgid "Signal:"
msgstr "Сигнал:"
+msgid "No description."
+msgstr "ÐÑма опиÑание."
+
msgid "Connect '%s' to '%s'"
msgstr "Свързване на „%s“ Ñ â€ž%s“"
@@ -451,12 +675,18 @@ msgstr "Разкачване"
msgid "Connect a Signal to a Method"
msgstr "Свързване на Ñигнала към метод"
+msgid "Edit Connection: '%s'"
+msgstr "Редактиране на връзката: „%s“"
+
msgid "Signals"
msgstr "Сигнали"
msgid "Disconnect All"
msgstr "Разкачване на вÑички"
+msgid "Copy Name"
+msgstr "Копиране на името"
+
msgid "Edit..."
msgstr "Редактиране..."
@@ -481,6 +711,9 @@ msgstr "СъвпадениÑ:"
msgid "Description:"
msgstr "ОпиÑание:"
+msgid "Remote %s:"
+msgstr "Отдалечено %s:"
+
msgid "Debugger"
msgstr "Дебъгер"
@@ -511,15 +744,72 @@ msgstr "Грешка:"
msgid "%s Error"
msgstr "Грешка от %s"
+msgid "%s Error:"
+msgstr "Грешка в %s:"
+
+msgid "%s Source"
+msgstr "Изходен код на %s:"
+
+msgid "%s Source:"
+msgstr "Изходен код на %s:"
+
+msgid "Debug session started."
+msgstr "СеÑиÑта на дебъгване започна."
+
+msgid "Debug session closed."
+msgstr "СеÑиÑта на дебъгване приключи."
+
+msgid "Line %d"
+msgstr "Ред %d"
+
+msgid "Delete Breakpoint"
+msgstr "Изтриване на точката на прекъÑване"
+
+msgid "Delete All Breakpoints in:"
+msgstr "Премахване на вÑички точки на прекъÑване в:"
+
+msgid "Delete All Breakpoints"
+msgstr "Премахване на вÑички точки на прекъÑване"
+
msgid "Copy Error"
msgstr "Копиране на грешката"
+msgid "Open C++ Source on GitHub"
+msgstr "ОтварÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ (C++) в GitHub"
+
+msgid "C++ Source"
+msgstr "Изходен код (C++)"
+
+msgid "Video RAM"
+msgstr "Видео-памет"
+
msgid "Skip Breakpoints"
msgstr "ПропуÑкане на точките на прекъÑване"
+msgid "Step Into"
+msgstr "Ðавлизане навътре"
+
+msgid "Step Over"
+msgstr "ПреÑкачане"
+
+msgid "Break"
+msgstr "Пауза"
+
+msgid "Continue"
+msgstr "Продължаване"
+
+msgid "Stack Frames"
+msgstr "Стек"
+
+msgid "Filter Stack Variables"
+msgstr "Филтриране на променливите в Ñтека"
+
msgid "Breakpoints"
msgstr "Точки на прекъÑване"
+msgid "Expand All"
+msgstr "Разгъване на вÑичко"
+
msgid "Collapse All"
msgstr "Свиване на вÑичко"
@@ -739,21 +1029,72 @@ msgstr "Глобална променлива"
msgid "Navigation"
msgstr "ÐавигациÑ"
+msgid "Navigation, both 2D and 3D."
+msgstr "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ (2- и 3-измерна)."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° текÑÑ‚Ð¾Ð²Ð¸Ñ Ñървър на оÑновата на библиотеките ICU и HarfBuzz.\n"
+"Поддържат Ñе Ñложни текÑтови оформлениÑ, двупоÑочен текÑÑ‚ и контекÑтно-"
+"завиÑимите функционалноÑти на шрифтове OpenType."
+
+msgid ""
+"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
+"library (if disabled, WOFF2 support is also disabled)."
+msgstr ""
+"Поддръжка на форматите за шрифтове TrueType, OpenType, Type 1 и WOFF1чрез "
+"библиотеката FreeType (ако това е изключено, поддръжката на WOFF2 Ñъщо ще "
+"бъде изключена)."
+
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr ""
+"Поддръжка на формата за шрифтове WOFF2 чрез библиотеките FreeType и Brotli."
+
+msgid ""
+"SIL Graphite smart font technology support (supported by Advanced Text "
+"Server only)."
+msgstr ""
+"Поддръжка на умната Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð·Ð° шрифтове „SIL Graphite“ (поддържа Ñе Ñамо "
+"от Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑтов Ñървър)."
+
+msgid "General Features:"
+msgstr "Общи функционалноÑти:"
+
+msgid "Text Rendering and Font Options:"
+msgstr "ÐаÑтройки за изчертаването на текÑÑ‚ и шрифтовете:"
+
+msgid "File saving failed."
+msgstr "Запазването на файла беше неуÑпешно."
+
msgid "Nodes and Classes:"
msgstr "Обекти и клаÑове:"
+msgid "File '%s' format is invalid, import aborted."
+msgstr "Форматът на файла „%s“ е неправилен. ВнаÑÑнето е прекратено."
+
msgid "Error saving profile to path: '%s'."
msgstr "Грешка при запазването на профила в: „%s“."
msgid "New"
-msgstr "Ðова"
+msgstr "Ðов"
msgid "Save"
msgstr "Запазване"
+msgid "Profile:"
+msgstr "Профил:"
+
msgid "Reset to Defaults"
msgstr "Връщане на Ñтандартните наÑтройки"
+msgid "Actions:"
+msgstr "ДейÑтвиÑ:"
+
+msgid "Please Confirm:"
+msgstr "МолÑ, потвърдете:"
+
msgid "Export Profile"
msgstr "ИзнаÑÑне на профила"
@@ -865,9 +1206,6 @@ msgstr "ОтварÑне"
msgid "Select Current Folder"
msgstr "Избиране на текущата папка"
-msgid "File exists, overwrite?"
-msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?"
-
msgid "Select This Folder"
msgstr "Избиране на тази папка"
@@ -940,6 +1278,9 @@ msgstr "Запазване и реÑтартиране"
msgid "(Re)Importing Assets"
msgstr "(Повторно) внаÑÑне на реÑурÑите"
+msgid "No return value."
+msgstr "Ðе връща ÑтойноÑÑ‚."
+
msgid "Class:"
msgstr "КлаÑ:"
@@ -955,6 +1296,12 @@ msgstr "ОпиÑание"
msgid "overrides %s:"
msgstr "Ð·Ð°Ð¼ÐµÐ½Ñ %s:"
+msgid "property:"
+msgstr "ÑвойÑтво:"
+
+msgid "Operators"
+msgstr "Оператори"
+
msgid "Theme Properties"
msgstr "СвойÑтва на темата"
@@ -976,6 +1323,9 @@ msgstr "Стилове"
msgid "Enumerations"
msgstr "Изброени типове"
+msgid "Annotations"
+msgstr "Ðнотации"
+
msgid "Property Descriptions"
msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑвойÑтвата"
@@ -1006,6 +1356,9 @@ msgstr "Показване на вÑичко"
msgid "Methods Only"
msgstr "Само методи"
+msgid "Operators Only"
+msgstr "Само оператори"
+
msgid "Signals Only"
msgstr "Само Ñигнали"
@@ -1027,6 +1380,9 @@ msgstr "Метод"
msgid "Signal"
msgstr "Сигнал"
+msgid "Annotation"
+msgstr "ÐнотациÑ"
+
msgid "Constant"
msgstr "КонÑтанта"
@@ -1045,9 +1401,15 @@ msgstr "ПремеÑтване нагоре"
msgid "Move Down"
msgstr "ПремеÑтване надолу"
+msgid "Resize Array..."
+msgstr "ПреоразмерÑване на маÑива…"
+
msgid "Resize Array"
msgstr "ПреоразмерÑване на маÑива"
+msgid "Metadata name must be a valid identifier."
+msgstr "Името на мета-данните Ñ‚Ñ€Ñбва да бъде правилен идентификатор."
+
msgid "Copy Property Path"
msgstr "Копиране на Ð¿ÑŠÑ‚Ñ Ð½Ð° ÑвойÑтвото"
@@ -1063,6 +1425,26 @@ msgstr "Редактиране на филтрите"
msgid "Language:"
msgstr "Език:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "ПиÑменоÑÑ‚:"
+
+msgid "Country:"
+msgstr "Страна:"
+
+msgid "Language"
+msgstr "Език"
+
+msgctxt "Locale"
+msgid "Script"
+msgstr "ПиÑменоÑÑ‚"
+
+msgid "Country"
+msgstr "Страна"
+
+msgid "Variant"
+msgstr "Вариант"
+
msgid "Clear Output"
msgstr "ИзчиÑтване на изхода"
@@ -1099,12 +1481,21 @@ msgstr "Грешка при запазването на библиотеката
msgid "Changes may be lost!"
msgstr "Промените могат да бъдат загубени!"
+msgid "Could not start subprocess(es)!"
+msgstr "ПуÑкането на под-процеÑ(и) е невъзможно!"
+
+msgid "Reload the played scene."
+msgstr "Презареждане на пуÑнатата Ñцена."
+
msgid "Play the project."
msgstr "ПуÑкане на проекта."
msgid "Play the edited scene."
msgstr "ПуÑкане на редактираната Ñцена."
+msgid "Play a custom scene."
+msgstr "ПуÑкане на перÑонализирана Ñцена."
+
msgid "Quick Open..."
msgstr "Бързо отварÑне..."
@@ -1120,6 +1511,12 @@ msgstr "Запазване на Ñцената като..."
msgid "Current scene not saved. Open anyway?"
msgstr "Текущата Ñцена не е запазена. ОтварÑне въпреки това?"
+msgid "Remote Undo: %s"
+msgstr "Отдалечена отмÑна: %s"
+
+msgid "Remote Redo: %s"
+msgstr "Отдалечено повторение: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "Сцена, коÑто никога не е била запазвана, не може да бъде презаредена."
@@ -1255,6 +1652,9 @@ msgstr "Повторно отварÑне на затворена Ñцена"
msgid "Save Scene"
msgstr "Запазване на Ñцената"
+msgid "Export As..."
+msgstr "ИзнаÑÑне като…"
+
msgid "MeshLibrary..."
msgstr "Библиотека Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð¸ мрежи…"
@@ -1270,6 +1670,9 @@ msgstr "Проект"
msgid "Project Settings..."
msgstr "ÐаÑтройки на проекта..."
+msgid "Project Settings"
+msgstr "ÐаÑтройки на проекта"
+
msgid "Version Control"
msgstr "Контрол на верÑиите"
@@ -1294,6 +1697,9 @@ msgstr "Редактор"
msgid "Editor Settings..."
msgstr "ÐаÑтройки на редактора..."
+msgid "Command Palette..."
+msgstr "Палитра Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸â€¦"
+
msgid "Take Screenshot"
msgstr "ЗаÑнемане на екрана"
@@ -1321,6 +1727,9 @@ msgstr "ОтноÑно Godot"
msgid "Run Project"
msgstr "ПуÑкане на проекта"
+msgid "Choose a renderer."
+msgstr "Избор на метод на изчертаване."
+
msgid "Inspector"
msgstr "ИнÑпектор"
@@ -1412,21 +1821,51 @@ msgstr "Ðов Ñкрипт"
msgid "Extend Script"
msgstr "РазширÑване на Ñкрипта"
+msgid "New Shader"
+msgstr "Ðов шейдър"
+
+msgid "Edit Built-in Action"
+msgstr "Редактиране на вграденото дейÑтвие"
+
msgid "Editor Settings"
msgstr "ÐаÑтройки на редактора"
msgid "General"
msgstr "Общи"
+msgid "No notifications."
+msgstr "ÐÑма извеÑтиÑ."
+
+msgid "Show notifications."
+msgstr "Показване на извеÑтиÑта."
+
+msgid "Silence the notifications."
+msgstr "Заглушаване на извеÑтиÑта."
+
msgid "All Devices"
msgstr "Ð’Ñички уÑтройÑтва"
msgid "Device"
msgstr "УÑтройÑтво"
+msgid "Completed with warnings."
+msgstr "Завършено Ñ Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ´Ð¸Ñ‚ÐµÐ»Ð½Ð¸ ÑъобщениÑ."
+
msgid "Could not open file to read from path \"%s\"."
msgstr "Файловете на проекта не могат да бъдат изнеÑени като проект на gradle."
+msgid "Failed to export project files."
+msgstr "Файловете на проекта не бÑха изнеÑени уÑпешно."
+
+msgid "Can't open encrypted file to write."
+msgstr "Ðе може да бъде отворен шифрован файл за запиÑ."
+
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ðе може да бъде отворен файл за четене от Ð¿ÑŠÑ‚Ñ â€ž%s“."
+
+msgid "Template file not found: \"%s\"."
+msgstr "ШаблонниÑÑ‚ файл не е намерен: „%s“."
+
msgid "Retrieving the mirror list..."
msgstr "Получаване на ÑпиÑъка Ñ Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¸ меÑтоположениÑ..."
@@ -1563,9 +2002,21 @@ msgstr ""
"Ðеправилен ключ за шифроване (Ñ‚Ñ€Ñбва да бъде Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° 64 шеÑтнадеÑетични "
"знака)"
+msgid "Export PCK/ZIP..."
+msgstr "ИзнаÑÑне на PCK/ZIP…"
+
+msgid "Export Project..."
+msgstr "ИзнаÑÑне на проекта…"
+
msgid "Export All"
msgstr "ИзнаÑÑне на вÑичко"
+msgid "Choose an export mode:"
+msgstr "Изберете режим на изнаÑÑне:"
+
+msgid "Export All..."
+msgstr "ИзнаÑÑне на вÑичко…"
+
msgid "ZIP File"
msgstr "Файл ZIP"
@@ -1590,6 +2041,12 @@ msgstr "Грешка при премеÑтването:"
msgid "Error duplicating:"
msgstr "Грешка при дублирането:"
+msgid "Failed to save resource at %s: %s"
+msgstr "РеÑурÑÑŠÑ‚ не може да бъде запазен в %s: %s"
+
+msgid "Failed to load resource at %s: %s"
+msgstr "РеÑурÑÑŠÑ‚ не може да бъде зареден от %s: %s"
+
msgid "Unable to update dependencies:"
msgstr "ЗавиÑимоÑтите не могат да бъдат обновени:"
@@ -1653,6 +2110,15 @@ msgstr "ЗамÑна във файловете"
msgid "Searching..."
msgstr "ТърÑене..."
+msgid "%d match in %d file"
+msgstr "%d Ñъвпадение в %d файл"
+
+msgid "%d matches in %d file"
+msgstr "%d ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² %d файл"
+
+msgid "%d matches in %d files"
+msgstr "%d ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² %d файла"
+
msgid "Invalid group name."
msgstr "Ðеправилно име на група."
@@ -1674,9 +2140,21 @@ msgstr "Редактор на групи"
msgid "Reimport"
msgstr "Повторно внаÑÑне"
+msgid "Enable looping."
+msgstr "Включване на повтарÑнето."
+
msgid "Offset:"
msgstr "ОтмеÑтване:"
+msgid "Loop:"
+msgstr "ПовтарÑне:"
+
+msgid "Music Playback:"
+msgstr "Възпроизвеждане на музика:"
+
+msgid "Configuration:"
+msgstr "КонфигурациÑ:"
+
msgid "Importing Scene..."
msgstr "ВнаÑÑне на Ñцената..."
@@ -1692,6 +2170,35 @@ msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid "<Unnamed Material>"
+msgstr "<Материал без име>"
+
+msgid "Error opening scene"
+msgstr "Грешка при отварÑнето на Ñцената"
+
+msgid "Extract"
+msgstr "Извличане"
+
+msgid "Set Paths"
+msgstr "Задаване на пътища"
+
+msgid "Set paths to save animations as resource files on Reimport"
+msgstr ""
+"Задаване на пътища за запазване на анимациите като реÑурÑни файлове при "
+"повторно внаÑÑне"
+
+msgid "Actions..."
+msgstr "ДейÑтвиÑ…"
+
+msgid "Extract Materials"
+msgstr "Извличане на материалите"
+
+msgid "Materials"
+msgstr "Материали"
+
+msgid "Save Extension:"
+msgstr "Разширение:"
+
msgid "Select Importer"
msgstr "Изберете вид внаÑÑне"
@@ -1713,6 +2220,9 @@ msgstr "ВнаÑÑне като:"
msgid "Failed to load resource."
msgstr "РеÑурÑÑŠÑ‚ не може да бъде зареден."
+msgid "Property Name Style"
+msgstr "Ðачин на показване на имената на ÑвойÑтвата"
+
msgid "Copy Properties"
msgstr "Копиране на ÑвойÑтвата"
@@ -2123,6 +2633,12 @@ msgstr ""
msgid "Save Animation"
msgstr "Запазване на анимациÑта"
+msgid "Invalid AnimationLibrary file."
+msgstr "Ðеправилен файл Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð° библиотека."
+
+msgid "Invalid Animation file."
+msgstr "Ðеправилен файл Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ."
+
msgid "Animation Name:"
msgstr "Име на анимациÑта:"
@@ -2132,6 +2648,21 @@ msgstr "ПоÑтавена анимациÑ"
msgid "Open in Inspector"
msgstr "ОтварÑне в инÑпектора"
+msgid "Paste Animation to Library from clipboard"
+msgstr "ПоÑтавÑне на Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ буфера за обмен в библиотеката"
+
+msgid "Save animation library to resource on disk"
+msgstr "Запазване на анимационната библиотека като реÑÑƒÑ€Ñ Ð½Ð° диÑка"
+
+msgid "Remove animation library"
+msgstr "Премахване на анимационната библиотека"
+
+msgid "Copy animation to clipboard"
+msgstr "Копиране на анимациÑта в буфера за обмен"
+
+msgid "Save animation to resource on disk"
+msgstr "Запазване на анимациÑта като реÑÑƒÑ€Ñ Ð½Ð° диÑка"
+
msgid "Toggle Autoplay"
msgstr "Превключване на авт. възпроизвеждане"
@@ -2185,6 +2716,9 @@ msgstr "ИнÑтрументи за анимациите"
msgid "Animation"
msgstr "ÐнимациÑ"
+msgid "Manage Animations..."
+msgstr "Управление на анимациите…"
+
msgid "Edit Transitions..."
msgstr "Редактиране на преходите..."
@@ -2281,6 +2815,9 @@ msgstr "Групиране на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚/обекти"
msgid "Remove selected node or transition."
msgstr "Премахване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ или преход."
+msgid "Transition:"
+msgstr "Преход:"
+
msgid "Play Mode:"
msgstr "Режим на възпроизвеждане:"
@@ -2507,6 +3044,9 @@ msgstr "Групирано"
msgid "Add Node Here"
msgstr "ДобавÑне на обект тук"
+msgid "Scaling:"
+msgstr "Скалиране:"
+
msgid "Lock Selected"
msgstr "Заключване на избраното"
@@ -2669,6 +3209,11 @@ msgstr ""
"Ðко тази наÑтройка е включено, навигационните полигони и мрежи ще бъдат "
"видими в изпълнÑÐ²Ð°Ñ‰Ð¸Ñ Ñе проект."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "ПуÑкане на %d екземплÑÑ€"
+msgstr[1] "ПуÑкане на %d екземплÑра"
+
msgid " - Variation"
msgstr " – ВариациÑ"
@@ -2696,6 +3241,9 @@ msgstr "Точки на повърхноÑтта + нормали (наÑочеÐ
msgid "Volume"
msgstr "Обем"
+msgid "Emission Source:"
+msgstr "Източник на излъчването:"
+
msgid ""
"Can't determine a save path for lightmap images.\n"
"Save your scene and try again."
@@ -2748,6 +3296,18 @@ msgstr ""
msgid "No mesh to debug."
msgstr "ÐÑма полигонна мрежа за дебъгване."
+msgid "MeshInstance3D lacks a Mesh."
+msgstr "Ð’ MeshInstance3D нÑма полигонна мрежа."
+
+msgid "Mesh has no surface to create outlines from."
+msgstr "Полигонната мрежа нÑма повърхноÑÑ‚, от коÑто да Ñе Ñъздадат контури."
+
+msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES."
+msgstr "ПримитивниÑÑ‚ тип на полигонната мрежа не е PRIMITIVE_TRIANGLES."
+
+msgid "Could not create outline."
+msgstr "Контурът не може да бъде Ñъздаден."
+
msgid "Create Outline"
msgstr "Създаване на контур"
@@ -2810,6 +3370,15 @@ msgstr "Източник за полигонна мрежа:"
msgid "Mesh Up Axis:"
msgstr "ÐžÑ Ñочеща нагоре за полигонната мрежа:"
+msgid "YZ-Plane Transform."
+msgstr "ТранÑÑ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² равнината YZ."
+
+msgid "XZ-Plane Transform."
+msgstr "ТранÑÑ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² равнината XZ."
+
+msgid "XY-Plane Transform."
+msgstr "ТранÑÑ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² равнината XY."
+
msgid "Objects: %d\n"
msgstr "Обекти: %d\n"
@@ -2846,12 +3415,18 @@ msgstr "РотациÑ"
msgid "Translate"
msgstr "ТранÑлиране"
+msgid "Translating:"
+msgstr "ТранÑлиране:"
+
msgid "Rotating %s degrees."
msgstr "Завъртане на %s градуÑа."
msgid "Lock View Rotation"
msgstr "Заключване на въртенето на изгледа"
+msgid "Normal Buffer"
+msgstr "Буфер за нормалите"
+
msgid "View Environment"
msgstr "Показване на обкръжението"
@@ -2929,6 +3504,27 @@ msgstr "Прилепване на обектите към пода"
msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ðе е намерен твърд под, към който да Ñе прилепи избраното."
+msgid ""
+"Scene contains\n"
+"DirectionalLight3D.\n"
+"Preview disabled."
+msgstr ""
+"Сцената Ñъдържа\n"
+"DirectionalLight3D.\n"
+"Прегледът е невъзможен."
+
+msgid "Preview disabled."
+msgstr "Прегледът е невъзможен."
+
+msgid ""
+"Scene contains\n"
+"WorldEnvironment.\n"
+"Preview disabled."
+msgstr ""
+"Сцената Ñъдържа\n"
+"WorldEnvironment.\n"
+"Прегледът е невъзможен."
+
msgid "Use Local Space"
msgstr "Използване на локалното проÑтранÑтво"
@@ -3314,12 +3910,18 @@ msgstr "Към Ñледващата точка на прекъÑване"
msgid "Go to Previous Breakpoint"
msgstr "Към предходната точка на прекъÑване"
+msgid "Save File As"
+msgstr "Запазване на файла като"
+
msgid "Create Rest Pose from Bones"
msgstr "Създаване на поза на Ð¿Ð¾ÐºÐ¾Ñ Ð¾Ñ‚ коÑтите"
msgid "Reset to Rest Pose"
msgstr "Връщане в поза на покой"
+msgid "Export Skeleton Profile As..."
+msgstr "ИзнаÑÑне на профила на Ñкелета като…"
+
msgid "Create Polygon2D"
msgstr "Създаване на Polygon2D"
@@ -3353,6 +3955,15 @@ msgstr "Създаване на ÑÑŠÑеден CollisionPolygon2D"
msgid "Create LightOccluder2D Sibling"
msgstr "Създаване на ÑÑŠÑеден LightOccluder2D"
+msgid "Simplification:"
+msgstr "ОпроÑÑ‚Ñване:"
+
+msgid "Shrink (Pixels):"
+msgstr "СмалÑване (пикÑели):"
+
+msgid "Grow (Pixels):"
+msgstr "УголемÑване (пикÑели):"
+
msgid "Update Preview"
msgstr "ОбновÑване на Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´"
@@ -3508,6 +4119,9 @@ msgstr "Премахване на вÑички елементи – иконки
msgid "Remove All StyleBox Items"
msgstr "Премахване на вÑички елементи – Ñтилове"
+msgid "Remove Data Type Items From Theme"
+msgstr "Премахване на елементите Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ðµ данни от темата"
+
msgid "Add Color Item"
msgstr "ДобавÑне на елемент – цвÑÑ‚"
@@ -3682,9 +4296,57 @@ msgstr "Завъртане надÑÑно"
msgid "Rotate Left"
msgstr "Завъртане налÑво"
+msgid "Shift+Ctrl: Draw rectangle."
+msgstr "Shift+Ctrl: риÑуване на правоъгълник."
+
+msgid "Scattering:"
+msgstr "РазпръÑкване:"
+
+msgid "To Source"
+msgstr "Към източник"
+
+msgid "Select tiles."
+msgstr "Избиране на плочки."
+
+msgid "No tiles selected."
+msgstr "ÐÑма избрани плочки."
+
+msgid "Yes"
+msgstr "Да"
+
+msgid "No"
+msgstr "Ðе"
+
+msgid "Add a new atlas source"
+msgstr "ДобавÑне на нов източник на атлаÑ"
+
+msgid "Remove source"
+msgstr "Премахване на източника"
+
+msgid "Add atlas source"
+msgstr "ДобавÑне на източник на атлаÑ"
+
+msgid "Sort Sources"
+msgstr "Сортиране на източниците"
+
+msgid "Scenes Collection"
+msgstr "ÐšÐ¾Ð»ÐµÐºÑ†Ð¸Ñ Ð¾Ñ‚ Ñцени"
+
+msgid "Open Atlas Merging Tool"
+msgstr "ОтварÑне на инÑтрумента за обединÑване на атлаÑи"
+
+msgid "Scenes collection properties:"
+msgstr "СвойÑтва на колекциÑта от Ñцени:"
+
+msgid "Tile properties:"
+msgstr "СвойÑтва на плочката:"
+
msgid "TileSet"
msgstr "Плочен набор"
+msgid "TileMap"
+msgstr "Плочна карта"
+
msgid "Error"
msgstr "Грешка"
@@ -3841,9 +4503,27 @@ msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° цвÑÑ‚."
msgid "Color constant."
msgstr "КонÑтанта за цвÑÑ‚."
+msgid "Color parameter."
+msgstr "СвойÑтво за цвÑÑ‚."
+
+msgid "Integer function."
+msgstr "ЦелочиÑлена функциÑ."
+
+msgid "Integer operator."
+msgstr "ЦелочиÑлен оператор."
+
msgid "Transform function."
msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° транÑформациÑ."
+msgid "Transform operator."
+msgstr "Оператор за транÑформациÑ."
+
+msgid "Sums two transforms."
+msgstr "Сумира две транÑформации."
+
+msgid "Divides two transforms."
+msgstr "Ð Ð°Ð·Ð´ÐµÐ»Ñ Ð´Ð²Ðµ транÑформации."
+
msgid "Transform constant."
msgstr "КонÑтанта за транÑформациÑ."
@@ -4052,6 +4732,9 @@ msgstr "Ðулиране"
msgid "Regular Expression Error:"
msgstr "Грешка в регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð·:"
+msgid "Scene name is empty."
+msgstr "Името на Ñцената е празно."
+
msgid "2D Scene"
msgstr "2-измерна Ñцена"
@@ -4180,6 +4863,9 @@ msgstr "Ðеправилен базов път."
msgid "Wrong extension chosen."
msgstr "Избрано е грешно разширение."
+msgid "Global shader parameter '%s' already exists'"
+msgstr "Вече ÑъщеÑтвува глобален шейдърен параметър Ñ Ð¸Ð¼ÐµÑ‚Ð¾ „%s“"
+
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Ðевалиден тип на аргумент, подаден на convert() - използвайте конÑтантите "
@@ -4549,6 +5235,17 @@ msgstr ""
"Използвайте го Ñамо като под-обект на Area3D, StaticBody3D, RigidBody3D, "
"KinematicBody3D и т.н., за да им дадете форма."
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D Ñлужи Ñамо, за да даде форма за колизии на обект оÑнован на "
+"CollisionObject3D.\n"
+"Използвайте го Ñамо като под-обект на Area3D, StaticBody3D, RigidBody3D, "
+"KinematicBody3D, и т.н., за да им дадете форма."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "Ðе Ñе вижда нищо, той като нÑма зададена полигонна мрежа."
@@ -4558,6 +5255,12 @@ msgstr ""
"Ðе Ñе вижда нищо, тъй като полигонните мрежи не Ñа били Ñвързани към Ñтъпки "
"на изчертаване."
+msgid "Creating probes"
+msgstr "Създаване на Ñонди"
+
+msgid "Generating Probe Volumes"
+msgstr "Създаване на обеми за Ñонди"
+
msgid "This body will be ignored until you set a mesh."
msgstr "Това Ñ‚Ñло ще бъде игнорирано, докато не зададете полигонна мрежа."
@@ -4577,12 +5280,12 @@ msgstr "Тревога!"
msgid "Please Confirm..."
msgstr "МолÑ, потвърдете..."
-msgid "Must use a valid extension."
-msgstr "ТрÑбва да Ñе използва правилно разширение."
-
msgid "(Other)"
msgstr "(Други)"
+msgid "Unsupported BMFont texture format."
+msgstr "Ðеподдържан формат за текÑтури BMFont"
+
msgid ""
"Shader keywords cannot be used as parameter names.\n"
"Choose another name."
diff --git a/editor/translations/editor/ca.po b/editor/translations/editor/ca.po
index 6d888c3448..8e60fbc066 100644
--- a/editor/translations/editor/ca.po
+++ b/editor/translations/editor/ca.po
@@ -445,12 +445,6 @@ msgstr "Aplica reinicialització"
msgid "Use Bezier Curves"
msgstr "Fés servir Corbes Bézier"
-msgid "Anim. Optimizer"
-msgstr "Optimitzador d'Animació"
-
-msgid "Max. Angular Error:"
-msgstr "Error Angular Max.:"
-
msgid "Optimize"
msgstr "Optimitza"
@@ -5635,9 +5629,6 @@ msgstr "Canviar zona morta de l'acció"
msgid "Erase Input Action"
msgstr "Elimina l'Acció d'Entrada"
-msgid "Rename Input Action Event"
-msgstr "Reanomena la Incidència de l'Acció d'Entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configuració del Projecte (project.godot)"
@@ -6279,9 +6270,6 @@ msgstr "Ep!"
msgid "Please Confirm..."
msgstr "Confirmeu..."
-msgid "Must use a valid extension."
-msgstr "Cal utilitzar una extensió vàlida."
-
msgid "Enable grid minimap."
msgstr "Activa el minimapa de quadrícula."
diff --git a/editor/translations/editor/cs.po b/editor/translations/editor/cs.po
index 3c58f37106..e9a8d5f83d 100644
--- a/editor/translations/editor/cs.po
+++ b/editor/translations/editor/cs.po
@@ -9,7 +9,7 @@
# Luděk Novotný <gladosicek@gmail.com>, 2016, 2018.
# Martin Novák <maidx@seznam.cz>, 2017, 2019.
# zxey <r.hozak@seznam.cz>, 2018.
-# Vojtěch Šamla <auzkok@seznam.cz>, 2018, 2019, 2020, 2021, 2022.
+# Vojtěch Šamla <auzkok@seznam.cz>, 2018, 2019, 2020, 2021, 2022, 2023.
# Peeter Angelo <contact@peeterangelo.com>, 2019.
# VojtechBrezina <vojta.brezina@gmail.com>, 2019, 2021.
# Garrom Orc Shaman <garromorcshaman@gmail.com>, 2019.
@@ -27,7 +27,7 @@
# ProfJack <profjackcz@gmail.com>, 2021.
# swifterik <blaha.j502@gmail.com>, 2021.
# Daniel <dan@ger.cz>, 2021.
-# Jakub Janšta <jansta.ja@gmail.com>, 2021.
+# Jakub Janšta <jansta.ja@gmail.com>, 2021, 2023.
# Petr Voparil <voparil.petr96@gmail.com>, 2022.
# JoeMoos <josephmoose13@gmail.com>, 2022.
# Mirinek <mirek.nozicka77@gmail.com>, 2022.
@@ -39,8 +39,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-09 01:51+0000\n"
-"Last-Translator: ElisHoli <eliskaholz@seznam.cz>\n"
+"PO-Revision-Date: 2023-02-18 04:10+0000\n"
+"Last-Translator: Vojtěch Šamla <auzkok@seznam.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
"Language: cs\n"
@@ -50,9 +50,21 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.16-dev\n"
+msgid "Left Mouse Button"
+msgstr "Levé tlaÄítko myÅ¡i"
+
+msgid "Right Mouse Button"
+msgstr "Pravé tlaÄítko myÅ¡i"
+
+msgid "Middle Mouse Button"
+msgstr "ProstÅ™ední tlaÄítko myÅ¡i"
+
msgid "Button"
msgstr "TlaÄítko"
+msgid "Double Click"
+msgstr "Dvojklik"
+
msgid "Select"
msgstr "Vybrat"
@@ -119,6 +131,12 @@ msgstr "Neplatné argumenty pro zkonstruování '%s'"
msgid "On call to '%s':"
msgstr "Při volání '%s':"
+msgid "Built-in script"
+msgstr "Vestavěný skript"
+
+msgid "Built-in"
+msgstr "Vestavěný"
+
msgid "B"
msgstr "B"
@@ -151,7 +169,19 @@ msgid "An action with the name '%s' already exists."
msgstr "Akce s názvem \"%s\" již existuje."
msgid "Add Event"
-msgstr "Přidat akci"
+msgstr "Přidat událost"
+
+msgid "Remove Action"
+msgstr "Odstranit akci"
+
+msgid "Cannot Remove Action"
+msgstr "Nelze odstranit akci"
+
+msgid "Edit Event"
+msgstr "Upravit událost"
+
+msgid "Remove Event"
+msgstr "Odstranit událost"
msgid "Add"
msgstr "Přidat"
@@ -232,7 +262,7 @@ msgid "Update Mode (How this property is set)"
msgstr "Režim aktualizace (jak je tato vlastnost nastavena)"
msgid "Interpolation Mode"
-msgstr "InterpolaÄní režim"
+msgstr "Režim interpolace"
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
msgstr "Režim uzavÅ™ené smyÄky (Interpolace mezi koncem a zaÄátkem smyÄky)"
@@ -240,6 +270,12 @@ msgstr "Režim uzavÅ™ené smyÄky (Interpolace mezi koncem a zaÄátkem smyÄky
msgid "Remove this track."
msgstr "Odstranit tuto stopu."
+msgid "Time (s):"
+msgstr "ÄŒas (s):"
+
+msgid "Position:"
+msgstr "Pozice:"
+
msgid "Scale:"
msgstr "Zvětšení:"
@@ -264,6 +300,9 @@ msgstr "Lineární"
msgid "Cubic"
msgstr "Kubická"
+msgid "Clamp Loop Interp"
+msgstr "Interpolace svorkové smyÄky"
+
msgid "Wrap Loop Interp"
msgstr "Interpolace ovinutou smyÄkou"
@@ -344,6 +383,12 @@ msgstr "Cesta stopy není validní, nelze vložit klÃ­Ä metody."
msgid "Add Method Track Key"
msgstr "Přidat stopu volání metody"
+msgid "Method not found in object:"
+msgstr "Tato metoda nebyla v objektu nalezena:"
+
+msgid "Rotation"
+msgstr "Rotace"
+
msgid "Scale"
msgstr "Měřítko"
@@ -429,12 +474,6 @@ msgstr "Použít Bézierovy křivky"
msgid "Create RESET Track(s)"
msgstr "Vytvořit RESET stopu/stopy"
-msgid "Anim. Optimizer"
-msgstr "Optimalizátor animace"
-
-msgid "Max. Angular Error:"
-msgstr "Maximální úhlová chyba:"
-
msgid "Optimize"
msgstr "Optimalizuj"
@@ -482,15 +521,15 @@ msgstr "%d nahrazeno."
msgid "%d match"
msgid_plural "%d matches"
-msgstr[0] "%d shoda."
-msgstr[1] "%d shod."
-msgstr[2] "%d shody."
+msgstr[0] "%d shoda"
+msgstr[1] "%d shody"
+msgstr[2] "%d shod"
msgid "%d of %d match"
msgid_plural "%d of %d matches"
-msgstr[0] "%d shoda."
-msgstr[1] "%d shod."
-msgstr[2] "%d shody."
+msgstr[0] "%d shoda"
+msgstr[1] "%d shody"
+msgstr[2] "%d shod"
msgid "Match Case"
msgstr "Rozlišovat malá/velká"
@@ -611,6 +650,9 @@ msgstr "Odpojit"
msgid "Connect a Signal to a Method"
msgstr "Připojit signál k metodě"
+msgid "Edit Connection: '%s'"
+msgstr "Upravit spojení: \"%s\""
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr ""
"Jste si jisti, že chcete odstranit všechna připojení ze signálu \"%s\"?"
@@ -624,6 +666,9 @@ msgstr "Jste si jistí, že chcete odstranit vÅ¡echna pÅ™ipojení z tohoto signÃ
msgid "Disconnect All"
msgstr "Odpojit vše"
+msgid "Copy Name"
+msgstr "Kopírovat název"
+
msgid "Edit..."
msgstr "Upravit..."
@@ -657,6 +702,9 @@ msgstr "Shody:"
msgid "Description:"
msgstr "Popis:"
+msgid "Remote %s:"
+msgstr "Vzdálený %s:"
+
msgid "Debugger"
msgstr "Ladicí program"
@@ -753,9 +801,15 @@ msgstr "Varování:"
msgid "Error:"
msgstr "Chyba:"
+msgid "%s Error:"
+msgstr "Chyba %s:"
+
msgid "Stack Trace"
msgstr "Trasování zásobníku"
+msgid "Delete All Breakpoints in:"
+msgstr "Odstranit všechny breakpointy v:"
+
msgid "Copy Error"
msgstr "Kopírovat chybu"
@@ -1133,6 +1187,9 @@ msgstr "Otevřít rozložení audio sběrnice"
msgid "There is no '%s' file."
msgstr "Neexistuje '%s' soubor."
+msgid "Layout:"
+msgstr "Rozložení:"
+
msgid "Invalid file, not an audio bus layout."
msgstr "Neplatný soubor, není rozložení audio sběrnice."
@@ -1223,6 +1280,9 @@ msgstr "Navigace"
msgid "OpenGL"
msgstr "OpenGL"
+msgid "File saving failed."
+msgstr "Ukládání souboru selhalo."
+
msgid "Nodes and Classes:"
msgstr "Uzly a třídy:"
@@ -1241,6 +1301,9 @@ msgstr "Uložit"
msgid "Reset to Defaults"
msgstr "Obnovit výchozí"
+msgid "Please Confirm:"
+msgstr "PotvrÄte prosím:"
+
msgid "Export Profile"
msgstr "Exportovat profil"
@@ -1424,9 +1487,6 @@ msgstr "Otevřít"
msgid "Select Current Folder"
msgstr "Vybrat stávající složku"
-msgid "File exists, overwrite?"
-msgstr "Soubor existuje, přepsat?"
-
msgid "Select This Folder"
msgstr "Vybrat tuto složku"
@@ -1542,6 +1602,9 @@ msgstr ""
msgid "(Re)Importing Assets"
msgstr "(Re)Importování assetů"
+msgid "Error codes returned:"
+msgstr "Vráceny chybové kódy:"
+
msgid "Top"
msgstr "Horní"
@@ -1566,6 +1629,9 @@ msgstr "Vlastnosti"
msgid "default:"
msgstr "výchozí:"
+msgid "Constructors"
+msgstr "Konstruktory"
+
msgid "Operators"
msgstr "Operátory"
@@ -1590,6 +1656,9 @@ msgstr "Styly"
msgid "Enumerations"
msgstr "VýÄty"
+msgid "Annotations"
+msgstr "Anotace"
+
msgid "Property Descriptions"
msgstr "Popisy vlastnosti"
@@ -1603,9 +1672,15 @@ msgstr ""
"V souÄasné dobÄ› neexistuje žádný popis pro tuto vlastnost. Prosím pomozte "
"nám tím, že ho[color=$color][url=$url]vytvoříte[/url][/color]!"
+msgid "Constructor Descriptions"
+msgstr "Popisy konstruktorů"
+
msgid "Method Descriptions"
msgstr "Popisy metod"
+msgid "Operator Descriptions"
+msgstr "Popisy operátorů"
+
msgid "%d match."
msgstr "%d shoda."
@@ -1654,6 +1729,9 @@ msgstr "Metoda"
msgid "Signal"
msgstr "Signál"
+msgid "Annotation"
+msgstr "Anotace"
+
msgid "Constant"
msgstr "Konstantní"
@@ -1695,9 +1773,15 @@ msgstr "Připnuté %s"
msgid "Unpinned %s"
msgstr "Nepřipnuté %s"
+msgid "Select existing layout:"
+msgstr "Vybrat existující rozložení:"
+
msgid "Changed Locale Filter Mode"
msgstr "Změněn režim filtru pro nastavení jazyka"
+msgid "[Default]"
+msgstr "[Výchozí]"
+
msgid "Show All Locales"
msgstr "Zobrazit všechny jazyky"
@@ -1710,6 +1794,16 @@ msgstr "Editovat filtry"
msgid "Language:"
msgstr "Jazyk:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "Skript:"
+
+msgid "Country:"
+msgstr "ZemÄ›:"
+
+msgid "Language"
+msgstr "Jazyk"
+
msgid "Clear Output"
msgstr "Vymazat výstup"
@@ -2467,12 +2561,30 @@ msgstr ""
"Podržte %s pro zaokrouhlení na celá Äísla.\n"
" Pro přesnější změny podržte Shift."
+msgid "No notifications."
+msgstr "Žádné notifikace."
+
+msgid "Show notifications."
+msgstr "Zobrazit notifikace."
+
msgid "All Devices"
msgstr "Všechna zařízení"
msgid "Device"
msgstr "Zařízení"
+msgid "Filter by event..."
+msgstr "Filtrovat podle události..."
+
+msgid "Project export for platform:"
+msgstr "Exportovat projekt pro platformu:"
+
+msgid "Completed successfully."
+msgstr "ÚspěšnÄ› dokonÄeno."
+
+msgid "Failed."
+msgstr "Selhalo."
+
msgid "Storing File:"
msgstr "Ukládám soubor:"
@@ -2491,6 +2603,12 @@ msgstr "Vlastní ladící šablona nebyla nalezena."
msgid "Custom release template not found."
msgstr "Vlastní šablona k uveřejnění nebyla nalezena."
+msgid "The given export path doesn't exist."
+msgstr "Zadaná cesta pro export neexistuje."
+
+msgid "Template file not found: \"%s\"."
+msgstr "Soubor Å¡ablony nenalezen: \"%s\"."
+
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Při 32-bitovým exportu vestavěné PCK nemůže být větší než 4 GiB."
@@ -3005,6 +3123,9 @@ msgstr "Znovu importovat"
msgid "Offset:"
msgstr "Offset(Posun):"
+msgid "Loop:"
+msgstr "SmyÄka:"
+
msgid "Importing Scene..."
msgstr "Importuji scénu..."
@@ -3398,9 +3519,15 @@ msgstr "Přidat uzel..."
msgid "Enable Filtering"
msgstr "Povolit filtrování"
+msgid "Animation name can't be empty."
+msgstr "Název animace nemůže být prázdný."
+
msgid "Load Animation"
msgstr "NaÄíst animaci"
+msgid "Invalid AnimationLibrary file."
+msgstr "Neplatný soubor AnimationLibrary."
+
msgid "Animation Name:"
msgstr "Jméno animace:"
@@ -3410,6 +3537,12 @@ msgstr "Vložená animace"
msgid "Open in Inspector"
msgstr "Otevřít v inspektoru"
+msgid "Copy animation to clipboard"
+msgstr "Zkopírovat animaci do schránky"
+
+msgid "Save animation to resource on disk"
+msgstr "Uložit animaci do zdroje na disku"
+
msgid "Toggle Autoplay"
msgstr "Zapnout Autoplay"
@@ -3935,7 +4068,7 @@ msgid "Use Grid Snap"
msgstr "Použít mřížkové přichytávání"
msgid "Snapping Options"
-msgstr "Možnosti přichycení"
+msgstr "Možnosti přichytávání"
msgid "Use Rotation Snap"
msgstr "Použít rotaÄní pÅ™ichytávání"
@@ -3950,7 +4083,7 @@ msgid "Use Pixel Snap"
msgstr "Přichytávat na pixely"
msgid "Smart Snapping"
-msgstr "Chytré přichcování"
+msgstr "Chytré přichytávání"
msgid "Configure Snap..."
msgstr "Nastavení přichytávání..."
@@ -3982,6 +4115,9 @@ msgstr "Zobrazit kosti"
msgid "View"
msgstr "Zobrazení"
+msgid "Show When Snapping"
+msgstr "Zobrazit při přichytávání"
+
msgid "Hide"
msgstr "Schovat"
@@ -4286,6 +4422,12 @@ msgstr ""
"Při vzdáleném použití na zařízení je tato možnost efektivnější, když je "
"povolen síťový souborový systém."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Spustit %d instanci"
+msgstr[1] "Spustit %d instance"
+msgstr[2] "Spustit %d instancí"
+
msgid " - Variation"
msgstr " - Variace"
@@ -4412,6 +4554,9 @@ msgstr "Žádná mesh pro debugování."
msgid "Mesh has no UV in layer %d."
msgstr "Model nemá ve vrstvě %d žádné UV."
+msgid "Could not create outline."
+msgstr "Nelze vytvořit obrys."
+
msgid "Create Outline"
msgstr "Vytvořit obrys"
@@ -6587,13 +6732,14 @@ msgid ""
"Warning: You won't be able to open the project with previous versions of the "
"engine anymore."
msgstr ""
-"KonfiguraÄní soubor projektu nespecifikuje verzi Godotu ve které byl "
-"vytvořen.\n"
+"Zvolený projekt \"%s\" nespecifikuje podporovanou verzi enginu Godot ve svém "
+"konfiguraÄním souboru (\"project.godot\").\n"
"\n"
"Cesta projektu: %s\n"
"\n"
"Pokud se rozhodnete ho otevřít, tak bude převeden do aktuálního formátu "
-"konfiguraÄního souboru Godotu.\n"
+"konfiguraÄního souboru Godot.\n"
+"\n"
"Varování: Nebude možné otevřít projekt v dřívějších verzích enginu."
msgid ""
@@ -6607,13 +6753,14 @@ msgid ""
"Warning: You won't be able to open the project with previous versions of the "
"engine anymore."
msgstr ""
-"Následující konfiguraÄní soubor projektu byl vytvoÅ™en starší verzí enginu a "
-"potřebuje být konvertován pro aktuální verzi:\n"
+"Vybraný projekt \"%s\" byl vytvořen starší verzí enginu a potřebuje být "
+"konvertován pro aktuální verzi.\n"
"\n"
"Cesta k projektu: %s\n"
"\n"
"Přejete si ho konvertovat?\n"
-"Varování: Nebude možné otevřít projekt v dřívějších verzích enginu."
+"\n"
+"Varování: Nebude možné otevřít projekt v předchozích verzích enginu."
msgid ""
"Can't open project \"%s\" at the following path:\n"
@@ -6719,9 +6866,15 @@ msgstr ""
"V této chvíli nemáte žádný projekt.\n"
"Přejete si prozkoumat oficiální ukázkové projekty v knihovně assetů?"
+msgid "Add Project Setting"
+msgstr "Přidat nastavení projektu"
+
msgid "Delete Item"
msgstr "Odstranit položku"
+msgid "(All)"
+msgstr "(VÅ¡e)"
+
msgid "Add Input Action"
msgstr "Přidat vstupní akci"
@@ -6731,9 +6884,6 @@ msgstr "Změnit mrtvou zónu akce"
msgid "Erase Input Action"
msgstr "Vymazat vstupní akce"
-msgid "Rename Input Action Event"
-msgstr "Přejmenovat událost vstupní akce"
-
msgid "Project Settings (project.godot)"
msgstr "Nastavení projektu (project.godot)"
@@ -7048,14 +7198,14 @@ msgstr "Varování konfigurace uzlu:"
msgid "Node has one connection."
msgid_plural "Node has {num} connections."
msgstr[0] "Uzel má jedno připojení."
-msgstr[1] "Uzel má {num} připojení"
-msgstr[2] "Uzel má připojení"
+msgstr[1] "Uzel má {num} připojení."
+msgstr[2] "Uzel má {num} připojení."
msgid "Node is in this group:"
msgid_plural "Node is in the following groups:"
msgstr[0] "Uzel je v této skupině:"
msgstr[1] "Uzly je v těchto skupinách:"
-msgstr[2] "Uzel je ve skupinách"
+msgstr[2] "Uzel je v těchto skupinách:"
msgid "Click to show signals dock."
msgstr "Kliknutím zobrazíte panel signálů."
@@ -7180,6 +7330,9 @@ msgstr "Neplatná základní cesta."
msgid "Wrong extension chosen."
msgstr "Vybrána špatná přípona."
+msgid "Global shader parameter '%s' already exists'"
+msgstr "Globální parametr shaderu \"%s\" již existuje"
+
msgid "Change Cylinder Radius"
msgstr "Změnit poloměr Cylinder"
@@ -7469,6 +7622,9 @@ msgstr "Podepisování vydání %s..."
msgid "Could not find keystore, unable to export."
msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
+msgid "Could not start apksigner executable."
+msgstr "Nelze spustit program apksigner."
+
msgid ""
"output: \n"
"%s"
@@ -7554,6 +7710,15 @@ msgstr "Znak '%s' není dovolen v identifikátoru."
msgid "Invalid executable file."
msgstr "Neplatný spouštěcí soubor."
+msgid "Could not start rcodesign executable."
+msgstr "Nelze spustit program rcodesign."
+
+msgid "Could not start xcrun executable."
+msgstr "Nelze spustit program xcrun."
+
+msgid "Could not start hdiutil executable."
+msgstr "Nelze spustit program hdiutil."
+
msgid "Invalid package short name."
msgstr "Neplatné krátké jméno balíÄku."
@@ -7593,6 +7758,27 @@ msgstr "Neplatné rozměry Square 310x150 Logo obrázku (měly by být 310x150).
msgid "Invalid splash screen image dimensions (should be 620x300)."
msgstr "Neplatné rozměry obrázku uvítací obrazovky (měly by být 620x300)."
+msgid "Could not open template for export: \"%s\"."
+msgstr "Nelze otevřít šablonu pro export: \"%s\"."
+
+msgid "Invalid export template: \"%s\"."
+msgstr "Neplatná šablona pro export: \"%s\"."
+
+msgid "Could not write file: \"%s\"."
+msgstr "Nelze zapsat soubor: \"%s\"."
+
+msgid "Could not read file: \"%s\"."
+msgstr "Nelze pÅ™eÄíst soubor: \"%s\"."
+
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "Nebylo možné pÅ™eÄíst HTML shell: \"%s\"."
+
+msgid "Could not create HTTP server directory: %s."
+msgstr "Nepodařilo se vytvořit adresář serveru HTTP: %s."
+
+msgid "Error starting HTTP server: %d."
+msgstr "Chyba při spuštění serveru HTTP: %d."
+
msgid "Stop HTTP Server"
msgstr "Zastavit HTTP Server"
@@ -7602,12 +7788,21 @@ msgstr "Spustit v prohlížeÄi"
msgid "Run exported HTML in the system's default browser."
msgstr "Spustit vyexportované HTML ve výchozím prohlížeÄi."
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nelze pÅ™ejmenovat doÄasný soubor: \"%s\"."
+
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nelze odstranit doÄasný soubor: \"%s\"."
+
msgid "Invalid icon path:"
msgstr "Neplatná cesta ikony:"
msgid "Invalid file version:"
msgstr "Neplatná verze souboru:"
+msgid "Invalid product version:"
+msgstr "Neplatná verze produktu:"
+
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
@@ -7696,6 +7891,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D funguje pouze když je dítětem uzlu Path2D."
+msgid ""
+"A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a "
+"parent node!"
+msgstr ""
+"Uzel PhysicalBone2D funguje pouze s rodiÄovským uzlem Skeleton2D nebo jiným "
+"PhysicalBone2D!"
+
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
"Pro zajiÅ¡tÄ›ní funkÄnosti musí vlastnost path ukazovat na platný uzel Node2D."
@@ -7724,6 +7926,17 @@ msgstr ""
"Používejte jej pouze jako potomka Area3D, StaticBody3D, RigidBody3D, "
"CharacterBody3D atd., abyste jim dali tvar."
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D slouží pouze k poskytnutí kolizního tvaru objektu "
+"CollissionObject3D a od něj odvozených uzlů.\n"
+"Použijte ho pouze jako potomka Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D a dalších, pro urÄení jejich tvaru."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "Nic není zobrazeno, protože nebyla přiřazena žádná mřížka."
@@ -7785,9 +7998,6 @@ msgstr ""
"Barva: #%s\n"
"LMB: Nastavit barvu"
-msgid "Pick a color from the editor window."
-msgstr "Vyberte barvu z okna editoru."
-
msgid "Switch between hexadecimal and code values."
msgstr "Přepni mezi hexadecimálními a kódovými hodnotami."
@@ -7817,9 +8027,6 @@ msgstr "Pozor!"
msgid "Please Confirm..."
msgstr "PotvrÄte prosím..."
-msgid "Must use a valid extension."
-msgstr "Je nutné použít platnou příponu."
-
msgid "Enable grid minimap."
msgstr "Povolit minimapu mřížky."
@@ -7846,6 +8053,16 @@ msgstr ""
"Výchozí prostředí specifikované v nastavení projektu (Vykreslování -> "
"Zobrazovací výřez -> Výchozí prostÅ™edí) se nepodaÅ™ilo naÄíst."
+msgid "Unsupported BMFont texture format."
+msgstr "Nepodporovaný formát textury BMFont."
+
+msgid ""
+"Shader keywords cannot be used as parameter names.\n"
+"Choose another name."
+msgstr ""
+"KlíÄové slovo shaderu nemůže být použito jako název pro parametr.\n"
+"Vyberte jiný název."
+
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
@@ -7859,6 +8076,9 @@ msgstr "Neplatný zdroj pro náhled."
msgid "Invalid source for shader."
msgstr "Neplatný zdroj pro shader."
+msgid "Filter"
+msgstr "Filtr"
+
msgid "Invalid comparison function for that type."
msgstr "Neplatná funkce pro porovnání tohoto typu."
diff --git a/editor/translations/editor/de.po b/editor/translations/editor/de.po
index 8eb4586c54..c74b59ab5c 100644
--- a/editor/translations/editor/de.po
+++ b/editor/translations/editor/de.po
@@ -91,13 +91,15 @@
# HolonProduction <holonproduction@gmail.com>, 2023.
# co1inco <colin.meihoefer@gmx.de>, 2023.
# Jakob <js2k2@gmx.de>, 2023.
+# DafabHoid <github@dafabhoid.de>, 2023.
+# Jummit <jummit@web.de>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Jakob <js2k2@gmx.de>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -108,7 +110,7 @@ msgstr ""
"X-Generator: Weblate 4.16-dev\n"
msgid "Unset"
-msgstr "Deaktiviert"
+msgstr "Nicht gesetzt"
msgid "Physical"
msgstr "Physisch"
@@ -200,6 +202,9 @@ msgstr "Obere Aktion, Sony Dreieck, Xbox Y, Nintendo X"
msgid "Back, Sony Select, Xbox Back, Nintendo -"
msgstr "Zurück, Sony Select, Xbox Back, Nintendo -"
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "Orientierung, Sony PS, Xbox Home"
+
msgid "Start, Nintendo +"
msgstr "Start, Nintendo +"
@@ -230,11 +235,32 @@ msgstr "Steuerkreuz Rechts"
msgid "Xbox Share, PS5 Microphone, Nintendo Capture"
msgstr "Xbox Teilen, PS5 Mikrofon, Nintendo Aufnehmen"
+msgid "Xbox Paddle 1"
+msgstr "Xbox Ruder 1"
+
+msgid "Xbox Paddle 2"
+msgstr "Xbox Ruder 2"
+
+msgid "Xbox Paddle 3"
+msgstr "Xbox Ruder 3"
+
+msgid "Xbox Paddle 4"
+msgstr "Xbox Ruder 4"
+
msgid "PS4/5 Touchpad"
msgstr "PS4/5 Touchpad"
+msgid "Joypad Button %d"
+msgstr "Joypad Taste %d"
+
+msgid "Pressure:"
+msgstr "Druck:"
+
+msgid "touched"
+msgstr "berührt"
+
msgid "released"
-msgstr "veröffentlicht"
+msgstr "losgelassen"
msgid "Screen %s at (%s) with %s touch points"
msgstr "Bildschirm %s bei (%s) mit %s Touch-Punkten"
@@ -249,13 +275,13 @@ msgid "Magnify Gesture at (%s) with factor %s"
msgstr "Vergrößerungsgeste bei (%s) mit Faktor %s"
msgid "Pan Gesture at (%s) with delta (%s)"
-msgstr "Pan Geste bei (%s) mit delta (%s)"
+msgstr "Schwenkgeste bei (%s) mit Delta (%s)"
msgid "MIDI Input on Channel=%s Message=%s"
-msgstr "MIDI Eingabe auf Kannal=%s Nachricht=%s"
+msgstr "MIDI-Eingabe auf Kanal=%s Nachricht=%s"
msgid "Input Event with Shortcut=%s"
-msgstr "Eingabe Event mit Tastenkürzel=%s"
+msgstr "Eingabeereignis mit Tastenkürzel=%s"
msgid "Accept"
msgstr "Annehmen"
@@ -290,6 +316,9 @@ msgstr "Bild Auf"
msgid "Page Down"
msgstr "Bild Ab"
+msgid "Home"
+msgstr "Pos1"
+
msgid "End"
msgstr "Ende"
@@ -308,6 +337,9 @@ msgstr "Rückgängig machen"
msgid "Redo"
msgstr "Wiederherstellen"
+msgid "Completion Query"
+msgstr "Vervollständigungsanfrage"
+
msgid "New Line"
msgstr "Neue Zeile"
@@ -323,14 +355,86 @@ msgstr "Einrücken"
msgid "Dedent"
msgstr "Ausrücken"
+msgid "Backspace"
+msgstr "Rücktaste"
+
+msgid "Backspace Word"
+msgstr "Linkes Wort löschen"
+
+msgid "Backspace all to Left"
+msgstr "Links alles löschen"
+
msgid "Delete"
msgstr "Löschen"
+msgid "Delete Word"
+msgstr "Wort löschen"
+
+msgid "Delete all to Right"
+msgstr "Rechts alles löschen"
+
+msgid "Caret Left"
+msgstr "Cursor nach links"
+
+msgid "Caret Word Left"
+msgstr "Cursor ein Wort nach links"
+
+msgid "Caret Right"
+msgstr "Cursor nach rechts"
+
+msgid "Caret Word Right"
+msgstr "Cursor ein Wort nach rechts"
+
+msgid "Caret Up"
+msgstr "Cursor eine Zeile hoch"
+
+msgid "Caret Down"
+msgstr "Cursor eine Zeile runter"
+
+msgid "Caret Line Start"
+msgstr "Cursor zum Anfang der Zeile"
+
+msgid "Caret Line End"
+msgstr "Cursor zum Ende der Zeile"
+
+msgid "Caret Page Up"
+msgstr "Cursor Bild Hoch"
+
+msgid "Caret Page Down"
+msgstr "Cursor Bild Ab"
+
+msgid "Caret Document Start"
+msgstr "Cursor zum Anfang des Dokuments"
+
+msgid "Caret Document End"
+msgstr "Cursor zum Ende des Dokuments"
+
+msgid "Caret Add Below"
+msgstr "Cursor unten einfügen"
+
+msgid "Caret Add Above"
+msgstr "Cursor oben einfügen"
+
+msgid "Scroll Up"
+msgstr "Hochscrollen"
+
+msgid "Scroll Down"
+msgstr "Runterscrollen"
+
msgid "Select All"
msgstr "Alles auswählen"
msgid "Select Word Under Caret"
-msgstr "Markiere Wort unter Cursor"
+msgstr "Wort unter Cursor auswählen"
+
+msgid "Add Selection for Next Occurrence"
+msgstr "Auswahl für nächstes Vorkommen hinzufügen"
+
+msgid "Clear Carets and Selection"
+msgstr "Cursor und Auswahl entfernen"
+
+msgid "Toggle Insert Mode"
+msgstr "Einfügemodus umschalten"
msgid "Duplicate Nodes"
msgstr "Nodes duplizieren"
@@ -338,9 +442,18 @@ msgstr "Nodes duplizieren"
msgid "Delete Nodes"
msgstr "Nodes löschen"
+msgid "Go Up One Level"
+msgstr "Eine Ebene nach oben gehen"
+
msgid "Refresh"
msgstr "Aktualisieren"
+msgid "Show Hidden"
+msgstr "Verstecktes anzeigen"
+
+msgid "Swap Input Direction"
+msgstr "Eingaberichtung umschalten"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Ungültige Eingabe %d (nicht übergeben) im Ausdruck"
@@ -363,6 +476,12 @@ msgstr "Ungültige Parameter für die Konstruktion von ‚%s‘"
msgid "On call to '%s':"
msgstr "Im Aufruf von ‚%s‘:"
+msgid "Built-in script"
+msgstr "Eingebettetes Skript"
+
+msgid "Built-in"
+msgstr "Eingebettet"
+
msgid "B"
msgstr "B"
@@ -384,6 +503,9 @@ msgstr "PiB"
msgid "EiB"
msgstr "EiB"
+msgid "Example: %s"
+msgstr "Beispiel: %s"
+
msgid "%d item"
msgid_plural "%d items"
msgstr[0] "%d Element"
@@ -399,12 +521,44 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Eine Aktion mit dem Namen ‚%s‘ existiert bereits."
+msgid "Cannot Revert - Action is same as initial"
+msgstr ""
+"Kann nicht rückgängig gemacht werden - Die Aktion ist die gleiche wie die "
+"ursprüngliche"
+
+msgid "Revert Action"
+msgstr "Aktion rückgängig machen"
+
msgid "Add Event"
msgstr "Ereignis hinzufügen"
+msgid "Remove Action"
+msgstr "Aktion entfernen"
+
+msgid "Cannot Remove Action"
+msgstr "Aktion kann nicht entfernt werden"
+
+msgid "Edit Event"
+msgstr "Ereignis bearbeiten"
+
+msgid "Remove Event"
+msgstr "Ereignis entfernen"
+
+msgid "Filter by name..."
+msgstr "Nach Name filtern..."
+
+msgid "Clear All"
+msgstr "Alle abwählen"
+
+msgid "Add New Action"
+msgstr "Neue Aktion hinzufügen"
+
msgid "Add"
msgstr "Hinzufügen"
+msgid "Show Built-in Actions"
+msgstr "Eingebaute Aktionen zeigen"
+
msgid "Action"
msgstr "Aktion"
@@ -417,6 +571,9 @@ msgstr "Zeit:"
msgid "Value:"
msgstr "Wert:"
+msgid "Update Selected Key Handles"
+msgstr "Ausgewählte Schlüsselgriffe aktualisieren"
+
msgid "Insert Key Here"
msgstr "Schlüsselbild hier einfügen"
@@ -426,24 +583,100 @@ msgstr "Ausgewählte Schlüsselbilder duplizieren"
msgid "Delete Selected Key(s)"
msgstr "Ausgewählte Schlüsselbilder löschen"
+msgid "Make Handles Free"
+msgstr "Griffe ablösen"
+
+msgid "Make Handles Linear"
+msgstr "Griffe linear machen"
+
+msgid "Make Handles Balanced"
+msgstr "Griffe ausbalanciert machen"
+
+msgid "Make Handles Mirrored"
+msgstr "Griffe gespiegelt machen"
+
+msgid "Make Handles Balanced (Auto Tangent)"
+msgstr "Griffe ausbalanciert machen (Auto-Tangente)"
+
+msgid "Make Handles Mirrored (Auto Tangent)"
+msgstr "Griffe gespiegelt machen (Auto-Tangente)"
+
msgid "Add Bezier Point"
msgstr "Bezierpunkt hinzufügen"
msgid "Move Bezier Points"
msgstr "Bezierpunkt verschieben"
+msgid "Animation Duplicate Keys"
+msgstr "Animation Schlüsselbilder duplizieren"
+
+msgid "Animation Delete Keys"
+msgstr "Animation Schlüsselbilder löschen"
+
msgid "Focus"
msgstr "Fokus"
+msgid "Select All Keys"
+msgstr "Alle Schlüsselbilder auswählen"
+
+msgid "Deselect All Keys"
+msgstr "Alle Schlüsselbilder abwählen"
+
+msgid "Animation Change Transition"
+msgstr "Animation Übergang verändern"
+
+msgid "Animation Change %s"
+msgstr "Animation Änderung %s"
+
+msgid "Animation Change Keyframe Value"
+msgstr "Animation Änderung des Schlüsselbildwerts"
+
+msgid "Animation Change Call"
+msgstr "Animation Änderung des Aufrufs"
+
+msgid "Animation Multi Change Transition"
+msgstr "Animation Mehrere Änderungen des Übergangs"
+
+msgid "Animation Multi Change %s"
+msgstr "Animation Mehrere Änderungen %s"
+
+msgid "Animation Multi Change Keyframe Value"
+msgstr "Animation Mehrere Änderungen des Schlüsselbildwerts"
+
+msgid "Animation Multi Change Call"
+msgstr "Animation Mehrere Änderungen des Aufrufs"
+
msgid "Change Animation Length"
msgstr "Animationslänge ändern"
msgid "Change Animation Loop"
msgstr "Bearbeite Animationsschleife"
+msgid "Can't change loop mode on animation instanced from imported scene."
+msgstr ""
+"Der Wiederholungsmodus kann nicht für eine Animation geändert werden, die "
+"aus einer importierten Szene instanziiert wurde."
+
+msgid "Can't change loop mode on animation embedded in another scene."
+msgstr ""
+"Der Wiederholungsmodus kann nicht für eine Animation geändert werden, die in "
+"einer anderen Szene eingebettet wurde."
+
msgid "Property Track"
msgstr "Eigenschaftenspur"
+msgid "3D Position Track"
+msgstr "3D-Positionsspur"
+
+msgid "3D Rotation Track"
+msgstr "3D-Rotationsspur"
+
+msgid "3D Scale Track"
+msgstr "3D Skalierungsspur"
+
+msgid "Blend Shape Track"
+msgstr "Formmischungsspur"
+
msgid "Call Method Track"
msgstr "Methodenaufrufsspur"
@@ -474,12 +707,18 @@ msgstr "Funktionen:"
msgid "Audio Clips:"
msgstr "Audioschnipsel:"
+msgid "Animation Clips:"
+msgstr "Animationsschnipsel:"
+
msgid "Change Track Path"
msgstr "Spurpfad ändern"
msgid "Toggle this track on/off."
msgstr "Diese Spur an-/abschalten."
+msgid "Use Blend"
+msgstr "Mischung verwenden"
+
msgid "Update Mode (How this property is set)"
msgstr "Aktualisierungs-Modus (wie Eigenschaften gesetzt werden)"
@@ -504,6 +743,9 @@ msgstr "Rotation:"
msgid "Scale:"
msgstr "Skalierung:"
+msgid "Blend Shape:"
+msgstr "Formmischung:"
+
msgid "Type:"
msgstr "Typ:"
@@ -519,6 +761,18 @@ msgstr "Eingehender Handle:"
msgid "Out-Handle:"
msgstr "Ausgehender Handle:"
+msgid "Handle mode: Free\n"
+msgstr "Griffmodus: Frei\n"
+
+msgid "Handle mode: Linear\n"
+msgstr "Griffmodus: Linear\n"
+
+msgid "Handle mode: Balanced\n"
+msgstr "Griffmodus: Ausbalanciert\n"
+
+msgid "Handle mode: Mirrored\n"
+msgstr "Griffmodus: Gespiegelt\n"
+
msgid "Stream:"
msgstr "Stream:"
@@ -534,6 +788,9 @@ msgstr "Animations-Clip:"
msgid "Toggle Track Enabled"
msgstr "Spur ein-/ausschalten"
+msgid "Don't Use Blend"
+msgstr "Keine Mischung verwenden"
+
msgid "Continuous"
msgstr "Fortlaufend"
@@ -552,6 +809,12 @@ msgstr "Linear"
msgid "Cubic"
msgstr "Kubisch"
+msgid "Linear Angle"
+msgstr "Linearer Winkel"
+
+msgid "Cubic Angle"
+msgstr "Kubischer Winkel"
+
msgid "Clamp Loop Interp"
msgstr "Klammer-Wdrhol-Interpol"
@@ -579,20 +842,32 @@ msgstr "Animationsinterpolationsmodus ändern"
msgid "Change Animation Loop Mode"
msgstr "Animationswiederholungsmodus ändern"
+msgid "Change Animation Use Blend"
+msgstr "Mischungsnutzung der Animation ändern"
+
msgid ""
"Compressed tracks can't be edited or removed. Re-import the animation with "
"compression disabled in order to edit."
msgstr ""
-"Komprimierte Spuren können nicht bearbeitet oder entfernt werden. "
-"Importieren Sie die Animation erneut mit deaktivierter Kompression um das "
-"Bearbeiten zu ermöglichen."
+"Komprimierte Spuren können nicht bearbeitet oder entfernt werden. Um ein "
+"Bearbeiten zu ermöglichen, muss die Animation ohne Kompression erneut "
+"importiert werden."
msgid "Remove Anim Track"
msgstr "Spur entfernen"
+msgid "Create new track for %s and insert key?"
+msgstr "Neue Spur für %s erstellen und Schlüsselbild hinzufügen?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "%d neue Spuren erstellen und Schlüsselbilder hinzufügen?"
+
msgid "Create"
msgstr "Erstellen"
+msgid "Animation Insert Key"
+msgstr "Animation Schlüsselbild einfügen"
+
msgid "node '%s'"
msgstr "Node ‚%s‘"
@@ -611,6 +886,14 @@ msgstr "Animationsschrittweite ändern"
msgid "Rearrange Tracks"
msgstr "Spuren neu anordnen"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr "Formmischungsspuren wirken sich nur auf MeshInstance3D-Nodes aus."
+
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"Positions-/Rotations-/Skalierungs-3D-Spuren wirken sich nur auf 3D-basierte "
+"Nodes aus."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -637,6 +920,18 @@ msgstr "Bezierspur hinzufügen"
msgid "Track path is invalid, so can't add a key."
msgstr "Spurpfad ist ungültig, Schlüssel kann nicht hinzugefügt werden."
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "Spur ist nicht vom Typ Node3D, Schlüssel kann nicht hinzugefügt werden"
+
+msgid "Add Position Key"
+msgstr "Positionsschlüssel hinzufügen"
+
+msgid "Add Rotation Key"
+msgstr "Rotationsschlüssel hinzufügen"
+
+msgid "Add Scale Key"
+msgstr "Skalierungsschlüssel hinzufügen"
+
msgid "Add Track Key"
msgstr "Spurschlüssel hinzufügen"
@@ -650,6 +945,9 @@ msgstr "Methodenaufrufsspurschlüssel hinzufügen"
msgid "Method not found in object:"
msgstr "Methode nicht im Objekt gefunden:"
+msgid "Animation Move Keys"
+msgstr "Animation Schlüssel bewegen"
+
msgid "Position"
msgstr "Position"
@@ -659,6 +957,9 @@ msgstr "Rotation"
msgid "Scale"
msgstr "Skalierung"
+msgid "BlendShape"
+msgstr "BlendShape"
+
msgid "Methods"
msgstr "Methoden"
@@ -674,12 +975,43 @@ msgstr "Zwischenablage ist leer!"
msgid "Paste Tracks"
msgstr "Spuren einfügen"
+msgid "Animation Scale Keys"
+msgstr "Animation Schlüssel skalieren"
+
+msgid "Make Easing Keys"
+msgstr "Glättungsschlüssel erzeugen"
+
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
"Die Option ist nicht in Verbindung mit Bezier-Bearbeitung verwendbar, da es "
"sich nur um eine einzige Spur handelt."
+msgid "Animation Add RESET Keys"
+msgstr "Animation RESET-Schlüssel hinzufügen"
+
+msgid "Bake Animation as Linear keys."
+msgstr "Animation als lineare Schlüssel backen."
+
+msgid ""
+"This animation belongs to an imported scene, so changes to imported tracks "
+"will not be saved.\n"
+"\n"
+"To modify this animation, navigate to the scene's Advanced Import settings "
+"and select the animation.\n"
+"Some options, including looping, are available here. To add custom tracks, "
+"enable \"Save To File\" and\n"
+"\"Keep Custom Tracks\"."
+msgstr ""
+"Diese Animation gehört zu einer importierten Szene, Änderungen an "
+"importierten Spuren werden nicht gespeichert.\n"
+"\n"
+"Um die Animation ändern zu können, muss die Animation in den erweiterten "
+"Importeinstellungen der Szene ausgewählt werden.\n"
+"Einige Einstellungen, einschließlich des Wiederholungsmodus, sind dort "
+"verfügbar. Um eigene Spuren hinzufügen zu können, sollten die Optionen „In "
+"Datei speichern“ und „Eigene Spuren beibehalten“ aktiviert werden."
+
msgid "Warning: Editing imported animation"
msgstr "Achtung: Es wird eine importierte Animation bearbeitet"
@@ -688,6 +1020,12 @@ msgstr ""
"Ein AnimationPlayer-Node auswählen, um Animationen zu erzeugen oder zu "
"bearbeiten."
+msgid "Imported Scene"
+msgstr "Importierte Szene"
+
+msgid "Toggle between the bezier curve editor and track editor."
+msgstr "Zwischen Bezierkurven-Editor und Spur-Editor wechseln."
+
msgid "Only show tracks from nodes selected in tree."
msgstr "Nur Spuren der aktuell ausgewählten Nodes anzeigen."
@@ -721,6 +1059,9 @@ msgstr "Auswahl skalieren"
msgid "Scale From Cursor"
msgstr "Vom Cursor skalieren"
+msgid "Make Easing Selection"
+msgstr "Auswahl zum Glätten erstellen"
+
msgid "Duplicate Selection"
msgstr "Auswahl duplizieren"
@@ -739,18 +1080,24 @@ msgstr "Zum vorherigen Schritt"
msgid "Apply Reset"
msgstr "Zurücksetzen durchführen"
+msgid "Bake Animation"
+msgstr "Animation backen"
+
+msgid "Optimize Animation (no undo)"
+msgstr "Animation optimieren (kann nicht rückgängig gemacht werden)"
+
+msgid "Clean-Up Animation (no undo)"
+msgstr "Animation bereinigen (kann nicht rückgängig gemacht werden)"
+
+msgid "Pick a node to animate:"
+msgstr "Node zum animieren auswählen:"
+
msgid "Use Bezier Curves"
msgstr "Bezier-Kurven nutzen"
msgid "Create RESET Track(s)"
msgstr "RESET Spur(en) erstellen"
-msgid "Anim. Optimizer"
-msgstr "Animationsoptimierer"
-
-msgid "Max. Angular Error:"
-msgstr "Max. Winkel-Fehler:"
-
msgid "Optimize"
msgstr "Optimieren"
@@ -772,12 +1119,18 @@ msgstr "Bereinigen"
msgid "Scale Ratio:"
msgstr "Skalierungsverhältnis:"
+msgid "Select Transition and Easing"
+msgstr "Übergang und Glättung auswählen"
+
msgid "Select Tracks to Copy"
msgstr "Zu kopierende Spuren auswählen"
msgid "Select All/None"
msgstr "Alles/Nichts auswählen"
+msgid "Animation Change Keyframe Time"
+msgstr "Animation Schlüsselbildzeit ändern"
+
msgid "Add Audio Track Clip"
msgstr "Tonspurclip hinzufügen"
@@ -796,6 +1149,16 @@ msgstr "Zeilennummer:"
msgid "%d replaced."
msgstr "%d ersetzt."
+msgid "%d match"
+msgid_plural "%d matches"
+msgstr[0] "%d Ãœbereinstimmung"
+msgstr[1] "%d Ãœbereinstimmungen"
+
+msgid "%d of %d match"
+msgid_plural "%d of %d matches"
+msgstr[0] "%d von %d Ãœbereinstimmungen"
+msgstr[1] "%d von %d Ãœbereinstimmungen"
+
msgid "Match Case"
msgstr "Groß-/Kleinschreibung berücksichtigen"
@@ -845,6 +1208,9 @@ msgstr ""
"Zielmethode nicht gefunden. Bitte eine gültige Methode angeben oder ein "
"Skript dem Ziel-Node anhängen."
+msgid "Attached Script"
+msgstr "Angehängtes Skript"
+
msgid "Connect to Node:"
msgstr "Mit Node verbinden:"
@@ -854,12 +1220,30 @@ msgstr "Mit Skript verbinden:"
msgid "From Signal:"
msgstr "Durch Signal:"
+msgid "Filter Nodes"
+msgstr "Nodes filtern"
+
+msgid "Go to Source"
+msgstr "Zur Quelle springen"
+
msgid "Scene does not contain any script."
msgstr "Szene enthält kein einziges Skript."
msgid "Select Method"
msgstr "Methode auswählen"
+msgid "Filter Methods"
+msgstr "Methoden filtern"
+
+msgid "No method found matching given filters."
+msgstr "Keine Methode entspricht den gesetzten Filtern."
+
+msgid "Script Methods Only"
+msgstr "Nur Skript-Methoden"
+
+msgid "Compatible Methods Only"
+msgstr "Nur kompatible Methoden"
+
msgid "Remove"
msgstr "Entfernen"
@@ -869,6 +1253,14 @@ msgstr "Zusätzlichen Aufrufparameter hinzufügen:"
msgid "Extra Call Arguments:"
msgstr "Zusätzliche Aufrufparameter:"
+msgid "Allows to drop arguments sent by signal emitter."
+msgstr ""
+"Entfernen von Argumenten, welche vom Signalauslöser gesendet wurden, "
+"erlauben."
+
+msgid "Unbind Signal Arguments:"
+msgstr "Signalargumente lösen:"
+
msgid "Receiver Method:"
msgstr "Empfängermethode:"
@@ -902,11 +1294,14 @@ msgstr "Verbinden"
msgid "Signal:"
msgstr "Signale:"
+msgid "No description."
+msgstr "Keine Beschreibung."
+
msgid "Connect '%s' to '%s'"
msgstr "Verbinde ‚%s‘ mit ‚%s‘"
msgid "Disconnect '%s' from '%s'"
-msgstr "Trenne '%s' von '%s'"
+msgstr "‚%s‘ von ‚%s‘"
msgid "Disconnect all from signal: '%s'"
msgstr "Alle Verbindungen des Signals trennen: ‚%s‘"
@@ -920,24 +1315,36 @@ msgstr "Trennen"
msgid "Connect a Signal to a Method"
msgstr "Ein Signal mit einer Methode verbinden"
+msgid "Edit Connection: '%s'"
+msgstr "Verbindung bearbeiten: ‚%s‘"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "Sollen wirklich alle Verbindungen des Signals „%s“ entfernt werden?"
msgid "Signals"
msgstr "Signale"
+msgid "Filter Signals"
+msgstr "Signale filtern"
+
msgid "Are you sure you want to remove all connections from this signal?"
msgstr "Sollen wirklich alle Verbindungen mit diesem Signal entfernt werden?"
msgid "Disconnect All"
msgstr "Alle Verbindungen lösen"
+msgid "Copy Name"
+msgstr "Name kopieren"
+
msgid "Edit..."
msgstr "Bearbeiten..."
msgid "Go to Method"
msgstr "Zur Methode springen"
+msgid "Change Type of \"%s\""
+msgstr "Typ von „%s“ ändern"
+
msgid "Change"
msgstr "Ändern"
@@ -947,6 +1354,12 @@ msgstr "%s erstellen"
msgid "No results for \"%s\"."
msgstr "Keine Ergebnisse für \"%s\"."
+msgid "This class is marked as deprecated."
+msgstr "Diese Klasse ist als veraltet eingetragen."
+
+msgid "This class is marked as experimental."
+msgstr "Diese Klasse ist als experimentell eingetragen."
+
msgid "No description available for %s."
msgstr "Keine Beschreibung zu ‚%s‘ verfügbar."
@@ -956,6 +1369,9 @@ msgstr "Favoriten:"
msgid "Recent:"
msgstr "Kürzlich:"
+msgid "(Un)favorite selected item."
+msgstr "Ausgewähltes Element (de)favorisieren."
+
msgid "Search:"
msgstr "Suche:"
@@ -983,9 +1399,21 @@ msgstr "Node-Pfad kopieren"
msgid "Instance:"
msgstr "Instanz:"
+msgid ""
+"This node has been instantiated from a PackedScene file:\n"
+"%s\n"
+"Click to open the original file in the Editor."
+msgstr ""
+"Dieses Node wurde aus einer PackedScene-Datei instantiiert:\n"
+"%s\n"
+"Zum öffnen der originalen Datei im Editor klicken."
+
msgid "Toggle Visibility"
msgstr "Sichtbarkeit umschalten"
+msgid "ms"
+msgstr "ms"
+
msgid "Monitors"
msgstr "Monitore"
@@ -1056,6 +1484,21 @@ msgstr "Zeit"
msgid "Calls"
msgstr "Aufrufe"
+msgid "Fit to Frame"
+msgstr "An Frame anpassen"
+
+msgid "Linked"
+msgstr "Verbunden"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "GPU"
+msgstr "GPU"
+
+msgid "Execution resumed."
+msgstr "Ausführung fortgesetzt."
+
msgid "Bytes:"
msgstr "Bytes:"
@@ -1066,11 +1509,41 @@ msgid "Error:"
msgstr "Fehler:"
msgid "%s Error"
-msgstr "%s Fehler"
+msgstr "%s-Fehler"
+
+msgid "%s Error:"
+msgstr "%s-Fehler:"
+
+msgid "%s Source"
+msgstr "%s-Quelle"
+
+msgid "%s Source:"
+msgstr "%s-Quelle:"
msgid "Stack Trace"
msgstr "Stacktrace"
+msgid "Stack Trace:"
+msgstr "Stacktrace:"
+
+msgid "Debug session started."
+msgstr "Debug-Sitzung gestartet."
+
+msgid "Debug session closed."
+msgstr "Debug-Sitzung beendet."
+
+msgid "Line %d"
+msgstr "Zeile %d"
+
+msgid "Delete Breakpoint"
+msgstr "Haltepunkt entfernen"
+
+msgid "Delete All Breakpoints in:"
+msgstr "Alle Haltepunkte entfernen in:"
+
+msgid "Delete All Breakpoints"
+msgstr "Alle Haltepunkte entfernen"
+
msgid "Copy Error"
msgstr "Fehlermeldung kopieren"
@@ -1101,6 +1574,9 @@ msgstr "Fortfahren"
msgid "Stack Frames"
msgstr "Aufrufsverlauf"
+msgid "Filter Stack Variables"
+msgstr "Stack-Variablen filtern"
+
msgid "Breakpoints"
msgstr "Haltepunkte"
@@ -1113,6 +1589,9 @@ msgstr "Alle einklappen"
msgid "Profiler"
msgstr "Profiler"
+msgid "Visual Profiler"
+msgstr "Visueller Profiler"
+
msgid "List of Video Memory Usage by Resource:"
msgstr "Auflistung der Grafikspeichernutzung nach Ressource:"
@@ -1202,6 +1681,12 @@ msgstr "Szenen öffnen"
msgid "Owners of: %s (Total: %d)"
msgstr "Besitzer von: %s (Insgesamt: %d)"
+msgid "Localization remap"
+msgstr "Lokalisierungsneuzuordnung"
+
+msgid "Localization remap for path '%s' and locale '%s'."
+msgstr "Lokalisierungsneuzuordnung für Pfad ‚%s‘ und Sprache ‚%s‘."
+
msgid ""
"Remove the selected files from the project? (Cannot be undone.)\n"
"Depending on your filesystem configuration, the files will either be moved "
@@ -1425,6 +1910,12 @@ msgstr "Bypass"
msgid "Bus Options"
msgstr "Audiobusoptionen"
+msgid "Duplicate Bus"
+msgstr "Audiobus duplizieren"
+
+msgid "Delete Bus"
+msgstr "Audiobus löschen"
+
msgid "Reset Volume"
msgstr "Lautstärke zurücksetzen"
@@ -1512,18 +2003,29 @@ msgstr "Gültige Zeichen:"
msgid "Must not collide with an existing engine class name."
msgstr "Darf nicht mit existierenden Klassennamen der Engine übereinstimmen."
+msgid "Must not collide with an existing global script class name."
+msgstr ""
+"Darf nicht mit dem Klassennamen eines existierenden globalen Skripts "
+"übereinstimmen."
+
msgid "Must not collide with an existing built-in type name."
msgstr "Darf nicht mit existierenden eingebauten Typnamen übereinstimmen."
msgid "Must not collide with an existing global constant name."
msgstr "Darf nicht mit Namen existierender globaler Konstanten übereinstimmen."
+msgid "Keyword cannot be used as an Autoload name."
+msgstr "Schlüsselwörter können nicht als Autoload-Namen genutzt werden."
+
msgid "Autoload '%s' already exists!"
msgstr "Autoload '%s' existiert bereits!"
msgid "Rename Autoload"
msgstr "Autoload umbenennen"
+msgid "Toggle Autoload Globals"
+msgstr "Autoload-Globals umschalten"
+
msgid "Move Autoload"
msgstr "Autoload verschieben"
@@ -1536,21 +2038,33 @@ msgstr "Aktivieren"
msgid "Rearrange Autoloads"
msgstr "Autoloads neu anordnen"
+msgid "Can't add Autoload:"
+msgstr "Autoload konnte nicht hinzugefügt werden:"
+
msgid "%s is an invalid path. File does not exist."
msgstr "%s ist ein ungültiger Pfad. Datei existiert nicht."
msgid "%s is an invalid path. Not in resource path (res://)."
msgstr "%s ist ein ungültiger Pfad. Liegt nicht im Ressourcen-Pfad (res://)."
+msgid "Add Autoload"
+msgstr "Autoload hinzufügen"
+
msgid "Path:"
msgstr "Pfad:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "Pfad setzen oder „%s“ drücken, um neues Skript zu erzeugen."
+
msgid "Node Name:"
msgstr "Node-Name:"
msgid "Global Variable"
msgstr "Globale Variable"
+msgid "3D Engine"
+msgstr "3D-Engine"
+
msgid "2D Physics"
msgstr "2D-Physik"
@@ -1560,12 +2074,117 @@ msgstr "3D-Physik"
msgid "Navigation"
msgstr "Navigation"
+msgid "XR"
+msgstr "XR"
+
+msgid "RenderingDevice"
+msgstr "Rendergerät"
+
msgid "OpenGL"
msgstr "OpenGL"
msgid "Vulkan"
msgstr "Vulkan"
+msgid "Text Server: Fallback"
+msgstr "Textserver: Fallback"
+
+msgid "Text Server: Advanced"
+msgstr "Textserver: Erweitert"
+
+msgid "TTF, OTF, Type 1, WOFF1 Fonts"
+msgstr "TTF-, OTF-, Type 1-, WOFF1-Schriftarten"
+
+msgid "WOFF2 Fonts"
+msgstr "WOFF2-Schriftarten"
+
+msgid "SIL Graphite Fonts"
+msgstr "SIL-Graphite-Schriftarten"
+
+msgid "Multi-channel Signed Distance Field Font Rendering"
+msgstr "Mehrkanal vorzeichenbehaftetes Distanzfeld-Schriftarten-Rendern"
+
+msgid "3D Nodes as well as RenderingServer access to 3D features."
+msgstr "3D-Nodes und RenderingServer haben Zugriff auf 3D-Funktionen."
+
+msgid "2D Physics nodes and PhysicsServer2D."
+msgstr "2D-Physik-Nodes und PhysicsServer2D."
+
+msgid "3D Physics nodes and PhysicsServer3D."
+msgstr "3D-Physik-Nodes und PhysicsServer3D."
+
+msgid "Navigation, both 2D and 3D."
+msgstr "Navigation, sowohl in 2D wie auch in 3D."
+
+msgid "XR (AR and VR)."
+msgstr "XR (AR und VR)."
+
+msgid ""
+"RenderingDevice based rendering (if disabled, the OpenGL back-end is "
+"required)."
+msgstr ""
+"RenderingDevice-basiertes Rendern (OpenGL-Backend wird benötigt falls "
+"deaktiviert)."
+
+msgid ""
+"OpenGL back-end (if disabled, the RenderingDevice back-end is required)."
+msgstr ""
+"OpenGL-Backend (RenderingDevice-Backend wird benötigt falls deaktiviert)."
+
+msgid "Vulkan back-end of RenderingDevice."
+msgstr "Vulkan-Backend von RenderingDevice."
+
+msgid ""
+"Fallback implementation of Text Server\n"
+"Supports basic text layouts."
+msgstr ""
+"Fallback-Implementation von Text Server\n"
+"Unterstützt grundlegende Text-Layouts."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Text Server-Implementation angetrieben durch ICU und HarfBuzz-Bibliotheken.\n"
+"Unterstützt komplexe Text-Layouts, BiDi und kontextsensitive OpenType-"
+"Schriftarten-Funktionen."
+
+msgid ""
+"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
+"library (if disabled, WOFF2 support is also disabled)."
+msgstr ""
+"TrueType-, OpenType-, Type 1- und WOFF1-Schriftartenunterstützung durch "
+"FreeType-Bibliothek (WOFF2-Unterstützung ist ebenfalls deaktiviert, falls "
+"dies deaktiviert wird)."
+
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr ""
+"WOFF2-Schriftartenunterstützung durch FreeType- und Brotli-Bibliotheken."
+
+msgid ""
+"SIL Graphite smart font technology support (supported by Advanced Text "
+"Server only)."
+msgstr ""
+"SIL-Graphite-smart-Schriftartenunterstützung (wird nur vom erweiterten Text "
+"Server unterstützt)."
+
+msgid ""
+"Multi-channel signed distance field font rendering support using msdfgen "
+"library (pre-rendered MSDF fonts can be used even if this option disabled)."
+msgstr ""
+"Mehrkanal vorzeichenbehaftetes Distanzfeld-Schriftarten-Render-Unterstützung "
+"durch msdfgen-Bibliothek (vorgerenderte MSDF-Schriftarten können auch "
+"genutzt werden wenn diese Option deaktiviert ist)."
+
+msgid "General Features:"
+msgstr "Wesentliche Funktionen:"
+
+msgid "Text Rendering and Font Options:"
+msgstr "Text-Render- und Schriftarten-Optionen:"
+
+msgid "File saving failed."
+msgstr "Dateispeichern fehlgeschlagen."
+
msgid "Nodes and Classes:"
msgstr "Nodes und Klassen:"
@@ -1581,12 +2200,42 @@ msgstr "Neu"
msgid "Save"
msgstr "Speichern"
+msgid "Profile:"
+msgstr "Profil:"
+
msgid "Reset to Defaults"
msgstr "Auf Standardwerte zurücksetzen"
+msgid "Detect from Project"
+msgstr "Von Projekt ableiten"
+
+msgid "Actions:"
+msgstr "Aktionen:"
+
+msgid "Configure Engine Build Profile:"
+msgstr "Engine-Build-Profil einstellen:"
+
+msgid "Please Confirm:"
+msgstr "Bitte bestätigen:"
+
+msgid "Engine Build Profile"
+msgstr "Engine-Build-Profil"
+
+msgid "Load Profile"
+msgstr "Profil laden"
+
msgid "Export Profile"
msgstr "Profil exportieren"
+msgid "Forced classes on detect:"
+msgstr "Forcierte Klassen beim Auffinden:"
+
+msgid "Edit Build Configuration Profile"
+msgstr "Build-Konfigurations-Profil bearbeiten"
+
+msgid "Filter Commands"
+msgstr "Befehle filtern"
+
msgid "Paste Params"
msgstr "Parameter einfügen"
@@ -1608,6 +2257,11 @@ msgstr "[ungespeichert]"
msgid "Please select a base directory first."
msgstr "Zuerst ein Wurzelverzeichnis auswählen."
+msgid "Could not create folder. File with that name already exists."
+msgstr ""
+"Ordner konnte nicht erstellt werden. Es existiert bereits eine Datei mit "
+"diesem Namen."
+
msgid "Choose a Directory"
msgstr "Wähle ein Verzeichnis"
@@ -1644,6 +2298,9 @@ msgstr "Dateisystemleiste"
msgid "Import Dock"
msgstr "Importleiste"
+msgid "History Dock"
+msgstr "Verlaufsleiste"
+
msgid "Allows to view and edit 3D scenes."
msgstr "Ermöglicht das Betrachten und Bearbeiten von 3D-Szenen."
@@ -1676,6 +2333,11 @@ msgstr ""
"Ermöglicht die Konfiguration von Importeinstellungen für individuelle "
"Dateien. Benötigt die Dateisystemleiste zum Funktionieren."
+msgid "Provides an overview of the editor's and each scene's undo history."
+msgstr ""
+"Zeigt eine Übersicht über den zeitlichen Verlauf der Bearbeitungsschritte im "
+"Editor und jeder Szene."
+
msgid "(current)"
msgstr "(ausgewählt)"
@@ -1778,9 +2440,6 @@ msgstr "Öffnen"
msgid "Select Current Folder"
msgstr "Gegenwärtigen Ordner auswählen"
-msgid "File exists, overwrite?"
-msgstr "Datei existiert bereits. Soll sie überschrieben werden?"
-
msgid "Select This Folder"
msgstr "Diesen Ordner auswählen"
@@ -1817,6 +2476,9 @@ msgstr "Datei oder Verzeichnis öffnen"
msgid "Save a File"
msgstr "Datei speichern"
+msgid "Favorited folder does not exist anymore and will be removed."
+msgstr "Der favorisierte Ordner existiert nicht und wurde entfernt."
+
msgid "Go Back"
msgstr "Zurück"
@@ -1877,6 +2539,23 @@ msgstr "Vorschau:"
msgid "File:"
msgstr "Datei:"
+msgid ""
+"Remove the selected files? For safety only files and empty directories can "
+"be deleted from here. (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
+msgstr ""
+"Sollen die ausgewählten Dateien wirklich entfernt werden? Aus "
+"Sicherheitsgründen können hier nur Dateien und leere Verzeichnisse gelöscht "
+"werden. (Diese Aktion kann nicht rückgängig gemacht werden.)\n"
+"Abhängig von den Betriebssystemeinstellungen werden die Dateien in den "
+"Papierkorb verschoben oder permanent gelöscht."
+
+msgid "Some extensions need the editor to restart to take effect."
+msgstr ""
+"Einige Erweiterungen erfordern einen Neustart des Editors um aktiviert "
+"werden zu werden."
+
msgid "Restart"
msgstr "Neustarten"
@@ -1896,6 +2575,56 @@ msgstr ""
msgid "(Re)Importing Assets"
msgstr "Importiere Nutzerinhalte erneut"
+msgid "Import resources of type: %s"
+msgstr "Ressourcen importieren des Typs: %s"
+
+msgid "No return value."
+msgstr "Kein Rückgabewert."
+
+msgid "Deprecated"
+msgstr "Veraltet"
+
+msgid "Experimental"
+msgstr "Experimentell"
+
+msgid "This method supports a variable number of arguments."
+msgstr "Diese Methode akzeptiert eine variable Anzahl an Argumenten."
+
+msgid ""
+"This method is called by the engine.\n"
+"It can be overridden to customize built-in behavior."
+msgstr ""
+"Diese Methode wird von der Engine aufgerufen.\n"
+"Sie kann überschrieben werden um eingebautes Verhalten zu anzupassen."
+
+msgid ""
+"This method has no side effects.\n"
+"It does not modify the object in any way."
+msgstr ""
+"Diese Methode hat keine Seiteneffekte.\n"
+"Sie verändert das Objekt in keinster Weise."
+
+msgid ""
+"This method does not need an instance to be called.\n"
+"It can be called directly using the class name."
+msgstr ""
+"Diese Methode benötigt keine Instanz um aufgerufen zu werden.\n"
+"Sie kann direkt über den Klassennamen aufgerufen werden."
+
+msgid "Error codes returned:"
+msgstr "Zurückgegebene Fehlercodes:"
+
+msgid "There is currently no description for this %s."
+msgstr "Es gibt zur Zeit keine Beschreibung für %s."
+
+msgid ""
+"There is currently no description for this %s. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Es gibt zur Zeit keine Beschreibung für %s. [color=$color]"
+"[url=$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr "
+"erwünscht!"
+
msgid "Top"
msgstr "Oben"
@@ -1908,9 +2637,34 @@ msgstr "Erbt von:"
msgid "Inherited by:"
msgstr "Vererbt an:"
+msgid ""
+"This class is marked as deprecated. It will be removed in future versions."
+msgstr ""
+"Diese Klasse ist als veraltet eingetragen. Sie wird in einer zukünftigen "
+"Version von Godot entfernt werden."
+
+msgid ""
+"This class is marked as experimental. It is subject to likely change or "
+"possible removal in future versions. Use at your own discretion."
+msgstr ""
+"Diese Klasse ist als experimentell eingetragen. Die Wahrscheinlichkeit ist "
+"hoch, dass sie verändert oder sogar wieder entfernt wird. Nutzung auf eigene "
+"Gefahr."
+
msgid "Description"
msgstr "Beschreibung"
+msgid "There is currently no description for this class."
+msgstr "Es gibt zur Zeit keine Beschreibung dieser Klasse."
+
+msgid ""
+"There is currently no description for this class. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Es gibt zur Zeit keine Beschreibung dieser Klasse. [color=$color]"
+"[url=$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr "
+"erwünscht!"
+
msgid "Online Tutorials"
msgstr "Anleitungen im Netz"
@@ -1923,6 +2677,12 @@ msgstr "Ãœberschreibt %s:"
msgid "default:"
msgstr "Standard:"
+msgid "property:"
+msgstr "Eigenschaft:"
+
+msgid "Constructors"
+msgstr "Konstruktoren"
+
msgid "Operators"
msgstr "Operatoren"
@@ -1938,6 +2698,9 @@ msgstr "Konstanten"
msgid "Fonts"
msgstr "Schriftarten"
+msgid "Font Sizes"
+msgstr "Schriftgrößen"
+
msgid "Icons"
msgstr "Symbole"
@@ -1947,12 +2710,29 @@ msgstr "Stile"
msgid "Enumerations"
msgstr "Aufzählungen"
+msgid "Annotations"
+msgstr "Anmerkungen"
+
+msgid "There is currently no description for this annotation."
+msgstr "Es gibt zur Zeit keine Beschreibung für diese Anmerkung."
+
+msgid ""
+"There is currently no description for this annotation. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Es gibt zur Zeit keine Beschreibung für diese Anmerkung. [color=$color]"
+"[url=$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr "
+"erwünscht!"
+
msgid "Property Descriptions"
msgstr "Eigenschaften-Beschreibung"
msgid "(value)"
msgstr "(Wert)"
+msgid "There is currently no description for this property."
+msgstr "Es gibt zur Zeit keine Beschreibung für diese Eigenschaft."
+
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
@@ -1961,9 +2741,15 @@ msgstr ""
"[url=$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr "
"erwünscht!"
+msgid "Constructor Descriptions"
+msgstr "Konstruktorbeschreibungen"
+
msgid "Method Descriptions"
msgstr "Methoden-Beschreibung"
+msgid "Operator Descriptions"
+msgstr "Operatorbeschreibungen"
+
msgid "%d match."
msgstr "%d Ãœbereinstimmung gefunden."
@@ -1985,12 +2771,21 @@ msgstr "Alles anzeigen"
msgid "Classes Only"
msgstr "Nur Klassen"
+msgid "Constructors Only"
+msgstr "Nur Konstruktoren"
+
msgid "Methods Only"
msgstr "Nur Methoden"
+msgid "Operators Only"
+msgstr "Nur Operatoren"
+
msgid "Signals Only"
msgstr "Nur Signale"
+msgid "Annotations Only"
+msgstr "Nur Anmerkungen"
+
msgid "Constants Only"
msgstr "Nur Konstanten"
@@ -2003,6 +2798,9 @@ msgstr "Nur Theme-Eigenschaften"
msgid "Member Type"
msgstr "Attribut-Typ"
+msgid "(constructors)"
+msgstr "(Konstruktoren)"
+
msgid "Class"
msgstr "Klasse"
@@ -2012,6 +2810,9 @@ msgstr "Methode"
msgid "Signal"
msgstr "Ereignis"
+msgid "Annotation"
+msgstr "Anmerkung"
+
msgid "Constant"
msgstr "Konstante"
@@ -2021,9 +2822,21 @@ msgstr "Eigenschaft"
msgid "Theme Property"
msgstr "Theme-Eigenschaft"
+msgid "This member is marked as deprecated."
+msgstr "Dieses Feld ist als veraltet eingetragen."
+
+msgid "This member is marked as experimental."
+msgstr "Dieses Feld ist als experimentell eingetragen."
+
msgid "Property:"
msgstr "Eigenschaft:"
+msgid "Pin Value"
+msgstr "Wert anheften"
+
+msgid "Pin Value [Disabled because '%s' is editor-only]"
+msgstr "Wert anheften [deaktiviert da ‚%s‘ Editor-exklusiv ist]"
+
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
@@ -2033,32 +2846,108 @@ msgstr ""
msgid "Open Documentation"
msgstr "Dokumentation öffnen"
+msgid "Element %d: %s%d*"
+msgstr "Element %d: %s%d*"
+
msgid "Move Up"
msgstr "Schiebe hoch"
msgid "Move Down"
msgstr "Schiebe runter"
+msgid "Insert New Before"
+msgstr "Neues davor einfügen"
+
+msgid "Insert New After"
+msgstr "Neues danach einfügen"
+
+msgid "Clear Array"
+msgstr "Array leeren"
+
+msgid "Resize Array..."
+msgstr "Arraygröße anpassen…"
+
+msgid "Add Element"
+msgstr "Element hinzufügen"
+
msgid "Resize Array"
msgstr "Größe des Arrays ändern"
+msgid "New Size:"
+msgstr "Neue Größe:"
+
+msgid "Element %s"
+msgstr "Element %s"
+
+msgid "Add Metadata"
+msgstr "Metadaten hinzufügen"
+
msgid "Set %s"
msgstr "%s setzen"
msgid "Set Multiple:"
msgstr "Mehrfach festlegen:"
+msgid "Remove metadata %s"
+msgstr "Metadatum %s entfernen"
+
msgid "Pinned %s"
msgstr "%s angeheftet"
msgid "Unpinned %s"
msgstr "%s losgelöst"
+msgid "Add metadata %s"
+msgstr "Metadatum %s hinzufügen"
+
+msgid "Metadata name can't be empty."
+msgstr "Metadatennamen dürfen nicht leer sein."
+
+msgid "Metadata name must be a valid identifier."
+msgstr "Metadatenname muss ein gültiger Bezeichner sein."
+
+msgid "Metadata with name \"%s\" already exists."
+msgstr "Metadatum mit dem Namen ‚%s‘ existiert bereits."
+
+msgid "Names starting with _ are reserved for editor-only metadata."
+msgstr ""
+"Namen welche mit _ beginnen sind für Editor-exklusive Metadaten reserviert."
+
+msgid "Metadata name is valid."
+msgstr "Metadatenname ist gültig."
+
+msgid "Add Metadata Property for \"%s\""
+msgstr "Metadateneigenschaft für „%s“ hinzufügen"
+
+msgid "Copy Value"
+msgstr "Wert kopieren"
+
+msgid "Paste Value"
+msgstr "Wert einfügen"
+
msgid "Copy Property Path"
msgstr "Eigenschaft-Pfad kopieren"
+msgid "Select existing layout:"
+msgstr "Existierendes Layout wählen:"
+
+msgid "Changed Locale Language Filter"
+msgstr "Lokalisierungssprachenfilter geändert"
+
+msgid "Changed Locale Script Filter"
+msgstr "Lokalisierungsskriptfilter geändert"
+
+msgid "Changed Locale Country Filter"
+msgstr "Lokalisierungslandfilter geändert"
+
msgid "Changed Locale Filter Mode"
-msgstr "Sprachfiltermodus geändert"
+msgstr "Lokalisierungsfiltermodus geändert"
+
+msgid "[Default]"
+msgstr "[Standard]"
+
+msgid "Select a Locale"
+msgstr "Lokalisierung auswählen"
msgid "Show All Locales"
msgstr "Alle Sprachen anzeigen"
@@ -2072,15 +2961,59 @@ msgstr "Filter bearbeiten"
msgid "Language:"
msgstr "Sprache:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "Skript:"
+
+msgid "Country:"
+msgstr "Land:"
+
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "Locale"
+msgid "Script"
+msgstr "Skript"
+
+msgid "Country"
+msgstr "Land"
+
msgid "Variant"
msgstr "Variante"
+msgid "Filter Messages"
+msgstr "Nachrichten filtern"
+
msgid "Clear Output"
msgstr "Ausgabe löschen"
msgid "Copy Selection"
msgstr "Auswahl kopieren"
+msgid ""
+"Collapse duplicate messages into one log entry. Shows number of occurrences."
+msgstr ""
+"Wiederholte Nachrichten zu einem Logeintrag zusammenfassen. Die Anzahl der "
+"zusammengefassten Nachrichten wird ebenfalls angezeigt."
+
+msgid "Focus Search/Filter Bar"
+msgstr "Such-/Filterleiste fokussieren"
+
+msgid "Toggle visibility of standard output messages."
+msgstr "Anzeige von Standardausgabe-Nachrichten umschalten."
+
+msgid "Toggle visibility of errors."
+msgstr "Anzeige von Fehlern umschalten."
+
+msgid "Toggle visibility of warnings."
+msgstr "Anzeige von Warnungen umschalten."
+
+msgid "Toggle visibility of editor messages."
+msgstr "Anzeige von Editornachrichten umschalten."
+
+msgid "Native Shader Source Inspector"
+msgstr "Nativer Shaderquelleninspektor"
+
msgid "New Window"
msgstr "Neues Fenster"
@@ -2115,6 +3048,13 @@ msgstr ""
"Diese Ressource kann nicht abgespeichert werden, da sie nicht Teil der "
"bearbeiteten Szene ist. Ressource muss vorher einzigartig gemacht werden."
+msgid ""
+"This resource can't be saved because it was imported from another file. Make "
+"it unique first."
+msgstr ""
+"Diese Ressource kann nicht abgespeichert werden, da sie aus einer anderen "
+"Datei importiert wurde. Sie muss erst einzigartig gemacht werden."
+
msgid "Save Resource As..."
msgstr "Speichere Ressource als..."
@@ -2127,6 +3067,23 @@ msgstr "Angefordertes Dateiformat unbekannt:"
msgid "Error while saving."
msgstr "Fehler beim Speichern."
+msgid "Can't open file '%s'. The file could have been moved or deleted."
+msgstr ""
+"Datei ‚%s‘ kann nicht geöffnet werden. Die Datei könnte verschoben oder "
+"gelöscht worden sein."
+
+msgid "Error while parsing file '%s'."
+msgstr "Fehler beim Parsen der Datei ‚%s‘."
+
+msgid "Scene file '%s' appears to be invalid/corrupt."
+msgstr "Szenendatei ‚%s‘ scheint ungültig/fehlerhaft zu sein."
+
+msgid "Missing file '%s' or one its dependencies."
+msgstr "Datei ‚%s‘ oder zugehörige Abhängigkeiten fehlen."
+
+msgid "Error while loading file '%s'."
+msgstr "Fehler beim Laden von Datei ‚%s‘."
+
msgid "Saving Scene"
msgstr "Speichere Szene"
@@ -2140,6 +3097,14 @@ msgid "This operation can't be done without a tree root."
msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden."
msgid ""
+"This scene can't be saved because there is a cyclic instance inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Diese Szene kann nicht gespeichert werden, da sie eine zyklische "
+"Instanziierungshierarchie enthält.\n"
+"Speichern ist erst nach Beheben des Konflikts möglich."
+
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2184,6 +3149,9 @@ msgstr "Layout-Name nicht gefunden!"
msgid "Restored the Default layout to its base settings."
msgstr "Standardlayout wurde auf Werkseinstellungen zurückgesetzt."
+msgid "This object is marked as read-only, so it's not editable."
+msgstr "Dieses Objekt ist als nur-lesen markiert, es ist nicht bearbeitbar."
+
msgid ""
"This resource belongs to a scene that was imported, so it's not editable.\n"
"Please read the documentation relevant to importing scenes to better "
@@ -2194,6 +3162,14 @@ msgstr ""
"Die Dokumentation zum Szenenimport beschreibt den nötigen Arbeitsablauf."
msgid ""
+"This resource belongs to a scene that was instantiated or inherited.\n"
+"Changes to it must be made inside the original scene."
+msgstr ""
+"Diese Ressource gehört zu einer instanziierten oder geerbten Szene.\n"
+"Änderungen an der Ressource müssen in der ursprünglichen Szene vorgenommen "
+"werden."
+
+msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
@@ -2201,21 +3177,61 @@ msgstr ""
"allerdings ein Neu-Import mit geänderten Einstellungen im Import-Menü "
"durchgeführt werden."
+msgid ""
+"This scene was imported, so changes to it won't be kept.\n"
+"Instantiating or inheriting it will allow you to make changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Diese Szene wurde importiert, Änderungen an ihr werden nicht gespeichert.\n"
+"Instanziierung oder Vererbung erlaubt es, Änderungen vorzunehmen.\n"
+"Die Dokumentation zum Szenenimport beschreibt den nötigen Arbeitsablauf."
+
msgid "Changes may be lost!"
msgstr "Änderungen können verloren gehen!"
+msgid "This object is read-only."
+msgstr "Diese Objekt ist nur-lesbar."
+
+msgid ""
+"Movie Maker mode is enabled, but no movie file path has been specified.\n"
+"A default movie file path can be specified in the project settings under the "
+"Editor > Movie Writer category.\n"
+"Alternatively, for running single scenes, a `movie_file` string metadata can "
+"be added to the root node,\n"
+"specifying the path to a movie file that will be used when recording that "
+"scene."
+msgstr ""
+"Der Videoerstellungsmodus ist aktiviert, aber es wurde kein Videodateipfad "
+"angegeben.\n"
+"Ein Standard-Videodateipfad kann in den Projekteinstellungen unter der "
+"Kategorie Editor > Videoerstellung festgelegt werden.\n"
+"Als Alternative zum Abspielen einzelner Szenen, kann ein Metadatum namens "
+"‚movie_file‘ zur Wurzel-Node hinzugefügt werden,\n"
+"welches den Pfad zur Videodatei angibt, welche benutzt wird um die Szene "
+"aufzunehmen."
+
msgid "There is no defined scene to run."
msgstr "Es ist keine abzuspielende Szene definiert."
msgid "Save scene before running..."
msgstr "Szene vor dem Abspielen speichern..."
+msgid "Could not start subprocess(es)!"
+msgstr "Unterprozess(e) konnte(n) nicht gestartet werden!"
+
+msgid "Reload the played scene."
+msgstr "Abgespielte Szene neu laden."
+
msgid "Play the project."
msgstr "Projekt abspielen."
msgid "Play the edited scene."
msgstr "Spiele die bearbeitete Szene."
+msgid "Play a custom scene."
+msgstr "Angepasste Szene abspielen."
+
msgid "Open Base Scene"
msgstr "Basisszene öffnen"
@@ -2231,9 +3247,15 @@ msgstr "Schnell Skripte öffnen..."
msgid "Save & Reload"
msgstr "Speichern & Neu laden"
+msgid "Save modified resources before reloading?"
+msgstr "Geänderte Ressourcen vorm Neuladen speichern?"
+
msgid "Save & Quit"
msgstr "Speichern und beenden"
+msgid "Save modified resources before closing?"
+msgstr "Geänderte Ressourcen abspeichern vorm Schließen?"
+
msgid "Save changes to '%s' before reloading?"
msgstr "Änderungen in ‚%s‘ vor dem Neuladen speichern?"
@@ -2269,12 +3291,30 @@ msgstr "Kann nicht rückgängig gemacht werden während Maustasten gedrückt sin
msgid "Nothing to undo."
msgstr "Nichts rückgängig zu machen."
+msgid "Global Undo: %s"
+msgstr "Globales Rückgängig-Machen: %s"
+
+msgid "Remote Undo: %s"
+msgstr "Fern-Rückgängig-Machen: %s"
+
+msgid "Scene Undo: %s"
+msgstr "Szenen-Rückgängig-Machen: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "Kann nicht wiederhergestellt werden solange Maustasten gedrückt sind."
msgid "Nothing to redo."
msgstr "Nichts wiederherzustellen."
+msgid "Global Redo: %s"
+msgstr "Globales Wiederherstellen: %s"
+
+msgid "Remote Redo: %s"
+msgstr "Fern-Wiederherstellen: %s"
+
+msgid "Scene Redo: %s"
+msgstr "Szenen-Wiederherstellen: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr ""
"Szene kann nicht neu geladen werden, wenn sie vorher nicht gespeichert wurde."
@@ -2459,6 +3499,9 @@ msgstr "Sicht verschieben"
msgid "Dock Position"
msgstr "Leistenanordnung"
+msgid "Make Floating"
+msgstr "Schwebend machen"
+
msgid "Add a new scene."
msgstr "Eine neue Szene hinzufügen."
@@ -2480,6 +3523,18 @@ msgstr "Gehe zu vorher geöffneter Szene."
msgid "Copy Text"
msgstr "Text kopieren"
+msgid "Next Scene Tab"
+msgstr "Nächster Szenen-Tab"
+
+msgid "Previous Scene Tab"
+msgstr "Vorheriger Szenen-Tab"
+
+msgid "Focus FileSystem Filter"
+msgstr "Dateisystemfilter fokussieren"
+
+msgid "Command Palette"
+msgstr "Befehlsleiste"
+
msgid "New Scene"
msgstr "Neue Szene"
@@ -2498,6 +3553,9 @@ msgstr "Zuletzt benutzte Szenen"
msgid "Save Scene"
msgstr "Szene speichern"
+msgid "Export As..."
+msgstr "Exportieren als…"
+
msgid "MeshLibrary..."
msgstr "Mesh-Bibliothek..."
@@ -2513,9 +3571,18 @@ msgstr "Projekt"
msgid "Project Settings..."
msgstr "Projekteinstellungen..."
+msgid "Project Settings"
+msgstr "Projekteinstellungen"
+
msgid "Version Control"
msgstr "Versionsverwaltung"
+msgid "Create Version Control Metadata"
+msgstr "Versionsverwaltungsmetadaten erstellen"
+
+msgid "Version Control Settings"
+msgstr "Versionsverwaltungseinstellungen"
+
msgid "Export..."
msgstr "Exportieren..."
@@ -2525,6 +3592,9 @@ msgstr "Android-Build-Vorlage installieren..."
msgid "Open User Data Folder"
msgstr "Datei-Ordner des Nutzers öffnen"
+msgid "Customize Engine Build Configuration..."
+msgstr "Engine-Build-Konfiguration anpassen…"
+
msgid "Tools"
msgstr "Werkzeuge"
@@ -2543,6 +3613,9 @@ msgstr "Editor"
msgid "Editor Settings..."
msgstr "Editoreinstellungen…"
+msgid "Command Palette..."
+msgstr "Befehlsleiste…"
+
msgid "Editor Layout"
msgstr "Editorlayout"
@@ -2571,6 +3644,9 @@ msgstr "Editorfunktionen verwalten…"
msgid "Manage Export Templates..."
msgstr "Exportvorlagen verwalten…"
+msgid "Configure FBX Importer..."
+msgstr "FBX-Importer konfigurieren…"
+
msgid "Help"
msgstr "Hilfe"
@@ -2598,15 +3674,66 @@ msgstr "Ãœber Godot"
msgid "Support Godot Development"
msgstr "Unterstützung der Godot-Entwicklung"
+msgid "Run the project's default scene."
+msgstr "Die Standardszene des Projekts abspielen."
+
msgid "Run Project"
msgstr "Projekt ausführen"
+msgid "Pause the running project's execution for debugging."
+msgstr "Ausführung des laufenden Projekts zum Debuggen pausieren."
+
+msgid "Pause Running Project"
+msgstr "Laufendes Projekt pausieren"
+
+msgid "Stop the currently running project."
+msgstr "Laufendes Projekt stoppen."
+
+msgid "Stop Running Project"
+msgstr "Laufendes Projekt stoppen"
+
+msgid "Run the currently edited scene."
+msgstr "Zur Zeit bearbeitete Szene abspielen."
+
+msgid "Run Current Scene"
+msgstr "Aktuelle Szene abspielen"
+
+msgid "Run a specific scene."
+msgstr "Eine bestimmte Szene abspielen."
+
+msgid "Run Specific Scene"
+msgstr "Bestimmte Szene abspielen"
+
+msgid ""
+"Enable Movie Maker mode.\n"
+"The project will run at stable FPS and the visual and audio output will be "
+"recorded to a video file."
+msgstr ""
+"Videoerstellungsmodus aktivieren.\n"
+"Das Projekt wird mit festgelegten FPS laufen und die audiovisuelle Ausgabe "
+"wird in einer Videodatei gespeichert."
+
+msgid "Choose a renderer."
+msgstr "Renderer auswählen."
+
+msgid "Forward+"
+msgstr "Forward+"
+
+msgid "Mobile"
+msgstr "Mobil"
+
msgid "Compatibility"
msgstr "Kompatibilität"
+msgid "Changing the renderer requires restarting the editor."
+msgstr "Das Ändern des Renderers erfordert einen Neustart des Editors."
+
msgid "Update Continuously"
msgstr "Fortlaufend aktualisieren"
+msgid "Update When Changed"
+msgstr "Bei Änderungen aktualisieren"
+
msgid "Hide Update Spinner"
msgstr "Aktualisierungsanzeigerad ausblenden"
@@ -2619,6 +3746,9 @@ msgstr "Inspektor"
msgid "Node"
msgstr "das Node"
+msgid "History"
+msgstr "Verlauf"
+
msgid "Expand Bottom Panel"
msgstr "Unteres Panel vergrößern"
@@ -2638,6 +3768,26 @@ msgstr "Vorlagen verwalten"
msgid "Install from file"
msgstr "Aus Datei installieren"
+msgid "Select Android sources file"
+msgstr "Android Quelldateien auswählen"
+
+msgid ""
+"This will set up your project for gradle Android builds by installing the "
+"source template to \"res://android/build\".\n"
+"You can then apply modifications and build your own custom APK on export "
+"(adding modules, changing the AndroidManifest.xml, etc.).\n"
+"Note that in order to make gradle builds instead of using pre-built APKs, "
+"the \"Use Gradle Build\" option should be enabled in the Android export "
+"preset."
+msgstr ""
+"Hiermit wird der Projektordner für Gradle-Android-Builds eingerichtet in dem "
+"das Quell-Template nach „res://android/build“ installiert wird.\n"
+"Danach können eigene Modifikationen vorgenommen und ein eigens APK "
+"exportiert werden (Module hinzufügen, AndroidManifest.xml ändern, usw.).\n"
+"Achtung: Um eigene Builds, statt den vorgefertigten zu generieren, muss die "
+"Option „Use Gradle Build“ in den Android-Export-Voreinstellungen aktiviert "
+"sein."
+
msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
@@ -2707,6 +3857,9 @@ msgstr "Nächsten Editor öffnen"
msgid "Open the previous Editor"
msgstr "Vorigen Editor öffnen"
+msgid "Ok"
+msgstr "OK"
+
msgid "Warning!"
msgstr "Warnung!"
@@ -2731,6 +3884,9 @@ msgstr "Plugin bearbeiten"
msgid "Installed Plugins:"
msgstr "Installierte Erweiterungen:"
+msgid "Create New Plugin"
+msgstr "Neues Plugin erstellen"
+
msgid "Version"
msgstr "Version"
@@ -2746,6 +3902,9 @@ msgstr "Text bearbeiten:"
msgid "On"
msgstr "An"
+msgid "Renaming layer %d:"
+msgstr "Ebene %d umbenennen:"
+
msgid "No name provided."
msgstr "Kein Name angegeben."
@@ -2758,12 +3917,46 @@ msgstr "Bit %d, Wert %d"
msgid "Rename"
msgstr "Umbenennen"
+msgid "Rename layer"
+msgstr "Ebene umbenennen"
+
+msgid "Layer %d"
+msgstr "Ebene %d"
+
+msgid "No Named Layers"
+msgstr "Keine benannten Ebenen"
+
+msgid "Edit Layer Names"
+msgstr "Ebenennamen bearbeiten"
+
+msgid "<empty>"
+msgstr "<leer>"
+
+msgid "Temporary Euler may be changed implicitly!"
+msgstr "Temporärer Euler könnte indirekt geändert werden!"
+
+msgid ""
+"Temporary Euler will not be stored in the object with the original value. "
+"Instead, it will be stored as Quaternion with irreversible conversion.\n"
+"This is due to the fact that the result of Euler->Quaternion can be "
+"determined uniquely, but the result of Quaternion->Euler can be multi-"
+"existent."
+msgstr ""
+"Temporärer Euler wird nicht im Objekt zusammen mit dem ursprünglichen Wert "
+"gespeichert werden. Stattdessen wird er als Quaternion nach irreversibler "
+"Konversion gespeichert.\n"
+"Das liegt daran dass der Weg von Euler zu Quaternion eindeutig ist, der Weg "
+"von Quaternion zu Euler allerdings mehrere Ergebnisse liefern kann."
+
msgid "Assign..."
msgstr "Zuweisen..."
msgid "Invalid RID"
msgstr "Ungültige RID"
+msgid "Recursion detected, unable to assign resource to property."
+msgstr "Rekursion erkannt, Ressource kann Eigenschaft nicht zugewiesen werden."
+
msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
@@ -2789,12 +3982,24 @@ msgstr "Viewport auswählen"
msgid "Selected node is not a Viewport!"
msgstr "Ausgewähltes Node ist kein Viewport!"
+msgid "(Nil) %s"
+msgstr "(Nil) %s"
+
+msgid "%s (size %s)"
+msgstr "%s (Größe %s)"
+
msgid "Size:"
msgstr "Größe:"
msgid "Remove Item"
msgstr "Entferne Element"
+msgid "Dictionary (Nil)"
+msgstr "Wörterbuch (Nil)"
+
+msgid "Dictionary (size %d)"
+msgstr "Wörterbuch (Größe %d)"
+
msgid "New Key:"
msgstr "Neuer Schlüssel:"
@@ -2804,6 +4009,15 @@ msgstr "Neuer Wert:"
msgid "Add Key/Value Pair"
msgstr "Schlüssel-Wert-Paar hinzufügen"
+msgid "Localizable String (Nil)"
+msgstr "Lokalisierbare Zeichenkette (Nil)"
+
+msgid "Localizable String (size %d)"
+msgstr "Lokalisierbare Zeichenkette (Größe %d)"
+
+msgid "Add Translation"
+msgstr "Übersetzung hinzufügen"
+
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
@@ -2814,9 +4028,15 @@ msgstr ""
msgid "Quick Load"
msgstr "Schnell laden"
+msgid "Inspect"
+msgstr "Inspizieren"
+
msgid "Make Unique"
msgstr "Einzigartig machen"
+msgid "Make Unique (Recursive)"
+msgstr "Einzigartig machen (rekursiv)"
+
msgid "Convert to %s"
msgstr "Umwandeln zu %s"
@@ -2829,6 +4049,15 @@ msgstr "Neues Skript"
msgid "Extend Script"
msgstr "Skript erweitern"
+msgid "New Shader"
+msgstr "Neuer Shader"
+
+msgid "No Remote Debug export presets configured."
+msgstr "Keine Ferndebug-Exportvorlagen konfiguriert."
+
+msgid "Remote Debug"
+msgstr "Fern-Debuggen"
+
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the Export menu or define an existing preset "
@@ -2846,6 +4075,18 @@ msgstr "Spiellogik sollte mit der _run()-Methode beginnen."
msgid "There is an edited scene already."
msgstr "Es besteht bereits eine bearbeitete Szene."
+msgid ""
+"Couldn't run editor script, did you forget to override the '_run' method?"
+msgstr ""
+"Editor-Skript konnte nicht ausgeführt werden, wurde möglicherweise vergessen "
+"die ‚_run‘-Methode zu überschreiben?"
+
+msgid "Edit Built-in Action"
+msgstr "Eingebaute Aktion bearbeiten"
+
+msgid "Edit Shortcut"
+msgstr "Tastenkürzel bearbeiten"
+
msgid "Common"
msgstr "Allgemein"
@@ -2855,6 +4096,9 @@ msgstr "Editoreinstellungen"
msgid "General"
msgstr "Allgemein"
+msgid "Filter Settings"
+msgstr "Filtereinstellungen"
+
msgid "The editor must be restarted for changes to take effect."
msgstr ""
"Damit die Änderungen Wirkung zeigen muss der Editor neu gestartet werden."
@@ -2865,12 +4109,111 @@ msgstr "Tastenkürzel"
msgid "Binding"
msgstr "Zuordnung"
+msgid ""
+"Hold %s to round to integers.\n"
+"Hold Shift for more precise changes."
+msgstr ""
+"%s drücken um zu Ganzzahlen zu runden.\n"
+"Umschalt drücken für präzisere Änderungen."
+
+msgid "No notifications."
+msgstr "Keine Benachrichtigungen."
+
+msgid "Show notifications."
+msgstr "Benachrichtigungen anzeigen."
+
+msgid "Silence the notifications."
+msgstr "Benachrichtigungen abstellen."
+
+msgid "Left Stick Left, Joystick 0 Left"
+msgstr "Linker Stick links, Joystick 0 links"
+
+msgid "Left Stick Right, Joystick 0 Right"
+msgstr "Linker Stick rechts, Joystick 0 rechts"
+
+msgid "Left Stick Up, Joystick 0 Up"
+msgstr "Linker Stick hoch, Joystick 0 hoch"
+
+msgid "Left Stick Down, Joystick 0 Down"
+msgstr "Linker Stick runter, Joystick 0 runter"
+
+msgid "Right Stick Left, Joystick 1 Left"
+msgstr "Rechter Stick links, Joystick 1 links"
+
+msgid "Right Stick Right, Joystick 1 Right"
+msgstr "Rechter Stick rechts, Joystick 1 rechts"
+
+msgid "Right Stick Up, Joystick 1 Up"
+msgstr "Rechter Stick hoch, Joystick 1 hoch"
+
+msgid "Right Stick Down, Joystick 1 Down"
+msgstr "Rechter Stick runter, Joystick 1 runter"
+
+msgid "Joystick 2 Left"
+msgstr "Joystick 2 links"
+
+msgid "Left Trigger, Sony L2, Xbox LT, Joystick 2 Right"
+msgstr "Linker Trigger, Sony L2, Xbox LT, Joystick 2 rechts"
+
+msgid "Joystick 2 Up"
+msgstr "Joystick 2 hoch"
+
+msgid "Right Trigger, Sony R2, Xbox RT, Joystick 2 Down"
+msgstr "Rechter Trigger, Sony R2, Xbox RT, Joystick 2 runter"
+
+msgid "Joystick 3 Left"
+msgstr "Joystick 3 links"
+
+msgid "Joystick 3 Right"
+msgstr "Joystick 3 rechts"
+
+msgid "Joystick 3 Up"
+msgstr "Joystick 3 hoch"
+
+msgid "Joystick 3 Down"
+msgstr "Joystick 3 runter"
+
+msgid "Joystick 4 Left"
+msgstr "Joystick 4 links"
+
+msgid "Joystick 4 Right"
+msgstr "Joystick 4 rechts"
+
+msgid "Joystick 4 Up"
+msgstr "Joystick 4 hoch"
+
+msgid "Joystick 4 Down"
+msgstr "Joystick 4 runter"
+
+msgid "Joypad Axis %d %s (%s)"
+msgstr "Joypad Achse %d %s (%s)"
+
msgid "All Devices"
msgstr "Alle Geräte"
msgid "Device"
msgstr "Gerät"
+msgid "Listening for input..."
+msgstr "Warte auf Eingabe…"
+
+msgid "Filter by event..."
+msgstr "Nach Ereignis filtern…"
+
+msgid ""
+"Target platform requires 'ETC2/ASTC' texture compression. Enable 'Import "
+"ETC2 ASTC' in Project Settings."
+msgstr ""
+"Die Zielplattform benötigt ‚ETC2/ASTC‘-Texturkompression. Bitte in den "
+"Projekteinstellungen ‚ETC2 ASTC importieren‘ aktivieren."
+
+msgid ""
+"Target platform requires 'S3TC/BPTC' texture compression. Enable 'Import "
+"S3TC BPTC' in Project Settings."
+msgstr ""
+"Die Zielplattform benötigt ‚S3TC/BPTC‘-Texturkompression. Bitte in den "
+"Projekteinstellungen ‚S3TC BPTC importieren‘ aktivieren."
+
msgid "Project export for platform:"
msgstr "Projektexport für Plattform:"
@@ -2907,6 +4250,12 @@ msgstr "Datei „%s“ konnte nicht erstellt werden."
msgid "Failed to export project files."
msgstr "Projektdateien konnten nicht exportiert werden."
+msgid "Can't create encrypted file."
+msgstr "Verschlüsselte Datei kann nicht erzeugt werden."
+
+msgid "Can't open encrypted file to write."
+msgstr "Verschlüsselte Datei kann nicht zum Schreiben geöffnet werden."
+
msgid "Can't open file to read from path \"%s\"."
msgstr "Datei im Pfad „%s“kann nicht zum Lesen geöffnet werden."
@@ -3035,6 +4384,9 @@ msgstr "Wird heruntergeladen"
msgid "Connection Error"
msgstr "Verbindungsfehler"
+msgid "TLS Handshake Error"
+msgstr "TLS-Handshake-Fehler"
+
msgid "Can't open the export templates file."
msgstr "Exportvorlagendatei konnte nicht geöffnet werden."
@@ -3150,6 +4502,9 @@ msgstr ""
msgid "Delete preset '%s'?"
msgstr "Vorlage ‚%s‘ löschen?"
+msgid "%s Export"
+msgstr "%s-Export"
+
msgid "Release"
msgstr "Veröffentlichung"
@@ -3182,13 +4537,20 @@ msgid "Resources"
msgstr "Ressourcen"
msgid "Export all resources in the project"
-msgstr "Exportiere alle Ressourcen des Projekts"
+msgstr "Alle Ressourcen des Projekts exportieren"
msgid "Export selected scenes (and dependencies)"
-msgstr "Exportiere ausgewählte Szenen (inklusive Abhängigkeiten)"
+msgstr "Ausgewählte Szenen (inklusive Abhängigkeiten) exportieren"
msgid "Export selected resources (and dependencies)"
-msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)"
+msgstr "Ausgewählte Ressourcen (inklusive Abhängigkeiten) exportieren"
+
+msgid "Export all resources in the project except resources checked below"
+msgstr ""
+"Alle Ressourcen des Projekts, außer den unten ausgewählten, exportieren"
+
+msgid "Export as dedicated server"
+msgstr "Als dedizierter Server exportieren"
msgid "Export Mode:"
msgstr "Export-Modus:"
@@ -3196,6 +4558,15 @@ msgstr "Export-Modus:"
msgid "Resources to export:"
msgstr "Zu exportierende Ressourcen:"
+msgid ""
+"\"Strip Visuals\" will replace the following resources with placeholders:"
+msgstr ""
+"„Grafiken entfernen“ wird die folgenden Ressourcen durch Platzhalter "
+"ersetzen:"
+
+msgid "Strip Visuals"
+msgstr "Grafiken entfernen"
+
msgid "Keep"
msgstr "Behalten"
@@ -3222,11 +4593,37 @@ msgstr "Benutzerdefiniert (komma-separiert):"
msgid "Feature List:"
msgstr "Funktionalitätsliste:"
+msgid "Encryption"
+msgstr "Verschlüsslung"
+
+msgid "Encrypt Exported PCK"
+msgstr "Exportiertes PCK verschlüsseln"
+
+msgid "Encrypt Index (File Names and Info)"
+msgstr "Verschlüsslungsindex (Dateinamen und Info)"
+
+msgid ""
+"Filters to include files/folders\n"
+"(comma-separated, e.g: *.tscn, *.tres, scenes/*)"
+msgstr ""
+"Filter um Dateien/Ordner einzuschließen\n"
+"(durch Kommata getrennt, z.B.: *.tscn, *.tres, scenes/*)"
+
+msgid ""
+"Filters to exclude files/folders\n"
+"(comma-separated, e.g: *.ctex, *.import, music/*)"
+msgstr ""
+"Filter um Dateien/Ordner auszuschließen\n"
+"(durch Kommata getrennt, z.B.: *.ctex, *.import, music/*)"
+
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
"Ungültiger Schlüssel für Verschlüsselung (muss aus 64 hexadezimalen Zeichen "
"bestehen)"
+msgid "Encryption Key (256-bits as hexadecimal):"
+msgstr "Schlüssel (256 bit, hexadezimal):"
+
msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
@@ -3237,6 +4634,9 @@ msgstr ""
msgid "More Info..."
msgstr "Mehr Infos…"
+msgid "Export PCK/ZIP..."
+msgstr "PCK/ZIP exportieren…"
+
msgid "Export Project..."
msgstr "Projekt exportieren…"
@@ -3270,22 +4670,34 @@ msgstr "Exportiere mit Debuginformationen"
msgid "Path to FBX2glTF executable is empty."
msgstr "Dateipfad zur ausführbaren Datei von FBX2glTF ist leer."
+msgid "Path to FBX2glTF executable is invalid."
+msgstr "Pfad zum FBX2glTF-Programm ist ungültig."
+
msgid "Error executing this file (wrong version or architecture)."
msgstr "Fehler beim Ausführen dieser Datei (falsche Version oder Architektur)."
+msgid "FBX2glTF executable is valid."
+msgstr "FBX2glTF-Programmdatei ist gültig."
+
+msgid "Configure FBX Importer"
+msgstr "FBX-Importer konfigurieren"
+
msgid ""
"FBX2glTF is required for importing FBX files.\n"
"Please download it and provide a valid path to the binary:"
msgstr ""
-"FBX2glTF wird benötigt um FBX Dateien zu importieren.\n"
-"Bitte laden Sie es herunter und geben Sie den Pfad zur ausführbaren Datei an:"
+"FBX2glTF wird benötigt um FBX-Dateien zu importieren.\n"
+"Bitte herunterladen und Pfad zur ausführbaren Datei angeben:"
msgid "Click this link to download FBX2glTF"
-msgstr "Klicken Sie diesen Link an um FBX2glTF herunterzuladen"
+msgstr "Diesen Link klicken um FBX2glTF herunterzuladen"
msgid "Browse"
msgstr "Durchsuchen"
+msgid "Confirm Path"
+msgstr "Pfad bestätigen"
+
msgid "Favorites"
msgstr "Favoriten"
@@ -3311,6 +4723,12 @@ msgstr "Fehler beim Verschieben:"
msgid "Error duplicating:"
msgstr "Fehler beim Duplizieren:"
+msgid "Failed to save resource at %s: %s"
+msgstr "Speichern der Ressource in %s fehlgeschlagen: %s"
+
+msgid "Failed to load resource at %s: %s"
+msgstr "Laden der Ressource von %s fehlgeschlagen: %s"
+
msgid "Unable to update dependencies:"
msgstr "Fehler beim Aktualisieren der Abhängigkeiten:"
@@ -3365,6 +4783,9 @@ msgstr "Neue geerbte Szene"
msgid "Set As Main Scene"
msgstr "Als Hauptszene setzen"
+msgid "Instantiate"
+msgstr "Instantiieren"
+
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
@@ -3380,6 +4801,21 @@ msgstr "Zeige Besitzer..."
msgid "Move To..."
msgstr "Verschiebe zu..."
+msgid "Folder..."
+msgstr "Ordner…"
+
+msgid "Scene..."
+msgstr "Szene…"
+
+msgid "Script..."
+msgstr "Skript…"
+
+msgid "Resource..."
+msgstr "Ressource…"
+
+msgid "TextFile..."
+msgstr "Textdatei…"
+
msgid "New Scene..."
msgstr "Neue Szene…"
@@ -3389,6 +4825,12 @@ msgstr "Neues Skript..."
msgid "New Resource..."
msgstr "Neue Ressource..."
+msgid "New TextFile..."
+msgstr "Neue Textdatei…"
+
+msgid "Sort Files"
+msgstr "Dateien sortieren"
+
msgid "Sort by Name (Ascending)"
msgstr "Nach Name sortieren (aufsteigend)"
@@ -3407,18 +4849,33 @@ msgstr "Nach Bearbeitungszeit sortieren (Aktuelles zuerst)"
msgid "Sort by First Modified"
msgstr "Nach Bearbeitungszeit sortieren (Aktuelles zuletzt)"
+msgid "Copy UID"
+msgstr "UID kopieren"
+
msgid "Duplicate..."
msgstr "Duplizieren..."
msgid "Rename..."
msgstr "Umbenennen..."
+msgid "Open in External Program"
+msgstr "In externem Programm öffnen"
+
+msgid "Go to previous selected folder/file."
+msgstr "Zur vorigen ausgewählten Datei/Order springen."
+
+msgid "Go to next selected folder/file."
+msgstr "Zur nächsten ausgewählten Datei/Order springen."
+
msgid "Re-Scan Filesystem"
msgstr "Dateisystem erneut einlesen"
msgid "Toggle Split Mode"
msgstr "Geteilten Modus umschalten"
+msgid "Filter Files"
+msgstr "Dateien filtern"
+
msgid ""
"Scanning Files,\n"
"Please Wait..."
@@ -3466,9 +4923,21 @@ msgstr "Ersetzen..."
msgid "Replace in Files"
msgstr "In Dateien ersetzen"
+msgid "Replace all (no undo)"
+msgstr "Alle ersetzen (kann nicht rückgängig gemacht werden)"
+
msgid "Searching..."
msgstr "Am suchen..."
+msgid "%d match in %d file"
+msgstr "%d Ãœbereinstimmung in %d Datei"
+
+msgid "%d matches in %d file"
+msgstr "%d Ãœbereinstimmungen in %d Datei"
+
+msgid "%d matches in %d files"
+msgstr "%d Ãœbereinstimmungen in %d Dateien"
+
msgid "Add to Group"
msgstr "Zu Gruppe hinzufügen"
@@ -3505,19 +4974,193 @@ msgstr "Gruppeneditor"
msgid "Manage Groups"
msgstr "Gruppen verwalten"
+msgid "The Beginning"
+msgstr "Der Anfang"
+
+msgid "Global"
+msgstr "Global"
+
+msgid "Audio Stream Importer: %s"
+msgstr "Audiostream-Importer: %s"
+
msgid "Reimport"
msgstr "Neuimport"
+msgid "Enable looping."
+msgstr "Schleife aktivieren."
+
msgid "Offset:"
msgstr "Versatz:"
msgid ""
+"Loop offset (from beginning). Note that if BPM is set, this setting will be "
+"ignored."
+msgstr ""
+"Schleifenversatz (vom Start). Hinweis: Falls BPM festgelegt wurde, wird "
+"diese Einstellung ignoriert."
+
+msgid "Loop:"
+msgstr "Schleife:"
+
+msgid "BPM:"
+msgstr "BPM:"
+
+msgid ""
+"Configure the Beats Per Measure (tempo) used for the interactive streams.\n"
+"This is required in order to configure beat information."
+msgstr ""
+"Konfiguriert die Beats pro Messung (das Tempo) für interaktive Streams.\n"
+"Dies wird benötigt um Beat-Informationen einstellen zu können."
+
+msgid "Beat Count:"
+msgstr "Beatzähler:"
+
+msgid ""
+"Configure the amount of Beats used for music-aware looping. If zero, it will "
+"be autodetected from the length.\n"
+"It is recommended to set this value (either manually or by clicking on a "
+"beat number in the preview) to ensure looping works properly."
+msgstr ""
+"Konfiguriert die Anzahl der benutzen Beats für Musik-bewusstes Wiederholen. "
+"Falls Null, wird sie automatisch aus der Länger abgeleitet.\n"
+"Es wird empfohlen diesen Wert festzulegen (entweder manuell oder durch "
+"klicken auf den Beat-Zähler in der Vorschau) um sicherzustellen dass das "
+"Wiederholen richtig funktioniert."
+
+msgid "Bar Beats:"
+msgstr "Takt-Beats:"
+
+msgid ""
+"Configure the Beats Per Bar. This used for music-aware transitions between "
+"AudioStreams."
+msgstr ""
+"Konfiguriert die Beats pro Takt. Dies wird verwendet für Musik-bewusste "
+"Übergänge zwischen AudioStreams."
+
+msgid "Music Playback:"
+msgstr "Musikwiedergabe:"
+
+msgid "New Configuration"
+msgstr "Neue Konfiguration"
+
+msgid "Remove Variation"
+msgstr "Variation entfernen"
+
+msgid "Preloaded glyphs: %d"
+msgstr "Glyphen vorladen: %d"
+
+msgid ""
+"Warning: There are no configurations specified, no glyphs will be pre-"
+"rendered."
+msgstr ""
+"Achtung: Es sind keine Konfigurationen festgelegt, keine Glyphen werden "
+"vorgerendert."
+
+msgid ""
"Warning: Multiple configurations have identical settings. Duplicates will be "
"ignored."
msgstr ""
"Warnung: Mehrere Konfigurationen haben identische Einstellungen. Duplikate "
"werden ignoriert."
+msgid ""
+"Note: LCD Subpixel antialiasing is selected, each of the glyphs will be pre-"
+"rendered for all supported subpixel layouts (5x)."
+msgstr ""
+"Hinweis: LCD-Subpixel-Antialiasing wurde ausgewählt, jede Glyphe wird "
+"vorgerendert für alle unterstützten Subpixellayouts (5x)."
+
+msgid ""
+"Note: Subpixel positioning is selected, each of the glyphs might be pre-"
+"rendered for multiple subpixel offsets (up to 4x)."
+msgstr ""
+"Hinweis: Subpixelpositionierung wurde ausgewählt, jede Glyphe könnte für "
+"mehrere Subpixelversätze vorgerendert werden (bis zu 4x)."
+
+msgid "Advanced Import Settings for '%s'"
+msgstr "Erweiterte Importeinstellungen für ‚%s‘"
+
+msgid "Rendering Options"
+msgstr "Renderoptionen"
+
+msgid "Select font rendering options, fallback font, and metadata override:"
+msgstr ""
+"Schriftart-Renderoptionen, Fallback-Schriftart und Metadatenüberschreibung "
+"auswählen:"
+
+msgid "Pre-render Configurations"
+msgstr "Vorrender-Konfigurationen"
+
+msgid ""
+"Add font size, and variation coordinates, and select glyphs to pre-render:"
+msgstr ""
+"Schriftgröße, Variationskoordinaten und Glyphen zum vorrendern auswählen:"
+
+msgid "Configuration:"
+msgstr "Konfiguration:"
+
+msgid "Add configuration"
+msgstr "Konfiguration hinzufügen"
+
+msgid "Clear Glyph List"
+msgstr "Glyphenliste leeren"
+
+msgid "Glyphs from the Translations"
+msgstr "Glyphen der Ãœbersetzungen"
+
+msgid "Select translations to add all required glyphs to pre-render list:"
+msgstr ""
+"Übersetzungen auswählen um alle benötigten Glyphen zur Vorrenderliste "
+"hinzuzufügen:"
+
+msgid "Shape all Strings in the Translations and Add Glyphs"
+msgstr "Alle Zeichenketten der Übersetzungen formen und Glyphen hinzufügen"
+
+msgid "Glyphs from the Text"
+msgstr "Glyphen aus Text"
+
+msgid ""
+"Enter a text and select OpenType features to shape and add all required "
+"glyphs to pre-render list:"
+msgstr ""
+"Text eingeben und OpenType-Funktionen auswählen um Formen und alle "
+"benötigten Glyphen zur Vorrenderliste hinzuzufügen:"
+
+msgid "Shape Text and Add Glyphs"
+msgstr "Text formen und Glyphen hinzufügen"
+
+msgid "Glyphs from the Character Map"
+msgstr "Glyphen der Zeichentabelle"
+
+msgid ""
+"Add or remove glyphs from the character map to pre-render list:\n"
+"Note: Some stylistic alternatives and glyph variants do not have one-to-one "
+"correspondence to character, and not shown in this map, use \"Glyphs from "
+"the text\" tab to add these."
+msgstr ""
+"Glyphen zur Zeichentabelle der Vorrenderliste hinzufügen oder entfernen:\n"
+"Hinweis: Manche stilistischen Alternativen und Glyphenvarianten besitzen "
+"keine eins-zu-eins Zuordnung zu Zeichen und werden nicht in dieser Tabelle "
+"gelistet. Im Reiter „Glyphen aus Text“ können sie hinzugefügt werden."
+
+msgid "Dynamically rendered TrueType/OpenType font"
+msgstr "Dynamisch gerenderte TrueType/OpenType-Schriftart"
+
+msgid "Prerendered multichannel(+true) signed distance field"
+msgstr "Vorgerendertes Mehrkanal(+true) vorzeichenbehaftetes Distanzfeld"
+
+msgid "Can't load font texture:"
+msgstr "Schriftart-Textur konnte nicht geladen werden:"
+
+msgid "Image margin too big."
+msgstr "Bildmaße zu groß."
+
+msgid "Character margin too bit."
+msgstr "Zeichenmaße zu groß."
+
+msgid "Pre-Import Scene"
+msgstr "Szene vorimportieren"
+
msgid "Importing Scene..."
msgstr "Szene wird importiert..."
@@ -3536,10 +5179,22 @@ msgstr "Ungültiges oder fehlerhaftes Skript für Post-Import (siehe Konsole):"
msgid "Error running post-import script:"
msgstr "Fehler beim ausführen des Post-Import Skripts:"
+msgid "Did you return a Node-derived object in the `_post_import()` method?"
+msgstr ""
+"Wurde ein von Node abstammendes Objekt in der ‚_post_import()‘-Methode "
+"zurückgegeben?"
+
msgid "Saving..."
msgstr "Speichere..."
msgid ""
+"Error importing GLSL shader file: '%s'. Open the file in the filesystem dock "
+"in order to see the reason."
+msgstr ""
+"Fehler beim importieren der GLSL-Shader-Datei: ‚%s‘. Der genaue Fehler kann "
+"angezeigt werden, wenn die Datei in der Dateisystemleiste geöffnet wird."
+
+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 ""
@@ -3547,18 +5202,163 @@ msgstr ""
"Texturkompression wurde aktiviert um Speicherverbrauch zu reduzieren (der "
"blaue Kanal wird verworfen)."
+msgid ""
+"%s: Texture detected as used as a roughness map in 3D. Enabling roughness "
+"limiter based on the detected associated normal map at %s."
+msgstr ""
+"%s: Verwendung der Textur als Roughness-Map in 3D festgestellt. "
+"Rauheitsbegrenzer basierend auf der erkannten zugeordneten Normalen-Map in "
+"%s wurde aktiviert."
+
+msgid ""
+"%s: Texture detected as used in 3D. Enabling mipmap generation and setting "
+"the texture compression mode to %s."
+msgstr ""
+"%s: Verwendung der Textur in 3D festgestellt. Mipmap-Erzeugung wurde "
+"aktiviert und der Texturkompressionsmodus auf %s gesetzt."
+
+msgid "2D/3D (Auto-Detect)"
+msgstr "2D/3D (Autoerkennung)"
+
msgid "2D"
msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid "<Unnamed Material>"
+msgstr "<unbenanntes Material>"
+
+msgid "Import ID: %s"
+msgstr "Import-ID: %s"
+
+msgid ""
+"Type: %s\n"
+"Import ID: %s"
+msgstr ""
+"Typ: %s\n"
+"Import-ID: %s"
+
+msgid "Error opening scene"
+msgstr "Fehler beim Öffnen der Szene"
+
+msgid "Advanced Import Settings for AnimationLibrary '%s'"
+msgstr "Erweiterte Importeinstellungen für die Animation-Bibliothek ‚%s‘"
+
+msgid "Advanced Import Settings for Scene '%s'"
+msgstr "Erweiterte Importeinstellungen für Szene ‚%s‘"
+
+msgid "Select folder to extract material resources"
+msgstr "Ordner zum extrahieren der Materialressourcen auswählen"
+
+msgid "Select folder where mesh resources will save on import"
+msgstr "Ordner zum speichern der Mesh-Ressourcen beim Import auswählen"
+
+msgid "Select folder where animations will save on import"
+msgstr "Ordner zum speichern der Animation beim Import auswählen"
+
+msgid "Existing file with the same name will be replaced."
+msgstr "Eine bereits existierende Datei mit dem gleichen Name wird ersetzt."
+
+msgid ""
+"This material already references an external file, no action will be taken.\n"
+"Disable the external property for it to be extracted again."
+msgstr ""
+"Dieses Material verweist bereits auf eine externe Datei, der Befehl wird "
+"ignoriert.\n"
+"Um erneut zu extrahieren muss die externe Eigenschaft des Materials "
+"deaktiviert werden."
+
+msgid ""
+"Material has no name nor any other way to identify on re-import.\n"
+"Please name it or ensure it is exported with an unique ID."
+msgstr ""
+"Das Material hat keinen Name und keine andere Möglichkeit es beim Reimport "
+"zu identifizieren.\n"
+"Es sollte benannt werden oder sichergestellt werden, dass es mit einer "
+"eindeutigen ID exportiert wird."
+
+msgid "Extract Materials to Resource Files"
+msgstr "Materialien in Ressourcen-Dateien extrahieren"
+
+msgid "Extract"
+msgstr "Extrahieren"
+
+msgid ""
+"This mesh already saves to an external resource, no action will be taken."
+msgstr ""
+"Dieses Mesh wird bereits zu einer externen Ressource gespeichert, der Befehl "
+"wird ignoriert."
+
+msgid "Existing file with the same name will be replaced on import."
+msgstr ""
+"Existierende Datei mit dem gleichen Name wird ersetzt werden beim "
+"Importieren."
+
+msgid ""
+"Mesh has no name nor any other way to identify on re-import.\n"
+"Please name it or ensure it is exported with an unique ID."
+msgstr ""
+"Das Mesh hat keinen Namen und keine andere möglichkeit es beim Reimport "
+"wiederzuerkennen.\n"
+"Es sollte benannt werden oder sichergestellt werden, dass es mit einer "
+"eindeutigen ID exportiert wird."
+
+msgid "Set paths to save meshes as resource files on Reimport"
+msgstr ""
+"Pfade festlegen um Meshes als Ressourcen-Dateien bei Reimport zu speichern"
+
+msgid "Set Paths"
+msgstr "Pfade festlegen"
+
+msgid ""
+"This animation already saves to an external resource, no action will be "
+"taken."
+msgstr ""
+"Die Animation speichert bereits zu einer externen Ressource, der Befehl wird "
+"ignoriert."
+
+msgid "Set paths to save animations as resource files on Reimport"
+msgstr ""
+"Pfade festlegen um Animationen als Ressourcen-Datei bei Reimport zu speichern"
+
+msgid "Can't make material external to file, write error:"
+msgstr ""
+"Material kann nicht als extern in Datei geändert werden, Schreibfehler:"
+
+msgid "Actions..."
+msgstr "Aktionen…"
+
+msgid "Extract Materials"
+msgstr "Materialien extrahieren"
+
+msgid "Set Animation Save Paths"
+msgstr "Animation-Speicherpfade festlegen"
+
+msgid "Set Mesh Save Paths"
+msgstr "Mesh-Speicherpfade festlegen"
+
msgid "Meshes"
msgstr "Meshes"
msgid "Materials"
msgstr "Materialien"
+msgid "Save Extension:"
+msgstr "Dateierweiterung beim Speichern:"
+
+msgid "Text: *.tres"
+msgstr "Text: *.tres"
+
+msgid "Binary: *.res"
+msgstr "Binärformat: *.res"
+
+msgid "Text Resource"
+msgstr "Text-Ressource"
+
+msgid "Binary Resource"
+msgstr "Binäre Ressource"
+
msgid "Select Importer"
msgstr "Importer auswählen"
@@ -3596,6 +5396,9 @@ msgstr "Importiere als:"
msgid "Preset"
msgstr "Vorlage"
+msgid "Advanced..."
+msgstr "Erweitert…"
+
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Szenen speichern, reimportieren und neu starten"
@@ -3617,11 +5420,73 @@ msgstr ""
"Zum Anpassen der Importeinstellungen muss eine Ressourcendatei im "
"Dateisystem oder im Inspektor ausgewählt werden."
+msgid "No Event Configured"
+msgstr "Kein Ereignis konfiguriert"
+
+msgid "Keyboard Keys"
+msgstr "Tastaturtasten"
+
+msgid "Mouse Buttons"
+msgstr "Maustasten"
+
+msgid "Joypad Buttons"
+msgstr "Joypadknöpfe"
+
+msgid "Joypad Axes"
+msgstr "Joypadachsen"
+
+msgid "Event Configuration"
+msgstr "Ereigniskonfiguration"
+
+msgid "Manual Selection"
+msgstr "Manuelle Auswahl"
+
+msgid "Filter Inputs"
+msgstr "Eingaben filtern"
+
+msgid "Additional Options"
+msgstr "Zusätzliche Einstellungen"
+
msgid "Device:"
msgstr "Gerät:"
+msgid "Command / Control (auto)"
+msgstr "Strg / Ctrl (auto)"
+
+msgid ""
+"Automatically remaps between 'Meta' ('Command') and 'Control' depending on "
+"current platform."
+msgstr ""
+"Automatisches umschalten zwischen ‚Meta‘ (‚Command‘) und ‚Steuerung‘ "
+"abhängig von der aktuellen Plattform."
+
+msgid "Keycode (Latin Equivalent)"
+msgstr "Tastencode (Lateinäquivalent)"
+
+msgid "Physical Keycode (Position on US QWERTY Keyboard)"
+msgstr "Physischer Tastencode (Position auf der US-QWERTY-Tastatur)"
+
+msgid "Key Label (Unicode, Case-Insensitive)"
+msgstr "Tastenbeschriftung (Unicode, unabh. Groß-/Kleinschreibung)"
+
+msgid ""
+"The following resources will be duplicated and embedded within this resource/"
+"object."
+msgstr ""
+"Die folgenden Ressourcen werden dupliziert und in der Ressource/dem Objekt "
+"eingebettet."
+
+msgid "This object has no resources."
+msgstr "Dieses Objekt besitzt keine Ressourcen."
+
msgid "Failed to load resource."
-msgstr "Laden der Ressource gescheitert."
+msgstr "Laden der Ressource fehlgeschlagen."
+
+msgid "(Current)"
+msgstr "(aktuell)"
+
+msgid "Expand Non-Default"
+msgstr "Nicht-Standard expandieren"
msgid "Property Name Style"
msgstr "Eigenschaftennamesstil"
@@ -3671,15 +5536,27 @@ msgstr "Ressource kopieren"
msgid "Make Resource Built-In"
msgstr "Ressource zu Built-In konvertieren"
+msgid "Go to previous edited object in history."
+msgstr "Zum zuvor bearbeitetem Objekt im Verlauf springen."
+
+msgid "Go to next edited object in history."
+msgstr "Zum zunächst bearbeitetem Objekt im Verlauf springen."
+
msgid "History of recently edited objects."
msgstr "Verlauf der zuletzt bearbeiteten Objekte."
msgid "Open documentation for this object."
msgstr "Dokumentation zu diesem Objekt öffnen."
+msgid "Filter Properties"
+msgstr "Eigenschaften filtern"
+
msgid "Manage object properties."
msgstr "Objekteigenschaften verwalten."
+msgid "This cannot be undone. Are you sure?"
+msgstr "Dies kann nicht rückgängig gemacht werden. Wirklich fortfahren?"
+
msgid "Add %d Translations"
msgstr "%d Übersetzungen hinzufügen"
@@ -3701,6 +5578,18 @@ msgstr "Ressourcen-Umleitung entfernen"
msgid "Remove Resource Remap Option"
msgstr "Ressourcen-Neuzuordungsoption entfernen"
+msgid "Add %d file(s) for POT generation"
+msgstr "%d Datei(en) für POT-Erzeugung hinzufügen"
+
+msgid "Remove file from POT generation"
+msgstr "Datei von POT-Erzeugung entfernen"
+
+msgid "Removed"
+msgstr "Entfernt"
+
+msgid "%s cannot be found."
+msgstr "%s konnte nicht gefunden werden."
+
msgid "Translations"
msgstr "Ãœbersetzungen"
@@ -3719,10 +5608,39 @@ msgstr "Umleitungen nach Lokalisierung:"
msgid "Locale"
msgstr "Gebietsschema"
+msgid "POT Generation"
+msgstr "POT-Erzeugung"
+
+msgid "Files with translation strings:"
+msgstr "Dateien mit Ãœbersetzungszeichenketten:"
+
+msgid "Generate POT"
+msgstr "POT erzeugen"
+
+msgid "Set %s on %d nodes"
+msgstr "%s für %d Nodes festlegen"
+
+msgid "%s (%d Selected)"
+msgstr "%s (%d ausgewählt)"
+
msgid "Select a single node to edit its signals and groups."
msgstr ""
"Ein einzelnes Node auswählen um seine Signale und Gruppen zu bearbeiten."
+msgid "Plugin name cannot be blank."
+msgstr "Pluginname darf nicht leer sein."
+
+msgid "Script extension must match chosen language extension (.%s)."
+msgstr ""
+"Skripterweiterung muss mit der gewählten Spracherweiterung übereinstimmen. "
+"(%s)."
+
+msgid "Subfolder name is not a valid folder name."
+msgstr "Der Name des Unterordners ist kein gültiger Ordnername."
+
+msgid "Subfolder cannot be one which already exists."
+msgstr "Der Unterordner kann nicht ein bereits existierender Ordner sein."
+
msgid "Edit a Plugin"
msgstr "Ein Plugin bearbeiten"
@@ -3792,9 +5710,17 @@ msgstr "Lade..."
msgid "Move Node Point"
msgstr "Node-Punkt verschieben"
+msgid "Change BlendSpace1D Config"
+msgstr "BlendSpace1D-Konfiguration ändern"
+
msgid "Change BlendSpace1D Labels"
msgstr "BlendSpace1D-Beschriftungen ändern"
+msgid "This type of node can't be used. Only animation nodes are allowed."
+msgstr ""
+"Ein Node dieses Typs kann nicht verwendet werden. Nur Animation-Nodes sind "
+"möglich."
+
msgid "This type of node can't be used. Only root nodes are allowed."
msgstr ""
"Dieser Node-Typ kann nicht verwendet werden. Nur Wurzel-Nodes sind möglich."
@@ -3828,6 +5754,9 @@ msgstr "Punkte auswählen und verschieben, erstellen mit RMT."
msgid "Enable snap and show grid."
msgstr "Schnapp- und Anzeigeraster aktivieren."
+msgid "Sync:"
+msgstr "Sync:"
+
msgid "Blend:"
msgstr "Blende:"
@@ -3846,6 +5775,9 @@ msgstr "Dreieck existiert bereits."
msgid "Add Triangle"
msgstr "Dreieck hinzufügen"
+msgid "Change BlendSpace2D Config"
+msgstr "BlendSpace2D-Konfiguration ändern"
+
msgid "Change BlendSpace2D Labels"
msgstr "BlendSpace2D-Beschriftungen ändern"
@@ -3876,6 +5808,9 @@ msgstr "Vermischungsdreiecke automatisch erstellen (statt manuell)"
msgid "Parameter Changed:"
msgstr "Parameter geändert:"
+msgid "Inspect Filters"
+msgstr "Filter untersuchen"
+
msgid "Output node can't be added to the blend tree."
msgstr "Ausgabe-Node kann nicht zum Mischungsbaum hinzugefügt werden."
@@ -3935,6 +5870,9 @@ msgstr "Audioausschnitt"
msgid "Functions"
msgstr "Funktionen"
+msgid "Inspect Filtered Tracks:"
+msgstr "Gefilterte Spuren untersuchen:"
+
msgid "Edit Filtered Tracks:"
msgstr "Gefilterte Spuren bearbeiten:"
@@ -3947,18 +5885,175 @@ msgstr "Knoten hinzufügen..."
msgid "Enable Filtering"
msgstr "Filtern aktivieren"
+msgid "Library Name:"
+msgstr "Bibliotheksname:"
+
+msgid "Animation name can't be empty."
+msgstr "Animationsname darf nicht leer sein."
+
+msgid "Animation name contains invalid characters: '/', ':', ',' or '['."
+msgstr "Animationsname enthält ungültige Zeichen: ›/‹, ›:‹, ›,‹ oder ›[‹."
+
+msgid "Animation with the same name already exists."
+msgstr "Animation des selben Namens existiert bereits."
+
+msgid "Enter a library name."
+msgstr "Bitte Bibliotheksname eingeben."
+
+msgid "Library name contains invalid characters: '/', ':', ',' or '['."
+msgstr "Bibliotheksname enthält ungültige Zeichen: ›/‹, ›:‹, ›,‹ oder ›[‹."
+
+msgid "Library with the same name already exists."
+msgstr "Eine Bibliothek des selben Namens existiert bereits."
+
+msgid "Animation name is valid."
+msgstr "Animationsname ist gültig."
+
+msgid "Global library will be created."
+msgstr "Eine globale Bibliothek wird erstellt werden."
+
+msgid "Library name is valid."
+msgstr "Bibliotheksname ist gültig."
+
+msgid "Add Animation to Library: %s"
+msgstr "Animation zu Bibliothek hinzufügen: %s"
+
+msgid "Add Animation Library: %s"
+msgstr "Animationsbibliothek hinzufügen: %s"
+
msgid "Load Animation"
msgstr "Animation laden"
+msgid ""
+"This animation library can't be saved because it does not belong to the "
+"edited scene. Make it unique first."
+msgstr ""
+"Diese Animationsbibliothek kann nicht gespeichert werden da sie nicht zur "
+"bearbeiteten Szene gehört. Sie muss erst einzigartig gemacht werden."
+
+msgid ""
+"This animation library can't be saved because it was imported from another "
+"file. Make it unique first."
+msgstr ""
+"Diese Animationsbibliothek kann nicht gespeichert werden da sie aus einer "
+"anderen Datei importiert wurde. Sie muss erst einzigartig gemacht werden."
+
+msgid "Save Library"
+msgstr "Bibliothek speichern"
+
+msgid "Make Animation Library Unique: %s"
+msgstr "Animationsbibliothek einzigartig machen: %s"
+
+msgid ""
+"This animation can't be saved because it does not belong to the edited "
+"scene. Make it unique first."
+msgstr ""
+"Diese Animation kann nicht gespeichert werden da sie nicht zur bearbeiteten "
+"Szene gehört. Sie muss erst einzigartig gemacht werden."
+
+msgid ""
+"This animation can't be saved because it was imported from another file. "
+"Make it unique first."
+msgstr ""
+"Diese Animation kann nicht gespeichert werden da sie aus einer anderen Datei "
+"importiert wurde. Sie muss erst einzigartig gemacht werden."
+
+msgid "Save Animation"
+msgstr "Animation speichern"
+
+msgid "Make Animation Unique: %s"
+msgstr "Animation einzigartig machen: %s"
+
+msgid "Invalid AnimationLibrary file."
+msgstr "Ungültige Animationsbibliotheksdatei."
+
+msgid "This library is already added to the player."
+msgstr "Diese Bibliothek wurde bereits dem Animationsspieler hinzugefügt."
+
+msgid "Invalid Animation file."
+msgstr "Ungültige Animationsdatei."
+
+msgid "This animation is already added to the library."
+msgstr "Diese Animation wurde bereits der Bibliothek hinzugefügt."
+
+msgid "Load Animation into Library: %s"
+msgstr "Animation in Bibliothek laden: %s"
+
+msgid "Save Animation library to File: %s"
+msgstr "Animationsbibliothek in Datei speichern: %s"
+
+msgid "Save Animation to File: %s"
+msgstr "Animation in Datei speichern: %s"
+
+msgid "Rename Animation Library: %s"
+msgstr "Animationsbibliothek umbenennen: %s"
+
+msgid "[Global]"
+msgstr "[Global]"
+
+msgid "Rename Animation: %s"
+msgstr "Animation umbenennen: %s"
+
msgid "Animation Name:"
msgstr "Animationsname:"
+msgid "No animation resource in clipboard!"
+msgstr "Keine Animations-Ressource in der Zwischenablage!"
+
msgid "Pasted Animation"
msgstr "Eingefügte Animation"
msgid "Open in Inspector"
msgstr "Im Inspektor öffnen"
+msgid "Remove Animation Library: %s"
+msgstr "Animationsbibliothek entfernen: %s"
+
+msgid "Remove Animation from Library: %s"
+msgstr "Animation aus Bibliothek entfernen: %s"
+
+msgid "[built-in]"
+msgstr "[eingebaut]"
+
+msgid "[foreign]"
+msgstr "[fremd]"
+
+msgid "[imported]"
+msgstr "[importiert]"
+
+msgid "Add Animation to Library"
+msgstr "Animation zu Bibliothek hinzufügen"
+
+msgid "Load animation from file and add to library"
+msgstr "Animation aus Datei laden und zu Bibliothek hinzufügen"
+
+msgid "Paste Animation to Library from clipboard"
+msgstr "Animation aus Zwischenablage in Bibliothek einzufügen"
+
+msgid "Save animation library to resource on disk"
+msgstr "Animationsbibliothek als Ressource im Dateisystem speichern"
+
+msgid "Remove animation library"
+msgstr "Animationsbibliothek entfernen"
+
+msgid "Copy animation to clipboard"
+msgstr "Animation in Zwischenablage kopieren"
+
+msgid "Save animation to resource on disk"
+msgstr "Animation als Ressource im Dateisystem speichern"
+
+msgid "Remove animation from Library"
+msgstr "Animation von Bibliothek entfernen"
+
+msgid "Edit Animation Libraries"
+msgstr "Animationsbibliotheken bearbeiten"
+
+msgid "Add Library"
+msgstr "Bibliothek hinzufügen"
+
+msgid "Load Library"
+msgstr "Bibliothek laden"
+
msgid "Storage"
msgstr "Speicher"
@@ -3977,12 +6072,18 @@ msgstr "Animation umbenennen"
msgid "Change Animation Name:"
msgstr "Animationsname ändern:"
+msgid "Delete Animation '%s'?"
+msgstr "Animation ‚%s‘ löschen?"
+
msgid "Remove Animation"
msgstr "Animation entfernen"
msgid "Invalid animation name!"
msgstr "Ungültiger Animationsname!"
+msgid "Animation '%s' already exists!"
+msgstr "Animation ‚%s‘ existiert bereits!"
+
msgid "Duplicate Animation"
msgstr "Animation duplizieren"
@@ -3992,12 +6093,21 @@ msgstr "Blende über in nächste Geänderte"
msgid "Change Blend Time"
msgstr "Überblendungszeit ändern"
+msgid "[Global] (create)"
+msgstr "[Global] (erstellen)"
+
+msgid "Duplicated Animation Name:"
+msgstr "Duplizierter Animationsname:"
+
msgid "Play selected animation backwards from current pos. (A)"
msgstr "Spiele ausgewählte Animation rückwärts von aktueller Position. (A)"
msgid "Play selected animation backwards from end. (Shift+A)"
msgstr "Spiele ausgewählte Animation rückwärts vom Ende. (Umschalt+A)"
+msgid "Pause/stop animation playback. (S)"
+msgstr "Animationswiedergabe pausieren/stoppen. (S)"
+
msgid "Play selected animation from start. (Shift+D)"
msgstr "Spiele ausgewählte Animation vom Start. (Umschalt+D)"
@@ -4016,6 +6126,9 @@ msgstr "Animationswerkzeuge"
msgid "Animation"
msgstr "Animation"
+msgid "Manage Animations..."
+msgstr "Animationen verwalten…"
+
msgid "Edit Transitions..."
msgstr "Übergänge bearbeiten..."
@@ -4061,6 +6174,9 @@ msgstr "Weißmodulation erzwingen"
msgid "Include Gizmos (3D)"
msgstr "3D-Manipulator einbeziehen"
+msgid "Onion Skinning temporarily disabled due to rendering bug."
+msgstr "Zwiebelhaut zeitweise deaktiviert wegen Renderbug."
+
msgid "Pin AnimationPlayer"
msgstr "Animationsspieler anheften"
@@ -4085,6 +6201,9 @@ msgstr "Ãœbergang existiert bereits!"
msgid "To"
msgstr "Bis"
+msgid "Add Node and Transition"
+msgstr "Node und Übergang hinzufügen"
+
msgid "Add Transition"
msgstr "Übergang hinzufügen"
@@ -4112,6 +6231,17 @@ msgstr "Node entfernt"
msgid "Transition Removed"
msgstr "Ãœbergang entfernt"
+msgid ""
+"Select and move nodes.\n"
+"RMB: Add node at position clicked.\n"
+"Shift+LMB+Drag: Connects the selected node with another node or creates a "
+"new node if you select an area without nodes."
+msgstr ""
+"Nodes auswählen und verschieben.\n"
+"RMT: Node an Klickposition hinzufügen.\n"
+"Umsch+LMT+Ziehen: Verbindet das ausgewählte Node mit einem anderen oder "
+"erstellt ein neues Node falls ein Gebiet ohne Nodes ausgewählt wurde."
+
msgid "Create new nodes."
msgstr "Neue Nodes erstellen."
@@ -4121,18 +6251,27 @@ msgstr "Nodes verbinden."
msgid "Group Selected Node(s)"
msgstr "Gewählte Nodes gruppieren"
+msgid "Ungroup Selected Node"
+msgstr "Ausgewähltes Node aus Gruppierung lösen"
+
msgid "Remove selected node or transition."
msgstr "Ausgewählten Node oder Übergang entfernen."
msgid "Transition:"
msgstr "Ãœbergang:"
+msgid "New Transitions Should Auto Advance"
+msgstr "Neue Übergänge sollen automatisch fortgeführt werden"
+
msgid "Play Mode:"
msgstr "Abspielmodus:"
msgid "Delete Selected"
msgstr "Auswahl löschen"
+msgid "Delete All"
+msgstr "Alle entfernen"
+
msgid "Root"
msgstr "Wurzel"
@@ -4208,6 +6347,9 @@ msgstr "Sha256 Checksummen prüfung fehlgeschlagen"
msgid "Asset Download Error:"
msgstr "Nutzerinhalte-Download-Fehler:"
+msgid "Ready to install!"
+msgstr "Bereit zum Installieren!"
+
msgid "Downloading (%s / %s)..."
msgstr "Wird heruntergeladen (%s / %s)..."
@@ -4278,6 +6420,24 @@ msgstr "Ende"
msgid "All"
msgstr "Alle"
+msgid "No results for \"%s\" for support level(s): %s."
+msgstr "Keine Ergebnisse zu „%s“ für Unterstützungslevel: %s."
+
+msgid ""
+"No results compatible with %s %s for support level(s): %s.\n"
+"Check the enabled support levels using the 'Support' button in the top-right "
+"corner."
+msgstr ""
+"Keine Ergebnisse kompatibel mit %s %s für Unterstützungslevel: %s.\n"
+"Aktivierte Unterstützungslevel können über den ‚Unterstützung‘-Knopf am "
+"rechten oberen Rand eingesehen werden."
+
+msgid "Search Templates, Projects, and Demos"
+msgstr "Vorlagen, Projekte und Demos suchen"
+
+msgid "Search Assets (Excluding Templates, Projects, and Demos)"
+msgstr "Assets suchen (ausgenommen Vorlagen, Projekte und Demos)"
+
msgid "Import..."
msgstr "Importieren…"
@@ -4305,6 +6465,12 @@ msgstr "Nutzerinhalte als ZIP-Datei"
msgid "Audio Preview Play/Pause"
msgstr "Audiovorschau abspielen/pausieren"
+msgid "Bone Picker:"
+msgstr "Knochenauswähler:"
+
+msgid "Clear mappings in current group."
+msgstr "Zuweisungen der aktuellen Gruppe löschen."
+
msgid "Preview"
msgstr "Vorschau"
@@ -4332,6 +6498,9 @@ msgstr "Rotationsabstand:"
msgid "Scale Step:"
msgstr "Skalierungsschritte:"
+msgid "Move Node(s) to Position"
+msgstr "Node(s) zu Position verschieben"
+
msgid "Move Vertical Guide"
msgstr "Vertikale Hilfslinie verschieben"
@@ -4392,6 +6561,27 @@ msgstr "Gruppiert"
msgid "Add Node Here"
msgstr "Node hier hinzufügen"
+msgid "Instantiate Scene Here"
+msgstr "Szene hier instantiieren"
+
+msgid "Paste Node(s) Here"
+msgstr "Node(s) hier einfügen"
+
+msgid "Move Node(s) Here"
+msgstr "Node(s) hierhin verschieben"
+
+msgid "px"
+msgstr "px"
+
+msgid "units"
+msgstr "units"
+
+msgid "Moving:"
+msgstr "Verschiebung:"
+
+msgid "Rotating:"
+msgstr "Rotation:"
+
msgid "Scaling:"
msgstr "Skalierung:"
@@ -4430,6 +6620,9 @@ msgstr "Pose einfügen"
msgid "Clear Guides"
msgstr "Hilfslinien löschen"
+msgid "Create Custom Bone2D(s) from Node(s)"
+msgstr "Eigene Bone2D(s) aus Node(s) erstellen"
+
msgid "Zoom to 3.125%"
msgstr "Auf 3.125% vergrößern"
@@ -4495,12 +6688,21 @@ msgstr "Skalierungsmodus"
msgid "Shift: Scale proportionally."
msgstr "Umschalt: Proportionales Skalieren."
+msgid "Show list of selectable nodes at position clicked."
+msgstr "Liste auswählbarer Nodes an Klickposition anzeigen."
+
msgid "Click to change object's rotation pivot."
msgstr "Klicken um Angelpunkt des Objekts zu ändern."
msgid "Pan Mode"
msgstr "Schwenkmodus"
+msgid ""
+"You can also use Pan View shortcut (Space by default) to pan in any mode."
+msgstr ""
+"Das Schwenksichtkürzel (standardmäßig Leertaste) kann genutzt werden um in "
+"jedem Modus zu schwenken."
+
msgid "Ruler Mode"
msgstr "Linealmodus"
@@ -4555,12 +6757,24 @@ msgstr "An anderen Nodes einrasten"
msgid "Snap to Guides"
msgstr "An Hilfslinien einrasten"
+msgid "Lock selected node, preventing selection and movement."
+msgstr "Ausgewähltes Node sperren um Auswahl und Verschiebung zu verhindern."
+
msgid "Lock Selected Node(s)"
msgstr "Gewählte Nodes sperren"
+msgid "Unlock selected node, allowing selection and movement."
+msgstr "Ausgewähltes Node entsperren um Auswahl und Verschiebung zu erlauben."
+
msgid "Unlock Selected Node(s)"
msgstr "Gewählte Nodes entsperren"
+msgid "Make selected node's children not selectable."
+msgstr "Unterelemente des ausgewählten Nodes unauswählbar machen."
+
+msgid "Make selected node's children selectable."
+msgstr "Unterelemente des ausgewählten Nodes auswählbar machen."
+
msgid "Ungroup Selected Node(s)"
msgstr "Gruppierung gewählter Nodes auflösen"
@@ -4570,6 +6784,9 @@ msgstr "Skelett-Einstellungen"
msgid "Show Bones"
msgstr "Knochen anzeigen"
+msgid "Make Bone2D Node(s) from Node(s)"
+msgstr "Bone2D-Node(s) aus Node(s) erstellen"
+
msgid "View"
msgstr "Ansicht"
@@ -4606,6 +6823,9 @@ msgstr "Zeige Ansichtsfenster (Viewport)"
msgid "Show Group And Lock Icons"
msgstr "Gruppen und Symbole anzeigen"
+msgid "Show Transformation Gizmos"
+msgstr "Transformationsgriffe anzeigen"
+
msgid "Center Selection"
msgstr "Auswahl zentrieren"
@@ -4663,26 +6883,60 @@ msgstr "Gitterstufe halbieren"
msgid "Adding %s..."
msgstr "%s hinzufügen…"
+msgid "Drag and drop to add as child of current scene's root node."
+msgstr ""
+"Ziehen und loslassen um als Unterobjekt des Wurzelnodes der aktuellen Szene "
+"hinzuzufügen."
+
+msgid "Hold Ctrl when dropping to add as child of selected node."
+msgstr ""
+"Strg-Taste beim loslassen halten um als Unterobjekt des ausgewählten Nodes "
+"hinzuzufügen."
+
+msgid "Hold Shift when dropping to add as sibling of selected node."
+msgstr ""
+"Umschalttaste beim loslassen halten um als Nachbar-Node des ausgewählten "
+"Nodes hinzuzufügen."
+
+msgid "Hold Alt when dropping to add as a different node type."
+msgstr "Alttaste beim loslassen halten um als anderen Nodetyp hinzuzufügen."
+
msgid "Cannot instantiate multiple nodes without root."
msgstr "In­s­tan­zi­ie­ren mehrerer Nodes nicht möglich ohne Wurzel-Node."
msgid "Create Node"
msgstr "Erzeuge Node"
+msgid "Error instantiating scene from %s"
+msgstr "Fehler beim Instanziieren der Szene aus %s"
+
msgid "Change Default Type"
msgstr "Standardtyp ändern"
msgid "Set Handle"
msgstr "Wähle Griff"
+msgid "This node doesn't have a control parent."
+msgstr "Dieses Node besitzt kein Control-Ãœberelement."
+
+msgid ""
+"Use the appropriate layout properties depending on where you are going to "
+"put it."
+msgstr ""
+"Abhängig vom Ort wo das Layout verwendet platziert wird, sollten angemessene "
+"Layouteigenschaften verwendet werden."
+
msgid "This node is a child of a container."
-msgstr "Dieses Node ist Kind eines Containers."
+msgstr "Dieses Node ist ein Unterobjekt eines Containers."
msgid "Use container properties for positioning."
-msgstr "Benutze Containereigenschaften zur Positionierung."
+msgstr "Containereigenschaften zur Positionierung benutzen."
+
+msgid "This node is a child of a regular control."
+msgstr "Dieses Node ist ein Unterelement eines gewöhnlichen Controls."
msgid "Use anchors and the rectangle for positioning."
-msgstr "Benutze Anker und das Rechteck zur Positionierung."
+msgstr "Anker und Rechteck zur Positionierung benutzen."
msgid "Collapse positioning hint."
msgstr "Hinweis für Positionierung einklappen."
@@ -4690,9 +6944,21 @@ msgstr "Hinweis für Positionierung einklappen."
msgid "Expand positioning hint."
msgstr "Hinweis für Positionierung ausklappen."
+msgid "Container Default"
+msgstr "Containerstandard"
+
msgid "Fill"
msgstr "Füllung"
+msgid "Shrink Begin"
+msgstr "Verkleinern-Start"
+
+msgid "Shrink Center"
+msgstr "Verkleinern-Mitte"
+
+msgid "Shrink End"
+msgstr "Verkleinern-Ende"
+
msgid "Custom"
msgstr "Eigenes"
@@ -4747,9 +7013,68 @@ msgstr "Rechts groß"
msgid "Full Rect"
msgstr "Vollständiges Rechteck"
+msgid ""
+"Enable to also set the Expand flag.\n"
+"Disable to only set Shrink/Fill flags."
+msgstr ""
+"Aktivieren um ebenfalls das Expand-Flag zu setzen.\n"
+"Deaktivieren um lediglich die Schrumpf-/Füll-Flags zu setzen."
+
+msgid "Some parents of the selected nodes do not support the Expand flag."
+msgstr ""
+"Manche Überobjekte des ausgewählten Nodes unterstützen das Expand-Flag nicht."
+
+msgid "Align with Expand"
+msgstr "Nach Expand ausrichten"
+
+msgid "Change Anchors, Offsets, Grow Direction"
+msgstr "Anker, Versatz, Wachstumsrichtung ändern"
+
+msgid "Change Anchors, Offsets (Keep Ratio)"
+msgstr "Anker, Versatz (Verhältnis beibehalten) ändern"
+
+msgid "Change Vertical Size Flags"
+msgstr "Flags für vertikale Größe ändern"
+
+msgid "Change Horizontal Size Flags"
+msgstr "Flags für horizontale Größe ändern"
+
+msgid "Presets for the anchor and offset values of a Control node."
+msgstr "Voreinstellungen für Anker- und Versatzwerte eines Control-Nodes."
+
+msgid "Anchor preset"
+msgstr "Ankervoreinstellung"
+
+msgid "Set to Current Ratio"
+msgstr "Auf aktuelles Verhältnis festlegen"
+
+msgid "Adjust anchors and offsets to match the current rect size."
+msgstr ""
+"Anker und Versätze anpassen um zur aktuell ausgewählten Rechteckgröße zu "
+"passen."
+
+msgid ""
+"When active, moving Control nodes changes their anchors instead of their "
+"offsets."
+msgstr ""
+"Wenn aktiv, ändert das Verschieben von Control-Nodes deren Anker, statt "
+"ihrer Versätze."
+
+msgid "Sizing settings for children of a Container node."
+msgstr "Größeneinstellungen für Unterobjekte eines Container-Nodes."
+
+msgid "Horizontal alignment"
+msgstr "Horizontale Ausrichtung"
+
+msgid "Vertical alignment"
+msgstr "Vertikale Ausrichtung"
+
msgid "Load Emission Mask"
msgstr "Emissionsmaske laden"
+msgid "CPUParticles2D"
+msgstr "CPU-Partikel-2D"
+
msgid "Generated Point Count:"
msgstr "Anzahl generierter Punkte:"
@@ -4771,6 +7096,9 @@ msgstr "Von Pixel aufnehmen"
msgid "Emission Colors"
msgstr "Emissionsfarben"
+msgid "CPUParticles3D"
+msgstr "CPU-Partikel-3D"
+
msgid "Create Emission Points From Node"
msgstr "Erzeuge Emissionspunkte aus Node"
@@ -4874,6 +7202,16 @@ msgstr ""
"Collision Shapes und Raycast-Nodes (für 2D und 3D) werden im laufenden "
"Projekt angezeigt, wenn diese Option aktiviert ist."
+msgid "Visible Paths"
+msgstr "Sichtbare Pfade"
+
+msgid ""
+"When this option is enabled, curve resources used by path nodes will be "
+"visible in the running project."
+msgstr ""
+"Wenn diese Option aktiv ist, werden von Pfad-Nodes genutzte Kurven-"
+"Ressourcen im laufenden Projekt sichtbar gemacht."
+
msgid "Visible Navigation"
msgstr "Navigation sichtbar"
@@ -4912,9 +7250,47 @@ msgstr ""
"Sollte dies beim Abspielen auf externen Geräten genutzt werden, ist es am "
"effizientesten, das Netzwerk-Dateisystem zu aktivieren."
+msgid "Keep Debug Server Open"
+msgstr "Debug-Server offen halten"
+
+msgid ""
+"When this option is enabled, the editor debug server will stay open and "
+"listen for new sessions started outside of the editor itself."
+msgstr ""
+"Wenn diese Option aktiviert ist, wird der Editor-Debug-Server weiterlaufen "
+"und nach neuen Sitzungen lauschen, welche außerhalb des Editors gestartet "
+"wurden."
+
msgid "Run Multiple Instances"
msgstr "Mehrere Instanzen ausführen"
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "%d Instanz ausführen"
+msgstr[1] "%d Instanzen ausführen"
+
+msgid "Overrides (%d)"
+msgstr "Ãœberschreibungen (%d)"
+
+msgctxt "Locale"
+msgid "Add Script"
+msgstr "Skript hinzufügen"
+
+msgid "Add Locale"
+msgstr "Lokalisierung hinzufügen"
+
+msgid "Variation Coordinates (%d)"
+msgstr "Variationskoordinaten (%d)"
+
+msgid "No supported features"
+msgstr "Nicht unterstützte Funktionen"
+
+msgid "Features (%d of %d set)"
+msgstr "Funktionen (%d von %d aktiv)"
+
+msgid "Add Feature"
+msgstr "Funktion hinzufügen"
+
msgid " - Variation"
msgstr " - Variation"
@@ -4924,12 +7300,23 @@ msgstr "Vorschau für Schriftart nicht verfügbar"
msgid "Convert to CPUParticles2D"
msgstr "Zu CPUParticles2D konvertieren"
+msgid "Generating Visibility Rect (Waiting for Particle Simulation)"
+msgstr "Generiere Sichtbarkeits-Rechteck (Warte auf Partikelsimulation)"
+
msgid "Generate Visibility Rect"
msgstr "Generiere Sichtbarkeits-Rechteck"
+msgid "Can only set point into a ParticleProcessMaterial process material"
+msgstr ""
+"Punkt kann nur in ein Prozessmaterial des Typs ParticleProcessMaterial "
+"gesetzt werden"
+
msgid "Clear Emission Mask"
msgstr "Emissionsmaske leeren"
+msgid "GPUParticles2D"
+msgstr "CPU-Partikel-2D"
+
msgid "Generation Time (sec):"
msgstr "Erzeugungszeit (s):"
@@ -4939,6 +7326,9 @@ msgstr "Die Faces der Geometrie enthalten keine Area."
msgid "The geometry doesn't contain any faces."
msgstr "Die Geometrie enthält keine Faces."
+msgid "\"%s\" doesn't inherit from Node3D."
+msgstr "„%s“ erbt nicht von Node3D."
+
msgid "\"%s\" doesn't contain geometry."
msgstr "„%s“ enthält keine Geometrie."
@@ -4963,11 +7353,58 @@ msgstr "Volumen"
msgid "Emission Source:"
msgstr "Emissionsquelle:"
+msgid "A processor material of type 'ParticleProcessMaterial' is required."
+msgstr ""
+"Ein Verarbeitungsmaterial des Typs ‚ParticleProcessMaterial‘ wird benötigt."
+
+msgid "Convert to CPUParticles3D"
+msgstr "Zu CPUParticles3D konvertieren"
+
+msgid "Generating Visibility AABB (Waiting for Particle Simulation)"
+msgstr "Generiere Sichtbarkeits-AABB (warte auf Partikelsimulation)"
+
msgid "Generate Visibility AABB"
-msgstr "Erzeuge Sichtbarkeits-AABB"
+msgstr "Sichtbarkeits-AABB erzeugen"
+
+msgid "GPUParticles3D"
+msgstr "GPU-Partikel-3D"
+
+msgid "Generate AABB"
+msgstr "AABB erzeugen"
+
+msgid "Low"
+msgstr "Niedrig"
+
+msgid "Moderate"
+msgstr "Moderat"
+
+msgid "High"
+msgstr "Hoch"
+
+msgid "Subdivisions: %s"
+msgstr "Unterteilungen: %s"
+
+msgid "Cell size: %s"
+msgstr "Zellgröße: %s"
+
+msgid "Video RAM size: %s MB (%s)"
+msgstr "Größe des Video-RAM: %s MB (%s)"
+
+msgid "Bake SDF"
+msgstr "SDF backen"
+
+msgid ""
+"No faces detected during GPUParticlesCollisionSDF3D bake.\n"
+"Check whether there are visible meshes matching the bake mask within its "
+"extents."
+msgstr ""
+"Keine Oberflächen während des Backens von GPUParticlesCollissionSDF3D "
+"erkannt.\n"
+"Es ist zu überprüfen ob es sichtbare Meshes gibt, die mit den Ausmaßen der "
+"Back-Maske übereinstimmen."
msgid "Select path for SDF Texture"
-msgstr "Wähle Pfad für SDF Textur"
+msgstr "Pfad für SDF-Textur wählen"
msgid "Gradient Edited"
msgstr "Gradient bearbeitet"
@@ -4984,6 +7421,9 @@ msgstr "Gradient Füllpunkte vertauschen"
msgid "Toggle Grid Snap"
msgstr "Gittereinrasten umschalten"
+msgid "Configure"
+msgstr "Konfiguration"
+
msgid "Create Occluder Polygon"
msgstr "Occluder-Polygon erzeugen"
@@ -4994,11 +7434,24 @@ msgstr ""
"Ein Speicherpfad für Lightmap-Bilder kann nicht bestimmt werden.\n"
"Ein Speichern der Szene sollte dieses Problem beheben."
+msgid ""
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
+"Light' flag is on."
+msgstr ""
+"Keine Meshes zum Backen vorhanden. Meshes, die gebackt werden sollen, müssen "
+"einen UV2-Kanal beinhalten und das Flag ‚Bake Light‘ muss gesetzt sein."
+
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
"Erstellung der Lightmap-Bilder fehlgeschlagen. Stellen Sie sicher, dass der "
"Speicherpfad beschreibbar ist."
+msgid "No editor scene root found."
+msgstr "Keine Wurzel in Editorszene gefunden."
+
+msgid "Lightmap data is not local to the scene."
+msgstr "Lightmap-Daten sind nicht lokal zur Szene."
+
msgid "Bake Lightmaps"
msgstr "Lightmaps vorrendern"
@@ -5051,18 +7504,58 @@ msgstr "Mehrere konvexe Formen erstellen"
msgid "Create Navigation Mesh"
msgstr "Navigations-Mesh erzeugen"
+msgid "Create Debug Tangents"
+msgstr "Debug-Tangenten generieren"
+
msgid "Contained Mesh is not of type ArrayMesh."
msgstr "Beinhaltetes Mesh ist nicht vom Typ ArrayMesh."
+msgid ""
+"Mesh cannot unwrap UVs because it does not belong to the edited scene. Make "
+"it unique first."
+msgstr ""
+"Die UVs des Meshs können nicht entfaltet werden, da es nicht zur editierten "
+"Szene gehört. Es muss erst einzigartig gemacht werden."
+
+msgid ""
+"Mesh cannot unwrap UVs because it belongs to another resource which was "
+"imported from another file type. Make it unique first."
+msgstr ""
+"Die UVs des Meshs können nicht entfaltet werden, da es zu einer anderen "
+"Ressource, importiert aus einem andern Dateityp, gehört. Es muss erst "
+"einzigartig gemacht werden."
+
+msgid ""
+"Mesh cannot unwrap UVs because it was imported from another file type. Make "
+"it unique first."
+msgstr ""
+"Die UVs des Meshs können nicht entfaltet werden, da es aus einem andern "
+"Dateityp importiert wurde. Es muss erst einzigartig gemacht werden."
+
msgid "UV Unwrap failed, mesh may not be manifold?"
msgstr ""
"UV-Entfalten fehlgeschlagen, könnte das Mesh keine Mannigfaltigkeit sein?"
+msgid "Unwrap UV2"
+msgstr "UV2 entfalten"
+
msgid "No mesh to debug."
msgstr "Kein Mesh zu debuggen."
msgid "Mesh has no UV in layer %d."
-msgstr "Mesh hat kein UV in Schicht %d."
+msgstr "Mesh hat kein UV in Ebene %d."
+
+msgid "MeshInstance3D lacks a Mesh."
+msgstr "MeshInstance3D fehlt ein Mesh."
+
+msgid "Mesh has no surface to create outlines from."
+msgstr "Mesh hat keine Oberfläche von der Umrisse erzeugt werden können."
+
+msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES."
+msgstr "Der Mesh-Grundtyp ist nicht PRIMITIVE_TRIANGLES."
+
+msgid "Could not create outline."
+msgstr "Umriss konnte nicht erzeugt werden."
msgid "Create Outline"
msgstr "Umriss erzeugen"
@@ -5073,6 +7566,15 @@ msgstr "Mesh"
msgid "Create Trimesh Static Body"
msgstr "Statischen Trimesh-Körper erzeugen"
+msgid ""
+"Creates a StaticBody3D and assigns a polygon-based collision shape to it "
+"automatically.\n"
+"This is the most accurate (but slowest) option for collision detection."
+msgstr ""
+"Erstellt einen StaticBody3D und weist ihm ein polygon-basiertes "
+"Kollisionselement automatisch zu.\n"
+"Dies ist die präziseste (aber langsamste) Methode für Kollisionsberechnungen."
+
msgid "Create Trimesh Collision Sibling"
msgstr "Trimesh-Kollisionselement erzeugen"
@@ -5120,6 +7622,17 @@ msgstr ""
msgid "Create Outline Mesh..."
msgstr "Umriss-Mesh erzeugen..."
+msgid ""
+"Creates a static outline mesh. The outline mesh will have its normals "
+"flipped automatically.\n"
+"This can be used instead of the StandardMaterial Grow property when using "
+"that property isn't possible."
+msgstr ""
+"Erstellt ein statisches Umriss-Mesh. Umriss-Meshes haben ihre "
+"Normalenvektoren automatisch invertiert.\n"
+"Dies kann als Ersatz für die StandardMaterial-Grow-Eigenschaft genutzt "
+"werden, wenn sie nicht verfügbar ist."
+
msgid "View UV1"
msgstr "UV1 zeigen"
@@ -5182,6 +7695,9 @@ msgstr "Keine Mesh-Quelle angegeben (und MultiMesh enthält kein Mesh)."
msgid "Mesh source is invalid (invalid path)."
msgstr "Mesh-Quelle ist ungültig (ungültiger Pfad)."
+msgid "Mesh source is invalid (not a MeshInstance3D)."
+msgstr "Mesh-Quelle ist ungültig (kein MeshInstance3D)."
+
msgid "Mesh source is invalid (contains no Mesh resource)."
msgstr "Mesh-Quelle ist ungültig (enthält keine Mesh-Ressource)."
@@ -5242,6 +7758,12 @@ msgstr "Menge:"
msgid "Populate"
msgstr "Füllen"
+msgid "Set start_position"
+msgstr "start_position festlegen"
+
+msgid "Set end_position"
+msgstr "end_position festlegen"
+
msgid "Create Navigation Polygon"
msgstr "Erzeuge Navigationspolygon"
@@ -5249,7 +7771,7 @@ msgid "Unnamed Gizmo"
msgstr "Unbenannter Griff"
msgid "Change Light Radius"
-msgstr "Ändere Lichtradius"
+msgstr "Lichtradius ändern"
msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Emissionswinkel für AudioStreamPlayer3D ändern"
@@ -5258,16 +7780,28 @@ msgid "Change Camera FOV"
msgstr "Ändere FOV der Kamera"
msgid "Change Camera Size"
-msgstr "Ändere Kameragröße"
+msgstr "Kameragröße ändern"
msgid "Change Sphere Shape Radius"
msgstr "Kugelformradius ändern"
+msgid "Change Box Shape Size"
+msgstr "Quaderformgröße ändern"
+
msgid "Change Notifier AABB"
msgstr "Benachrichtigendes AABB ändern"
msgid "Change Particles AABB"
-msgstr "Ändere Partikel AABB"
+msgstr "Partikel AABB ändern"
+
+msgid "Change Radius"
+msgstr "Radius ändern"
+
+msgid "Change Probe Size"
+msgstr "Sondengröße ändern"
+
+msgid "Change Decal Size"
+msgstr "Decalgröße ändern"
msgid "Change Capsule Shape Radius"
msgstr "Kapselfromradius ändern"
@@ -5281,6 +7815,24 @@ msgstr "Zylinderformradius ändern"
msgid "Change Cylinder Shape Height"
msgstr "Zylinderformhöhe ändern"
+msgid "Change Separation Ray Shape Length"
+msgstr "Teilungsstrahlformlänge ändern"
+
+msgid "Start Location"
+msgstr "Startort"
+
+msgid "End Location"
+msgstr "Endort"
+
+msgid "Change Start Position"
+msgstr "Startposition ändern"
+
+msgid "Change End Position"
+msgstr "Endposition ändern"
+
+msgid "Change Fog Volume Size"
+msgstr "Nebelvolumengröße ändern"
+
msgid "Transform Aborted."
msgstr "Transformation abgebrochen."
@@ -5341,18 +7893,51 @@ msgstr "Z-Achsen-Transformation."
msgid "View Plane Transform."
msgstr "Zeige Flächentransformation."
+msgid "YZ-Plane Transform."
+msgstr "YZ-Ebenen-Transformation."
+
+msgid "XZ-Plane Transform."
+msgstr "XZ-Ebenen-Transformation."
+
+msgid "XY-Plane Transform."
+msgstr "XY-Ebenen-Transformation."
+
msgid "Keying is disabled (no key inserted)."
msgstr "Schlüsselbildeinfügen ist deaktiviert (kein Schlüsselbild eingefügt)."
msgid "Animation Key Inserted."
msgstr "Animationsschlüsselbild eingefügt."
+msgid "X: %s\n"
+msgstr "X: %s\n"
+
+msgid "Y: %s\n"
+msgstr "Y: %s\n"
+
+msgid "Z: %s\n"
+msgstr "Z: %s\n"
+
msgid "Size: %s (%.1fMP)\n"
msgstr "Größe: %s (%.1fMP)\n"
msgid "Objects: %d\n"
msgstr "Objekte: %d\n"
+msgid "Primitive Indices: %d\n"
+msgstr "Grundindizes: %d\n"
+
+msgid "Draw Calls: %d"
+msgstr "Zeichenaufrufe: %d"
+
+msgid "CPU Time: %s ms"
+msgstr "CPU-Zeit: %s ms"
+
+msgid "GPU Time: %s ms"
+msgstr "GPU-Zeit: %s ms"
+
+msgid "FPS: %d"
+msgstr "FPS: %d"
+
msgid "Top View."
msgstr "Sicht von oben."
@@ -5377,6 +7962,15 @@ msgstr "Transform auf Sicht ausrichten"
msgid "Align Rotation with View"
msgstr "Rotation auf Sicht ausrichten"
+msgid "Set Surface %d Override Material"
+msgstr "Override–Material der Oberfläche %d festlegen"
+
+msgid "Set Material Override"
+msgstr "Material-Override festlegen"
+
+msgid "Cannot drag and drop into multiple selected nodes."
+msgstr "Ziehen und loslassen in mehrere ausgewählte Nodes ist nicht möglich."
+
msgid "None"
msgstr "Nichts"
@@ -5407,15 +8001,78 @@ msgstr "Wireframe-Ansicht"
msgid "Display Overdraw"
msgstr "Overdraw-Ansicht"
+msgid "Display Lighting"
+msgstr "Lichtwurf anzeigen"
+
msgid "Display Unshaded"
msgstr "Nicht Schattiertes anzeigen"
+msgid "Directional Shadow Splits"
+msgstr "Gerichtete Schattenaufteilung"
+
+msgid "Normal Buffer"
+msgstr "Normalenpuffer"
+
msgid "Shadow Atlas"
msgstr "Schattenatlas"
+msgid "Directional Shadow Map"
+msgstr "Gerichtete Schattenkarte"
+
+msgid "Decal Atlas"
+msgstr "Decal-Atlas"
+
+msgid "VoxelGI Lighting"
+msgstr "VoxelGI-Beleuchtung"
+
+msgid "VoxelGI Albedo"
+msgstr "VoxelGI-Albedo"
+
+msgid "VoxelGI Emission"
+msgstr "VoxelGI-Emission"
+
+msgid "SDFGI Cascades"
+msgstr "SDFGI-Kaskaden"
+
+msgid "SDFGI Probes"
+msgstr "SDFGI-Sonden"
+
+msgid "Scene Luminance"
+msgstr "Szenenluminanz"
+
msgid "SSAO"
msgstr "SSAO"
+msgid "SSIL"
+msgstr "SSIL"
+
+msgid "VoxelGI/SDFGI Buffer"
+msgstr "VoxelGI/SDFGI-Puffer"
+
+msgid "Disable Mesh LOD"
+msgstr "Mesh-LOD deaktivieren"
+
+msgid "OmniLight3D Cluster"
+msgstr "OmniLight3D-Cluster"
+
+msgid "SpotLight3D Cluster"
+msgstr "SpotLight3D-Cluster"
+
+msgid "Decal Cluster"
+msgstr "Decal-Cluster"
+
+msgid "ReflectionProbe Cluster"
+msgstr "ReflectionProbe-Cluster"
+
+msgid "Occlusion Culling Buffer"
+msgstr "Occlusion-Culling-Puffer"
+
+msgid "Motion Vectors"
+msgstr "Bewegungsvektoren"
+
+msgid "Display Advanced..."
+msgstr "Erweitertes anzeigen…"
+
msgid "View Environment"
msgstr "Umgebung anzeigen"
@@ -5425,6 +8082,9 @@ msgstr "Manipulator anzeigen"
msgid "View Information"
msgstr "Sicht-Informationen"
+msgid "View Frame Time"
+msgstr "Frame-Zeit anzeigen"
+
msgid "Half Resolution"
msgstr "Halbe Auflösung"
@@ -5437,6 +8097,9 @@ msgstr "Dopplereffekt aktivieren"
msgid "Cinematic Preview"
msgstr "Cinematische Vorschau"
+msgid "Not available when using the OpenGL renderer."
+msgstr "Nicht verfügbar mit OpenGL-Renderer."
+
msgid "Freelook Left"
msgstr "Freisicht Links"
@@ -5462,13 +8125,34 @@ msgid "Freelook Slow Modifier"
msgstr "Freisicht Trägheitsregler"
msgid "Lock Transformation to X axis"
-msgstr "Sperre Transformation auf X-Achse"
+msgstr "Transformation auf X-Achse begrenzen"
msgid "Lock Transformation to Y axis"
-msgstr "Sperre Transformation auf Y-Achse"
+msgstr "Transformation auf Y-Achse begrenzen"
msgid "Lock Transformation to Z axis"
-msgstr "Sperre Transformation auf Z-Achse"
+msgstr "Transformation auf Z-Achse begrenzen"
+
+msgid "Lock Transformation to YZ plane"
+msgstr "Transformation auf YZ-Ebene begrenzen"
+
+msgid "Lock Transformation to XZ plane"
+msgstr "Transformation auf XZ-Ebene begrenzen"
+
+msgid "Lock Transformation to XY plane"
+msgstr "Transformation auf XY-Ebene begrenzen"
+
+msgid "Cancel Transformation"
+msgstr "Transformation abbrechen"
+
+msgid "Begin Translate Transformation"
+msgstr "Verschiebungs-Transformation starten"
+
+msgid "Begin Rotate Transformation"
+msgstr "Rotations-Transformation starten"
+
+msgid "Begin Scale Transformation"
+msgstr "Skalierungs-Transformation starten"
msgid "Toggle Camera Preview"
msgstr "Kameravorschau umschalten"
@@ -5482,6 +8166,18 @@ msgstr ""
"Um weiter zoomen zu können müssen die Kameraausschnittebenen geändert werden "
"(Ansicht -> Einstellungen… )"
+msgid "Overriding material..."
+msgstr "Überschreibendes Material…"
+
+msgid ""
+"Drag and drop to override the material of any geometry node.\n"
+"Hold Ctrl when dropping to override a specific surface."
+msgstr ""
+"Ziehen und Loslassen um das Material jeglichen Geometrie-Nodes zu "
+"überschreiben.\n"
+"Strg beim Loslassen gedrückt halten um eine spezielle Oberfläche zu "
+"überschreiben."
+
msgid "XForm Dialog"
msgstr "Transformationsdialog"
@@ -5507,12 +8203,60 @@ msgstr ""
"Es wurde kein fester Boden gefunden an dem die Auswahl eingerastet werden "
"könnte."
+msgid "Add Preview Sun to Scene"
+msgstr "Vorschausonne zur Szene hinzufügen"
+
+msgid "Add Preview Environment to Scene"
+msgstr "Vorschau-Environment zur Szene hinzufügen"
+
+msgid ""
+"Scene contains\n"
+"DirectionalLight3D.\n"
+"Preview disabled."
+msgstr ""
+"Szene beinhaltet\n"
+"DirectionalLight3D.\n"
+"Vorschau deaktiviert."
+
+msgid "Preview disabled."
+msgstr "Vorschau deaktiviert."
+
+msgid ""
+"Scene contains\n"
+"WorldEnvironment.\n"
+"Preview disabled."
+msgstr ""
+"Szene enthälrt\n"
+"WorldEnvironment.\n"
+"Vorschau deaktiviert."
+
msgid "Use Local Space"
msgstr "Lokalkoordinaten verwenden"
msgid "Use Snap"
msgstr "Einrasten aktivieren"
+msgid ""
+"Toggle preview sunlight.\n"
+"If a DirectionalLight3D node is added to the scene, preview sunlight is "
+"disabled."
+msgstr ""
+"Vorschausonnenlicht umschalten.\n"
+"Die Sonnenlichtvorschau wird deaktiviert, falls ein DirectionalLight3D-Node "
+"zur Szene hinzugefügt wird."
+
+msgid ""
+"Toggle preview environment.\n"
+"If a WorldEnvironment node is added to the scene, preview environment is "
+"disabled."
+msgstr ""
+"Environment-Vorschau umschalten.\n"
+"Die Environment-Vorschau wird deaktiviert, falls ein WorldEnvironment-Node "
+"zur Szene hinzugefügt wird."
+
+msgid "Edit Sun and Environment settings."
+msgstr "Sonnen- und Environment-Einstellungen ändern."
+
msgid "Bottom View"
msgstr "Sicht von unten"
@@ -5654,15 +8398,108 @@ msgstr "Vorher"
msgid "Post"
msgstr "Nachher"
+msgid "Preview Sun"
+msgstr "Sonnenvorschau"
+
+msgid "Sun Direction"
+msgstr "Sonnenrichtung"
+
+msgid "Angular Altitude"
+msgstr "Winkelhöhe"
+
+msgid "Azimuth"
+msgstr "Azimut"
+
msgid "Sun Color"
msgstr "Sonnenfarbe"
+msgid "Sun Energy"
+msgstr "Sonnenenergie"
+
+msgid "Shadow Max Distance"
+msgstr "Max Schattendistanz"
+
+msgid "Add Sun to Scene"
+msgstr "Sonne zur Szene hinzufügen"
+
+msgid ""
+"Adds a DirectionalLight3D node matching the preview sun settings to the "
+"current scene.\n"
+"Hold Shift while clicking to also add the preview environment to the current "
+"scene."
+msgstr ""
+"Fügt ein DirectionalLight3D-Node, das den Sonnenvorschaueinstellungen "
+"entspricht, der aktuellen Szene hinzu.\n"
+"Umsch beim Klicken halten, um ebenfalls die Environment-Vorschau zur "
+"aktuellen Szene hinzuzufügen."
+
+msgid "Preview Environment"
+msgstr "Vorschau-Environment"
+
+msgid "Sky Color"
+msgstr "Himmelsfarbe"
+
+msgid "Ground Color"
+msgstr "Bodenfarbe"
+
+msgid "Sky Energy"
+msgstr "Himmelsenergie"
+
+msgid "AO"
+msgstr "AO"
+
msgid "Glow"
msgstr "Leuchten"
msgid "Tonemap"
msgstr "Dynamikkompression"
+msgid "GI"
+msgstr "GI"
+
+msgid "Post Process"
+msgstr "Nachbearbeitung"
+
+msgid "Add Environment to Scene"
+msgstr "Environment der Szene hinzufügen"
+
+msgid ""
+"Adds a WorldEnvironment node matching the preview environment settings to "
+"the current scene.\n"
+"Hold Shift while clicking to also add the preview sun to the current scene."
+msgstr ""
+"Fügt ein WorldEnvironment-Node, das den Environment-Vorschaueinstellungen "
+"entspricht, der aktuellen Szene hinzu.\n"
+"Umsch beim Klicken halten, um ebenfalls die Vorschausonne zur aktuellen "
+"Szene hinzuzufügen."
+
+msgid ""
+"Can't determine a save path for the occluder.\n"
+"Save your scene and try again."
+msgstr ""
+"Ein Speicherpfad für den Occluder kann nicht bestimmt werden.\n"
+"Ein Speichern der Szene sollte dieses Problem beheben."
+
+msgid ""
+"No meshes to bake.\n"
+"Make sure there is at least one MeshInstance3D node in the scene whose "
+"visual layers are part of the OccluderInstance3D's Bake Mask property."
+msgstr ""
+"Keine Meshes zum Backen.\n"
+"Bitte sicherstellen dass mindestens ein MeshInstance3D-Node in der Szene "
+"ist, dessen sichtbare Ebenen in der Backmaske-Eigenschaft des "
+"OccluderInstance3D enthalten sind."
+
+msgid "Could not save the new occluder at the specified path:"
+msgstr ""
+"Der neue Verdecker konnte nicht am angegebenen Pfad gespeichert werden:"
+
+msgid "Bake Occluders"
+msgstr "Verdecker backen"
+
+msgid "Select occluder bake file:"
+msgstr "Verdecker-Bake-Datei auswählen:"
+
msgid "Remove Point from Curve"
msgstr "Punkt von Kurve entfernen"
@@ -5980,6 +8817,12 @@ msgstr "Datei konnte nicht geladen werden von:"
msgid "Save File As..."
msgstr "Datei speichern als..."
+msgid "Can't obtain the script for reloading."
+msgstr "Skript zum Neuladen nicht abrufbar."
+
+msgid "Reload only takes effect on tool scripts."
+msgstr "Neuladen beinflusst nur Werkzeugskripte."
+
msgid "Can't obtain the script for running."
msgstr "Auszuführendes Skript kann nicht abgerufen werden."
@@ -6007,6 +8850,9 @@ msgstr "Fehler beim Speichern"
msgid "Save Theme As..."
msgstr "Theme speichern als..."
+msgid "Unsaved file."
+msgstr "Ungespeicherte Datei."
+
msgid "%s Class Reference"
msgstr "%s Klassenreferenz"
@@ -6016,6 +8862,9 @@ msgstr "Finde Nächstes"
msgid "Find Previous"
msgstr "Finde Vorheriges"
+msgid "Filter Scripts"
+msgstr "Skripte filtern"
+
msgid "Toggle alphabetical sorting of the method list."
msgstr "Alphabetische Sortierung der Methodenliste umschalten."
@@ -6040,6 +8889,9 @@ msgstr "Geschlossenes Skript erneut öffnen"
msgid "Save All"
msgstr "Alle speichern"
+msgid "Soft Reload Tool Script"
+msgstr "Tool-Skript für zaghaftes Nachladen"
+
msgid "Copy Script Path"
msgstr "Skriptpfad kopieren"
@@ -6050,7 +8902,7 @@ msgid "History Next"
msgstr "Vorwärts im Verlauf"
msgid "Theme"
-msgstr "Theme"
+msgstr "Motiv, Design, oder anscheinend Thema¯\\_(ツ)_/¯"
msgid "Import Theme..."
msgstr "Thema importieren..."
@@ -6107,6 +8959,9 @@ msgstr "Skript-Verlauf leeren"
msgid "Standard"
msgstr "Standard"
+msgid "Plain Text"
+msgstr "Normaler Text"
+
msgid "Connections to method:"
msgstr "Verbindungen mit Methode:"
@@ -6116,6 +8971,9 @@ msgstr "Quelle"
msgid "Target"
msgstr "Ziel"
+msgid "Error at (%d, %d):"
+msgstr "Fehler bei (%d, %d):"
+
msgid ""
"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
msgstr ""
@@ -6133,6 +8991,9 @@ msgstr "Springe zu Funktion"
msgid "Only resources from filesystem can be dropped."
msgstr "Nur Ressourcen aus dem Dateisystem können hier fallen gelassen werden."
+msgid "Can't drop nodes without an open scene."
+msgstr "Ohne geöffnete Szene können Nodes nicht fallen gelassen werden."
+
msgid "Can't drop nodes because script '%s' is not used in this scene."
msgstr ""
"Nodes können hier nicht fallen gelassen werden da Skript ‚%s‘ in dieser "
@@ -6144,6 +9005,12 @@ msgstr "Symbol nachschlagen"
msgid "Pick Color"
msgstr "Farbe auswählen"
+msgid "Folding"
+msgstr "Einklappen"
+
+msgid "Indentation"
+msgstr "Einrückung"
+
msgid "Uppercase"
msgstr "Großbuchstaben"
@@ -6168,6 +9035,9 @@ msgstr "Springe zu"
msgid "Delete Line"
msgstr "Zeile löschen"
+msgid "Unindent"
+msgstr "Ausrücken"
+
msgid "Toggle Comment"
msgstr "Kommentar umschalten"
@@ -6234,6 +9104,46 @@ msgstr "Springe zum nächsten Haltepunkt"
msgid "Go to Previous Breakpoint"
msgstr "Springe zum vorigen Haltepunkt"
+msgid "New Shader Include"
+msgstr "Neues Shader-Include"
+
+msgid "Load Shader File"
+msgstr "Shader-Datei laden"
+
+msgid "Load Shader Include File"
+msgstr "Shader-Include-Datei laden"
+
+msgid "Save File"
+msgstr "Datei speichern"
+
+msgid "Save File As"
+msgstr "Datei speichern als"
+
+msgid "Open File in Inspector"
+msgstr "Datei im Inspektor öffnen"
+
+msgid "Close File"
+msgstr "Datei schließen"
+
+msgid "Shader Editor"
+msgstr "Shader-Editor"
+
+msgid "No valid shader stages found."
+msgstr "Keine gültigen Shader-Stufen gefunden."
+
+msgid "Shader stage compiled without errors."
+msgstr "Shader-Stufe ohne Fehler übersetzt."
+
+msgid ""
+"File structure for '%s' contains unrecoverable errors:\n"
+"\n"
+msgstr ""
+"Dateistruktur für ‚%s‘ enthält nicht behebbare Fehler:\n"
+"\n"
+
+msgid "ShaderFile"
+msgstr "Shader-Datei"
+
msgid "This skeleton has no bones, create some children Bone2D nodes."
msgstr ""
"Dieses Skelett hat keine Knochen, Bone2D-Nodes sollten als Unterobjekte "
@@ -6254,12 +9164,77 @@ msgstr "Zu Ruhepose zurücksetzen"
msgid "Overwrite Rest Pose"
msgstr "Ruhepose überschreiben"
+msgid "Set Bone Transform"
+msgstr "Knochentransformation festlegen"
+
+msgid "Set Bone Rest"
+msgstr "Ruhepose für Knochen festlegen"
+
+msgid "Cannot create a physical skeleton for a Skeleton3D node with no bones."
+msgstr ""
+"Es kann kein physisches Skelett erstellt werden für ein Skeleton3D-Node ohne "
+"Knochen."
+
msgid "Create physical bones"
msgstr "Physikalische Knochen erstellen"
+msgid "Cannot export a SkeletonProfile for a Skeleton3D node with no bones."
+msgstr ""
+"Es kann kein SkeletonProfile exportiert werden für ein Skeleton3D-Node ohne "
+"Knochen."
+
+msgid "Export Skeleton Profile As..."
+msgstr "Skelettprofil exportieren nach..."
+
+msgid "Set Bone Parentage"
+msgstr "Elternstatus des Knochens festlegen"
+
+msgid "Skeleton3D"
+msgstr "Skelett3D"
+
+msgid "Reset All Bone Poses"
+msgstr "Alle Knochen-Posen zurücksetzen"
+
+msgid "Reset Selected Poses"
+msgstr "Ausgewählte Posen zurücksetzen"
+
+msgid "Apply All Poses to Rests"
+msgstr "Alle Posen in Ruhe setzen"
+
+msgid "Apply Selected Poses to Rests"
+msgstr "Ausgewählte Posen in Ruhe setzen"
+
+msgid "Create Physical Skeleton"
+msgstr "Physikalisches Skelett erzeugen"
+
+msgid "Export Skeleton Profile"
+msgstr "Skelettprofil exportieren"
+
+msgid ""
+"Edit Mode\n"
+"Show buttons on joints."
+msgstr ""
+"Bearbeitungsmodus\n"
+"Knöpfe an Gelenken anzeigen."
+
+msgid "Insert key of all bone poses."
+msgstr "Schlüssel einfügen für alle Knochenposen."
+
+msgid "Insert Key (All Bones)"
+msgstr "Schlüsselbild einfügen (alle Knochen)"
+
+msgid "Bone Transform"
+msgstr "Knochen-Transformation"
+
msgid "Play IK"
msgstr "IK abspielen"
+msgid "Create MeshInstance2D"
+msgstr "MeshInstance2D erstellen"
+
+msgid "MeshInstance2D Preview"
+msgstr "MeshInstance2D-Vorschau"
+
msgid "Create Polygon2D"
msgstr "Polygon2D erzeugen"
@@ -6278,6 +9253,12 @@ msgstr "LightOccluder2D erzeugen"
msgid "LightOccluder2D Preview"
msgstr "LightOccluder2D-Vorschau"
+msgid "Can't convert a Sprite2D from a foreign scene."
+msgstr "Umwandeln eines aus fremder Szene stammenden Sprite2D nicht möglich."
+
+msgid "Sprite2D is empty!"
+msgstr "Sprite2D ist leer!"
+
msgid "Can't convert a sprite using animation frames to mesh."
msgstr ""
"Ein Sprite das Animationsbilder nutzt kann nicht zu einem Mesh konvertiert "
@@ -6307,6 +9288,9 @@ msgstr "Ungültige Geometrie, Light-Occluder kann nicht erzeugt werden."
msgid "Create LightOccluder2D Sibling"
msgstr "LightOccluder2D erzeugen"
+msgid "Sprite2D"
+msgstr "Sprite2D"
+
msgid "Simplification:"
msgstr "Vereinfachung:"
@@ -6355,18 +9339,57 @@ msgstr "Animation löschen?"
msgid "Change Animation FPS"
msgstr "Ändere FPS-Wert der Animation"
+msgid "Set Frame Duration"
+msgstr "Framedauer festlegen"
+
msgid "(empty)"
msgstr "(leer)"
msgid "Animations:"
msgstr "Animationen:"
+msgid "Animation Speed"
+msgstr "Animationsgeschwindigkeit"
+
+msgid "Filter Animations"
+msgstr "Animationen filtern"
+
+msgid "Delete Animation"
+msgstr "Animation löschen"
+
msgid "Animation Frames:"
msgstr "Animationsbilder:"
+msgid "Frame Duration:"
+msgstr "Framedauer:"
+
msgid "Zoom Reset"
msgstr "Zoom zurücksetzen"
+msgid "Add frame from file"
+msgstr "Frame aus Datei hinzufügen"
+
+msgid "Add frames from sprite sheet"
+msgstr "Frame aus Sprite-Sheet hinzufügen"
+
+msgid "Delete Frame"
+msgstr "Frame löschen"
+
+msgid "Copy Frame"
+msgstr "Frame kopieren"
+
+msgid "Insert Empty (Before Selected)"
+msgstr "Empty einfügen (vor Auswahl)"
+
+msgid "Insert Empty (After Selected)"
+msgstr "Empty einfügen (nach Auswahl)"
+
+msgid "Move Frame Left"
+msgstr "Frame nach links verschieben"
+
+msgid "Move Frame Right"
+msgstr "Frame nach rechts verschieben"
+
msgid "Select Frames"
msgstr "Frames auswählen"
@@ -6388,6 +9411,25 @@ msgstr "Frames aus Sprite-Sheet erzeugen"
msgid "SpriteFrames"
msgstr "Sprite-Einzelbilder"
+msgid "Warnings should be fixed to prevent errors."
+msgstr "Warnungen sollten behoben werden um Fehler zu vermeiden."
+
+msgid ""
+"This shader has been modified on disk.\n"
+"What action should be taken?"
+msgstr ""
+"Dieser Shader wurde im Dateisystem verändert.\n"
+"Wie soll weiter vorgegangen werden?"
+
+msgid "%s Mipmaps"
+msgstr "%s Mipmaps"
+
+msgid "Memory: %s"
+msgstr "Speicher: %s"
+
+msgid "No Mipmaps"
+msgstr "Keine Mipmaps"
+
msgid "Set Region Rect"
msgstr "Bereichsrechteck setzen"
@@ -6409,24 +9451,68 @@ msgstr "Autoschnitt"
msgid "Step:"
msgstr "Schritt:"
+msgid "Region Editor"
+msgstr "Bereichseditor"
+
+msgid "Edit Region"
+msgstr "Bereich bearbeiten"
+
msgid "Styleboxes"
msgstr "Style-Boxen"
+msgid "1 color"
+msgid_plural "{num} colors"
+msgstr[0] "1 Farbe"
+msgstr[1] "{num} Farben"
+
msgid "No colors found."
msgstr "Keine Farben gefunden."
+msgid "1 constant"
+msgid_plural "{num} constants"
+msgstr[0] "1 Konstante"
+msgstr[1] "{num} Konstanten"
+
msgid "No constants found."
msgstr "Keine Konstanten gefunden."
+msgid "1 font"
+msgid_plural "{num} fonts"
+msgstr[0] "1 Schriftart"
+msgstr[1] "{num} Schriftarten"
+
msgid "No fonts found."
msgstr "Keine Schriftarten gefunden."
+msgid "1 font size"
+msgid_plural "{num} font sizes"
+msgstr[0] "1 Schriftgröße"
+msgstr[1] "{num} Schriftgrößen"
+
+msgid "No font sizes found."
+msgstr "Keine Schriftgrößen gefunden."
+
+msgid "1 icon"
+msgid_plural "{num} icons"
+msgstr[0] "1 Symbol"
+msgstr[1] "{num} Symbole"
+
msgid "No icons found."
msgstr "Keine Symbole gefunden."
+msgid "1 stylebox"
+msgid_plural "{num} styleboxes"
+msgstr[0] "1 Style-Box"
+msgstr[1] "{num} Style-Boxen"
+
msgid "No styleboxes found."
msgstr "Keine Style-Boxen gefunden."
+msgid "{num} currently selected"
+msgid_plural "{num} currently selected"
+msgstr[0] "{num} zurzeit ausgewählt"
+msgstr[1] "{num} zurzeit ausgewählt"
+
msgid "Nothing was selected for the import."
msgstr "Es wurde nichts zum Importieren ausgewählt."
@@ -6442,6 +9528,12 @@ msgstr "Am Aktualisieren des Editors"
msgid "Finalizing"
msgstr "Fertigstellen"
+msgid "Import Theme Items"
+msgstr "Thema-Elemente importieren"
+
+msgid "Filter Items"
+msgstr "Elemente filtern"
+
msgid "With Data"
msgstr "Mit Daten"
@@ -6475,6 +9567,18 @@ msgstr "Alle sichtbaren Schriftart-Elemente und ihre Daten auswählen."
msgid "Deselect all visible font items."
msgstr "Alle sichtbaren Schriftart-Elemente abwählen."
+msgid "Font sizes"
+msgstr "Schriftgrößen"
+
+msgid "Select all visible font size items."
+msgstr "Alle sichtbaren Schriftgrößen-Elemente auswählen."
+
+msgid "Select all visible font size items and their data."
+msgstr "Alle sichtbaren Schriftgrößen-Elemente und ihre Daten auswählen."
+
+msgid "Deselect all visible font size items."
+msgstr "Alle sichtbaren Schriftgrößen-Elemente abwählen."
+
msgid "Select all visible icon items."
msgstr "Alle sichtbaren Symbolelemente auswählen."
@@ -6556,6 +9660,9 @@ msgstr "Alle konstanten Elemente entfernen"
msgid "Remove All Font Items"
msgstr "Alle Schriftart-Elemente entfernen"
+msgid "Remove All Font Size Items"
+msgstr "Alle Schriftgrößen-Elemente entfernen"
+
msgid "Remove All Icon Items"
msgstr "Alle Symbol-Elemente entfernen"
@@ -6570,12 +9677,21 @@ msgstr ""
"Zusätzliche Elemente können manuell oder durch Importieren aus einem andern "
"Thema hinzugefügt werden."
+msgid "Remove Theme Item"
+msgstr "Themen-Element entfernen"
+
msgid "Add Theme Type"
msgstr "Themen-Typ hinzufügen"
+msgid "Create Theme Item"
+msgstr "Themen-Elemente erstellen"
+
msgid "Remove Theme Type"
msgstr "Themen-Typ entfernen"
+msgid "Remove Data Type Items From Theme"
+msgstr "Datentypelemente aus Thema entfernen"
+
msgid "Add Color Item"
msgstr "Farbelement hinzufügen"
@@ -6703,12 +9819,44 @@ msgstr "Elementtyp hinzufügen"
msgid "Add Type"
msgstr "Typ hinzufügen"
+msgid "Override All Default Theme Items"
+msgstr "Alle Standard-Themaelemente überschreiben"
+
+msgid "Set Constant Item in Theme"
+msgstr "Konstantes Element in Thema festlegen"
+
+msgid "Set Font Size Item in Theme"
+msgstr "Element für Schriftgröße in Thema festlegen"
+
+msgid "Set Font Item in Theme"
+msgstr "Schriftart-Element in Thema festlegen"
+
+msgid "Set Icon Item in Theme"
+msgstr "Element für Symbol in Thema festlegen"
+
+msgid "Set Stylebox Item in Theme"
+msgstr "Stylebox-Element in Thema festlegen"
+
+msgid "Pin Stylebox"
+msgstr "Stylebox anheften"
+
+msgid "Unpin Stylebox"
+msgstr "Stylebox abheften"
+
+msgid "Set Theme Type Variation"
+msgstr "Thementypvariation festlegen"
+
msgid "Set Variation Base Type"
msgstr "Variationsbasistyp festlegen"
msgid "Set Base Type"
msgstr "Basistyp festlegen"
+msgid "Add a type from a list of available types or create a new one."
+msgstr ""
+"Füge einen Typ aus einer Liste verfügbarer Typen hinzu oder erstelle einen "
+"neuen."
+
msgid "Show Default"
msgstr "Standard anzeigen"
@@ -6838,6 +9986,90 @@ msgstr "Ungültige Datei, keine PackedScene-Ressource."
msgid "Reload the scene to reflect its most actual state."
msgstr "Die Szene neu laden um ihren aktuellsten Status widerzuspiegeln."
+msgid "Merge TileSetAtlasSource"
+msgstr "TileSetAtlasSource zusammenfügen"
+
+msgid "%s (ID: %d)"
+msgstr "%s (ID: %d)"
+
+msgid "Atlas Merging"
+msgstr "Atlaszusammenfügen"
+
+msgid "Merge (Keep original Atlases)"
+msgstr "Zusammenfügen (ursprüngliche Atlanten erhalten)"
+
+msgid "Merge"
+msgstr "Zusammenfügen"
+
+msgid "Next Line After Column"
+msgstr "Nächste Zeile nach Spalte"
+
+msgid "Please select two atlases or more."
+msgstr "Zuerst zwei oder mehr Atlanten auswählen."
+
+msgid ""
+"Source: %d\n"
+"Atlas coordinates: %s\n"
+"Alternative: 0"
+msgstr ""
+"Quelle: %d\n"
+"Atlaskoordinaten: %s\n"
+"Alternative: 0"
+
+msgid ""
+"Source: %d\n"
+"Atlas coordinates: %s\n"
+"Alternative: %d"
+msgstr ""
+"Quelle: %d\n"
+"Atlaskoordinaten: %s\n"
+"Alternative: %d"
+
+msgid "Center View"
+msgstr "Ansicht zentrieren"
+
+msgid "No atlas source with a valid texture selected."
+msgstr "Keine Atlasquelle mit gültiger Textur ausgewählt."
+
+msgid "Base Tiles"
+msgstr "Grundkacheln"
+
+msgid "Alternative Tiles"
+msgstr "Alternative Kacheln"
+
+msgid "Reset Polygons"
+msgstr "Polygone zurücksetzen"
+
+msgid "Clear Polygons"
+msgstr "Polygone löschen"
+
+msgid "Rotate Polygons Right"
+msgstr "Polygone nach rechts drehen"
+
+msgid "Rotate Polygons Left"
+msgstr "Polygone nach links drehen"
+
+msgid "Flip Polygons Horizontally"
+msgstr "Polygone horizontal spiegeln"
+
+msgid "Flip Polygons Vertically"
+msgstr "Polygone vertikal spiegeln"
+
+msgid "Edit Polygons"
+msgstr "Polygone bearbeiten"
+
+msgid "Add polygon tool"
+msgstr "Polygonwerkzeug hinzufügen"
+
+msgid "Edit points tool"
+msgstr "Punktbearbeitungswerkzeug"
+
+msgid "Delete points tool"
+msgstr "Punktbearbeitungswerkzeug löschen"
+
+msgid "Reset to default tile shape"
+msgstr "Auf Standardkachelform zurücksetzen"
+
msgid "Rotate Right"
msgstr "Nach rechts rotieren"
@@ -6850,18 +10082,249 @@ msgstr "Horizontal spiegeln"
msgid "Flip Vertically"
msgstr "Vertikal spiegeln"
+msgid "Snap to half-pixel"
+msgstr "Auf Halbpixel einrasten"
+
+msgid "Painting:"
+msgstr "Anmalend:"
+
+msgid "No terrains"
+msgstr "Keine Gelände"
+
+msgid "No terrain"
+msgstr "Kein Gelände"
+
+msgid "No Texture Atlas Source (ID: %d)"
+msgstr "Keine Texturatlas-Quelle (ID: %d)"
+
+msgid "Scene Collection Source (ID: %d)"
+msgstr "Quelle der Szenensammlung (ID: %d)"
+
+msgid "Shift+Ctrl: Draw rectangle."
+msgstr "Umsch+Strg: Rechteck zeichnen."
+
+msgid "Alternatively hold Ctrl with other tools to pick tile."
+msgstr "Alternativ Strg mit anderen Werkzeugen halten um Kachel auszuwählen."
+
+msgid "Alternatively use RMB to erase tiles."
+msgstr "Alternativ RMT verwenden um Kacheln zu löschen."
+
+msgid "Contiguous"
+msgstr "Fortlaufend"
+
+msgid "Place Random Tile"
+msgstr "Zufällige Kachel platzieren"
+
+msgid "Scattering:"
+msgstr "Streuung:"
+
msgid "Tiles"
msgstr "Kacheln"
+msgid "Sort sources"
+msgstr "Quellen sortieren"
+
+msgid "Sort by ID (Ascending)"
+msgstr "Nach ID sortieren (aufsteigend)"
+
+msgid "Sort by ID (Descending)"
+msgstr "Nach ID sortieren (absteigend)"
+
+msgid "Invalid source selected."
+msgstr "Ungültige Quelle ausgewählt."
+
+msgid "Paint terrain"
+msgstr "Bemale Gelände"
+
+msgid "Matches Corners Only"
+msgstr "stimmt nur mit Ecken überein"
+
+msgid "Matches Sides Only"
+msgstr "stimmt nur mit Seiten überein"
+
+msgid "Replace Tiles with Proxies"
+msgstr "Kacheln mit Stellvertretern ersetzen"
+
+msgid "No Layers"
+msgstr "Keine Ebenen"
+
+msgid "Toggle grid visibility."
+msgstr "Sichtbarkeit des Gitters umschalten."
+
+msgid "Automatically Replace Tiles with Proxies"
+msgstr "Automatisch Kacheln mit Stellvertretern ersetzen"
+
+msgid "The edited TileMap node has no TileSet resource."
+msgstr "Das bearbeitete TileMap-Node hat keine TileSet-Ressource."
+
+msgid "Remove Tile Proxies"
+msgstr "Kachel-Stellvertreter entfernen"
+
+msgid "Delete All Tile Proxies"
+msgstr "Alle Kachel-Vertreter löschen"
+
+msgid "From Source"
+msgstr "Von einer Quelle"
+
+msgid "From Coords"
+msgstr "Von Koordinaten"
+
+msgid "From Alternative"
+msgstr "Von einer Alternative"
+
+msgid "To Source"
+msgstr "Zu einer Quelle"
+
+msgid "To Coords"
+msgstr "Zu Koordinaten"
+
+msgid "To Alternative"
+msgstr "Zu einer Alternative"
+
+msgid "Global actions:"
+msgstr "Globale Aktionen:"
+
msgid "Atlas"
msgstr "Atlas"
+msgid "Base Tile"
+msgstr "Basiskachel"
+
+msgid "Alternative Tile"
+msgstr "Alternative Kachel"
+
+msgid ""
+"Selected tile:\n"
+"Source: %d\n"
+"Atlas coordinates: %s\n"
+"Alternative: %d"
+msgstr ""
+"Ausgewählte Kachel:\n"
+"Quelle: %d\n"
+"Altaskoordinaten: %s\n"
+"Alternative: %d"
+
+msgid "Select a property editor"
+msgstr "Eigenschafts-Editor auswählen"
+
+msgid "Create tiles"
+msgstr "Kacheln erstellen"
+
+msgid "Create a tile"
+msgstr "Eine Kachel erstellen"
+
+msgid "Remove tiles"
+msgstr "Kacheln entfernen"
+
+msgid "Move a tile"
+msgstr "Kachel verschieben"
+
+msgid "Select tiles"
+msgstr "Kacheln auswählen"
+
+msgid "Resize a tile"
+msgstr "Kachel in der Größe ändern"
+
+msgid "Remove tile"
+msgstr "Kachel entfernen"
+
+msgid "Create tile alternatives"
+msgstr "Kachelalternativen erstellen"
+
+msgid "Create tiles in non-transparent texture regions"
+msgstr "Kacheln in undurchsichtigen Texturbereichen erstellen"
+
+msgid "Remove tiles in fully transparent texture regions"
+msgstr "Kacheln in komplett durchsichtigen Texturbereichen entfernen"
+
+msgid "Select tiles."
+msgstr "Kacheln auswählen."
+
+msgid "No tiles selected."
+msgstr "Keine Kacheln ausgewählt."
+
+msgid "Paint Properties:"
+msgstr "Maleigenschaften:"
+
+msgid "Create Tiles in Non-Transparent Texture Regions"
+msgstr "Kacheln in undurchsichtigen Texturbereichen erstellen"
+
+msgid "Remove Tiles in Fully Transparent Texture Regions"
+msgstr "Kacheln in komplett durchsichtigen Texturbereichen entfernen"
+
+msgid "Create an Alternative Tile"
+msgstr "Kachelalternative erstellen"
+
+msgid "Create a Tile"
+msgstr "Kachel erstellen"
+
+msgid "Auto Create Tiles in Non-Transparent Texture Regions?"
+msgstr "Automatisch Kacheln in undurchsichtigen Texturbereichen erstellen?"
+
+msgid ""
+"The atlas's texture was modified.\n"
+"Would you like to automatically create tiles in the atlas?"
+msgstr ""
+"Die Textur des Atlas' wurde verändert.\n"
+"Sollen automatisch Kacheln im Atlas erstellt werden?"
+
msgid "Yes"
msgstr "Ja"
+msgid "No"
+msgstr "Nein"
+
+msgid "Add a new atlas source"
+msgstr "Eine neue Atlasquelle hinzufügen"
+
+msgid "Remove source"
+msgstr "Quelle entfernen"
+
+msgid "Add atlas source"
+msgstr "Atlasquelle hinzufügen"
+
+msgid "Sort Sources"
+msgstr "Sortiere Quellen"
+
+msgid "Scenes Collection"
+msgstr "Szenensammlung"
+
+msgid "Manage Tile Proxies"
+msgstr "Kachel-Stellvertreter verwalten"
+
+msgid "No TileSet source selected. Select or create a TileSet source."
+msgstr ""
+"Keine TileSet-Quelle ausgewählt. Bitte eine TileSet-Quelle auswählen oder "
+"erstellen."
+
+msgid "Add new patterns in the TileMap editing mode."
+msgstr "Neue Muster im TileMap-Bearbeitungsmodus hinzufügen."
+
+msgid "Add a Scene Tile"
+msgstr "Szenenkachel hinzufügen"
+
+msgid "Remove a Scene Tile"
+msgstr "Szenenkachel entfernen"
+
+msgid "Scenes collection properties:"
+msgstr "Eigenschaften der Szenensammlung:"
+
+msgid "Tile properties:"
+msgstr "Kacheleigenschaften:"
+
msgid "TileSet"
msgstr "Kachelsatz"
+msgid "TileMap"
+msgstr "TileMap"
+
+msgid ""
+"No VCS plugins are available in the project. Install a VCS plugin to use VCS "
+"integration features."
+msgstr ""
+"Kein VCS-Plugin im Projekt verfügbar. Um die VCS-Integration nutzen zu "
+"können muss eins installiert werden."
+
msgid "Error"
msgstr "Fehler"
@@ -6874,6 +10337,12 @@ msgstr ""
msgid "Commit"
msgstr "Speicherpunkt"
+msgid "Open in editor"
+msgstr "Im Editor öffnen"
+
+msgid "Discard changes"
+msgstr "Alle Änderungen verwerfen"
+
msgid "Staged Changes"
msgstr "Vorgemerkte Änderungen"
@@ -6895,9 +10364,24 @@ msgstr "Soll Zweig %s wirklich entfernt werden?"
msgid "Do you want to remove the %s remote?"
msgstr "Soll die Remote %s wirklich entfernt werden?"
+msgid "Create VCS metadata files for:"
+msgstr "Dateien mit VCS Metadaten erstellen für:"
+
+msgid "Existing VCS metadata files will be overwritten."
+msgstr "Bestehende Dateien mit VCS Metadaten werden überschrieben."
+
+msgid "Local Settings"
+msgstr "Lokale Einstellungen"
+
msgid "Apply"
msgstr "Anwenden"
+msgid "VCS Provider"
+msgstr "VCS Anbieter"
+
+msgid "Connect to VCS"
+msgstr "Mit VCS verbinden"
+
msgid "Remote Login"
msgstr "Remote-Logininformationen"
@@ -6928,6 +10412,14 @@ msgstr "Neue Veränderungen beachten"
msgid "Discard all changes"
msgstr "Alle Änderungen verwerfen"
+msgid "This operation is IRREVERSIBLE. Your changes will be deleted FOREVER."
+msgstr ""
+"Diese Operation ist NICHT UMKEHRBAR. Diese Änderungen werden FÜR IMMER "
+"verloren sein."
+
+msgid "Permanentally delete my changes"
+msgstr "Diese Änderungen dauerhaft löschen"
+
msgid "Stage all changes"
msgstr "Alle Änderungen vormerken"
@@ -7000,6 +10492,11 @@ msgstr "Dateitypänderung"
msgid "Unmerged"
msgstr "Nicht zusammengeführt"
+msgid "View file diffs before committing them to the latest version"
+msgstr ""
+"Dateiunterschiede ansehen, bevor sie in die aktuelle Version übernommen "
+"werden"
+
msgid "View:"
msgstr "Ansicht:"
@@ -7039,12 +10536,33 @@ msgstr "Eingang hinzufügen"
msgid "Add Output"
msgstr "Ausgang hinzufügen"
+msgid "Float"
+msgstr "Float"
+
+msgid "Int"
+msgstr "Int"
+
+msgid "UInt"
+msgstr "UInt"
+
+msgid "Vector2"
+msgstr "Vektor2"
+
+msgid "Vector3"
+msgstr "Vektor3"
+
+msgid "Vector4"
+msgstr "Vektor4"
+
msgid "Boolean"
msgstr "Boolean"
msgid "Sampler"
msgstr "Abtaster"
+msgid "[default]"
+msgstr "[Standard]"
+
msgid "Add Input Port"
msgstr "Eingangsschnittstelle hinzufügen"
@@ -7057,18 +10575,93 @@ msgstr "Eingangsschnittstelle entfernen"
msgid "Remove Output Port"
msgstr "Ausgangsschnittstelle entfernen"
+msgid "Set VisualShader Expression"
+msgstr "VisualShader-Ausdruck festlegen"
+
+msgid "Resize VisualShader Node"
+msgstr "VisualShader-Nodegröße anpassen"
+
+msgid "Set Comment Node Title"
+msgstr "Titel des Kommentar-Nodes festlegen"
+
+msgid "Set Comment Node Description"
+msgstr "Beschreibung des Kommentarnodes festlegen"
+
+msgid "Set Parameter Name"
+msgstr "Parametername festlegen"
+
msgid "Set Input Default Port"
msgstr "Eingabestandardport festlegen"
msgid "Add Node to Visual Shader"
msgstr "Visual Shader-Node hinzufügen"
+msgid "Add Varying to Visual Shader: %s"
+msgstr "Varying zu Visual Shader hinzufügen: %s"
+
+msgid "Remove Varying from Visual Shader: %s"
+msgstr "Varying vom Visual Shader entfernen: %s"
+
msgid "Node(s) Moved"
msgstr "Node(s) verschoben"
+msgid "Convert Constant Node(s) To Parameter(s)"
+msgstr "Konstanten-Node(s) in Parameter umwandlen"
+
+msgid "Convert Parameter Node(s) To Constant(s)"
+msgstr "Parameter-Node(s) in Konstante(n) umwandeln"
+
+msgid "Delete VisualShader Node"
+msgstr "VisualShader-Node löschen"
+
+msgid "Delete VisualShader Node(s)"
+msgstr "VisualShader-Node(s) löschen"
+
+msgid "Float Constants"
+msgstr "Float Konstanten"
+
+msgid "Convert Constant(s) to Parameter(s)"
+msgstr "Konstante(n) in Parameter umwandeln"
+
+msgid "Convert Parameter(s) to Constant(s)"
+msgstr "Parameter in Konstante(n) umwandlen"
+
+msgid "Set Comment Title"
+msgstr "Kommentartitel festlegen"
+
+msgid "Set Comment Description"
+msgstr "Kommentarbeschreibung festlegen"
+
+msgid "Duplicate VisualShader Node(s)"
+msgstr "VisualShader-Node(s) duplizieren"
+
+msgid "Paste VisualShader Node(s)"
+msgstr "VisualShader-Node(s) einfügen"
+
+msgid "Cut VisualShader Node(s)"
+msgstr "VisualShader-Node(s) ausschneiden"
+
msgid "Visual Shader Input Type Changed"
msgstr "Visual-Shader-Eingabetyp geändert"
+msgid "ParameterRef Name Changed"
+msgstr "ParameterRef-Name geändert"
+
+msgid "Varying Name Changed"
+msgstr "Varying-Name geändert"
+
+msgid "Set Constant: %s"
+msgstr "Konstante festlegen: %s"
+
+msgid "Invalid name for varying."
+msgstr "Ungültiger Name für Varying."
+
+msgid "Varying with that name is already exist."
+msgstr "Eine Varying mit dem Namen existiert bereits."
+
+msgid "Add Node(s) to Visual Shader"
+msgstr "Node(s) zum Visual Shader hinzufügen"
+
msgid "Vertex"
msgstr "Vertex"
@@ -7081,18 +10674,45 @@ msgstr "Licht"
msgid "Process"
msgstr "Verarbeiten"
+msgid "Collide"
+msgstr "Kollision"
+
msgid "Sky"
msgstr "Himmel"
msgid "Fog"
msgstr "Nebel"
+msgid "Manage Varyings"
+msgstr "Varyings verwalten"
+
+msgid "Add Varying"
+msgstr "Varying hinzufügen"
+
+msgid "Remove Varying"
+msgstr "Varying entfernen"
+
+msgid "Show generated shader code."
+msgstr "Resultierenden Shader-Code zeigen."
+
+msgid "Generated Shader Code"
+msgstr "Erzeugter Shader-Code"
+
msgid "Add Node"
msgstr "Node hinzufügen"
+msgid "Clear Copy Buffer"
+msgstr "Kopierpuffer leeren"
+
msgid "Create Shader Node"
msgstr "Shader-Node erzeugen"
+msgid "Create Shader Varying"
+msgstr "Shader-Varying erzeugen"
+
+msgid "Delete Shader Varying"
+msgstr "Shader-Varying löschen"
+
msgid "Color function."
msgstr "Farbfunktion."
@@ -7141,6 +10761,9 @@ msgstr "Weichlicht-Operator."
msgid "Color constant."
msgstr "Farbkonstante."
+msgid "Color parameter."
+msgstr "Farbparameter."
+
msgid "Returns the boolean result of the %s comparison between two parameters."
msgstr "Gibt den Wahrheitswert des %s-Vergleiches der beiden Parameter zurück."
@@ -7183,6 +10806,47 @@ msgstr "Kleiner gleich (<=)"
msgid "Not Equal (!=)"
msgstr "Ungleich (!=)"
+msgid ""
+"Returns an associated 3D vector if the provided boolean value is true or "
+"false."
+msgstr ""
+"Gibt den jeweiligen 3D-Vektor zurück je nach dem ob der übergebene Wert wahr "
+"oder falsch ist."
+
+msgid ""
+"Returns an associated 2D vector if the provided boolean value is true or "
+"false."
+msgstr ""
+"Gibt jeweiligen 2D-Vektor zurück je nach dem ob der übergebene Wert wahr "
+"oder falsch ist."
+
+msgid ""
+"Returns an associated boolean if the provided boolean value is true or false."
+msgstr ""
+"Gibt den jeweiligen Boolean zurück je nach dem ob der übergebene Wert wahr "
+"oder falsch ist."
+
+msgid ""
+"Returns an associated floating-point scalar if the provided boolean value is "
+"true or false."
+msgstr ""
+"Gibt den jeweiligen Float-Skalar zurück je nach dem ob der übergebene Wert "
+"wahr oder falsch ist."
+
+msgid ""
+"Returns an associated integer scalar if the provided boolean value is true "
+"or false."
+msgstr ""
+"Gibt den jeweiligen Ganzzahl-Skalar zurück je nach dem ob der übergebene "
+"Wert wahr oder falsch ist."
+
+msgid ""
+"Returns an associated unsigned integer scalar if the provided boolean value "
+"is true or false."
+msgstr ""
+"Gibt den jeweiligen vorzeichenlosen Ganzzahl-Skalar zurück je nach dem ob "
+"der übergebene Wert wahr oder falsch ist."
+
msgid "Returns the boolean result of the comparison between two parameters."
msgstr "Gibt den Wahrheitswert des Vergleiches zweier Parameter zurück."
@@ -7196,6 +10860,9 @@ msgstr ""
msgid "Boolean constant."
msgstr "Boolean-Konstante."
+msgid "Boolean parameter."
+msgstr "Boolean-Parameter."
+
msgid "'%s' input parameter for all shader modes."
msgstr "‚%s‘-Eingabeparameter für alle Shadermodi."
@@ -7211,12 +10878,48 @@ msgstr "‚%s‘-Eingabeparameter für Fragment- und Light-Shadermodus."
msgid "'%s' input parameter for fragment shader mode."
msgstr "‚%s‘-Eingabeparameter für Fragment-Shadermodus."
+msgid "'%s' input parameter for sky shader mode."
+msgstr "‚%s‘-Eingabeparameter für den Himmel-Shadermodus."
+
+msgid "'%s' input parameter for fog shader mode."
+msgstr "‚%s‘-Eingabeparameter für Nebel-Shadermodus."
+
msgid "'%s' input parameter for light shader mode."
msgstr "‚%s‘-Eingabeparameter für Light-Shadermodus."
msgid "'%s' input parameter for vertex shader mode."
msgstr "‚%s‘-Eingabeparameter für Vertex-Shadermodus."
+msgid "'%s' input parameter for start shader mode."
+msgstr "‚%s‘-Eingabeparameter für Start-Shadermodus."
+
+msgid "'%s' input parameter for process shader mode."
+msgstr "‚%s‘-Eingabeparameter für Prozess-Shadermodus."
+
+msgid "'%s' input parameter for start and process shader modes."
+msgstr "‚%s‘-Eingabeparameter für Start- und Prozess-Shadermodus."
+
+msgid "'%s' input parameter for process and collide shader modes."
+msgstr "‚%s‘-Eingabeparameter für Prozess- und Kollision-Shadermodus."
+
+msgid "Float function."
+msgstr "Float-Funktion."
+
+msgid "Float operator."
+msgstr "Float-Operator."
+
+msgid "Integer function."
+msgstr "Ganzzahlfunktion."
+
+msgid "Integer operator."
+msgstr "Ganzzahloperator."
+
+msgid "Unsigned integer function."
+msgstr "Vorzeichenlose Ganzzahlfunktion."
+
+msgid "Unsigned integer operator."
+msgstr "Vorzeichenloser Ganzzahloperator."
+
msgid "Returns the absolute value of the parameter."
msgstr "Gibt den absoluten Betrag des Parameters zurück."
@@ -7241,6 +10944,10 @@ msgstr "Gibt den Arkuskosinus2 der Parameter zurück."
msgid "Returns the inverse hyperbolic tangent of the parameter."
msgstr "Gibt den inversen hyperbolischen Tangens des Parameters zurück."
+msgid "Returns the result of bitwise NOT (~a) operation on the integer."
+msgstr ""
+"Gibt das Ergebnis der bitweisen NICHT (~a) Operation für die Ganzzahl zurück."
+
msgid ""
"Finds the nearest integer that is greater than or equal to the parameter."
msgstr "Gibt die nächste Ganzzahl größer gleich dem Parameters zurück."
@@ -7376,12 +11083,98 @@ msgstr "Gibt den hyperbolischen Tangens des Parameters zurück."
msgid "Finds the truncated value of the parameter."
msgstr "Gibt den abgeschnittenen Wert des Parameters zurück."
+msgid "Sums two integer scalars."
+msgstr "Summiert zwei Ganzzahl-Skalare."
+
+msgid "Returns the result of bitwise AND (a & b) operation for two integers."
+msgstr ""
+"Gibt das Ergebnis der bitweisen UND (a & b) Operation für zwei Ganzzahlen "
+"zurück."
+
+msgid "Returns the result of bitwise OR (a | b) operation for two integers."
+msgstr ""
+"Gibt das Ergebnis der bitweisen ODER (a | b) Operation für zwei Ganzzahlen "
+"zurück."
+
+msgid "Divides two floating-point scalars."
+msgstr "Teilt zwei Gleitkomma-Skalare."
+
+msgid "Divides two integer scalars."
+msgstr "Teilt zwei Ganzzahl-Skalare."
+
+msgid "Multiplies two floating-point scalars."
+msgstr "Multipliziert zwei Gleitkomma-Skalare."
+
+msgid "Multiplies two integer scalars."
+msgstr "Multipliziert zwei Ganzzahl-Skalare."
+
+msgid "Multiplies two unsigned integer scalars."
+msgstr "Multipliziert zwei vorzeichenlose Ganzzahl-Skalare."
+
+msgid "Returns the remainder of the two floating-point scalars."
+msgstr "Gibt den Rest der Division zweier Gleitkomma-Skalare zurück."
+
+msgid "Returns the remainder of the two integer scalars."
+msgstr "Gibt den Rest der Division zweier Ganzzahl-Skalare zurück."
+
+msgid "Returns the remainder of the two unsigned integer scalars."
+msgstr ""
+"Gibt den Rest der Division zweier vorzeichenloser Ganzzahl-Skalare zurück."
+
+msgid "Subtracts two floating-point scalars."
+msgstr "Subtrahiert einen Gleitkomma-Skalar von einen anderem."
+
+msgid "Subtracts two integer scalars."
+msgstr "Subtrahiert einen Ganzzahl-Skalar von einen anderem."
+
+msgid "Subtracts two unsigned integer scalars."
+msgstr "Subtrahiert einen vorzeichenlosen Ganzzahl-Skalar von einen anderem."
+
+msgid "Scalar floating-point constant."
+msgstr "Skalare Gleitkommakonstante."
+
+msgid "Scalar integer constant."
+msgstr "Skalare Ganzzahlkonstante."
+
+msgid "Scalar unsigned integer constant."
+msgstr "Skalare vorzeichenlose Ganzzahlkonstante."
+
+msgid "Scalar integer parameter."
+msgstr "Skalarer Ganzzahlparameter."
+
+msgid "Converts screen UV to a SDF."
+msgstr "Konvertiert Bildschirm-UV zu SDF."
+
+msgid "Performs a SDF texture lookup."
+msgstr "Führt ein Nachschlagen in der SDF-Textur durch."
+
+msgid "Performs a SDF normal texture lookup."
+msgstr "Führt ein Nachschlagen in der SDF-Normalentextur durch."
+
msgid "Perform the cubic texture lookup."
-msgstr "Kubisches Texturfinden ausführen."
+msgstr "Führt ein Nachschlagen in der kubischen Textur durch."
+
+msgid "Perform the curve texture lookup."
+msgstr "Führt ein Nachschlagen in der Kurventextur durch."
+
+msgid "Perform the three components curve texture lookup."
+msgstr "Führt ein Drei-Komponenten-Nachschlagen in der kubischen Textur durch."
+
+msgid "Perform the 2D texture lookup."
+msgstr "Führt ein Nachschlagen in der 2D-Textur durch."
+
+msgid "Perform the 2D-array texture lookup."
+msgstr "Führt ein Nachschlagen in der 2D-Array-Textur durch."
+
+msgid "Perform the 3D texture lookup."
+msgstr "Führt ein Nachschlagen in der 3D-Textur durch."
msgid "Transform function."
msgstr "Transformierungsfunktion."
+msgid "Transform operator."
+msgstr "Transformierungsoperator."
+
msgid ""
"Calculate the outer product of a pair of vectors.\n"
"\n"
@@ -7414,18 +11207,57 @@ msgstr "Invertiert ein Transform."
msgid "Calculates the transpose of a transform."
msgstr "Transponiert ein Transform."
+msgid "Sums two transforms."
+msgstr "Addiert zwei Transform."
+
+msgid "Divides two transforms."
+msgstr "Teilt ein Transform durch ein anderes."
+
+msgid "Multiplies two transforms."
+msgstr "Multipliziert zwei Transform."
+
+msgid "Subtracts two transforms."
+msgstr "Subtrahiert ein Transform von einem anderen."
+
msgid "Multiplies vector by transform."
msgstr "Multipliziert Vektor mit Transform."
msgid "Transform constant."
msgstr "Transformkonstante."
+msgid "Transform parameter."
+msgstr "Transform-Parameter."
+
msgid "Vector function."
msgstr "Vektorfunktion."
msgid "Vector operator."
msgstr "Vektoroperator."
+msgid "Composes vector from scalars."
+msgstr "Formt Vektor aus Skalaren."
+
+msgid "Decomposes vector to scalars."
+msgstr "Teilt Vektor in Skalare auf."
+
+msgid "Composes 2D vector from two scalars."
+msgstr "Formt 2D-Vektor aus zwei Skalaren."
+
+msgid "Decomposes 2D vector to two scalars."
+msgstr "Teilt 2D-Vector in zwei Skalare auf."
+
+msgid "Composes 3D vector from three scalars."
+msgstr "Formt 3D-Vektor aus drei Skalaren."
+
+msgid "Decomposes 3D vector to three scalars."
+msgstr "Teilt 3D-Vector in drei Skalare auf."
+
+msgid "Composes 4D vector from four scalars."
+msgstr "Formt 4D-Vektor aus vier Skalaren."
+
+msgid "Decomposes 4D vector to four scalars."
+msgstr "Teilt 4D-Vektor in vier Skalare auf."
+
msgid "Calculates the cross product of two vectors."
msgstr "Berechnet das Kreuzprodukt zweier Vektoren."
@@ -7546,6 +11378,69 @@ msgstr ""
"(nur für Fragment-/Light-Modus) (Vektor) Summe der absoluten Ableitungen in "
"‚x‘- und ‚y‘-Richtung."
+msgid "Adds 2D vector to 2D vector."
+msgstr "Addiert 2D-Vektor mit 2D-Vektor."
+
+msgid "Adds 3D vector to 3D vector."
+msgstr "Addiert 3D-Vektor mit 3D-Vektor."
+
+msgid "Adds 4D vector to 4D vector."
+msgstr "Addiert 4D-Vektor mit 4D-Vektor."
+
+msgid "Divides 2D vector by 2D vector."
+msgstr "Teilt 2D-Vektor durch 2D-Vektor."
+
+msgid "Divides 3D vector by 3D vector."
+msgstr "Teilt 3D-Vektor durch 3D-Vektor."
+
+msgid "Divides 4D vector by 4D vector."
+msgstr "Teilt 4D-Vektor durch 4D-Vektor."
+
+msgid "Multiplies 2D vector by 2D vector."
+msgstr "Multipliziert 2D-Vektor mit 2D-Vektor."
+
+msgid "Multiplies 3D vector by 3D vector."
+msgstr "Multipliziert 3D-Vektor mit 3D-Vektor."
+
+msgid "Multiplies 4D vector by 4D vector."
+msgstr "Multipliziert 4D-Vektor mit 4D-Vektor."
+
+msgid "Returns the remainder of the two 2D vectors."
+msgstr "Gibt den Rest der Division zweier 2D-Vektoren zurück."
+
+msgid "Returns the remainder of the two 3D vectors."
+msgstr "Gibt den Rest der Division zweier 3D-Vektoren zurück."
+
+msgid "Returns the remainder of the two 4D vectors."
+msgstr "Gibt den Rest der Division zweier 4D-Vektoren zurück."
+
+msgid "Subtracts 2D vector from 2D vector."
+msgstr "Subtrahiert 2D-Vektor von 2D-Vektor."
+
+msgid "Subtracts 3D vector from 3D vector."
+msgstr "Subtrahiert 3D-Vektor von 3D-Vektor."
+
+msgid "Subtracts 4D vector from 4D vector."
+msgstr "Subtrahiert 4D-Vektor von 4D-Vektor."
+
+msgid "2D vector constant."
+msgstr "2D-Vektorkonstante."
+
+msgid "2D vector parameter."
+msgstr "2D-Vektorparameter."
+
+msgid "3D vector constant."
+msgstr "3D-Vektorkonstante."
+
+msgid "3D vector parameter."
+msgstr "3D-Vektorparameter."
+
+msgid "4D vector constant."
+msgstr "4D-Vektorkonstante."
+
+msgid "4D vector parameter."
+msgstr "4D-Vektorparameter."
+
msgid ""
"Custom Godot Shader Language expression, with custom amount of input and "
"output ports. This is a direct injection of code into the vertex/fragment/"
@@ -7556,12 +11451,39 @@ msgstr ""
"Fragment- oder Light-Funktion kopiert, Funktionsdeklarationen können hier "
"nicht verwendet werden."
+msgid ""
+"Custom Godot Shader Language expression, which is placed on top of the "
+"resulted shader. You can place various function definitions inside and call "
+"it later in the Expressions. You can also declare varyings, parameters and "
+"constants."
+msgstr ""
+"Selbst-erstellter Ausdruck in der Godot-Shader-Sprache, welcher auf dem "
+"resultierten Shader platziert wird. Hier können beliebige "
+"Funktionsdefinitionen eingefügt werden, die dann in späteren Ausdrücken "
+"verwendet werden können. Das gleiche gilt für Varyings, Parameter und "
+"Konstanten."
+
+msgid "A reference to an existing parameter."
+msgstr "Eine Referenz auf einen existierenden Parameter."
+
+msgid "Get varying parameter."
+msgstr "Varying-Parameter abrufen."
+
+msgid "Set varying parameter."
+msgstr "Varying-Parameter festlegen."
+
msgid "Edit Visual Property:"
msgstr "Visuelle Eigenschaft bearbeiten:"
msgid "Visual Shader Mode Changed"
msgstr "Visual-Shader-Modus geändert"
+msgid "Bake VoxelGI"
+msgstr "VoxelGI backen"
+
+msgid "Select path for VoxelGI Data File"
+msgstr "Pfad für die VoxelGI-Datendatei auswählen"
+
msgid "The path specified doesn't exist."
msgstr "Der angegebene Pfad existiert nicht."
@@ -7612,8 +11534,26 @@ msgstr ""
msgid "Couldn't save project at '%s' (error %d)."
msgstr "Projekt konnte nicht in ‚%s‘ gespeichert werden (Fehler %d)."
+msgid "Warning: This folder is not empty"
+msgstr "Achtung: Dieser Ordner ist nicht leer"
+
+msgid ""
+"You are about to create a Godot project in a non-empty folder.\n"
+"The entire contents of this folder will be imported as project resources!\n"
+"\n"
+"Are you sure you wish to continue?"
+msgstr ""
+"Es wurde ausgewählt ein neues Godot-Projekt in einem nicht-leeren Ordner zu "
+"erstellen.\n"
+"Demnach werden alle Inhalte des Ordners als Projekt-Ressourcen importiert!\n"
+"\n"
+"Soll entsprechend fortgefahren werden?"
+
msgid "Couldn't create project.godot in project path."
-msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
+msgstr "project.godot konnte nicht im Projektpfad erzeugt werden."
+
+msgid "Couldn't create icon.svg in project path."
+msgstr "icon.svg konnte im Projektpfad nicht erzeugt werden."
msgid "Error opening package file, not in ZIP format."
msgstr "Fehler beim Öffnen der Paketdatei, kein ZIP-Format."
@@ -7657,6 +11597,17 @@ msgstr "Projektinstallationspfad:"
msgid "Renderer:"
msgstr "Renderer:"
+msgid "The renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+"Der Renderer kann auch später noch geändert werden, allerdings müssen dann "
+"möglicherweise manche Szenen angepasst werden."
+
+msgid "Version Control Metadata:"
+msgstr "Metadaten der Versionsverwaltung:"
+
+msgid "Git"
+msgstr "Git"
+
msgid "Missing Project"
msgstr "Fehlendes Projekt"
@@ -7676,6 +11627,160 @@ msgid "Can't open project at '%s'."
msgstr "Projekt in ‚%s‘ kann nicht geöffnet werden."
msgid ""
+"You requested to open %d projects in parallel. Do you confirm?\n"
+"Note that usual checks for engine version compatibility will be bypassed."
+msgstr ""
+"Anweisung eingegangen %d Projekte parallel zu öffnen. Bitte bestätigen.\n"
+"Bitte beachten dass die üblichen Engine-Versions-Kompatibilitätsprüfungen so "
+"umgangen werden."
+
+msgid ""
+"The selected project \"%s\" does not specify its supported Godot version in "
+"its configuration file (\"project.godot\").\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"If you proceed with opening it, it will be converted to Godot's current "
+"configuration file format.\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Das ausgewählte Projekt „%s“ hat in seiner Konfigurationsdatei („project."
+"godot“) nicht angegeben, welche Godot-Version es unterstützt.\n"
+"\n"
+"Projektpfad: %s\n"
+"\n"
+"Sollte das Öffnen fortgesetzt werden, wird die Datei in das "
+"Konfigurationsdateiformat der aktuellen Godot-Version umgewandelt.\n"
+"\n"
+"Achtung: Das Projekt kann nach der Konvertierung nicht mehr mit einer "
+"älteren Godot-Version geöffnet werden."
+
+msgid ""
+"The selected project \"%s\" was generated by Godot 3.x, and needs to be "
+"converted for Godot 4.x.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"You have three options:\n"
+"- Convert only the configuration file (\"project.godot\"). Use this to open "
+"the project without attempting to convert its scenes, resources and "
+"scripts.\n"
+"- Convert the entire project including its scenes, resources and scripts "
+"(recommended if you are upgrading).\n"
+"- Do nothing and go back.\n"
+"\n"
+"Warning: If you select a conversion option, you won't be able to open the "
+"project with previous versions of the engine anymore."
+msgstr ""
+"Das ausgewählte Projekt „%s“ wurde mit Godot 3.x erstellt und muss zu Godot "
+"4.x konvertiert werden.\n"
+"\n"
+"Projektpfad: %s\n"
+"\n"
+"Es gibt drei Entscheidungsmöglichkeiten:\n"
+"- Lediglich die Konfigurationsdatei („project.godot“) konvertieren. Dies ist "
+"hilfreich um das Projekt lediglich zu öffnen, ohne Szenen, Ressourcen oder "
+"Skripte zu konvertieren\n"
+"- Das gesamte Projekt inklusive Szenen, Ressourcen und Skripten "
+"konvertieren. Das wird empfohlen wenn mit der neuen Godot-Version "
+"weitergearbeitet werden soll\n"
+"- Nicht tun und zurückkehren\n"
+"\n"
+"Achtung: Falls eine der Konvertierungsmöglichkeiten ausgewählt wird, kann "
+"das Projekt nicht mehr mit älteren Godot-Versionen geöffnet werden."
+
+msgid "Convert project.godot Only"
+msgstr "Nur project.godot konvertieren"
+
+msgid ""
+"The selected project \"%s\" was generated by an older engine version, and "
+"needs to be converted for this version.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"Do you want to convert it?\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Das ausgewählte Projekt „%s“ ist mit einer älteren Godot-Version erstellt "
+"worden und muss für die aktuelle Version konvertiert werden.\n"
+"\n"
+"Projektpfad: %s\n"
+"\n"
+"Soll die Umwandlung vorgenommen werden?\n"
+"\n"
+"Achtung: Das Projekt kann nach der Umwandlung nicht mehr mit einer älteren "
+"Version geöffnet werden."
+
+msgid "Convert project.godot"
+msgstr "project.godot konvertieren"
+
+msgid ""
+"Can't open project \"%s\" at the following path:\n"
+"\n"
+"%s\n"
+"\n"
+"The project settings were created by a newer engine version, whose settings "
+"are not compatible with this version."
+msgstr ""
+"Projekt „%s“, aus folgendem Pfad, kann nicht geöffnet werden:\n"
+"\n"
+"%s\n"
+"\n"
+"Die Projekteinstellungen wurden mit einer neueren Godot-Version erstellt und "
+"sind nicht kompatibel mit der aktuell genutzten Version."
+
+msgid ""
+"Warning: This project uses double precision floats, but this version of\n"
+"Godot uses single precision floats. Opening this project may cause data "
+"loss.\n"
+"\n"
+msgstr ""
+"Achtung: Dieses Projekt verwendet doppeltgenaue Gleitkommazahlen, aber diese "
+"Version von Godot\n"
+"verwendet nur einfachgenaue Gleitkommazahlen. Öffnen des Projekts kann zu "
+"Datenverlust führen.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses C#, but this build of Godot does not have\n"
+"the Mono module. If you proceed you will not be able to use any C# scripts.\n"
+"\n"
+msgstr ""
+"Achtung: Dieses Projekt verwendet C#, aber diese Version von Godot "
+"beinhaltet kein\n"
+"Mono-Modul. Beim Fortfahren können keine C#-Skripte ausgeführt werden.\n"
+"\n"
+
+msgid ""
+"Warning: This project was built in Godot %s.\n"
+"Opening will upgrade or downgrade the project to Godot %s.\n"
+"\n"
+msgstr ""
+"Achtung: Diese Projekt wurde mit Godot %s erstellt.\n"
+"Öffnen des Projekts wird es zu Godot %s auf- bzw abstufen.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses the following features not supported by this "
+"build of Godot:\n"
+"\n"
+"%s\n"
+"\n"
+msgstr ""
+"Achtung: Dieses Projekt verwendet die folgenden Funktionen, welche von der "
+"gegenwärtigen Godot-Version nicht unterstützt werden:\n"
+"\n"
+"%s\n"
+"\n"
+
+msgid "Open anyway? Project will be modified."
+msgstr "Trotzdem öffnen? Das Projekt wird angepasst werden."
+
+msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
@@ -7728,6 +11833,9 @@ msgctxt "Application"
msgid "Project Manager"
msgstr "Projektverwaltung"
+msgid "Filter Projects"
+msgstr "Projekte filtern"
+
msgid ""
"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
@@ -7741,6 +11849,9 @@ msgstr ""
msgid "Loading, please wait..."
msgstr "Projekte werden geladen, bitte warten..."
+msgid "Last Edited"
+msgstr "Zuletzt bearbeitet"
+
msgid "New Project"
msgstr "Neues Projekt"
@@ -7788,6 +11899,9 @@ msgstr ""
"Sollen offizielle Beispielprojekte aus der Nutzerinhaltesammlung angezeigt "
"werden?"
+msgid "Add Project Setting"
+msgstr "Projekteinstellung hinzufügen"
+
msgid "Delete Item"
msgstr "Eintrag löschen"
@@ -7797,21 +11911,33 @@ msgstr "Füge Eingabeaktion hinzu"
msgid "Change Action deadzone"
msgstr "Nullschwelle der Aktion ändern"
+msgid "Change Input Action Event(s)"
+msgstr "Eingabeaktionsereignis(se) ändern"
+
msgid "Erase Input Action"
msgstr "Eingabeaktion löschen"
-msgid "Rename Input Action Event"
-msgstr "Eingabeaktionsereignis umbenennen"
+msgid "Update Input Action Order"
+msgstr "Reihenfolge der Eingabeaktionen aktualisieren"
msgid "Project Settings (project.godot)"
msgstr "Projekteinstellungen (project.godot)"
+msgid "Advanced Settings"
+msgstr "Erweiterte Einstellungen"
+
+msgid "Select a Setting or Type its Name"
+msgstr "Einstellung auswählen oder Namen eingeben"
+
msgid "Input Map"
msgstr "Eingabe-Zuordnung"
msgid "Localization"
msgstr "Lokalisierung"
+msgid "Shader Globals"
+msgstr "Globale Shader-Variablen"
+
msgid "Plugins"
msgstr "Erweiterungen"
@@ -7842,6 +11968,21 @@ msgstr "Erweiterte Einstellungen"
msgid "Substitute"
msgstr "Ersatz"
+msgid "Node name."
+msgstr "Node-Name."
+
+msgid "Node's parent name, if available."
+msgstr "Name des Eltern-Nodes, falls vorhanden."
+
+msgid "Node type."
+msgstr "Node-Typ."
+
+msgid "Current scene name."
+msgstr "Aktueller Szenenname."
+
+msgid "Root node name."
+msgstr "Name des Wurzel-Nodes."
+
msgid ""
"Sequential integer counter.\n"
"Compare counter options."
@@ -7856,9 +11997,15 @@ msgid "If set, the counter restarts for each group of child nodes."
msgstr ""
"Falls gesetzt, startet der Zähler für jede Gruppe aus Unterobjekten neu."
+msgid "Initial value for the counter."
+msgstr "Anfangswert für Zähler."
+
msgid "Step"
msgstr "Schritt"
+msgid "Amount by which counter is incremented for each node."
+msgstr "Wert um welchen der Zähler für jedes Node erhöht wird."
+
msgid "Padding"
msgstr "Versatz"
@@ -7902,12 +12049,39 @@ msgstr "Bei Zeichen %s"
msgid "Reparent Node"
msgstr "Node umhängen"
+msgid "Select new parent:"
+msgstr "Neues Elternteil auswählen:"
+
msgid "Keep Global Transform"
msgstr "Behalte globale Transformation"
msgid "Reparent"
msgstr "Umhängen"
+msgid "Pick Root Node Type"
+msgstr "Typ des Root-Nodes auswählen"
+
+msgid "Pick"
+msgstr "Auswählen"
+
+msgid "Scene name is valid."
+msgstr "Szenenname ist gültig."
+
+msgid "Scene name is empty."
+msgstr "Szenenname ist leer."
+
+msgid "File name invalid."
+msgstr "Dateiname ungültig."
+
+msgid "File already exists."
+msgstr "Datei existiert bereits."
+
+msgid "Invalid root node name."
+msgstr "Ungültiger Name des Wurzel-Nodes."
+
+msgid "Root Type:"
+msgstr "Wurzeltyp:"
+
msgid "2D Scene"
msgstr "2D-Szene"
@@ -7917,6 +12091,15 @@ msgstr "3D-Szene"
msgid "User Interface"
msgstr "Benutzerschnittstelle"
+msgid "Scene Name:"
+msgstr "Szenenname:"
+
+msgid "Root Name:"
+msgstr "Wurzelname:"
+
+msgid "Create New Scene"
+msgstr "Szene erstellen"
+
msgid "Error loading scene from %s"
msgstr "Fehler beim Laden der Szene von %s"
@@ -8173,6 +12356,16 @@ msgstr ""
"des Präfix ‚%s‘ im Node-Pfad, aufgerufen werden.\n"
"Zum deaktivieren, hier klicken."
+msgid "Node has one connection."
+msgid_plural "Node has {num} connections."
+msgstr[0] "Node hat eine Verbindung."
+msgstr[1] "Node hat {num} Verbindungen."
+
+msgid "Node is in this group:"
+msgid_plural "Node is in the following groups:"
+msgstr[0] "Node ist in dieser Gruppe:"
+msgstr[1] "Node ist in diesen Gruppen:"
+
msgid "Open Script:"
msgstr "Skript öffnen:"
@@ -8243,6 +12436,12 @@ msgstr "Skript öffnen / Ort wählen"
msgid "Open Script"
msgstr "Skript öffnen"
+msgid "Inherit %s"
+msgstr "Erbt von %s"
+
+msgid "Inherit"
+msgstr "Erbt von"
+
msgid "File exists, it will be reused."
msgstr "Datei existiert bereits, wird erneut verwendet."
@@ -8305,6 +12504,9 @@ msgstr "Ungültiger Basispfad."
msgid "Wrong extension chosen."
msgstr "Falsche Dateiendung ausgewählt."
+msgid "Mode:"
+msgstr "Modus:"
+
msgid "Change Cylinder Radius"
msgstr "Zylinderradius ändern"
@@ -8346,6 +12548,9 @@ msgstr "Ungültiges Instanz-Verzeichnisformat (ungültiges Skript in @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Ungültiges Instanz-Verzeichnisformat (ungültige Unterklasse)"
+msgid "Path to Blender installation is valid."
+msgstr "Pfad zu Blender ist gültig."
+
msgid "Next Plane"
msgstr "Nächste Ebene"
@@ -8466,6 +12671,14 @@ msgstr "Größe"
msgid "Network Profiler"
msgstr "Netzwerk-Profiler"
+msgid "Not possible to add a new property to synchronize without a root."
+msgstr ""
+"Ohne eine Wurzel kann keine neue Eigenschaft zum Synchronisieren hinzugefügt "
+"werden."
+
+msgid "Delete Property?"
+msgstr "Eigenschaft löschen?"
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
"Damit dieser Node funktionieren kann, muss eine NavigationMesh Ressource "
@@ -8516,6 +12729,9 @@ msgstr "Parse Geometrie…"
msgid "Done!"
msgstr "Abgeschlossen!"
+msgid "Error loading %s: %s."
+msgstr "Fehler beim Laden von %s: %s."
+
msgid "Pose"
msgstr "Stellung kopieren"
@@ -8683,6 +12899,13 @@ msgstr "Apksigner-Anwendung konnte nicht gestartet werden."
msgid "'apksigner' returned with error #%d"
msgstr "‚apksigner‘ gab Fehlercode #%d zurück"
+msgid ""
+"output: \n"
+"%s"
+msgstr ""
+"Ausgabe: \n"
+"%s"
+
msgid "Verifying %s..."
msgstr "Verifiziere %s…"
@@ -8814,6 +13037,9 @@ msgstr ""
msgid "Executable \"pck\" section not found."
msgstr "„pck“-Sektor von ausführbarer Datei nicht gefunden."
+msgid "Could not create temp directory:"
+msgstr "Temporäres Verzeichnis konnte nicht erstellt werden:"
+
msgid "Can't get filesystem access."
msgstr "Dateisystemzugriff fehlgeschlagen."
@@ -9300,6 +13526,13 @@ msgstr ""
"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes "
"gesetzt wird."
+msgid ""
+"A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a "
+"parent node!"
+msgstr ""
+"Ein PhysicalBone2D kann nur zusammen mit einem Skeleton2D oder einem anderen "
+"PhysicalBone2D als Eltern-Objekt funktionieren!"
+
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
"Die Pfad-Eigenschaft muss auf ein gültiges Node2D-Node zeigen, um zu "
@@ -9319,6 +13552,36 @@ msgstr ""
"Dieser Knochen hat keine korrekte Ruhe-Pose. Diese kann am Skeleton2D-Node "
"festgelegt werden."
+msgid "An empty CollisionPolygon3D has no effect on collision."
+msgstr "Ein leeres CollisionPolygon3D hat keinen Effekt auf Kollisionen."
+
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D liefert nur eine Kollisionsform für einen von "
+"CollisionObject3D abgeleiteten Node. Es kann nur als Unterobjekt von Area3D, "
+"StaticBody3D, RigidBody3D, CharacterBody3D usw. eingehängt werden, um diesen "
+"eine Form zu geben."
+
+msgid ""
+"A shape must be provided for CollisionShape3D to function. Please create a "
+"shape resource for it."
+msgstr ""
+"Zum Funktionieren eines CollisionShape3D benötigt es eine zugeordnete Form. "
+"Zum Fortfahren ist eine Shape-Ressource dafür zu erzeugen."
+
+msgid ""
+"ConcavePolygonShape3D doesn't support RigidBody3D in another mode than "
+"static."
+msgstr "ConcavePolygonShape3D unterstützt RigidBody3D nur im Modus Statisch."
+
+msgid ""
+"WorldBoundaryShape3D doesn't support RigidBody3D in another mode than static."
+msgstr "WorldBoundaryShape3D unterstützt RigidBody3D nur im Modus Statisch."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "Nichts ist sichtbar da kein Mesh zugewiesen wurden."
@@ -9327,6 +13590,109 @@ msgid ""
msgstr ""
"Nichts ist sichtbar da keine Meshe den Zeichendurchläufen zugewiesen wurden."
+msgid "Node A and Node B must be PhysicsBody3Ds"
+msgstr "Node A und Node B müssen PhysicsBody3D-Nodes sein"
+
+msgid "Node A must be a PhysicsBody3D"
+msgstr "Node A muss ein PhysicsBody3D-Node sein"
+
+msgid "Node B must be a PhysicsBody3D"
+msgstr "Node B muss ein PhysicsBody3D-Node sein"
+
+msgid "Joint is not connected to any PhysicsBody3Ds"
+msgstr "Gelenk ist nicht mit einem PhysicsBody3D-Node verbunden"
+
+msgid "Node A and Node B must be different PhysicsBody3Ds"
+msgstr "Node A und Node B müssen unterschiedliche PhysicsBody3D-Nodes sein"
+
+msgid "A SpotLight3D with an angle wider than 90 degrees cannot cast shadows."
+msgstr ""
+"Ein SpotLight3D mit einem Winkel von mehr als 90 Grad kann keine Schatten "
+"werfen."
+
+msgid "Finding meshes, lights and probes"
+msgstr "Am Suchen nach Meshes, Lichtern und Messungen"
+
+msgid "Preparing geometry %d/%d"
+msgstr "Am Vorbereiten der Geometrie %d/%d"
+
+msgid "Creating probes"
+msgstr "Erstelle Messungen"
+
+msgid "Preparing Lightmapper"
+msgstr "Am Vorbereiten der Beleuchtung"
+
+msgid "Preparing Environment"
+msgstr "Am Vorbereiten der Umgebung"
+
+msgid "Generating Probe Volumes"
+msgstr "Generiere Messungsvolumen"
+
+msgid "Generating Probe Acceleration Structures"
+msgstr "Generiere Messungs-Beschleunigungsstruktur"
+
+msgid ""
+"The NavigationAgent3D can be used only under a Node3D inheriting parent node."
+msgstr ""
+"NavigationAgent3D kann nur unter einem von Node3D erbenden übergeordneten "
+"Node genutzt werden."
+
+msgid ""
+"NavigationLink3D start position should be different than the end position to "
+"be useful."
+msgstr ""
+"Die Startposition von NavigationLink3D sollte sich von der Endposition "
+"unterscheiden, um einen Effekt zu haben."
+
+msgid ""
+"The NavigationObstacle3D only serves to provide collision avoidance to a "
+"Node3D inheriting parent object."
+msgstr ""
+"Der einzige Zweck eines NavigationObstacle3D ist es, Kollisionsvermeidung "
+"für ein von Node3D erbendes übergeordnetes Node bereitzustellen."
+
+msgid "PathFollow3D only works when set as a child of a Path3D node."
+msgstr ""
+"PathFollow3D funktioniert nur, wenn es als Unterobjekt eines Path3D-Nodes "
+"gesetzt wird."
+
+msgid ""
+"PathFollow3D's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
+"parent Path3D's Curve resource."
+msgstr ""
+"PathFollow3D mit aktiviertem ROTATION_ORIENTED erfordert die Aktivierung von "
+"„Up Vector“ in der Curve-Ressource des übergeordneten Pfades."
+
+msgid ""
+"Scale changes to RigidBody3D will be overridden by the physics engine when "
+"running.\n"
+"Please change the size in children collision shapes instead."
+msgstr ""
+"Größenänderungen an RigidBody3D werden von der Physikengine überschrieben "
+"wenn sie läuft.\n"
+"Die Größe der entsprechenden Kollisionsformen der Unterobjekte sollte "
+"stattdessen geändert werden."
+
+msgid ""
+"The \"Remote Path\" property must point to a valid Node3D or Node3D-derived "
+"node to work."
+msgstr ""
+"Die „Remote Path“-Eigenschaft muss auf ein gültiges Node3D oder ein von "
+"Node3D abgeleitetes Node verweisen."
+
+msgid ""
+"This node cannot interact with other objects unless a Shape3D is assigned."
+msgstr ""
+"Das Node kann nicht mit anderen Objekten interagieren, solange kein Shape3D "
+"zugewiesen wurde."
+
+msgid ""
+"ShapeCast3D does not support ConcavePolygonShape3Ds. Collisions will not be "
+"reported."
+msgstr ""
+"ShapeCast3D unterstützt keine ConcavePolygonShape3Ds. Es werden keine "
+"Kollisionen gemeldet."
+
msgid "This body will be ignored until you set a mesh."
msgstr "Diese Körper wird ignoriert werden bis ein Mesh zugewiesen wurde."
@@ -9337,12 +13703,68 @@ msgstr ""
"Eine SpriteFrames-Ressource muss in der „Frames“-Eigenschaft erzeugt oder "
"gesetzt werden, damit AnimatedSprite3D Einzelbilder anzeigen kann."
+msgid ""
+"VehicleWheel3D serves to provide a wheel system to a VehicleBody3D. Please "
+"use it as a child of a VehicleBody3D."
+msgstr ""
+"VehicleWheel3D ist verfügbar um mit VehicleBody3D ein Rädersystem zu "
+"implementieren. Es sollte ausschließlich als Unterobjekt von VehicleBody3D "
+"verwendet werden."
+
msgid "Plotting Meshes"
msgstr "Plotte Mesh"
msgid "Finishing Plot"
msgstr "Stelle Plot fertig"
+msgid "Generating Distance Field"
+msgstr "Generiere Distanzfeld"
+
+msgid ""
+"VoxelGIs are not supported by the OpenGL video driver.\n"
+"Use a LightmapGI instead."
+msgstr ""
+"VoxelGIs werden vom OpenGL-Videotreiber nicht unterstützt.\n"
+"LightmapGI kann stattdessen verwendet werden."
+
+msgid ""
+"To have any visible effect, WorldEnvironment requires its \"Environment\" "
+"property to contain an Environment, its \"Camera Attributes\" property to "
+"contain a CameraAttributes resource, or both."
+msgstr ""
+"WorldEnvironment erfordert entweder eine Environment-Ressource in seiner "
+"„Umgebung“-Eigenschaft oder eine CameraAttributes-Ressource in seiner "
+"„Kameraattribute“-Eigenschaft, oder beides, um zu funktionieren."
+
+msgid ""
+"Only one WorldEnvironment is allowed per scene (or set of instantiated "
+"scenes)."
+msgstr ""
+"Pro Szene (oder einem Satz von instantiierten Szenen) ist nur ein einziges "
+"WorldEnvironment erlaubt."
+
+msgid "XRCamera3D must have an XROrigin3D node as its parent."
+msgstr "XRCamera3D braucht ein XROrigin3D-Node als Ãœberobjekt."
+
+msgid "XRController3D must have an XROrigin3D node as its parent."
+msgstr "XRController3D braucht ein XROrigin3D-Node als Ãœberobjekt."
+
+msgid "No tracker name is set."
+msgstr "Es wurde kein Verfolgername festgelegt."
+
+msgid "No pose is set."
+msgstr "Es wurde keine Pose festgelegt."
+
+msgid "XROrigin3D requires an XRCamera3D child node."
+msgstr "XROrigin3D benötigt ein XRCamera3D-Unterobjekt."
+
+msgid ""
+"XR is not enabled in rendering project settings. Stereoscopic output is not "
+"supported unless this is enabled."
+msgstr ""
+"XR ist in den Projekteinstellungen nicht aktiviert. Stereoskopische Ausgabe "
+"wird daher nicht unterstützt."
+
msgid "On BlendTree node '%s', animation not found: '%s'"
msgstr "In BlendTree-Node ‚%s‘, Animation nicht gefunden: ‚%s‘"
@@ -9383,8 +13805,18 @@ msgstr ""
"LMT: Farbe anwenden\n"
"RMT: Voreinstellung entfernen"
-msgid "Pick a color from the editor window."
-msgstr "Eine Farbe innerhalb des Editorfensters auswählen."
+msgid ""
+"Color: #%s\n"
+"LMB: Apply color"
+msgstr ""
+"Farbe: #%s\n"
+"LMT: Farbe anwenden"
+
+msgid "Select a picker shape."
+msgstr "Auswahlform wählen."
+
+msgid "Select a picker mode."
+msgstr "Auswahlmodus wählen."
msgid "Switch between hexadecimal and code values."
msgstr "Wechselt zwischen Hexadezimal- und Zahlenwerten."
@@ -9414,8 +13846,8 @@ msgid ""
"Changing the Z index of a control only affects the drawing order, not the "
"input event handling order."
msgstr ""
-"Änderungen des Z-Index beeinflussen nur die Reihenfolge der Darstellung, "
-"nicht die Reihenfolge der Eingabeverarbeitung."
+"Ändern des Z-Index eines Controls beeinflusst nur die Priorität der "
+"Darstellung, nicht aber die Reihenfolge der Eingabeverarbeitung."
msgid "Theme Overrides"
msgstr "Themen-Ãœberschreibungen"
@@ -9429,12 +13861,24 @@ msgstr "Bitte bestätigen..."
msgid "You don't have permission to access contents of this folder."
msgstr "Keine Berechtigung um auf den Inhalt des Ordners zuzugreifen."
-msgid "Must use a valid extension."
-msgstr "Eine gültige Datei-Endung muss verwendet werden."
+msgid "All Files"
+msgstr "Alle Dateien"
+
+msgid ""
+"Please be aware that GraphEdit and GraphNode will undergo extensive "
+"refactoring in a future 4.x version involving compatibility-breaking API "
+"changes."
+msgstr ""
+"Bitte beachten, dass GraphEdit und GraphNode starker Restrukturierung in "
+"einer zukünftigen 4.x Version unterzogen werden, was "
+"kompatibilitätsbrechende Änderungen der API mit sich bringen kann."
msgid "Enable grid minimap."
msgstr "Gitterübersichtskarte aktivieren."
+msgid "Arrange nodes."
+msgstr "Nodes anordnen."
+
msgid ""
"The current font does not support rendering one or more characters used in "
"this Label's text."
@@ -9442,6 +13886,15 @@ msgstr ""
"Die aktuelle Schriftart unterstützt mindestens ein Zeichen nicht, welches im "
"Text des Labels verwendet wird."
+msgid "Same as Layout Direction"
+msgstr "Wie Layout-Ausrichtung"
+
+msgid "Auto-Detect Direction"
+msgstr "Automatische Ausrichtungserkennung"
+
+msgid "Left-to-Right"
+msgstr "Links-nach-Rechts"
+
msgid "Right-to-Left"
msgstr "Rechts-nach-Links"
@@ -9451,6 +13904,36 @@ msgstr "Links-nach-Rechts Markierung (LRM)"
msgid "Right-to-Left Mark (RLM)"
msgstr "Rechts-nach-Links Markierung (RLM)"
+msgid "Start of Left-to-Right Embedding (LRE)"
+msgstr "Anfang von Links-nach-Rechts Einbettung (LRE)"
+
+msgid "Start of Right-to-Left Embedding (RLE)"
+msgstr "Anfang von Rechts-nach-Links Einbettung (RLE)"
+
+msgid "Start of Left-to-Right Override (LRO)"
+msgstr "Anfang von Links-nach-Rechts Ãœberschrieb (LRO)"
+
+msgid "Start of Right-to-Left Override (RLO)"
+msgstr "Anfang von Rechts-nach-Links Ãœberschrieb (RLO)"
+
+msgid "Arabic Letter Mark (ALM)"
+msgstr "Arabische Buchstaben-Markierung (ALM)"
+
+msgid "Left-to-Right Isolate (LRI)"
+msgstr "Links-nach-Rechts Isolierer (LRI)"
+
+msgid "Right-to-Left Isolate (RLI)"
+msgstr "Rechts-nach-Links Isolierer (RLI)"
+
+msgid "Text Writing Direction"
+msgstr "Schreibrichtung"
+
+msgid "Display Control Characters"
+msgstr "Steuerzeichen anzeigen"
+
+msgid "Insert Control Character"
+msgstr "Steuerzeichen eingeben"
+
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
msgstr "Wenn „Exp Edit“ aktiviert ist muss „Min Value“ größer als null sein."
@@ -9465,10 +13948,60 @@ msgstr ""
"ein Control als Unterobjekt verwendet und dessen Minimalgröße eingestellt "
"werden."
+msgid ""
+"This node doesn't have a SubViewport as child, so it can't display its "
+"intended content.\n"
+"Consider adding a SubViewport as a child to provide something displayable."
+msgstr ""
+"Dieses Node hat kein untergeordnetes SubViewport und kann daher seinen "
+"beabsichtigten Inhalt nicht darstellen.\n"
+"Das Hinzufügen eines untergeordneten SubViewports würde etwas Darstellbares "
+"liefern."
+
msgid "(Other)"
msgstr "(Andere)"
msgid ""
+"This node was saved as class type '%s', which was no longer available when "
+"this scene was loaded."
+msgstr ""
+"Dieses Node wurde als Klassentyp ‚%s‘ gespeichert, welcher beim Laden dieser "
+"Szene nicht mehr zur Verfügung stand."
+
+msgid ""
+"Data from the original node is kept as a placeholder until this type of node "
+"is available again. It can hence be safely re-saved without risk of data "
+"loss."
+msgstr ""
+"Die Daten des ursprünglichen Nodes werden als Platzhalter behalten, bis "
+"dieser Nodetyp wieder verfügbar ist. Ein erneutes Abspeichern ist daher ohne "
+"Datenverlust problemlos möglich."
+
+msgid ""
+"Setting node name '%s' to be unique within scene for '%s', but it's already "
+"claimed by '%s'.\n"
+"'%s' is no longer set as having a unique name."
+msgstr ""
+"Der verwendete Node-Name ‚%s‘ wurde als einzigartig in der Szene für ‚%s‘ "
+"festgelegt, jedoch wurde der Name bereits von ‚%s‘ verwendet.\n"
+"‚%s‘ wird nicht mehr als einzigartig geführt."
+
+msgid ""
+"This node is marked as deprecated and will be removed in future versions.\n"
+"Please check the Godot documentation for information about migration."
+msgstr ""
+"Dieses Node ist als überholt markiert und wird in zukünftigen Versionen "
+"entfernt.\n"
+"Bitte prüfen Sie die Godot Dokumentation auf Migrationshinweise."
+
+msgid ""
+"This node is marked as experimental and may be subject to removal or major "
+"changes in future versions."
+msgstr ""
+"Dieses Node ist als experimentell markiert und könnte in zukünftigen "
+"Versionen entfernt oder stark umgeändert werden."
+
+msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
@@ -9476,6 +14009,13 @@ msgstr ""
"(Rendering→Environment→Standard-Environment) konnte nicht geladen werden."
msgid ""
+"ShaderGlobalsOverride is not active because another node of the same type is "
+"in the scene."
+msgstr ""
+"ShaderGlobalsOverride ist nicht aktiv, weil ein anderes Node diesen Typs in "
+"der Szene ist."
+
+msgid ""
"Very low timer wait times (< 0.05 seconds) may behave in significantly "
"different ways depending on the rendered or physics frame rate.\n"
"Consider using a script's process loop instead of relying on a Timer for "
@@ -9493,6 +14033,45 @@ msgstr ""
"Die Größe des Viewports muss mindestens 2 Pixel in beiden Dimensionen "
"betragen um überhaupt irgendetwas rendern zu können."
+msgid "Cannot open font from file: %s."
+msgstr "Schriftart aus Datei „%s“ konnte nicht geöffnet werden."
+
+msgid "Version %d of BMFont is not supported (should be 3)."
+msgstr "Version %d von BMFont wird nicht unterstützt (sollte 3 sein)."
+
+msgid "Invalid BMFont info block size."
+msgstr "Ungültige BMFont Infoblockgröße."
+
+msgid "Can't load font texture: %s."
+msgstr "Schriftarttextur kann nicht geladen werden: %s."
+
+msgid "Unsupported BMFont texture format."
+msgstr "Nicht unterstütztes BMFont Texturformat."
+
+msgid "Invalid BMFont block type."
+msgstr "Ungültiger BMFont-Blocktyp."
+
+msgid ""
+"Shader keywords cannot be used as parameter names.\n"
+"Choose another name."
+msgstr ""
+"Shader-Schlüsselwörter können nicht als Parameternamen genutzt werden.\n"
+"Wählen Sie einen anderen Namen."
+
+msgid ""
+"Global parameter '%s' does not exist.\n"
+"Create it in the Project Settings."
+msgstr ""
+"Globaler Parameter ‚%s‘ existiert nicht.\n"
+"Bitte in den Projekteinstellungen ändern."
+
+msgid ""
+"Global parameter '%s' has an incompatible type for this kind of node.\n"
+"Change it in the Project Settings."
+msgstr ""
+"Globaler Parameter ‚%s‘ hat einen inkompatiblen Typ für diese Art von Node.\n"
+"Bitte in den Projekteinstellungen ändern."
+
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
@@ -9506,6 +14085,9 @@ msgstr "Ungültige Quelle für Vorschau."
msgid "Invalid source for shader."
msgstr "Ungültige Quelle für Shader."
+msgid "Invalid operator for that type."
+msgstr "Ungültiger Operator für diesen Typ."
+
msgid "Default Color"
msgstr "Standardfarbe"
@@ -9518,48 +14100,90 @@ msgstr "Wiederholen"
msgid "Invalid comparison function for that type."
msgstr "Ungültige Vergleichsfunktion für diesen Typ."
+msgid "2D Mode"
+msgstr "2D-Modus"
+
+msgid "Use All Surfaces"
+msgstr "Nutze alle Oberflächen"
+
+msgid "Surface Index"
+msgstr "Oberflächenindex"
+
+msgid "Varyings cannot be passed for the '%s' parameter."
+msgstr "Varyings dürfen nicht für den Parameter ‚%s‘ übergeben werden."
+
msgid ""
"Argument %d of function '%s' can only take a local variable, array, or "
"member."
msgstr ""
-"Argument %d der Funktion '%s' kann nur eine lokale Variable, Array oder "
-"member annehmen."
+"Argument %d der Funktion ‚%s’ darf nur eine lokale Variable, ein Array oder "
+"ein Feld sein."
msgid "Built-in function \"%s(%s)\" is only supported on high-end platforms."
msgstr ""
-"Integrierte Funktion \"%s(%s)\" wird nur auf High-End Plattformen "
-"unterstützt."
+"Integrierte Funktion „%s(%s)“ wird nur auf High-End-Plattformen unterstützt."
+
+msgid "Invalid arguments for the built-in function: \"%s(%s)\"."
+msgstr "Ungültige Parameter für die integrierte Funktion: \"%s(%s)\"."
msgid "Recursion is not allowed."
msgstr "Rekursion ist nicht erlaubt."
msgid "Function '%s' can't be called from source code."
-msgstr "Funktion '%s' kann nicht aus dem Quelltext aufgerufen werden."
+msgstr "Funktion ‚%s‘ kann nicht aus dem Quelltext aufgerufen werden."
msgid ""
"Invalid argument for \"%s(%s)\" function: argument %d should be %s but is %s."
msgstr ""
-"Ungültiges Argument für Funktion \"%s(%s)\": Argument %d sollte %s sein aber "
-"ist %s."
+"Ungültiges Argument für Funktion „%s(%s)“: Argument %d sollte %s sein, ist "
+"allerdings %s."
msgid ""
"Too few arguments for \"%s(%s)\" call. Expected at least %d but received %d."
msgstr ""
-"Zu wenige Argumente für den Aufruf von \"%s(%s)\". Erwarte mindestens %d, "
-"nur %d übergeben."
+"Zu wenige Argumente für den Aufruf von „%s(%s)“. Mindestens %d erwartet, %d "
+"wurden übergeben."
msgid ""
"Too many arguments for \"%s(%s)\" call. Expected at most %d but received %d."
msgstr ""
-"Zu viele Argumente für Aufruf von \"%s(%s)\". Erwarte maximal %d aber es "
-"wurden %d übergeben."
+"Zu viele Argumente für Aufruf von „%s(%s)“. Höchstens %d erwartet, %d wurden "
+"übergeben."
+
+msgid "Invalid assignment of '%s' to '%s'."
+msgstr "Ungültige Zuweisung von ‚%s‘ zu ‚%s‘."
+
+msgid "Expected constant expression."
+msgstr "Konstanter Ausdruck erwartet."
msgid "Expected ',' or ')' after argument."
-msgstr "Erwarte ',' oder ')' nach Argument."
+msgstr "›,‹ oder ›)‹ nach Argument erwartet."
msgid "Varying may not be assigned in the '%s' function."
msgstr "Varyings dürfen nicht in Funktion ‚%s‘ zugewiesen werden."
+msgid ""
+"Varying with '%s' data type may only be assigned in the 'fragment' function."
+msgstr ""
+"Varyings mit dem Datentyp ‚%s‘ dürfen nur in der ‚fragment‘-Funktion "
+"zugewiesen werden."
+
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+"Varyings, welche in der ‚vertex‘-Funktion zugewiesen wurden, dürfen "
+"innerhalb der ‚fragment‘- oder ‚light‘-Funktionen nicht erneut zugewiesen "
+"werden."
+
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+"Varyings, welche in der ‚fragment‘-Funktion zugewiesen wurden, dürfen "
+"innerhalb der ‚vertex‘- oder ‚light‘-Funktionen nicht erneut zugewiesen "
+"werden."
+
msgid "Assignment to function."
msgstr "Zuweisung an Funktion."
@@ -9569,55 +14193,371 @@ msgstr "Zuweisung an Uniform."
msgid "Constants cannot be modified."
msgstr "Konstanten können nicht verändert werden."
+msgid "Invalid data type for the array."
+msgstr "Ungültiger Datentyp für das Array."
+
+msgid "Cannot convert from '%s' to '%s'."
+msgstr "Kann nicht zwischen ‚%s‘ und ‚%s‘ konvertieren."
+
+msgid "Expected ')' in expression."
+msgstr "‚)‘ im Ausdruck erwartet."
+
+msgid "Void value not allowed in expression."
+msgstr "Void-Wert im Ausdruck nicht zulässig."
+
+msgid "No matching constructor found for: '%s'."
+msgstr "Kein passender Konstruktor gefunden für ‚%s‘."
+
+msgid "Expected a function name."
+msgstr "Funktionsname erwartet."
+
+msgid "No matching function found for: '%s'."
+msgstr "Keine passende Funktion gefunden für: ‚%s‘."
+
+msgid ""
+"Varying '%s' must be assigned in the 'vertex' or 'fragment' function first."
+msgstr ""
+"Varying ‚%s‘ muss zuerst in der ‚vertex‘ oder ‚fragment‘-Funktion zugewiesen "
+"werden."
+
+msgid "Varying '%s' cannot be passed for the '%s' parameter in that context."
+msgstr ""
+"Varying ‚%s‘ darf in diesem Kontext nicht als Parameter ‚%s‘ übergeben "
+"werden."
+
+msgid ""
+"Varying with '%s' data type may only be used in the 'fragment' function."
+msgstr ""
+"Varying mit dem Datentyp ‚%s‘ darf nur in der ‚fragment‘-Funktion verwendet "
+"werden."
+
+msgid "Varying '%s' must be assigned in the 'fragment' function first."
+msgstr "Varying ‚%s‘ muss zuerst in der ‚fragment‘-Funktion zugewiesen werden."
+
msgid "An object of type '%s' can't be indexed."
-msgstr "Ein Objekt des Typs '%s' kann nicht Indexiert werden."
+msgstr "Ein Objekt des Typs ‚%s‘ kann nicht indiziert werden."
+
+msgid "Invalid base type for increment/decrement operator."
+msgstr "Ungültiger Basistyp für Inkrement-/Dekrement-Operator."
+
+msgid "Unexpected end of expression."
+msgstr "Unerwartetes Ende des Ausdrucks."
+
+msgid "Invalid arguments to unary operator '%s': %s."
+msgstr "Ungültige Parameter für den unären Operator ‚%s‘: %s."
+
+msgid "Invalid argument to ternary operator: '%s'."
+msgstr "Ungültiger Parameter für den ternären Operator: ‚%s‘."
+
+msgid "Invalid arguments to operator '%s': '%s'."
+msgstr "Ungültige Parameter für den Operator ‚%s‘: ‚%s‘."
+
+msgid "Duplicated case label: %d."
+msgstr "Doppelte Fallbeschriftung: %d."
+
+msgid "Expected an integer constant."
+msgstr "Ganzzahlkonstante erwartet."
+
+msgid "Use of '%s' is not allowed here."
+msgstr "Die Verwendung von ‚%s‘ ist hier nicht zulässig."
+
+msgid "Invalid shader type. Valid types are: %s"
+msgstr "Ungültiger Shadertyp. Zulässige Typen sind: %s"
+
+msgid "Duplicated render mode: '%s'."
+msgstr "Doppelter Rendermodus: ‚%s‘."
+
+msgid "Invalid render mode: '%s'."
+msgstr "Ungültiger Rendermodus: ‚%s‘."
+
+msgid "Expected data type."
+msgstr "Datentyp erwartet."
+
+msgid "Varyings cannot be used in '%s' shaders."
+msgstr "Varyings können in ‚%s‘-Shadern nicht verwendet werden."
+
+msgid "The '%s' data type is not allowed here."
+msgstr "Der Datentyp ‚%s‘ ist hier nicht zulässig."
+
+msgid "Invalid data type for varying."
+msgstr "Ungültiger Datentyp für Varying."
+
+msgid "The '%s' qualifier is not supported for sampler types."
+msgstr "Der ‚%s‘-Kennzeichner wird nicht für Sampler-Typen unterstützt."
+
+msgid "The '%s' qualifier is not supported for matrix types."
+msgstr "Der ‚%s‘-Kennzeichner wird nicht für Matrix-Typen unterstützt."
+
+msgid "The '%s' qualifier is not supported for uniform arrays."
+msgstr "Der ‚%s‘-Kennzeichner wird nicht für Uniform-Arrays unterstützt."
+
+msgid "Expected valid type hint after ':'."
+msgstr "Gültigen Typhinweis nach ‚:‘ erwartet."
+
+msgid "This hint is not supported for uniform arrays."
+msgstr "Dieser Hinweis wird nicht unterstützt für Uniform-Arrays."
+
+msgid "Source color hint is for '%s', '%s' or sampler types only."
+msgstr "Quellfarbenhinweis ist nur gültig für ‚%s‘, ‚%s‘ oder Sampler-Typen."
+
+msgid "Duplicated hint: '%s'."
+msgstr "Doppelter Hinweis: ‚%s‘."
+
+msgid "Range hint is for '%s' and '%s' only."
+msgstr "Bereichshinweis ist nur für ‚%s‘ und ‚%s‘ gültig."
+
+msgid "Expected ',' after integer constant."
+msgstr "›,‹ nach Ganzzahlkonstante erwartet."
+
+msgid "Expected an integer constant after ','."
+msgstr "Ganzzahlkonstante nach ›,‹ erwartet."
+
+msgid "Can only specify '%s' once."
+msgstr "‚%s‘ kann nur einmal aufgeführt werden."
+
+msgid "The instance index can't be negative."
+msgstr "Der Instanzindex kann nicht negativ sein."
+
+msgid "Allowed instance uniform indices must be within [0..%d] range."
+msgstr "Erlaubte Instanz-Uniform-Indices müssen im Intervall [0..%d] liegen."
+
+msgid "This hint is only for sampler types."
+msgstr "Dieser Hinweis ist nur für Sampler-Typen gültig."
+
+msgid "Redefinition of hint: '%s'. The hint has already been set to '%s'."
+msgstr ""
+"Neudefinition von Hinweis ‚%s‘. Der Hinweis wurde bereits als ‚%s‘ "
+"festgelegt."
+
+msgid "Duplicated filter mode: '%s'."
+msgstr "Doppelter Filtermodus: ‚%s‘."
+
+msgid ""
+"Redefinition of filter mode: '%s'. The filter mode has already been set to "
+"'%s'."
+msgstr ""
+"Neudefinition von Filtermodus: ‚%s‘. Der Filtermodus wurde bereits als ‚%s‘ "
+"festgelegt."
+
+msgid "Duplicated repeat mode: '%s'."
+msgstr "Doppelter Wiederholungsmodus: ‚%s‘."
+
+msgid ""
+"Redefinition of repeat mode: '%s'. The repeat mode has already been set to "
+"'%s'."
+msgstr ""
+"Neudefinition von Wiederholungsmodus: ‚%s‘. Der Wiederholungsmodus wurde "
+"bereits als ‚%s‘ festgelegt."
+
+msgid "Too many '%s' uniforms in shader, maximum supported is %d."
+msgstr "Zu viele ‚%s‘-Uniforms in Shader, maximal unterstütze Anzahl ist %d."
+
+msgid "Setting default values to uniform arrays is not supported."
+msgstr "Standardwerte als Uniform-Arrays festzulegen wird nicht unterstützt."
+
+msgid "Expected constant expression after '='."
+msgstr "Konstanter Ausdruck nach ‚=‘ erwartet."
+
+msgid "Can't convert constant to '%s'."
+msgstr "Konstante kann nicht zu ‚%s‘ umgewandelt werden."
+
+msgid "Expected an uniform subgroup identifier."
+msgstr "Uniform-Unterguppenbezeichner erwartet."
+
+msgid "Expected an uniform group identifier."
+msgstr "Uniform-Gruppenbezeichner erwartet."
+
+msgid "Expected an uniform group identifier or `;`."
+msgstr "Uniform-Gruppenbezeichner oder ‚;‘ erwartet."
+
+msgid "Group needs to be opened before."
+msgstr "Gruppe muss zuvor geöffnet werden."
+
+msgid "Shader type is already defined."
+msgstr "Shader-Typ wurde bereits definiert."
+
+msgid "Expected constant, function, uniform or varying."
+msgstr "Konstante, Funktion, Uniform oder Varying erwartet."
+
+msgid "Invalid constant type (samplers are not allowed)."
+msgstr "Ungültiger Konstantentyp (Sampler sind nicht erlaubt)."
+
+msgid "Invalid function type (samplers are not allowed)."
+msgstr "Ungültiger Funktionstyp (Sampler sind nicht erlaubt)."
+
+msgid "Expected a function name after type."
+msgstr "Funktionsname nach Typ erwartet."
+
+msgid "Expected '(' after function identifier."
+msgstr "‚(‘ nach Funktionsbezeichner erwartet."
msgid ""
"Global non-constant variables are not supported. Expected '%s' keyword "
"before constant definition."
msgstr ""
-"Globale nicht-konstante Variablen werden nicht unterstützt. Erwarte '%s' "
-"Schlüsselwort vor der Definition einer Konstanten."
+"Globale nicht-konstante Variablen werden nicht unterstützt. ‚%s‘-"
+"Schlüsselwort vor Konstanten-Definition erwartet."
+
+msgid "Expected an identifier after type."
+msgstr "Bezeichner nach Typ erwartet."
+
+msgid ""
+"The '%s' qualifier cannot be used within a function parameter declared with "
+"'%s'."
+msgstr ""
+"Der ‚%s‘-Kennzeichner kann nicht innerhalb eines Funktionsparameters "
+"deklariert mit ‚%s‘ verwendet werden."
+
+msgid "Expected a valid data type for argument."
+msgstr "Gültigen Datentyp als Argument erwartet."
+
+msgid "Opaque types cannot be output parameters."
+msgstr "Opake Typen können keine Ausgabeparameter sein."
+
+msgid "Void type not allowed as argument."
+msgstr "Ein Void-Typ ist nicht als Argument erlaubt."
+
+msgid "Expected an identifier for argument name."
+msgstr "Bezeichner als Argumentenname erwartet."
+
+msgid "Function '%s' expects no arguments."
+msgstr "Funktion ‚%s‘ erwartet keine Argument."
+
+msgid "Function '%s' must be of '%s' return type."
+msgstr "Funktion ‚%s‘ muss einen ‚%s‘-Rückgabewert haben."
+
+msgid "Expected a '{' to begin function."
+msgstr "‚{‘ am Funktionsanfang erwartet."
msgid "Expected at least one '%s' statement in a non-void function."
-msgstr "Erwartete mindestens eine '%s' Anweisung in einer nicht-void Funktion."
+msgstr "Mindestens eine ‚%s‘-Anweisung in einer nicht-void-Funktion erwartet."
+
+msgid "uniform buffer"
+msgstr "Uniform-Puffer"
+
+msgid "Expected a '%s'."
+msgstr "Ein ‚%s‘ wurde erwartet."
+
+msgid "Expected a '%s' or '%s'."
+msgstr "Ein ‚%s‘ oder ‚%s‘ wurde erwartet."
+
+msgid "Expected a '%s' after '%s'."
+msgstr "Ein ‚%s‘ wurde nach ‚%s‘ erwartet."
+
+msgid "Redefinition of '%s'."
+msgstr "Erneute Definition von ‚%s‘."
+
+msgid "Unknown directive."
+msgstr "Unbekannte Direktive."
+
+msgid "Invalid macro name."
+msgstr "Ungültiger Makroname."
+
+msgid "Macro redefinition."
+msgstr "Erneute Makrodefinition."
+
+msgid "Invalid argument name."
+msgstr "Ungültiger Argumentname."
+
+msgid "Expected a comma in the macro argument list."
+msgstr "Komma in Argumentenliste des Makros erwartet."
+
+msgid "Unmatched elif."
+msgstr "Fehlplatziertes elif."
+
+msgid "Missing condition."
+msgstr "Fehlende Bedingung."
+
+msgid "Condition evaluation error."
+msgstr "Bedingungsauswertungsfehler."
+
+msgid "Unmatched else."
+msgstr "Fehlplatziertes else."
+
+msgid "Invalid else."
+msgstr "Ungültiges else."
msgid "Unmatched endif."
-msgstr "Unvollständiges endif."
+msgstr "Fehlplatziertes endif."
+
+msgid "Invalid endif."
+msgstr "Ungültiges endif."
+
+msgid "Invalid ifdef."
+msgstr "Ungültiges ifdef."
+
+msgid "Invalid ifndef."
+msgstr "Ungültiges ifndef."
msgid ""
"Shader include load failed. Does the shader include exist? Is there a cyclic "
"dependency?"
msgstr ""
-"Laden des Shader include fehlgeschlagen. Existiert der include des Shaders? "
-"Gibt es eine zyklische Abhängigkeit?"
+"Laden des Shader-Includes fehlgeschlagen. Existiert der Shader-Include? Gibt "
+"es eine zyklische Abhängigkeit?"
+
+msgid "Shader include resource type is wrong."
+msgstr "Ressourcentyp des Shader-Includes ist falsch."
msgid "Cyclic include found."
-msgstr "Zyklisches include erkannt."
+msgstr "Zyklisches Include erkannt."
+
+msgid "Shader max include depth exceeded."
+msgstr "Maximale Include-Tiefe für Shader überschritten."
+
+msgid "Invalid pragma directive."
+msgstr "Ungültige Pragmaanweisung."
+
+msgid "Invalid undef."
+msgstr "Ungültiges undef."
+
+msgid "Macro expansion limit exceeded."
+msgstr "Makroausweitungsgrenze überschritten."
+
+msgid "Invalid macro argument list."
+msgstr "Ungültige Makro-Argumentenliste."
+
+msgid "Invalid macro argument."
+msgstr "Ungültiges Makro-Argument."
+
+msgid "Invalid macro argument count."
+msgstr "Ungültige Makro-Argumentanzahl."
+
+msgid "Can't find matching branch directive."
+msgstr "Passende Verzweigungsanweisung konnte nicht gefunden werden."
+
+msgid "Invalid symbols placed before directive."
+msgstr "Ungültige Zeichen befinden sich vor Anweisung."
+
+msgid "Unmatched conditional statement."
+msgstr "Fehlplatzierter Bedingungsausdruck."
msgid ""
"Direct floating-point comparison (this may not evaluate to `true` as you "
"expect). Instead, use `abs(a - b) < 0.0001` for an approximate but "
"predictable comparison."
msgstr ""
-"Direkter Vergleich von Gleitkommazahlen (dies muss entgegen der Vermutung "
-"nicht `true` ergeben). Nutzen Sie stattdessen `abs(a - b) < 0.0001` für "
-"einen ungefähren, aber vorhersehbaren Vergleich."
+"Direkter Vergleich von Gleitkommazahlen erkannt (dieser könnte unerwarteter "
+"Weise nicht ‚true‘ ergeben). Es wird empfohlen stattdessen ‚abs(a - b) < "
+"0.0001‘ für einen ungefähren, aber verlässlichen Vergleich zu verwenden."
msgid "The const '%s' is declared but never used."
-msgstr "Die Konstante '%s' wurde deklariert, aber nie verwendet."
+msgstr "Die Konstante ‚%s‘ wurde deklariert, aber nie verwendet."
msgid "The function '%s' is declared but never used."
-msgstr "Die Funktion '%s' wurde deklariert, aber nie verwendet."
+msgstr "Die Funktion ‚%s‘ wurde deklariert, aber nie verwendet."
+
+msgid "The struct '%s' is declared but never used."
+msgstr "Das Struct ‚%s‘ wurde deklariert, aber nie verwendet."
msgid "The uniform '%s' is declared but never used."
-msgstr "Das Uniform '%s' wurde deklariert, aber nie verwendet."
+msgstr "Das Uniform ‚%s‘ wurde deklariert, aber nie verwendet."
msgid "The varying '%s' is declared but never used."
-msgstr "Das Varying '%s' wurde deklariert, aber nie verwendet."
+msgstr "Das Varying ‚%s‘ wurde deklariert, aber nie verwendet."
msgid "The local variable '%s' is declared but never used."
-msgstr "Die lokale Variable '%s' wurde deklariert, aber nie verwendet."
+msgstr "Die lokale Variable ‚%s‘ wurde deklariert, aber nie verwendet."
msgid ""
"The total size of the %s for this shader on this device has been exceeded "
diff --git a/editor/translations/editor/el.po b/editor/translations/editor/el.po
index 54c7561f36..659717c609 100644
--- a/editor/translations/editor/el.po
+++ b/editor/translations/editor/el.po
@@ -497,12 +497,6 @@ msgstr "ΠÏοηγοÏμενο Βήμα"
msgid "Use Bezier Curves"
msgstr "ΧÏήση καμπυλών Bezier"
-msgid "Anim. Optimizer"
-msgstr "Anim. Μηχανή βελτιστοποίησης"
-
-msgid "Max. Angular Error:"
-msgstr "Μέγιστο γωνιώδες σφάλμα:"
-
msgid "Optimize"
msgstr "Βελτιστοποίησε"
@@ -6078,9 +6072,6 @@ msgstr "Αλλαγή ÎεκÏής Ζώνης ΕνέÏγειας"
msgid "Erase Input Action"
msgstr "ΔιαγÏαφή ενέÏγειας εισόδου"
-msgid "Rename Input Action Event"
-msgstr "Μετονομασία συμβάντος εισόδου"
-
msgid "Project Settings (project.godot)"
msgstr "Ρυθμίσεις έÏγου (project.godot)"
@@ -6977,9 +6968,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "Ο Ïιζικός κόμβος AnimationPlayer δεν είναι έγκυÏος."
-msgid "Pick a color from the editor window."
-msgstr "Επιλέξτε ένα χÏώμα από το παÏάθυÏο επεξεÏγασίας."
-
msgid "Switch between hexadecimal and code values."
msgstr "Εναλλαγή δεκαεξαδικών και κωδικοποιημένων τιμών."
@@ -7010,9 +6998,6 @@ msgstr "Ειδοποίηση!"
msgid "Please Confirm..."
msgstr "ΠαÏακαλώ επιβεβαιώστε..."
-msgid "Must use a valid extension."
-msgstr "Απαιτείται η χÏήση έγκυÏης επέκτασης."
-
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
msgstr ""
"Εάν το «Exp Edit» είναι ενεÏγό, το «Min Value» Ï€Ïέπει να είναι μεγαλÏτεÏο "
diff --git a/editor/translations/editor/eo.po b/editor/translations/editor/eo.po
index bfdce7d034..e504fae9ea 100644
--- a/editor/translations/editor/eo.po
+++ b/editor/translations/editor/eo.po
@@ -16,12 +16,13 @@
# Wang Tseryui <2251439097@qq.com>, 2021.
# Kedr <lava20121991@gmail.com>, 2022.
# Isaac Iverson <isaaciverson1024@gmail.com>, 2023.
+# Blua Punkto <bluapunkto@proton.me>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2023-02-10 00:54+0000\n"
-"Last-Translator: Isaac Iverson <isaaciverson1024@gmail.com>\n"
+"PO-Revision-Date: 2023-02-11 01:21+0000\n"
+"Last-Translator: Blua Punkto <bluapunkto@proton.me>\n"
"Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/"
"godot/eo/>\n"
"Language: eo\n"
@@ -30,9 +31,15 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.16-dev\n"
+msgid "Unset"
+msgstr "malÅalti"
+
msgid "Button"
msgstr "Butono"
+msgid "Double Click"
+msgstr "Duobla alklako"
+
msgid "Select"
msgstr "Elekti"
@@ -420,12 +427,6 @@ msgstr "Uzu Bezier-kurbojn"
msgid "Create RESET Track(s)"
msgstr "Krei RESET-trako(j)n"
-msgid "Anim. Optimizer"
-msgstr "Anim. Optimiganto"
-
-msgid "Max. Angular Error:"
-msgstr "Maks. Angula Eraro:"
-
msgid "Optimize"
msgstr "Optimigi"
@@ -1366,9 +1367,6 @@ msgstr "Malfermi"
msgid "Select Current Folder"
msgstr "Elekti kurantan dosierujon"
-msgid "File exists, overwrite?"
-msgstr "Dosiero ekzistas, superskribi?"
-
msgid "Select This Folder"
msgstr "Elekti ĉi tiun dosierujon"
@@ -4111,9 +4109,6 @@ msgstr "ÅœanÄi mortzonon de faro"
msgid "Erase Input Action"
msgstr "Forigi enigan faron"
-msgid "Rename Input Action Event"
-msgstr "Renomi eventon de eniga faro"
-
msgid "Project Settings (project.godot)"
msgstr "Projektaj agordoj (project.godot)"
diff --git a/editor/translations/editor/es.po b/editor/translations/editor/es.po
index 276c662c25..8481237276 100644
--- a/editor/translations/editor/es.po
+++ b/editor/translations/editor/es.po
@@ -95,13 +95,16 @@
# Alan Arrecis <alan.arrecis@gmail.com>, 2023.
# Fernando Sacó <saco.fernando@gmail.com>, 2023.
# Damien Monasterios <monasterio13septiembre@gmail.com>, 2023.
+# andres gallegos <andresgg.prog@gmail.com>, 2023.
+# maipley <pablovgv@gmail.com>, 2023.
+# The0Show <62229104+The0Show@users.noreply.github.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Damien Monasterios <monasterio13septiembre@gmail.com>\n"
+"PO-Revision-Date: 2023-02-20 10:58+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"
@@ -178,17 +181,77 @@ msgid "Joystick 3 Y-Axis"
msgstr "Eje Y del Joystick 3"
msgid "Joystick 4 X-Axis"
-msgstr "Eje X del Joystick"
+msgstr "Eje X del Stick 4"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "Eje Y del Joystick 4"
msgid "Unknown Joypad Axis"
msgstr "Eje de Joypad Desconocido"
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "Acción Inferior, Sony Equis, Xbox A, Nintendo B"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Acción Derecha, Sony Círculo, Xbox B, Nintendo A"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "Acción Izquierda, Sony Cuadrado, Xbox X, Nintendo Y"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "Acción Superior, Sony Triángulo, Xbox Y, Nintendo X"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Atrás, Sony Select, Xbox Atrás, Nintendo -"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "Guía, Sony PS, Xbox Inicio"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "Stick Izquierdo, Sony L3, Xbox L/LS"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "Stick Derecho, Sony R3, Xbox R/RS"
+
+msgid "D-pad Up"
+msgstr "Pad Direccional Arriba"
+
+msgid "D-pad Down"
+msgstr "Pad Direccional Abajo"
+
+msgid "D-pad Left"
+msgstr "Pad direccional Izquierda"
+
+msgid "D-pad Right"
+msgstr "Pad Direccional Derecha"
+
+msgid "PS4/5 Touchpad"
+msgstr "PS4/5 Pad Táctil"
+
+msgid "Joypad Button %d"
+msgstr "Botón del Mando %d"
+
+msgid "Pressure:"
+msgstr "Presión:"
+
+msgid "released"
+msgstr "liberado"
+
+msgid "Accept"
+msgstr "Aceptar"
+
msgid "Select"
msgstr "Seleccionar"
msgid "Cancel"
msgstr "Cancelar"
+msgid "Focus Next"
+msgstr "Foco Siguiente"
+
+msgid "Focus Prev"
+msgstr "Foco Anterior"
+
msgid "Left"
msgstr "Izquierda"
@@ -201,6 +264,15 @@ msgstr "Arriba"
msgid "Down"
msgstr "Abajo"
+msgid "Page Up"
+msgstr "Avanzar Página"
+
+msgid "Page Down"
+msgstr "Retroceder Página"
+
+msgid "Home"
+msgstr "Inicio"
+
msgid "End"
msgstr "Fin"
@@ -219,15 +291,102 @@ msgstr "Deshacer"
msgid "Redo"
msgstr "Rehacer"
+msgid "Completion Query"
+msgstr "Completar Consulta"
+
+msgid "New Line"
+msgstr "Nueva Línea"
+
+msgid "New Blank Line"
+msgstr "Nueva Línea en Blanco"
+
+msgid "New Line Above"
+msgstr "Nueva Línea Superior"
+
msgid "Indent"
msgstr "Indentar"
+msgid "Dedent"
+msgstr "Reducción de sangría"
+
+msgid "Backspace"
+msgstr "Retroceso"
+
+msgid "Backspace Word"
+msgstr "Retroceso de Palabra"
+
+msgid "Backspace all to Left"
+msgstr "Retroceder todo a la izquierda"
+
msgid "Delete"
msgstr "Eliminar"
+msgid "Delete Word"
+msgstr "Eliminar Palabra"
+
+msgid "Delete all to Right"
+msgstr "Eliminar todo a la Derecha"
+
+msgid "Caret Left"
+msgstr "Cursor Izquierda"
+
+msgid "Caret Word Left"
+msgstr "Cursor Palabra izquierda"
+
+msgid "Caret Right"
+msgstr "Cursor Derecha"
+
+msgid "Caret Word Right"
+msgstr "Cursor Palabra Derecha"
+
+msgid "Caret Up"
+msgstr "Cursor Arriba"
+
+msgid "Caret Down"
+msgstr "Cursor Abajo"
+
+msgid "Caret Line Start"
+msgstr "Inicio de Línea del Cursor"
+
+msgid "Caret Line End"
+msgstr "Cursor Fin de Línea"
+
+msgid "Caret Page Up"
+msgstr "Cursor Página Superior"
+
+msgid "Caret Page Down"
+msgstr "Cursor Página Inferior"
+
+msgid "Caret Document Start"
+msgstr "Cursor Inicio del Documento"
+
+msgid "Caret Document End"
+msgstr "Cursor Final del Documento"
+
+msgid "Caret Add Below"
+msgstr "Cursor Añadir Abajo"
+
+msgid "Caret Add Above"
+msgstr "Cursor Añadir Arriba"
+
+msgid "Scroll Up"
+msgstr "Scroll hacia Arriba"
+
+msgid "Scroll Down"
+msgstr "Scroll hacia Abajo"
+
msgid "Select All"
msgstr "Seleccionar Todo"
+msgid "Select Word Under Caret"
+msgstr "Seleccionar Palabra Debajo del Cursor"
+
+msgid "Clear Carets and Selection"
+msgstr "Borrar Cursores y Selección"
+
+msgid "Toggle Insert Mode"
+msgstr "Cambiar Modo de Inserción"
+
msgid "Duplicate Nodes"
msgstr "Duplicar Nodos"
@@ -237,6 +396,12 @@ msgstr "Eliminar Nodos"
msgid "Refresh"
msgstr "Recargar"
+msgid "Show Hidden"
+msgstr "Mostrar Ocultos"
+
+msgid "Swap Input Direction"
+msgstr "Intercambiar Dirección de Entrada"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %d (no aprobada) en la expresión"
@@ -285,6 +450,14 @@ msgstr "PiB"
msgid "EiB"
msgstr "EiB"
+msgid "Example: %s"
+msgstr "Ejemplo: %s"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d item"
+msgstr[1] "%d items"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -295,15 +468,39 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Ya existe una acción con el nombre '%s'."
+msgid "Revert Action"
+msgstr "Revertir Acción"
+
msgid "Add Event"
msgstr "Añadir Evento"
+msgid "Remove Action"
+msgstr "Eliminar Acción"
+
msgid "Cannot Remove Action"
msgstr "No se Puede Eliminar la Acción"
+msgid "Edit Event"
+msgstr "Editar Evento"
+
+msgid "Remove Event"
+msgstr "Eliminar Evento"
+
+msgid "Filter by name..."
+msgstr "Filtrar por nombre..."
+
+msgid "Clear All"
+msgstr "Limpiar Todo"
+
+msgid "Add New Action"
+msgstr "Añadir Nueva Acción"
+
msgid "Add"
msgstr "Añadir"
+msgid "Show Built-in Actions"
+msgstr "Mostrar Acciones Integradas"
+
msgid "Action"
msgstr "Acción"
@@ -316,6 +513,9 @@ msgstr "Tiempo:"
msgid "Value:"
msgstr "Valor:"
+msgid "Update Selected Key Handles"
+msgstr "Actualizar Manipuladores de Claves Seleccionados"
+
msgid "Insert Key Here"
msgstr "Insertar Clave Aquí"
@@ -325,18 +525,54 @@ msgstr "Duplicar Clave(s) Seleccionada(s)"
msgid "Delete Selected Key(s)"
msgstr "Eliminar Clave(s) Seleccionada(s)"
+msgid "Make Handles Free"
+msgstr "Hacer los Manipuladores libres"
+
msgid "Add Bezier Point"
msgstr "Añadir Punto Bezier"
msgid "Move Bezier Points"
msgstr "Mover Puntos Bezier"
+msgid "Animation Duplicate Keys"
+msgstr "Duplicar Claves de Animación"
+
+msgid "Animation Delete Keys"
+msgstr "Eliminar Claves de Animación"
+
msgid "Focus"
msgstr "Foco"
+msgid "Select All Keys"
+msgstr "Seleccionar Todas las Claves"
+
+msgid "Deselect All Keys"
+msgstr "Deseleccionar Todas las Claves"
+
+msgid "Animation Change Transition"
+msgstr "Cambiar Transición de Animación"
+
msgid "Animation Change %s"
msgstr "Cambio de Animación %s"
+msgid "Animation Change Keyframe Value"
+msgstr "Cambiar Valor de Fotograma Clave de Animación"
+
+msgid "Animation Change Call"
+msgstr "Cambiar Llamada de Animación"
+
+msgid "Animation Multi Change Transition"
+msgstr "Cambiar Múltiples Transiciones de Animación"
+
+msgid "Animation Multi Change %s"
+msgstr "Cambiar Múltiples Animaciónes %s"
+
+msgid "Animation Multi Change Keyframe Value"
+msgstr "Cambiar Valor de Múltiples Fotogramas Clave de Animación"
+
+msgid "Animation Multi Change Call"
+msgstr "Cambiar Múltiples Llamadas de Animación"
+
msgid "Change Animation Length"
msgstr "Cambiar Duración de la Animación"
@@ -346,6 +582,18 @@ msgstr "Cambiar Loop de la Animación"
msgid "Property Track"
msgstr "Pista de Propiedades"
+msgid "3D Position Track"
+msgstr "Pista de Posición 3D"
+
+msgid "3D Rotation Track"
+msgstr "Pista de Rotación 3D"
+
+msgid "3D Scale Track"
+msgstr "Pista de Escala 3D"
+
+msgid "Blend Shape Track"
+msgstr "Pista de Forma Combinada"
+
msgid "Call Method Track"
msgstr "Pista de Llamada a Métodos"
@@ -376,12 +624,18 @@ msgstr "Funciones:"
msgid "Audio Clips:"
msgstr "Clips de Audio:"
+msgid "Animation Clips:"
+msgstr "Clips de Animación:"
+
msgid "Change Track Path"
msgstr "Cambiar Ruta de la Pista"
msgid "Toggle this track on/off."
msgstr "Act./Desact. esta pista."
+msgid "Use Blend"
+msgstr "Usar Mezcla"
+
msgid "Update Mode (How this property is set)"
msgstr "Modo de actualización (Cómo se establece)"
@@ -406,6 +660,9 @@ msgstr "Rotación:"
msgid "Scale:"
msgstr "Escala:"
+msgid "Blend Shape:"
+msgstr "Forma Combinada:"
+
msgid "Type:"
msgstr "Tipo:"
@@ -454,6 +711,12 @@ msgstr "Lineal"
msgid "Cubic"
msgstr "Cúbica"
+msgid "Linear Angle"
+msgstr "Ãngulo Lineal"
+
+msgid "Cubic Angle"
+msgstr "Ãngulo Cúbico"
+
msgid "Clamp Loop Interp"
msgstr "Interp de Loop Cortante"
@@ -481,12 +744,24 @@ msgstr "Cambiar Modo de Interpolación de Animación"
msgid "Change Animation Loop Mode"
msgstr "Cambiar Modo Loop de Animación"
+msgid "Change Animation Use Blend"
+msgstr "Cambiar Uso de Mezcla en la Animación"
+
msgid "Remove Anim Track"
msgstr "Eliminar Pista de Animación"
+msgid "Create new track for %s and insert key?"
+msgstr "¿Crear nueva pista para %s e insertar clave?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "¿Crear %d nuevas pistas e insertar claves?"
+
msgid "Create"
msgstr "Crear"
+msgid "Animation Insert Key"
+msgstr "Insertar Clave de Animación"
+
msgid "node '%s'"
msgstr "nodo '%s'"
@@ -505,6 +780,15 @@ msgstr "Cambiar Step de Animación"
msgid "Rearrange Tracks"
msgstr "Reordenar Pistas"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr ""
+"Las pistas de Formas Combinadas solo se aplican a nodos MeshInstance3D."
+
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"Las pistas de posición/rotación/escala 3D solo se aplican a nodos basados en "
+"3D."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -532,6 +816,18 @@ msgid "Track path is invalid, so can't add a key."
msgstr ""
"La ruta de la pista es inválida, por lo tanto no se pueden agregar claves."
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "La pista no es del tipo Node3D, no se puede insertar la clave"
+
+msgid "Add Position Key"
+msgstr "Añadir Clave de Posición"
+
+msgid "Add Rotation Key"
+msgstr "Añadir Clave de Rotación"
+
+msgid "Add Scale Key"
+msgstr "Añadir Clave de Escala"
+
msgid "Add Track Key"
msgstr "Añadir Clave de Pista"
@@ -546,6 +842,9 @@ msgstr "Añadir Clave de Pista de Método"
msgid "Method not found in object:"
msgstr "Método no encontrado en el objeto:"
+msgid "Animation Move Keys"
+msgstr "Mover Claves de Animación"
+
msgid "Position"
msgstr "Posición"
@@ -555,6 +854,9 @@ msgstr "Rotación"
msgid "Scale"
msgstr "Escala"
+msgid "BlendShape"
+msgstr "BlendShape"
+
msgid "Methods"
msgstr "Métodos"
@@ -570,18 +872,30 @@ msgstr "¡El portapapeles está vacío!"
msgid "Paste Tracks"
msgstr "Pegar Pistas"
+msgid "Animation Scale Keys"
+msgstr "Escalar Claves de Animación"
+
+msgid "Make Easing Keys"
+msgstr "Crear Claves de Interpolación"
+
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
"Esta opción no funciona con la edición Bezier, ya que es solo una pista "
"única."
+msgid "Animation Add RESET Keys"
+msgstr "Añadir Claves de Animación de RESET"
+
msgid "Warning: Editing imported animation"
msgstr "Advertencia: Edición de animación importada"
msgid "Select an AnimationPlayer node to create and edit animations."
msgstr "Selecciona un nodo AnimationPlayer para crear y editar animaciones."
+msgid "Imported Scene"
+msgstr "Escena Importada"
+
msgid "Only show tracks from nodes selected in tree."
msgstr "Mostrar solo las pistas de los nodos seleccionados en el árbol."
@@ -639,12 +953,6 @@ msgstr "Usar Curvas Bezier"
msgid "Create RESET Track(s)"
msgstr "Crear pista(s) RESET"
-msgid "Anim. Optimizer"
-msgstr "Optimizar Animación"
-
-msgid "Max. Angular Error:"
-msgstr "Error Angular Máximo:"
-
msgid "Optimize"
msgstr "Optimizar"
@@ -768,7 +1076,7 @@ msgid "Remove"
msgstr "Eliminar"
msgid "Add Extra Call Argument:"
-msgstr "Añadir Argumento Extra de Llamada:"
+msgstr "Añadir un Argumento de Llamada extra:"
msgid "Extra Call Arguments:"
msgstr "Argumentos extras de llamada:"
@@ -830,6 +1138,9 @@ msgstr "Desconectar"
msgid "Connect a Signal to a Method"
msgstr "Conectar una Señal a un Método"
+msgid "Edit Connection: '%s'"
+msgstr "Editar conexión: '%s'"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr ""
"¿Estás seguro/a que quieres eliminar todas las conexiones de la señal \"%s\"?"
@@ -850,6 +1161,9 @@ msgstr "Editar..."
msgid "Go to Method"
msgstr "Ir al Método"
+msgid "Change Type of \"%s\""
+msgstr "Cambiar el Tipo de \"%s\""
+
msgid "Change"
msgstr "Cambiar"
@@ -859,6 +1173,12 @@ msgstr "Crear Nuevo %s"
msgid "No results for \"%s\"."
msgstr "No hay resultados para \"%s\"."
+msgid "This class is marked as deprecated."
+msgstr "Esta clase está marcada como obsoleta."
+
+msgid "This class is marked as experimental."
+msgstr "Esta clase está marcada como experimental."
+
msgid "No description available for %s."
msgstr "No hay descripción disponible para %s."
@@ -895,9 +1215,21 @@ msgstr "Copiar Ruta del Nodo"
msgid "Instance:"
msgstr "Instancia:"
+msgid ""
+"This node has been instantiated from a PackedScene file:\n"
+"%s\n"
+"Click to open the original file in the Editor."
+msgstr ""
+"Este nodo ha sido instanciado desde un archivo PackedScene:\n"
+"%s\n"
+"Haz clic para abrir el archivo original en el Editor."
+
msgid "Toggle Visibility"
msgstr "Cambiar Visibilidad"
+msgid "ms"
+msgstr "ms"
+
msgid "Monitors"
msgstr "Monitores"
@@ -979,6 +1311,9 @@ msgstr "Error:"
msgid "%s Error"
msgstr "Error %s"
+msgid "%s Error:"
+msgstr "%s Error:"
+
msgid "Stack Trace"
msgstr "Rastreo de Pila"
@@ -1470,6 +1805,9 @@ msgstr "Nombre del Nodo:"
msgid "Global Variable"
msgstr "Variable global"
+msgid "3D Engine"
+msgstr "Motor 3D"
+
msgid "2D Physics"
msgstr "Física 2D"
@@ -1482,6 +1820,12 @@ msgstr "Navegación"
msgid "OpenGL"
msgstr "OpenGL"
+msgid "Vulkan"
+msgstr "Vulkan"
+
+msgid "2D Physics nodes and PhysicsServer2D."
+msgstr "Nodos de física 2D y PhysicsServer2D."
+
msgid "Navigation, both 2D and 3D."
msgstr "Navigation, tanto en 2D como en 3D."
@@ -1707,9 +2051,6 @@ msgstr "Abrir"
msgid "Select Current Folder"
msgstr "Seleccionar Carpeta Actual"
-msgid "File exists, overwrite?"
-msgstr "El archivo existe, ¿sobrescribirlo?"
-
msgid "Select This Folder"
msgstr "Seleccionar Esta Carpeta"
@@ -1806,6 +2147,11 @@ msgstr "Vista Previa:"
msgid "File:"
msgstr "Archivo:"
+msgid "Some extensions need the editor to restart to take effect."
+msgstr ""
+"Algunas extensiones necesitan que se reinicie el editor para que produzcan "
+"efecto."
+
msgid "Restart"
msgstr "Reiniciar"
@@ -1831,9 +2177,49 @@ msgstr "Importar recursos del tipo: %s"
msgid "No return value."
msgstr "No retorna ningún valor."
+msgid "Deprecated"
+msgstr "Obsoleta"
+
+msgid "Experimental"
+msgstr "Experimental"
+
+msgid "This method supports a variable number of arguments."
+msgstr "Este método soporta un número variable de argumentos."
+
+msgid ""
+"This method is called by the engine.\n"
+"It can be overridden to customize built-in behavior."
+msgstr ""
+"Este método es llamado por el motor.\n"
+"Puede ser sobrescrito para personalizar el comportamiento integrado."
+
+msgid ""
+"This method has no side effects.\n"
+"It does not modify the object in any way."
+msgstr ""
+"Este método no tiene efectos secundarios.\n"
+"No modifica el objeto de ninguna forma."
+
+msgid ""
+"This method does not need an instance to be called.\n"
+"It can be called directly using the class name."
+msgstr ""
+"Este método no requiere una instancia para ser llamado.\n"
+"Puede ser llamado directamente utilizando el nombre de la clase."
+
msgid "Error codes returned:"
msgstr "Códigos de error devueltos:"
+msgid "There is currently no description for this %s."
+msgstr "Actualmente no existe una descripción para esto %s."
+
+msgid ""
+"There is currently no description for this %s. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Actualmente no existe una descripción para esto %s. Por favor ayudanos "
+"[color=$color][url=$url]aportando una[/url][/color]!"
+
msgid "Top"
msgstr "Superior"
@@ -1846,6 +2232,18 @@ msgstr "Herencia:"
msgid "Inherited by:"
msgstr "Heredado de:"
+msgid ""
+"This class is marked as deprecated. It will be removed in future versions."
+msgstr ""
+"Esta clase está marcada como obsoleta. Se eliminará en futuras versiones."
+
+msgid ""
+"This class is marked as experimental. It is subject to likely change or "
+"possible removal in future versions. Use at your own discretion."
+msgstr ""
+"Esta clase está marcada como experimental. Es probable que cambie o sea "
+"removida en futuras versiones. Utilízala según tu propio criterio."
+
msgid "Description"
msgstr "Descripción"
@@ -2962,12 +3360,12 @@ msgstr "No se pudo crear el archivo \"%s\"."
msgid "Failed to export project files."
msgstr "Fallo en la exportación de los archivos del proyecto."
-msgid "Can't open file to read from path \"%s\"."
-msgstr "No se puede abrir el archivo a leer de la ruta \"%s\"."
-
msgid "Can't open encrypted file to write."
msgstr "No se puede abrir el archivo encriptado para escribir."
+msgid "Can't open file to read from path \"%s\"."
+msgstr "No se puede abrir el archivo a leer de la ruta \"%s\"."
+
msgid "Save ZIP"
msgstr "Guardar como ZIP"
@@ -4167,6 +4565,9 @@ msgstr "Herramientas de Animación"
msgid "Animation"
msgstr "Animación"
+msgid "Manage Animations..."
+msgstr "Gestionar Animaciones..."
+
msgid "Edit Transitions..."
msgstr "Editar Transiciones..."
@@ -5060,6 +5461,11 @@ msgstr ""
"Cuando se utiliza de forma remota en un dispositivo, esto es más eficiente "
"cuando la opción de sistema de archivos en red está activada."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Ejecutar %d Instancia"
+msgstr[1] "Ejecutar %d Instancias"
+
msgid " - Variation"
msgstr " - Variación"
@@ -5421,6 +5827,9 @@ msgstr "Cambiar Notificador AABB"
msgid "Change Particles AABB"
msgstr "Cambiar partículas AABB"
+msgid "Change Probe Size"
+msgstr "Cambiar Tamaño de la Sonda"
+
msgid "Change Capsule Shape Radius"
msgstr "Cambiar Radio de la Forma de la Cápsula"
@@ -5589,9 +5998,18 @@ msgstr "Mostrar Sin Sombreado"
msgid "Shadow Atlas"
msgstr "Sombra del Atlas"
+msgid "SDFGI Probes"
+msgstr "Sondas SDFGI"
+
msgid "SSAO"
msgstr "SSAO"
+msgid "ReflectionProbe Cluster"
+msgstr "Clúster ReflectionProbe"
+
+msgid "Display Advanced..."
+msgstr "Mostrar Avanzado..."
+
msgid "View Environment"
msgstr "Ver Entorno"
@@ -5672,6 +6090,9 @@ msgstr "Ajustar Nodos al Suelo"
msgid "Couldn't find a solid floor to snap the selection to."
msgstr "No se pudo encontrar un suelo sólido para ajustar la selección."
+msgid "Preview disabled."
+msgstr "Vista previa desactivada."
+
msgid "Use Local Space"
msgstr "Usar Espacio Local"
@@ -5819,15 +6240,54 @@ msgstr "Anterior"
msgid "Post"
msgstr "Posterior"
+msgid "Sun Direction"
+msgstr "Dirección del Sol"
+
+msgid "Angular Altitude"
+msgstr "Altitud Angular"
+
+msgid "Azimuth"
+msgstr "Acimut"
+
msgid "Sun Color"
msgstr "Color de Sol"
+msgid "Sun Energy"
+msgstr "Energía del Sol"
+
+msgid "Shadow Max Distance"
+msgstr "Distancia Máxima de la Sombra"
+
+msgid "Add Sun to Scene"
+msgstr "Añadir un Sol a la Escena"
+
+msgid "Preview Environment"
+msgstr "Previsualizar el Entorno"
+
+msgid "Sky Color"
+msgstr "Color del Cielo"
+
+msgid "Ground Color"
+msgstr "Color del Suelo"
+
+msgid "Sky Energy"
+msgstr "Energía del Cielo"
+
+msgid "AO"
+msgstr "AO"
+
msgid "Glow"
msgstr "Brillo"
msgid "Tonemap"
msgstr "Tonemap"
+msgid "GI"
+msgstr "GI"
+
+msgid "Post Process"
+msgstr "Post-Procesado"
+
msgid "Remove Point from Curve"
msgstr "Borrar Punto de la Curva"
@@ -6398,6 +6858,9 @@ msgstr "Ir al Siguiente Punto de Ruptura"
msgid "Go to Previous Breakpoint"
msgstr "Ir al Anterior Punto de Ruptura"
+msgid "Save File As"
+msgstr "Guardar Archivo Como"
+
msgid "This skeleton has no bones, create some children Bone2D nodes."
msgstr "Este esqueleto no tiene huesos, crea algunos nodos Bone2D hijos."
@@ -6419,6 +6882,9 @@ msgstr "Sobrescribir la Pose de Reposo"
msgid "Create physical bones"
msgstr "Crear huesos físicos"
+msgid "Export Skeleton Profile As..."
+msgstr "Exportar Perfil de Esqueleto Como..."
+
msgid "Play IK"
msgstr "Reproducir IK"
@@ -6770,6 +7236,9 @@ msgstr "Añadir Tipo de Theme"
msgid "Remove Theme Type"
msgstr "Eliminar Tipo de Theme"
+msgid "Remove Data Type Items From Theme"
+msgstr "Eliminar Elementos de Tipo de Datos del Tema"
+
msgid "Add Color Item"
msgstr "Añadir Elemento Color"
@@ -6898,6 +7367,9 @@ msgstr "Añadir Tipo de Elemento"
msgid "Add Type"
msgstr "Añadir Tipo"
+msgid "Override All Default Theme Items"
+msgstr "Sobreescribir Todos los Elementos del Tema por Defecto"
+
msgid "Set Variation Base Type"
msgstr "Establecer tipo de base de variación"
@@ -7052,6 +7524,9 @@ msgstr "Voltear Verticalmente"
msgid "Painting:"
msgstr "Pintando:"
+msgid "Shift+Ctrl: Draw rectangle."
+msgstr "Shift+Ctrl: Dibujar rectángulo."
+
msgid "Place Random Tile"
msgstr "Colocar Tile Aleatorio"
@@ -7061,18 +7536,36 @@ msgstr "Dispersión:"
msgid "Tiles"
msgstr "Tiles"
+msgid "Toggle grid visibility."
+msgstr "Cambiar visibilidad de la cuadrícula."
+
+msgid "Delete All Tile Proxies"
+msgstr "Eliminar Todos los Proxies de Tiles"
+
msgid "Global actions:"
msgstr "Acciones Globales:"
msgid "Atlas"
msgstr "Atlas"
+msgid "Select tiles."
+msgstr "Seleccionar tiles."
+
+msgid "No tiles selected."
+msgstr "No hay tiles seleccionados."
+
msgid "Paint Properties:"
msgstr "Propiedades de Pintura:"
msgid "Yes"
msgstr "Sí"
+msgid "Add a new atlas source"
+msgstr "Añadir una nueva fuente de atlas"
+
+msgid "Add a Scene Tile"
+msgstr "Añadir un Tile de Escena"
+
msgid "Scenes collection properties:"
msgstr "Propiedades de la Colección de Escenas:"
@@ -7379,6 +7872,9 @@ msgstr "Operador SoftLight."
msgid "Color constant."
msgstr "Constante de color."
+msgid "Color parameter."
+msgstr "Parámetro de Color."
+
msgid "Returns the boolean result of the %s comparison between two parameters."
msgstr ""
"Devuelve el resultado booleano de la comparación de %s entre dos parámetros."
@@ -7552,7 +8048,7 @@ msgstr ""
"Devuelve el valor del primer parámetro elevado a la potencia del segundo."
msgid "Converts a quantity in degrees to radians."
-msgstr "Convierte un valor de grados a radianes."
+msgstr "Convierte una cantidad en grados a radianes."
msgid "1.0 / scalar"
msgstr "1.0 / escalar"
@@ -7615,12 +8111,18 @@ msgstr "Devuelve la tangente hiperbólica del parámetro."
msgid "Finds the truncated value of the parameter."
msgstr "Encuentra el valor truncado del parámetro."
+msgid "Converts screen UV to a SDF."
+msgstr "Convierte la pantalla UV a SDF."
+
msgid "Perform the cubic texture lookup."
msgstr "Realiza una búsqueda de texturas cúbicas."
msgid "Transform function."
msgstr "Función Transform."
+msgid "Transform operator."
+msgstr "Operador de transformación."
+
msgid ""
"Calculate the outer product of a pair of vectors.\n"
"\n"
@@ -7653,6 +8155,12 @@ msgstr "Calcula el inverso de una transformación."
msgid "Calculates the transpose of a transform."
msgstr "Calcula la transposición de una transformación."
+msgid "Sums two transforms."
+msgstr "Suma dos transformaciones."
+
+msgid "Subtracts two transforms."
+msgstr "Resta dos transformaciones."
+
msgid "Multiplies vector by transform."
msgstr "Multiplica vector por transformación."
@@ -7796,6 +8304,9 @@ msgstr ""
"código en la función vertex/fragment/light, no la uses para escribir "
"declaraciones de funciones en su interior."
+msgid "A reference to an existing parameter."
+msgstr "Una referencia a un parámetro existente."
+
msgid "Edit Visual Property:"
msgstr "Editar Propiedad Visual:"
@@ -7823,6 +8334,13 @@ msgstr "Por favor, elige un archivo \"project.godot\" o \".zip\"."
msgid "This directory already contains a Godot project."
msgstr "El directorio ya contiene un proyecto de Godot."
+msgid ""
+"The selected path is not empty. Choosing an empty folder is highly "
+"recommended."
+msgstr ""
+"La ruta seleccionada no está vacía. Lo más recomendable es elegir una "
+"carpeta vacía."
+
msgid "New Game Project"
msgstr "Nuevo Proyecto de Juego"
@@ -7841,6 +8359,42 @@ msgstr "Ya hay una carpeta en esta ruta con ese nombre."
msgid "It would be a good idea to name your project."
msgstr "Sería una buena idea nombrar tu proyecto."
+msgid "Supports desktop platforms only."
+msgstr "Compatible solo con plataformas de escritorio."
+
+msgid "Advanced 3D graphics available."
+msgstr "Gráficos 3D avanzados disponibles."
+
+msgid "Can scale to large complex scenes."
+msgstr "Escalable a escenas grandes y complejas."
+
+msgid "Slower rendering of simple scenes."
+msgstr "Renderizado más lento de escenas simples."
+
+msgid "Supports desktop + mobile platforms."
+msgstr "Compatible con plataformas de escritorio y móviles."
+
+msgid "Less advanced 3D graphics."
+msgstr "Gráficos 3D menos avanzados."
+
+msgid "Less scalable for complex scenes."
+msgstr "Menos escalable para escenas complejas."
+
+msgid "Fast rendering of simple scenes."
+msgstr "Renderizado rápido de escenas simples."
+
+msgid "Supports desktop, mobile + web platforms."
+msgstr "Compatible con plataformas de escritorio, móviles y web."
+
+msgid "Least advanced 3D graphics (currently work-in-progress)."
+msgstr "Gráficos 3D mucho menos avanzados (aún trabajando en ello)."
+
+msgid "Intended for low-end/older devices."
+msgstr "Destinado para dispositivos de gama baja/antiguos."
+
+msgid "Fastest rendering of simple scenes."
+msgstr "Renderizado más rápido de escenas simples."
+
msgid "Invalid project path (changed anything?)."
msgstr "La ruta del proyecto no es correcta (¿has cambiado algo?)."
@@ -7853,9 +8407,28 @@ msgstr ""
msgid "Couldn't save project at '%s' (error %d)."
msgstr "No se pudo guardar el proyecto en '%s' (error %d)."
+msgid "Warning: This folder is not empty"
+msgstr "Advertencia: Esta carpeta no está vacía"
+
+msgid ""
+"You are about to create a Godot project in a non-empty folder.\n"
+"The entire contents of this folder will be imported as project resources!\n"
+"\n"
+"Are you sure you wish to continue?"
+msgstr ""
+"Estás a punto de crear un proyecto de Godot en una carpeta que no está "
+"vacía.\n"
+"¡Todo el contenido de esta carpeta será importado como recursos del "
+"proyecto!\n"
+"\n"
+"¿Seguro que deseas continuar?"
+
msgid "Couldn't create project.godot in project path."
msgstr "No se pudo crear project.godot en la ruta del proyecto."
+msgid "Couldn't create icon.svg in project path."
+msgstr "No se pudo crear el icon.svg en la ruta del proyecto."
+
msgid "Error opening package file, not in ZIP format."
msgstr "Error al abrir el archivo comprimido, no está en formato ZIP."
@@ -7898,9 +8471,17 @@ msgstr "Ruta de Instalación del Proyecto:"
msgid "Renderer:"
msgstr "Renderizador:"
+msgid "The renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+"El renderizador puede ser cambiado posteriormente, pero las escenas pueden "
+"requerir ajustes."
+
msgid "Version Control Metadata:"
msgstr "Metadatos de Control de Versión:"
+msgid "Git"
+msgstr "Git"
+
msgid "Missing Project"
msgstr "Proyecto Faltante"
@@ -7942,6 +8523,9 @@ msgstr ""
"Advertencia: Ya no podrás abrir el proyecto con versiones anteriores del "
"motor."
+msgid "Convert project.godot Only"
+msgstr "Solo convertir project.godot"
+
msgid ""
"The selected project \"%s\" was generated by an older engine version, and "
"needs to be converted for this version.\n"
@@ -7963,6 +8547,9 @@ msgstr ""
"Advertencia: Ya no podrás abrir el proyecto con versiones anteriores del "
"motor."
+msgid "Convert project.godot"
+msgstr "Convertir project.godot"
+
msgid ""
"Can't open project \"%s\" at the following path:\n"
"\n"
@@ -7978,6 +8565,9 @@ msgstr ""
"La configuración del proyecto fue creada por una versión más reciente del "
"motor, cuya configuración no es compatible con esta versión."
+msgid "Open anyway? Project will be modified."
+msgstr "¿Abrir de todas formas? El proyecto será modificado."
+
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in the Project Settings under "
@@ -7995,7 +8585,7 @@ msgstr ""
"Por favor, edita el proyecto para activar el importado inicial."
msgid "Are you sure to run %d projects at once?"
-msgstr "¿Estás seguro de que vas a ejecutar %d proyectos a la vez?"
+msgstr "¿Estás seguro de ejecutar %d proyectos a la vez?"
msgid "Remove %d projects from the list?"
msgstr "¿Quitar %d proyectos de la lista?"
@@ -8043,6 +8633,9 @@ msgstr ""
msgid "Loading, please wait..."
msgstr "Cargando, espera por favor..."
+msgid "Last Edited"
+msgstr "Último Editado"
+
msgid "New Project"
msgstr "Nuevo Proyecto"
@@ -8089,9 +8682,15 @@ msgstr ""
"Actualmente no tienes ningún proyecto.\n"
"¿Quieres explorar proyectos de ejemplo oficiales en la Librería de Assets?"
+msgid "Add Project Setting"
+msgstr "Añadir Configuración del Proyecto"
+
msgid "Delete Item"
msgstr "Eliminar Elemento"
+msgid "(All)"
+msgstr "(Todo)"
+
msgid "Add Input Action"
msgstr "Añadir acción de entrada"
@@ -8101,15 +8700,20 @@ msgstr "Cambiar zona muerta de la acción"
msgid "Erase Input Action"
msgstr "Eliminar Acción de Entrada"
-msgid "Rename Input Action Event"
-msgstr "Renombrar evento de acción de entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configuración del Proyecto (project.godot)"
+msgid "Advanced Settings"
+msgstr "Configuraciones Avanzadas"
+
msgid "Select a Setting or Type its Name"
msgstr "Selecciona un Ajuste o Escribe su Nombre"
+msgid "Changed settings will be applied to the editor after restarting."
+msgstr ""
+"Las configuraciones modificadas serán aplicadas al editor luego de "
+"reiniciarlo."
+
msgid "Input Map"
msgstr "Mapa de Entrada"
@@ -8146,6 +8750,21 @@ msgstr "Opciones Avanzadas"
msgid "Substitute"
msgstr "Sustituir"
+msgid "Node name."
+msgstr "Nombre del nodo."
+
+msgid "Node's parent name, if available."
+msgstr "El nombre del nodo padre está disponible."
+
+msgid "Node type."
+msgstr "Tipo de nodo."
+
+msgid "Current scene name."
+msgstr "Nombre de la escena actual."
+
+msgid "Root node name."
+msgstr "Nombre del nodo raíz."
+
msgid ""
"Sequential integer counter.\n"
"Compare counter options."
@@ -8160,9 +8779,15 @@ msgid "If set, the counter restarts for each group of child nodes."
msgstr ""
"Si está activado, el contador se reinicia por cada grupo de nodos hijos."
+msgid "Initial value for the counter."
+msgstr "Valor inicial del contador."
+
msgid "Step"
msgstr "Paso"
+msgid "Amount by which counter is incremented for each node."
+msgstr "Cantidad en la que se incrementa el contador por cada nodo."
+
msgid "Padding"
msgstr "Relleno"
@@ -8215,6 +8840,9 @@ msgstr "Mantener transformación global"
msgid "Reparent"
msgstr "Reemparentar"
+msgid "File name invalid."
+msgstr "El nombre del archivo es inválido."
+
msgid "Root Type:"
msgstr "Tipo de Raíz:"
@@ -8685,6 +9313,9 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "El diccionario de instancias no es correcto (subclases erróneas)"
+msgid "Path to Blender installation is valid."
+msgstr "La ruta de instalación de Blender es válida."
+
msgid "Next Plane"
msgstr "Siguiente Plano"
@@ -8808,6 +9439,10 @@ msgstr "Tamaño"
msgid "Network Profiler"
msgstr "Profiler de Red"
+msgid "Not possible to add a new property to synchronize without a root."
+msgstr ""
+"No es posible añadir una nueva propiedad para sincronizar sin una raíz."
+
msgid "Delete Property?"
msgstr "¿Eliminar Propiedad?"
@@ -8864,6 +9499,9 @@ msgstr "¡Hecho!"
msgid "Error loading %s: %s."
msgstr "Error al cargar %s: %s."
+msgid "Add an action set."
+msgstr "Añadir un conjunto de acciones."
+
msgid "Pose"
msgstr "Pose"
@@ -9382,6 +10020,13 @@ msgstr ""
"en Mac con Gatekeeper habilitado y Mac con tecnología Apple Silicon."
msgid ""
+"Code signing: Using ad-hoc signature. The exported project will be blocked "
+"by Gatekeeper"
+msgstr ""
+"Firma del código: Se utiliza una firma ad-hoc. El proyecto exportado será "
+"bloqueado por Gatekeeper"
+
+msgid ""
"Privacy: Microphone access is enabled, but usage description is not "
"specified."
msgstr ""
@@ -9706,6 +10351,17 @@ msgstr ""
"Por favor, úsalo solo como hijo de Area3D, StaticBody3D, RigidBody3D, "
"CharacterBody3D, etc. para darles una forma."
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D solo sirve para proporcionar una forma de colisión a un "
+"nodo derivado CollisionObject3D.\n"
+"Por favor, úsalo solo como hijo de Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. para darles una forma."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "No hay nada visible porque no se ha asignado ninguna malla."
@@ -9715,6 +10371,9 @@ msgstr ""
"No hay nada visible porque no se han asignado mallas para los pases de "
"dibujo."
+msgid "Creating probes"
+msgstr "Crear sondas"
+
msgid "Generating Probe Volumes"
msgstr "Generando Volúmenes de Sonda"
@@ -9779,12 +10438,12 @@ msgstr ""
"Color: #%s\n"
"Clic izq: Aplicar color"
-msgid "Pick a color from the editor window."
-msgstr "Selecciona un color de la ventana del editor."
-
msgid "Select a picker shape."
msgstr "Selecciona una forma de selección."
+msgid "Select a picker mode."
+msgstr "Elige un modo de selección."
+
msgid "Switch between hexadecimal and code values."
msgstr "Cambiar entre valores hexadecimales y de código."
@@ -9818,9 +10477,6 @@ msgstr "¡Alerta!"
msgid "Please Confirm..."
msgstr "Por favor, Confirma..."
-msgid "Must use a valid extension."
-msgstr "Debe tener una extensión válida."
-
msgid "Enable grid minimap."
msgstr "Activar minimapa de cuadrícula."
@@ -9849,6 +10505,21 @@ msgstr ""
"'%s' ya no está establecido como un nombre único."
msgid ""
+"This node is marked as deprecated and will be removed in future versions.\n"
+"Please check the Godot documentation for information about migration."
+msgstr ""
+"Este nodo está marcado como obsoleto y será removido en futuras versiones.\n"
+"Por favor consulta la documentación de Godot para obtener información sobre "
+"migración."
+
+msgid ""
+"This node is marked as experimental and may be subject to removal or major "
+"changes in future versions."
+msgstr ""
+"Este nodo está marcado como experimental y es propenso a ser removido o "
+"sufrir cambios importantes en futuras versiones."
+
+msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
@@ -9857,6 +10528,13 @@ msgstr ""
"Predeterminado)."
msgid ""
+"ShaderGlobalsOverride is not active because another node of the same type is "
+"in the scene."
+msgstr ""
+"ShaderGlobalsOverride no está activo debido a que ya existe otro nodo del "
+"mismo tipo en la escena."
+
+msgid ""
"Very low timer wait times (< 0.05 seconds) may behave in significantly "
"different ways depending on the rendered or physics frame rate.\n"
"Consider using a script's process loop instead of relying on a Timer for "
@@ -9875,6 +10553,9 @@ msgstr ""
"El tamaño del Viewport debe ser mayor o igual a 2 píxeles en ambas "
"dimensiones para renderizar cualquier cosa."
+msgid "Cannot open font from file: %s."
+msgstr "No se puede abrir la fuente desde el archivo: %s."
+
msgid "Unsupported BMFont texture format."
msgstr "Formato de textura BMFont no compatible."
@@ -9886,6 +10567,13 @@ msgstr ""
"Elige otro nombre."
msgid ""
+"Global parameter '%s' does not exist.\n"
+"Create it in the Project Settings."
+msgstr ""
+"El parámetro global '%s' no existe.\n"
+"Créalo en la Configuración del Proyecto."
+
+msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
msgstr ""
@@ -9898,6 +10586,9 @@ msgstr "Fuente inválida para la vista previa."
msgid "Invalid source for shader."
msgstr "Fuente inválida para el shader."
+msgid "Invalid operator for that type."
+msgstr "Operador no válido para ese tipo."
+
msgid "Default Color"
msgstr "Color Predeterminado"
@@ -9910,6 +10601,18 @@ msgstr "Repetir"
msgid "Invalid comparison function for that type."
msgstr "Función de comparación inválida para este tipo."
+msgid "2D Mode"
+msgstr "Modo 2D"
+
+msgid "Invalid arguments for the built-in function: \"%s(%s)\"."
+msgstr "Argumentos inválidos para la función integrada: \"%s(%s)\"."
+
+msgid "Invalid assignment of '%s' to '%s'."
+msgstr "Asignación inválida de '%s' a '%s'."
+
+msgid "Expected constant expression."
+msgstr "Se esperaba una expresión constante."
+
msgid "Varying may not be assigned in the '%s' function."
msgstr "No se puede asignar la variable en la función '%s'."
@@ -9922,12 +10625,51 @@ msgstr "Asignación a uniform."
msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
+msgid "Cannot convert from '%s' to '%s'."
+msgstr "No se puede convertir de '%s' a '%s'."
+
+msgid "Expected ')' in expression."
+msgstr "Se esperaba ')' en la expresión."
+
+msgid "Void value not allowed in expression."
+msgstr "Valor nulo no permitido en la expresión."
+
+msgid "No matching constructor found for: '%s'."
+msgstr "No se ha encontrado ningún constructor para: '%s'."
+
+msgid "No matching function found for: '%s'."
+msgstr "No se ha encontrado ninguna función que coincida con: '%s'."
+
+msgid "Invalid arguments to unary operator '%s': %s."
+msgstr "Argumentos inválidos para el operador unario '%s': %s."
+
+msgid "Invalid argument to ternary operator: '%s'."
+msgstr "Argumento inválido para el operador ternario: '%s'."
+
+msgid "Invalid arguments to operator '%s': '%s'."
+msgstr "Argumentos inválidos para el operador '%s': '%s'."
+
msgid "Invalid variable type (samplers are not allowed)."
msgstr "Tipo de variable inválido (los samplers no están permitidos)."
+msgid "Duplicated case label: %d."
+msgstr "Etiqueta duplicada: %d."
+
+msgid "Duplicated render mode: '%s'."
+msgstr "Modo de renderizado duplicado: '%s'."
+
msgid "Expected data type."
msgstr "Tipo de datos esperado."
+msgid "Duplicated hint: '%s'."
+msgstr "Sugerencia duplicada: '%s'."
+
+msgid "Duplicated filter mode: '%s'."
+msgstr "Modo de filtro duplicado: '%s'."
+
+msgid "Duplicated repeat mode: '%s'."
+msgstr "Modo de repetición duplicado: '%s'."
+
msgid "Invalid constant type (samplers are not allowed)."
msgstr "Tipo de constante inválido (los samplers no están permitidos)."
@@ -9937,8 +10679,42 @@ msgstr "Tipo de función inválido (los samplers no están permitidos)."
msgid "Expected a '%s'."
msgstr "Se esperaba un '%s'."
+msgid "Expected a '%s' or '%s'."
+msgstr "Se esperaba un '%s' o '%s'."
+
+msgid "Redefinition of '%s'."
+msgstr "Redefinición de '%s'."
+
msgid "Invalid argument name."
msgstr "Nombre de argumento inválido."
+msgid "Missing condition."
+msgstr "Condición perdida."
+
+msgid "Condition evaluation error."
+msgstr "Error de evaluación de la condición."
+
msgid "Invalid macro argument count."
msgstr "Contador de argumentos de macro inválido."
+
+msgid "The function '%s' is declared but never used."
+msgstr "La función '%s' está declarada, pero nunca se utiliza."
+
+msgid "The struct '%s' is declared but never used."
+msgstr "La estructura '%s' se ha declarado, pero nunca se ha utilizado."
+
+msgid "The uniform '%s' is declared but never used."
+msgstr "El uniform '%s' se ha declarado, pero nunca se ha utilizado."
+
+msgid "The varying '%s' is declared but never used."
+msgstr "La variable '%s' se ha declarado, pero nunca se ha utilizado."
+
+msgid "The local variable '%s' is declared but never used."
+msgstr "La variable local '%s' se ha declarado, pero nunca se ha utilizado."
+
+msgid ""
+"The total size of the %s for this shader on this device has been exceeded "
+"(%d/%d). The shader may not work correctly."
+msgstr ""
+"El tamaño total de %s para este sombreador en este dispositivo ha sido "
+"excedido (%d/%d). El sombreador podría funcionar de forma incorrecta."
diff --git a/editor/translations/editor/es_AR.po b/editor/translations/editor/es_AR.po
index 964b6858b9..febc87393d 100644
--- a/editor/translations/editor/es_AR.po
+++ b/editor/translations/editor/es_AR.po
@@ -440,12 +440,6 @@ msgstr "Usar Curvas Bezier"
msgid "Create RESET Track(s)"
msgstr "Crear RESET Track(s)"
-msgid "Anim. Optimizer"
-msgstr "Optimizador de animación"
-
-msgid "Max. Angular Error:"
-msgstr "Error Angular Max.:"
-
msgid "Optimize"
msgstr "Optimizar"
@@ -1442,9 +1436,6 @@ msgstr "Abrir"
msgid "Select Current Folder"
msgstr "Seleccionar Carpeta Actual"
-msgid "File exists, overwrite?"
-msgstr "El archivo existe, sobrescribir?"
-
msgid "Select This Folder"
msgstr "Seleccionar Esta Carpeta"
@@ -7093,9 +7084,6 @@ msgstr "Cambiar zona muerta de la Acción"
msgid "Erase Input Action"
msgstr "Borrar Acción de Entrada"
-msgid "Rename Input Action Event"
-msgstr "Renombrar Evento de Acción de Entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configuración de Proyecto (project.godot)"
@@ -8410,9 +8398,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "La raíz del nodo AnimationPlayer no es un nodo válido."
-msgid "Pick a color from the editor window."
-msgstr "Elegir un color de la ventana del editor."
-
msgid "Switch between hexadecimal and code values."
msgstr "Cambiar entre valores hexadecimales y de código."
@@ -8443,9 +8428,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmá, por favor..."
-msgid "Must use a valid extension."
-msgstr "Debe ser una extensión válida."
-
msgid "Enable grid minimap."
msgstr "Activar minimapa de grilla."
diff --git a/editor/translations/editor/fi.po b/editor/translations/editor/fi.po
index 559817673a..8d349793bf 100644
--- a/editor/translations/editor/fi.po
+++ b/editor/translations/editor/fi.po
@@ -421,12 +421,6 @@ msgstr "Käytä Bezier-käyriä"
msgid "Create RESET Track(s)"
msgstr "Luo palautusraidat"
-msgid "Anim. Optimizer"
-msgstr "Animaation optimoija"
-
-msgid "Max. Angular Error:"
-msgstr "Max. kulmavirhe:"
-
msgid "Optimize"
msgstr "Optimoi"
@@ -1419,9 +1413,6 @@ msgstr "Avaa"
msgid "Select Current Folder"
msgstr "Valitse nykyinen kansio"
-msgid "File exists, overwrite?"
-msgstr "Tiedosto on jo olemassa, korvataanko?"
-
msgid "Select This Folder"
msgstr "Valitse tämä kansio"
@@ -7099,9 +7090,6 @@ msgstr "Vaihda toiminnon katvealue"
msgid "Erase Input Action"
msgstr "Tyhjennä syötetoiminto"
-msgid "Rename Input Action Event"
-msgstr "Nimeä syötetoiminto uudelleen"
-
msgid "Project Settings (project.godot)"
msgstr "Projektin asetukset (project.godot)"
@@ -8464,9 +8452,6 @@ msgstr ""
"Vasen hiirenkorva: Aseta väri\n"
"Oikea hiirenkorva: Poista esiasetus"
-msgid "Pick a color from the editor window."
-msgstr "Valitse väri editori-ikkunasta."
-
msgid "Switch between hexadecimal and code values."
msgstr "Vaihda heksadesimaali- ja koodiarvojen välillä."
@@ -8497,9 +8482,6 @@ msgstr "Huomio!"
msgid "Please Confirm..."
msgstr "Ole hyvä ja vahvista..."
-msgid "Must use a valid extension."
-msgstr "Käytä sopivaa tiedostopäätettä."
-
msgid "Enable grid minimap."
msgstr "Käytä ruudukon pienoiskarttaa."
diff --git a/editor/translations/editor/fr.po b/editor/translations/editor/fr.po
index acb33aecf6..50bbeeeea6 100644
--- a/editor/translations/editor/fr.po
+++ b/editor/translations/editor/fr.po
@@ -113,13 +113,18 @@
# nuclehon <benjamin.deslandes1@gmail.com>, 2023.
# Siandfrance <Siandfrance@gmail.com>, 2023.
# Thalya Gauvrit <skar0ps.dev@gmail.com>, 2023.
+# Malo Barbot <moy_97@hotmail.fr>, 2023.
+# Quentin Franchi <general@quentinfranchi.com>, 2023.
+# Godot Trad FR <godottrad@mailo.com>, 2023.
+# Ponthieu <7hip.po6@orange.fr>, 2023.
+# Hipolyte Ponthieu <7hip.po6@orange.fr>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Siandfrance <Siandfrance@gmail.com>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: Hipolyte Ponthieu <7hip.po6@orange.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -130,7 +135,7 @@ msgstr ""
"X-Generator: Weblate 4.16-dev\n"
msgid "Unset"
-msgstr "Vider"
+msgstr "Non défini"
msgid "Physical"
msgstr "Physique"
@@ -270,11 +275,17 @@ msgstr "Palette Xbox 4"
msgid "PS4/5 Touchpad"
msgstr "Pavé tactile PS4/5"
+msgid "Joypad Button %d"
+msgstr "Bouton de joystick %d"
+
+msgid "Pressure:"
+msgstr "Pression :"
+
msgid "touched"
msgstr "Touché"
msgid "released"
-msgstr "Relâché"
+msgstr "relâché"
msgid "Screen %s at (%s) with %s touch points"
msgstr "Écran %s à (%s) avec %s points de contact"
@@ -387,6 +398,18 @@ msgstr "Supprimer mot"
msgid "Delete all to Right"
msgstr "Tout supprimer à droite"
+msgid "Caret Left"
+msgstr "Curseur à Gauche"
+
+msgid "Caret Word Right"
+msgstr "Curseur à droite du mot"
+
+msgid "Caret Up"
+msgstr "Déplacer le curseur vers le haut"
+
+msgid "Caret Add Above"
+msgstr "Ajouter un curseur au-dessus"
+
msgid "Scroll Up"
msgstr "Défilement vers le haut"
@@ -402,8 +425,8 @@ msgstr "Sélectionner les mots sous le caret"
msgid "Add Selection for Next Occurrence"
msgstr "Ajouter la Sélection pour la Prochaine Occurence"
-msgid "Text Submitted"
-msgstr "Texte Proposé"
+msgid "Toggle Insert Mode"
+msgstr "Basculer en mode insertion"
msgid "Duplicate Nodes"
msgstr "Dupliquer le(s) nœud(s)"
@@ -486,6 +509,11 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Une action avec le nom « %s » existe déjà."
+msgid "Cannot Revert - Action is same as initial"
+msgstr ""
+"Impossible de revenir en arrière - L'action est identique à ce qui était "
+"initialement"
+
msgid "Add Event"
msgstr "Ajouter un évènement"
@@ -540,6 +568,15 @@ msgstr "Dupliquer la(les) clé(s) sélectionnée(s)"
msgid "Delete Selected Key(s)"
msgstr "Supprimer (la)les clé(s) sélectionnée(s)"
+msgid "Make Handles Mirrored"
+msgstr "Inverser les Anses"
+
+msgid "Make Handles Balanced (Auto Tangent)"
+msgstr "Équilibrer les Anses (Tangente Automatique)"
+
+msgid "Make Handles Mirrored (Auto Tangent)"
+msgstr "Appliquer manipulations en miroir (Auto-Tangente)"
+
msgid "Add Bezier Point"
msgstr "Ajouter un point de Bézier"
@@ -633,6 +670,18 @@ msgstr "Poignée d'entrée :"
msgid "Out-Handle:"
msgstr "Poignée de sortie :"
+msgid "Handle mode: Free\n"
+msgstr "Mode de manipulation: Libre\n"
+
+msgid "Handle mode: Linear\n"
+msgstr "Mode de manipulation: Linéaire\n"
+
+msgid "Handle mode: Balanced\n"
+msgstr "Mode de manipulation: Équilibré\n"
+
+msgid "Handle mode: Mirrored\n"
+msgstr "Mode de manipulation: En miroir\n"
+
msgid "Stream:"
msgstr "Flux :"
@@ -648,6 +697,9 @@ msgstr "Clip d'animation :"
msgid "Toggle Track Enabled"
msgstr "Basculement de piste activé"
+msgid "Don't Use Blend"
+msgstr "Ne pas utiliser de transitions"
+
msgid "Continuous"
msgstr "Continu"
@@ -855,12 +907,6 @@ msgstr "Utiliser les courbes de Bézier"
msgid "Create RESET Track(s)"
msgstr "Créer des pistes RESET"
-msgid "Anim. Optimizer"
-msgstr "Optimiser l'animation"
-
-msgid "Max. Angular Error:"
-msgstr "Erreur angulaire max. :"
-
msgid "Optimize"
msgstr "Optimiser"
@@ -882,6 +928,9 @@ msgstr "Nettoyer"
msgid "Scale Ratio:"
msgstr "Ratio d'échelle :"
+msgid "Select Transition and Easing"
+msgstr "Sélectionner transition et fondu"
+
msgid "Select Tracks to Copy"
msgstr "Sélectionner les pistes à copier"
@@ -906,6 +955,16 @@ msgstr "Numéro de ligne :"
msgid "%d replaced."
msgstr "%d remplacé."
+msgid "%d match"
+msgid_plural "%d matches"
+msgstr[0] "%d correspondance trouvée"
+msgstr[1] "%d correspondances trouvées"
+
+msgid "%d of %d match"
+msgid_plural "%d of %d matches"
+msgstr[0] "%d de %d correspondance trouvée"
+msgstr[1] "%d de %d correspondances trouvées"
+
msgid "Match Case"
msgstr "Sensible à la casse"
@@ -970,6 +1029,9 @@ msgstr "La scène ne comprend pas de script."
msgid "Select Method"
msgstr "Sélectionner une méthode"
+msgid "No method found matching given filters."
+msgstr "Aucune méthode ne correspond aux filtres sélectionnés."
+
msgid "Remove"
msgstr "Supprimer"
@@ -1633,6 +1695,9 @@ msgstr ""
msgid "Must not collide with an existing global constant name."
msgstr "Ne doit pas entrer en collision avec une constante globale existante."
+msgid "Keyword cannot be used as an Autoload name."
+msgstr "Le mot-clé ne peut pas être utilisé comme nom d'Autoload."
+
msgid "Autoload '%s' already exists!"
msgstr "L'autoload « %s » existe déjà !"
@@ -1662,6 +1727,9 @@ msgstr ""
msgid "Path:"
msgstr "Chemin :"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "Définir le chemin d'accès ou appuyer sur \"%s\" pour créer un script."
+
msgid "Node Name:"
msgstr "Nom de nœud :"
@@ -1683,6 +1751,59 @@ msgstr "OpenGL"
msgid "Vulkan"
msgstr "Vulkan"
+msgid "Multi-channel Signed Distance Field Font Rendering"
+msgstr "Rendu de police multicanal par champ de distance signée"
+
+msgid "3D Nodes as well as RenderingServer access to 3D features."
+msgstr "Accés de 3D Nodes et RenderingServer aux fonctionnalités 3D."
+
+msgid ""
+"OpenGL back-end (if disabled, the RenderingDevice back-end is required)."
+msgstr ""
+"Back-end OpenGL (si désactivé, le back-end RenderingDevice est nécessaire)."
+
+msgid ""
+"Fallback implementation of Text Server\n"
+"Supports basic text layouts."
+msgstr ""
+"Implémentation de secours du Serveur de Texte\n"
+"Prend en charge les mises en page de texte basiques."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Implémentation Text Server au travers de ICU et des bibliothèques HarfBuzz.\n"
+"Prise en charge de mises en page de texte complexes, BiDi, et des "
+"fonctionnalités contextuelles des polices OpenType."
+
+msgid ""
+"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
+"library (if disabled, WOFF2 support is also disabled)."
+msgstr ""
+"Prise en charge des formats de polices TrueType, OpenType, Type 1 et WOFF1 "
+"par l'utilisation de la bibliothèque FreeType (si désactivé, la comptabilité "
+"du format WOFF2 l'est aussi)."
+
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr ""
+"Prise en charge du format de police WOFF2 par les bibliothèques FreeType et "
+"Brottli."
+
+msgid ""
+"Multi-channel signed distance field font rendering support using msdfgen "
+"library (pre-rendered MSDF fonts can be used even if this option disabled)."
+msgstr ""
+"Prise en charge du rendu multicanal des polices de champs de distance signée "
+"par la bibliothèque msdfgen (les polices MSDF pré-rendues peuvent être "
+"utilisées même si cette option est désactivée)."
+
+msgid "Text Rendering and Font Options:"
+msgstr "Options sur le Rendu du Texte et les Polices :"
+
+msgid "File saving failed."
+msgstr "Echec de l'enregistrement du fichier."
+
msgid "Nodes and Classes:"
msgstr "Nœuds et classes :"
@@ -1698,12 +1819,21 @@ msgstr "Nouveau"
msgid "Save"
msgstr "Enregistrer"
+msgid "Profile:"
+msgstr "Profil:"
+
msgid "Reset to Defaults"
msgstr "Réinitialiser"
+msgid "Please Confirm:"
+msgstr "Veuillez confirmer :"
+
msgid "Export Profile"
msgstr "Profil d'exportation"
+msgid "Edit Build Configuration Profile"
+msgstr "Modifier le profil de configuration de build"
+
msgid "Paste Params"
msgstr "Coller les paramètres"
@@ -1894,9 +2024,6 @@ msgstr "Ouvrir"
msgid "Select Current Folder"
msgstr "Sélectionner le dossier courant"
-msgid "File exists, overwrite?"
-msgstr "Le fichier existe, l'écraser ?"
-
msgid "Select This Folder"
msgstr "Sélectionner ce dossier"
@@ -2015,6 +2142,9 @@ msgstr "Ré-importation des assets"
msgid "Experimental"
msgstr "Expérimental"
+msgid "Error codes returned:"
+msgstr "Codes d'erreur renvoyés :"
+
msgid "Top"
msgstr "Dessus"
@@ -2042,6 +2172,9 @@ msgstr "écrase %s :"
msgid "default:"
msgstr "par défaut :"
+msgid "Operators"
+msgstr "Opérateurs"
+
msgid "Theme Properties"
msgstr "Propriétés du thème"
@@ -2980,6 +3113,13 @@ msgstr "Raccourcis"
msgid "Binding"
msgstr "Liaison"
+msgid ""
+"Hold %s to round to integers.\n"
+"Hold Shift for more precise changes."
+msgstr ""
+"Maintenir %s pour arrondir à l'entier près.\n"
+"Maintenir Maj. pour des changements plus précis."
+
msgid "All Devices"
msgstr "Tous les périphérique"
@@ -3615,6 +3755,9 @@ msgstr "Réimporter"
msgid "Offset:"
msgstr "Décalage :"
+msgid "Pre-render Configurations"
+msgstr "Configurations de pré-rendus"
+
msgid "Importing Scene..."
msgstr "Importation de la scène…"
@@ -3650,6 +3793,11 @@ msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid "Set paths to save animations as resource files on Reimport"
+msgstr ""
+"Définir les chemins pour sauvegarder les animations en tant que fichiers de "
+"ressources lors de la réimportation"
+
msgid "Meshes"
msgstr "Maillages"
@@ -3818,6 +3966,9 @@ msgstr "Réaffectations (remaps) par langue :"
msgid "Locale"
msgstr "Localisation"
+msgid "Set %s on %d nodes"
+msgstr "Définir %s sur les nœuds %d"
+
msgid "Select a single node to edit its signals and groups."
msgstr "Sélectionnez un seul nœud pour éditer ses signaux et groupes."
@@ -4050,9 +4201,18 @@ msgstr "Ajouter un nœud..."
msgid "Enable Filtering"
msgstr "Activer le filtrage"
+msgid "Animation name can't be empty."
+msgstr "Le nom de l'animation ne peut pas être vide."
+
msgid "Load Animation"
msgstr "Charger l'animation"
+msgid "Invalid AnimationLibrary file."
+msgstr "Fichier AnimationLibrary non valide."
+
+msgid "Invalid Animation file."
+msgstr "Fichier d'animation non valide."
+
msgid "Animation Name:"
msgstr "Nom de l'animation :"
@@ -4062,6 +4222,19 @@ msgstr "Animation collée"
msgid "Open in Inspector"
msgstr "Ouvrir dans l'Inspecteur"
+msgid "Paste Animation to Library from clipboard"
+msgstr "Coller l'animation dans la Bibliothèque à partir du presse-papiers"
+
+msgid "Save animation library to resource on disk"
+msgstr ""
+"Sauvegarder la bibliothèque d'animations dans une ressource sur le disque"
+
+msgid "Copy animation to clipboard"
+msgstr "Copier l'animation dans le presse-papiers"
+
+msgid "Save animation to resource on disk"
+msgstr "Sauvegarder l'animation en tant que ressource sur le disque"
+
msgid "Storage"
msgstr "Stockage"
@@ -4313,6 +4486,9 @@ msgstr "Vérification du hachage SHA-256 échouée"
msgid "Asset Download Error:"
msgstr "Erreur dans le téléchargement d'une ressource :"
+msgid "Ready to install!"
+msgstr "Prêt à être installé !"
+
msgid "Downloading (%s / %s)..."
msgstr "Téléchargement (%s / %s)..."
@@ -4533,7 +4709,7 @@ msgid "Paste Pose"
msgstr "Coller la pose"
msgid "Clear Guides"
-msgstr "Effacé Guides"
+msgstr "Effacer les Guides"
msgid "Zoom to 3.125%"
msgstr "Zoomer à 3.125%"
@@ -5004,6 +5180,14 @@ msgstr ""
"Quand elle est utilisée à distance sur un périphérique, cette option est "
"plus efficace avec le système de fichiers réseau."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Exécuter une instance %d"
+msgstr[1] "Exécuter des instances %d"
+
+msgid " - Variation"
+msgstr " - Variation"
+
msgid "Convert to CPUParticles2D"
msgstr "Convertir en CPUParticles2D"
@@ -5142,6 +5326,19 @@ msgstr "Aucun maillage à déboguer."
msgid "Mesh has no UV in layer %d."
msgstr "Le maillage n'a pas d'UV dans la couche %d."
+msgid "MeshInstance3D lacks a Mesh."
+msgstr "Le MeshInstance3D n'a pas de maillage."
+
+msgid "Mesh has no surface to create outlines from."
+msgstr ""
+"Le maillage n'a pas de surfaces où des contours pourraient être créées."
+
+msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES."
+msgstr "Le type de maillage primitif n'est pas PRIMITIVE_TRIANGLES."
+
+msgid "Could not create outline."
+msgstr "Impossible de créer le contour."
+
msgid "Create Outline"
msgstr "Créer le contour"
@@ -5431,6 +5628,9 @@ msgstr "L'insertion de clé est désactivée (pas de clé insérée)."
msgid "Animation Key Inserted."
msgstr "Clé d'animation insérée."
+msgid "Objects: %d\n"
+msgstr "Objets : %d\n"
+
msgid "Top View."
msgstr "Vue de dessus."
@@ -6342,6 +6542,9 @@ msgstr "Créer un LightOccluder2D"
msgid "LightOccluder2D Preview"
msgstr "Prévisualisation du LightOccluder2D"
+msgid "Can't convert a Sprite2D from a foreign scene."
+msgstr "Impossible de convertir un Sprite2D à partir d'une scène étrangère."
+
msgid "Can't convert a sprite using animation frames to mesh."
msgstr ""
"Impossible de convertir un sprite en utilisant des images d'animation à "
@@ -6425,6 +6628,9 @@ msgstr "(vide)"
msgid "Animations:"
msgstr "Animations :"
+msgid "Delete Animation"
+msgstr "Supprimer l'animation"
+
msgid "Animation Frames:"
msgstr "Trames d'animation :"
@@ -6476,21 +6682,46 @@ msgstr "Pas (s) :"
msgid "Styleboxes"
msgstr "Styleboxes"
+msgid "1 color"
+msgid_plural "{num} colors"
+msgstr[0] "1 couleur"
+msgstr[1] "{num} couleurs"
+
msgid "No colors found."
msgstr "Pas de couleurs trouvées."
+msgid "1 constant"
+msgid_plural "{num} constants"
+msgstr[0] "1 constante"
+msgstr[1] "{num} constantes"
+
msgid "No constants found."
msgstr "Pas de constantes trouvées."
msgid "No fonts found."
msgstr "Pas de polices trouvées."
+msgid "1 font size"
+msgid_plural "{num} font sizes"
+msgstr[0] "1 taille de police"
+msgstr[1] "{num} tailles de police"
+
msgid "No icons found."
msgstr "Pas d'icônes trouvées."
+msgid "1 stylebox"
+msgid_plural "{num} styleboxes"
+msgstr[0] "1 boîte de style"
+msgstr[1] "{num} boîtes de style"
+
msgid "No styleboxes found."
msgstr "Pas de styleboxes trouvées."
+msgid "{num} currently selected"
+msgid_plural "{num} currently selected"
+msgstr[0] "{num} actuellement sélectionné(s)"
+msgstr[1] "{num} actuellement sélectionné(s)"
+
msgid "Nothing was selected for the import."
msgstr "Rien n'a été sélectionné pour l'importation."
@@ -7757,6 +7988,65 @@ msgid "Can't open project at '%s'."
msgstr "Impossible d'ouvrir le projet à \"%s\"."
msgid ""
+"The selected project \"%s\" does not specify its supported Godot version in "
+"its configuration file (\"project.godot\").\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"If you proceed with opening it, it will be converted to Godot's current "
+"configuration file format.\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Le fichier de configuration de projet ci-dessous n'indique pas par quelle "
+"version de Godot il a été généré.\n"
+"\n"
+"Chemin du projet : %s\n"
+"\n"
+"Si vous choisissez de l'ouvrir, il sera converti vers le format actuel de "
+"fichier de configuration de Godot.\n"
+"\n"
+"Attention : Il ne sera plus possible d'ouvrir ce projet avec les précédentes "
+"versions du moteur."
+
+msgid ""
+"The selected project \"%s\" was generated by an older engine version, and "
+"needs to be converted for this version.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"Do you want to convert it?\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Le fichier de configuration de projet ci-dessous a été généré par une "
+"précédente version du moteur, et doit être mis à niveau pour cette version.\n"
+"\n"
+"Chemin du projet : %s\n"
+"\n"
+"Souhaitez-vous le convertir ?\n"
+"\n"
+"Attention : Il ne sera plus possible d'ouvrir ce projet avec les précédentes "
+"versions du moteur de jeu."
+
+msgid ""
+"Can't open project \"%s\" at the following path:\n"
+"\n"
+"%s\n"
+"\n"
+"The project settings were created by a newer engine version, whose settings "
+"are not compatible with this version."
+msgstr ""
+"Impossible d'ouvrir le projet \"%s\" au chemin suivant :\n"
+"\n"
+"%s\n"
+"\n"
+"Ce fichier de configuration de projet a été créé par une version ultérieure "
+"du moteur, dont les paramètres ne sont pas compatibles avec cette version."
+
+msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
@@ -7879,12 +8169,12 @@ msgstr "Modifier la zone morte de l'action"
msgid "Erase Input Action"
msgstr "Effacer l'action d'entrée"
-msgid "Rename Input Action Event"
-msgstr "Renommer l'événement d'action d'entrée"
-
msgid "Project Settings (project.godot)"
msgstr "Paramètres du projet (project.godot)"
+msgid "Select a Setting or Type its Name"
+msgstr "Sélectionnez un paramètre ou tapez son nom"
+
msgid "Input Map"
msgstr "Contrôles"
@@ -8255,6 +8545,19 @@ msgstr ""
"dans un chemin de NÅ“ud.\n"
"Cliquer pour désactiver cela."
+msgid "Node has one connection."
+msgid_plural "Node has {num} connections."
+msgstr[0] "Le nœud a une connexion."
+msgstr[1] "Le nœud a {num} connexions."
+
+msgid "Node is in this group:"
+msgid_plural "Node is in the following groups:"
+msgstr[0] "Le nœud fait partie du groupe :"
+msgstr[1] "Le nœud fait partie des groupes :"
+
+msgid "Click to show signals dock."
+msgstr "Cliquez pour afficher le dock des signaux."
+
msgid "Open Script:"
msgstr "Ouvrir le script :"
@@ -8385,6 +8688,9 @@ msgstr "Chemin de base invalide."
msgid "Wrong extension chosen."
msgstr "Choix d'extension erroné."
+msgid "Global shader parameter '%s' already exists'"
+msgstr "Le paramètre global de shaders '%s' existe déjà"
+
msgid "Change Cylinder Radius"
msgstr "Changer le rayon du cylindre"
@@ -8550,6 +8856,9 @@ msgstr "Taille"
msgid "Network Profiler"
msgstr "Profileur réseau"
+msgid "Delete Property?"
+msgstr "Supprimer la propriété ?"
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
"Une ressource de type NavigationMesh doit être définie ou créée pour que ce "
@@ -8774,6 +9083,13 @@ msgstr "Impossible de le programme apksigner."
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' est retourné avec l'erreur #%d"
+msgid ""
+"output: \n"
+"%s"
+msgstr ""
+"Sortie : \n"
+"%s"
+
msgid "Verifying %s..."
msgstr "Vérification de %s..."
@@ -9414,6 +9730,13 @@ msgstr ""
"Le nœud PathFollow2D ne fonctionne que s'il est défini en tant qu'enfant "
"d'un nœud de type Path2D."
+msgid ""
+"A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a "
+"parent node!"
+msgstr ""
+"Un nœud de type PhysicalBone2D ne fonctionne qu'avec un Skeleton2D ou un "
+"autre PhysicalBone2D en tant que nœud parent !"
+
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
"La propriété Path doit pointer vers un nœud de type Node2D valide pour "
@@ -9433,6 +9756,28 @@ msgstr ""
"Cet os ne dispose pas d'une position de repos appropriée. Accédez au nœud "
"Skeleton2D et définissez-en une."
+msgid ""
+"CollisionPolygon3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionPolygon3D sert uniquement à fournir une forme de collision à un "
+"nœud dérivé de CollisionObject3D.\n"
+"Veuillez l'utiliser uniquement comme enfant d'Area3D, StaticBody3D, "
+"RigidBody3D, CharacterBody3D, etc. pour leur donner une forme."
+
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D sert uniquement à fournir une forme de collision à un nœud "
+"dérivé de CollisionObject3D.\n"
+"Veuillez l'utiliser uniquement comme enfant d'Area3D, StaticBody3D, "
+"RigidBody3D, CharacterBody3D, etc. pour leur donner une forme."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "Rien n'est visible car aucun maillage n'a été assigné."
@@ -9442,6 +9787,9 @@ msgstr ""
"Rien n'est visible car les maillages n'ont pas été assignés au tirage des "
"passes."
+msgid "Creating probes"
+msgstr "Création d'un maillage de contour"
+
msgid "This body will be ignored until you set a mesh."
msgstr "Ce corps sera ignoré jusqu'à ce que vous définissiez un maillage."
@@ -9497,8 +9845,12 @@ msgstr ""
"Clic gauche : Appliquer la couleur\n"
"Clic droit : Supprimer le préréglage"
-msgid "Pick a color from the editor window."
-msgstr "Échantillonner une couleur depuis la fenêtre de l'éditeur."
+msgid ""
+"Color: #%s\n"
+"LMB: Apply color"
+msgstr ""
+"Couleur : #%s\n"
+"Clic gauche : Appliquer la couleur"
msgid "Switch between hexadecimal and code values."
msgstr "Alterner entre les valeurs hexadécimales ou brutes."
@@ -9533,9 +9885,6 @@ msgstr "Alerte !"
msgid "Please Confirm..."
msgstr "Veuillez confirmer…"
-msgid "Must use a valid extension."
-msgstr "Utilisez une extension valide."
-
msgid "Enable grid minimap."
msgstr "Activer l'alignement."
@@ -9558,6 +9907,15 @@ msgid "(Other)"
msgstr "(Autre)"
msgid ""
+"Setting node name '%s' to be unique within scene for '%s', but it's already "
+"claimed by '%s'.\n"
+"'%s' is no longer set as having a unique name."
+msgstr ""
+"Impossible de déclarer le nom de nœud '%s' comme unique dans la scène pour "
+"'%s', car ce nom est déjà attribué à '%s'.\n"
+"'%s' n'est plus considéré comme ayant un nom unique."
+
+msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
@@ -9582,6 +9940,17 @@ msgstr ""
"La taille de la fenêtre d'affichage doit être supérieure ou égale à 2 pixels "
"dans les deux sens pour que le rendu soit possible."
+msgid "Unsupported BMFont texture format."
+msgstr "Format de texture BMFont non pris en charge."
+
+msgid ""
+"Shader keywords cannot be used as parameter names.\n"
+"Choose another name."
+msgstr ""
+"Les mots-clés de shader ne peuvent pas être utilisés comme noms de "
+"paramètres.\n"
+"Choisissez un autre nom."
+
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
@@ -9618,3 +9987,12 @@ msgstr "Affectation à la variable uniform."
msgid "Constants cannot be modified."
msgstr "Les constantes ne peuvent être modifiées."
+
+msgid "The function '%s' is declared but never used."
+msgstr "La fonction '%s' est déclarée mais jamais appelée."
+
+msgid "The struct '%s' is declared but never used."
+msgstr "La structure '%s' est déclarée mais jamais utilisée."
+
+msgid "The local variable '%s' is declared but never used."
+msgstr "La variable locale '%s' est déclarée mais jamais utilisée."
diff --git a/editor/translations/editor/gl.po b/editor/translations/editor/gl.po
index 1617bb9759..cb5251143a 100644
--- a/editor/translations/editor/gl.po
+++ b/editor/translations/editor/gl.po
@@ -390,12 +390,6 @@ msgstr "Ir ao Anterior Paso"
msgid "Use Bezier Curves"
msgstr "Usar Curvas Bezier"
-msgid "Anim. Optimizer"
-msgstr "Optimizador de Animación"
-
-msgid "Max. Angular Error:"
-msgstr "Erro Angular Máximo:"
-
msgid "Optimize"
msgstr "Optimizar"
@@ -3897,9 +3891,6 @@ msgstr "Engadir Acción de Entrada"
msgid "Erase Input Action"
msgstr "Eliminar Acción de Entrada"
-msgid "Rename Input Action Event"
-msgstr "Renomear Evento de Entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configuración do Proxecto (project.godot)"
diff --git a/editor/translations/editor/he.po b/editor/translations/editor/he.po
index 69c13a071d..2e94adbc31 100644
--- a/editor/translations/editor/he.po
+++ b/editor/translations/editor/he.po
@@ -431,12 +431,6 @@ msgstr "שימוש בעקומות בזייה"
msgid "Create RESET Track(s)"
msgstr "יצירת רצועה(ות) ×יפוס"
-msgid "Anim. Optimizer"
-msgstr "ממטב הנפשה"
-
-msgid "Max. Angular Error:"
-msgstr "שגי×ת זווית מקסימלית:"
-
msgid "Optimize"
msgstr "מיטוב"
@@ -1355,9 +1349,6 @@ msgstr "פתיחה"
msgid "Select Current Folder"
msgstr "× × ×œ×‘×—×•×¨ ×ת התיקייה הנוכחית"
-msgid "File exists, overwrite?"
-msgstr "הקובץ קיי×, ×”×× ×œ×”×—×œ×™×£?"
-
msgid "Copy Path"
msgstr "העתקת נתיב"
@@ -3972,9 +3963,6 @@ msgstr "הנתיב שהוגדר ל-AnimationPlayer ×ינו מוביל למפר×
msgid "The AnimationPlayer root node is not a valid node."
msgstr "מפרק השורש AnimationPlayer ×ינו צומת חוקי."
-msgid "Pick a color from the editor window."
-msgstr "בחירת צבע מחלון העורך."
-
msgid "Switch between hexadecimal and code values."
msgstr "מעבר בין ×¢×¨×›×™× ×”×§×¡×“×¦×™×ž×œ×™× ×œ×¢×¨×›×™ קוד."
@@ -4002,9 +3990,6 @@ msgstr "×זהרה!"
msgid "Please Confirm..."
msgstr "× × ×œ×שר…"
-msgid "Must use a valid extension."
-msgstr "יש להשתמש בסיומת תקנית."
-
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
msgstr "×× \"Exp Edit\" מ×ופשר, \"Min Value\" חייב להיות גדול מ-0."
diff --git a/editor/translations/editor/hu.po b/editor/translations/editor/hu.po
index 9736973adc..d5c6059eb1 100644
--- a/editor/translations/editor/hu.po
+++ b/editor/translations/editor/hu.po
@@ -400,12 +400,6 @@ msgstr "Visszaállítás"
msgid "Use Bezier Curves"
msgstr "Bézier görbék használata"
-msgid "Anim. Optimizer"
-msgstr "Animáció optimalizáló"
-
-msgid "Max. Angular Error:"
-msgstr "Maximum szög hiba:"
-
msgid "Optimize"
msgstr "Optimalizálás"
@@ -4408,9 +4402,6 @@ msgstr "Figyelem!"
msgid "Please Confirm..."
msgstr "Kérjük erősítse meg..."
-msgid "Must use a valid extension."
-msgstr "Használjon érvényes kiterjesztést."
-
msgid "Enable grid minimap."
msgstr "Rács kistérkép engedélyezése."
diff --git a/editor/translations/editor/id.po b/editor/translations/editor/id.po
index bfed9e654b..b19b37b3ec 100644
--- a/editor/translations/editor/id.po
+++ b/editor/translations/editor/id.po
@@ -520,12 +520,6 @@ msgstr "Gunakan Lengkungan Bezier"
msgid "Create RESET Track(s)"
msgstr "Buat RESET Track"
-msgid "Anim. Optimizer"
-msgstr "Pengoptimal Animasi"
-
-msgid "Max. Angular Error:"
-msgstr "Error Angular Maksimum:"
-
msgid "Optimize"
msgstr "Optimalkan"
@@ -1509,9 +1503,6 @@ msgstr "Buka"
msgid "Select Current Folder"
msgstr "Pilih Folder Saat Ini"
-msgid "File exists, overwrite?"
-msgstr "File sudah ada, timpa?"
-
msgid "Select This Folder"
msgstr "Pilih Folder Ini"
@@ -6902,9 +6893,6 @@ msgstr "Ubah deadzone Aksi"
msgid "Erase Input Action"
msgstr "Hapus Aksi Input"
-msgid "Rename Input Action Event"
-msgstr "Ubah nama Input Action Event"
-
msgid "Project Settings (project.godot)"
msgstr "Pengaturan Proyek (project.godot)"
@@ -8087,9 +8075,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "Akar AnimationPlayer bukanlah node yang valid."
-msgid "Pick a color from the editor window."
-msgstr "Ambil warna dari layar editor."
-
msgid "Switch between hexadecimal and code values."
msgstr "Beralih antara nilai heksadesimal dan kode."
@@ -8120,9 +8105,6 @@ msgstr "Peringatan!"
msgid "Please Confirm..."
msgstr "Mohon konfirmasi..."
-msgid "Must use a valid extension."
-msgstr "Harus menggunakan ekstensi yang sah."
-
msgid "Enable grid minimap."
msgstr "Aktifkan peta mini grid."
diff --git a/editor/translations/editor/it.po b/editor/translations/editor/it.po
index 87c578b8d1..aad29ffa9f 100644
--- a/editor/translations/editor/it.po
+++ b/editor/translations/editor/it.po
@@ -59,9 +59,9 @@
# Alessandro Mandelli <mandelli.alessandro@ngi.it>, 2021.
# Jusef Azzolina <rosarioazzolina33@gmail.com>, 2021.
# Daniele Basso <tiziodcaio@gmail.com>, 2021.
-# Riteo Siuga <riteo@posteo.net>, 2021, 2022.
+# Riteo Siuga <riteo@posteo.net>, 2021, 2022, 2023.
# Luigi <luibass92@live.it>, 2021.
-# Micky <micheledevita2@gmail.com>, 2021, 2022.
+# Micky <micheledevita2@gmail.com>, 2021, 2022, 2023.
# Fabio Plos <altre0cose@gmail.com>, 2021.
# Theraloss <danilo.polani@gmail.com>, 2021.
# Pietro Grungo <pietro.grungo@libero.it>, 2021.
@@ -80,13 +80,14 @@
# enzo cocca <enzo.ccc@gmail.com>, 2023.
# Andrea Migliaccio <andrea.migliaccio@gmail.com>, 2023.
# gianmarco malandra <giamminho12@gmail.com>, 2023.
+# Francesco Franchina <cescus92@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 00:54+0000\n"
-"Last-Translator: gianmarco malandra <giamminho12@gmail.com>\n"
+"PO-Revision-Date: 2023-02-16 21:23+0000\n"
+"Last-Translator: Mirko <miknsop@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -97,41 +98,44 @@ msgstr ""
"X-Generator: Weblate 4.16-dev\n"
msgid "Unset"
-msgstr "Non Impostato"
+msgstr "Non impostato"
msgid "Physical"
msgstr "Fisico"
msgid "Left Mouse Button"
-msgstr "Tasto sinistro Mouse"
+msgstr "Tasto sinistro del mouse"
msgid "Right Mouse Button"
-msgstr "Tasto Destro Mouse"
+msgstr "Tasto destro del mouse"
msgid "Middle Mouse Button"
-msgstr "Tasto centrale Mouse"
+msgstr "Tasto centrale del mouse"
msgid "Mouse Wheel Up"
-msgstr "Rotellina Mouse Su."
+msgstr "Rotellina del mouse su"
msgid "Mouse Wheel Down"
-msgstr "Rotellina Mouse Giù."
+msgstr "Rotellina del mouse giù"
msgid "Mouse Wheel Left"
-msgstr "Pulsante Rotellina a Sinistra"
+msgstr "Rotellina del mouse a sinistra"
msgid "Mouse Wheel Right"
-msgstr "Pulsante Rotellina a Destra"
+msgstr "Rotellina del mouse a destra"
msgid "Mouse Thumb Button 1"
-msgstr "Pulsante Laterale del Mouse 1"
+msgstr "Pulsante laterale del mouse 1"
msgid "Mouse Thumb Button 2"
-msgstr "Pulsante Laterale del Mouse 2"
+msgstr "Pulsante laterale del mouse 2"
msgid "Button"
msgstr "Pulsante"
+msgid "Double Click"
+msgstr "Doppio click"
+
msgid "Mouse motion at position (%s) with velocity (%s)"
msgstr "Movimento del mouse in posizione (%s) con velocità (%s)"
@@ -147,17 +151,154 @@ msgstr "Levetta destra asse X, joystick 1 asse x"
msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
msgstr "Levetta destra Asse-Y, Joystick 1 Asse-Y"
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "Asse X del joystick 2, grilletto sinistro, L2 Sony, LT Xbox"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "Asse Y del joystick 2, grilletto destro, R2 Sony, RT Xbox"
+
+msgid "Joystick 3 X-Axis"
+msgstr "Asse X del joystick 3"
+
+msgid "Joystick 3 Y-Axis"
+msgstr "Asse Y del joystick 3"
+
+msgid "Joystick 4 X-Axis"
+msgstr "Asse X del joystick 4"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "Asse Y del joystick 4"
+
+msgid "Unknown Joypad Axis"
+msgstr "Asse del joypad sconosciuto"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "Movimento del joypad sull'asse %d (%s) con valore di %.2f"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "Azione inferiore, croce Sony, A Xbox, B Nintendo"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Azione destra, cerchio Sony, B Xbox, A Nintendo"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "Azione sinistra, quadrato Sony, X Xbox, Y Nintendo"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "Azione superiore, triangolo Sony, Y Xbox, X Nintendo"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Indietro, Select Sony, Back Xbox, - Nintendo"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "Guida, PS Sony, Home Xbox"
+
+msgid "Start, Nintendo +"
+msgstr "Start, + Nintendo"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "Levetta sinistra, L3 Sony, L/LS Xbox"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "Levetta destra, R3 Sony, R/RS Xbox"
+
+msgid "Left Shoulder, Sony L1, Xbox LB"
+msgstr "Pulsante dorsale sinistro, L1 Sony, LB Xbox"
+
+msgid "Right Shoulder, Sony R1, Xbox RB"
+msgstr "Pulsante dorsale destro, R1 Sony, RB Xbox"
+
+msgid "D-pad Up"
+msgstr "Tasto direzionale su"
+
+msgid "D-pad Down"
+msgstr "Tasto direzionale giù"
+
+msgid "D-pad Left"
+msgstr "Tasto direzionale sinistro"
+
+msgid "D-pad Right"
+msgstr "Tasto direzionale destro"
+
+msgid "Xbox Share, PS5 Microphone, Nintendo Capture"
+msgstr "Condividi Xbox, microfono PS5, cattura Nintendo"
+
+msgid "Xbox Paddle 1"
+msgstr "Xbox levetta posteriore 1"
+
+msgid "Xbox Paddle 2"
+msgstr "Xbox levetta posteriore 2"
+
+msgid "Xbox Paddle 3"
+msgstr "Xbox levetta posteriore 3"
+
+msgid "Xbox Paddle 4"
+msgstr "Xbox levetta posteriore 4"
+
+msgid "PS4/5 Touchpad"
+msgstr "Touchpad PS4/5"
+
+msgid "Joypad Button %d"
+msgstr "Pulsante %d del joypad"
+
+msgid "Pressure:"
+msgstr "Pressione:"
+
+msgid "touched"
+msgstr "toccato"
+
+msgid "released"
+msgstr "rilasciato"
+
+msgid "Screen %s at (%s) with %s touch points"
+msgstr "Schermo %s in (%s) con %s tocchi"
+
+msgid ""
+"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
+msgstr ""
+"Schermo trascinato con %s tocchi alla posizione (%s) con una velocità di (%s)"
+
+msgid "Magnify Gesture at (%s) with factor %s"
+msgstr "Gesto d'ingrandimento in (%s) con un fattore di %s"
+
+msgid "Pan Gesture at (%s) with delta (%s)"
+msgstr "Gesto panoramico in (%s) con un delta di (%s)"
+
+msgid "Accept"
+msgstr "Accetta"
+
msgid "Select"
msgstr "Seleziona"
msgid "Cancel"
msgstr "Annulla"
+msgid "Focus Next"
+msgstr "Selezione successiva"
+
+msgid "Focus Prev"
+msgstr "Selezione precedente"
+
+msgid "Left"
+msgstr "Sinistra"
+
+msgid "Right"
+msgstr "Destra"
+
msgid "Up"
-msgstr "In uscita"
+msgstr "Su"
msgid "Down"
-msgstr "In entrata"
+msgstr "Giù"
+
+msgid "Page Up"
+msgstr "Pagina su"
+
+msgid "Page Down"
+msgstr "Pagina giù"
+
+msgid "Home"
+msgstr "Inizio"
msgid "End"
msgstr "Fine"
@@ -177,24 +318,123 @@ msgstr "Annulla"
msgid "Redo"
msgstr "Rifai"
+msgid "Completion Query"
+msgstr "Richiesta di completamento"
+
+msgid "New Line"
+msgstr "Nuova riga"
+
+msgid "New Blank Line"
+msgstr "Nuova linea vuota"
+
+msgid "New Line Above"
+msgstr "Nuova riga sopra"
+
msgid "Indent"
msgstr "Indenta"
+msgid "Dedent"
+msgstr "De-indenta"
+
+msgid "Backspace"
+msgstr "Cancella indietro"
+
+msgid "Backspace Word"
+msgstr "Cancella indietro una parola"
+
+msgid "Backspace all to Left"
+msgstr "Cancella indietro tutto a sinistra"
+
msgid "Delete"
msgstr "Elimina"
+msgid "Delete Word"
+msgstr "Cancella una parola"
+
+msgid "Delete all to Right"
+msgstr "Cancella tutto a destra"
+
+msgid "Caret Left"
+msgstr "Cursore a sinistra"
+
+msgid "Caret Word Left"
+msgstr "Cursore a sinistra di una parola"
+
+msgid "Caret Right"
+msgstr "Cursore a destra"
+
+msgid "Caret Word Right"
+msgstr "Cursore a destra di una parola"
+
+msgid "Caret Up"
+msgstr "Cursore su"
+
+msgid "Caret Down"
+msgstr "Cursore giù"
+
+msgid "Caret Line Start"
+msgstr "Cursore all'inizio della riga"
+
+msgid "Caret Line End"
+msgstr "Cursore alla fine della riga"
+
+msgid "Caret Page Up"
+msgstr "Cursore una pagina su"
+
+msgid "Caret Page Down"
+msgstr "Cursore una pagina giù"
+
+msgid "Caret Document Start"
+msgstr "Cursore all'inizio del documento"
+
+msgid "Caret Document End"
+msgstr "Cursore alla fine del documento"
+
+msgid "Caret Add Below"
+msgstr "Aggiungi un cursore giù"
+
+msgid "Caret Add Above"
+msgstr "Aggiungi un cursore sopra"
+
+msgid "Scroll Up"
+msgstr "Scorri su"
+
+msgid "Scroll Down"
+msgstr "Scorri giù"
+
msgid "Select All"
msgstr "Seleziona tutto"
+msgid "Select Word Under Caret"
+msgstr "Seleziona la parola sotto il cursore"
+
+msgid "Add Selection for Next Occurrence"
+msgstr "Aggiungi una selezione per la prossima ricorrenza"
+
+msgid "Clear Carets and Selection"
+msgstr "Reimposta i cursori e la selezione"
+
+msgid "Toggle Insert Mode"
+msgstr "Commuta la modalità d'inserimento"
+
msgid "Duplicate Nodes"
msgstr "Duplica Nodi"
msgid "Delete Nodes"
msgstr "Elimina Nodi"
+msgid "Go Up One Level"
+msgstr "Sali di un livello"
+
msgid "Refresh"
msgstr "Aggiorna"
+msgid "Show Hidden"
+msgstr "Mostra i file nascosti"
+
+msgid "Swap Input Direction"
+msgstr "Inverti la direzione d'ingresso"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Input %d non valido (assente) nell'espressione"
@@ -216,6 +456,12 @@ msgstr "Argomenti non validi per costruire \"%s\""
msgid "On call to '%s':"
msgstr "Alla chiamata di '%s':"
+msgid "Built-in script"
+msgstr "Script Integrato"
+
+msgid "Built-in"
+msgstr "Integrato"
+
msgid "B"
msgstr "B"
@@ -237,6 +483,14 @@ msgstr "PiB"
msgid "EiB"
msgstr "EiB"
+msgid "Example: %s"
+msgstr "Esempio: %s"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d elemento"
+msgstr[1] "%d elementi"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -247,12 +501,42 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Un'azione con il nome \"%s\" è già esistente."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "Impossibile annullare - l'azione è la stessa di quella iniziale"
+
+msgid "Revert Action"
+msgstr "Annulla l'azione"
+
msgid "Add Event"
msgstr "Aggiungi Evento"
+msgid "Remove Action"
+msgstr "Rimuovi l'azione"
+
+msgid "Cannot Remove Action"
+msgstr "Impossibile rimuovere l'azione"
+
+msgid "Edit Event"
+msgstr "Modifica l'evento"
+
+msgid "Remove Event"
+msgstr "Rimuovi l'evento"
+
+msgid "Filter by name..."
+msgstr "Filtra per nome..."
+
+msgid "Clear All"
+msgstr "Pulisci tutto"
+
+msgid "Add New Action"
+msgstr "Aggiungi una nuova azione"
+
msgid "Add"
msgstr "Aggiungi"
+msgid "Show Built-in Actions"
+msgstr "Mostra le azioni integrate"
+
msgid "Action"
msgstr "Azione"
@@ -265,6 +549,9 @@ msgstr "Tempo:"
msgid "Value:"
msgstr "Valore:"
+msgid "Update Selected Key Handles"
+msgstr "Aggiorna le maniglie delle chiavi selezionate"
+
msgid "Insert Key Here"
msgstr "Inserisci una chiave"
@@ -274,21 +561,91 @@ msgstr "Duplica le chiavi selezionate"
msgid "Delete Selected Key(s)"
msgstr "Elimina le chiavi selezionate"
+msgid "Make Handles Free"
+msgstr "Rendi le maniglie libere"
+
+msgid "Make Handles Linear"
+msgstr "Rendi lineari le maniglie"
+
+msgid "Make Handles Balanced"
+msgstr "Rendi bilanciate le maniglie"
+
+msgid "Make Handles Mirrored"
+msgstr "Rendi specchiate le maniglie"
+
+msgid "Make Handles Balanced (Auto Tangent)"
+msgstr "Rendi bilanciate le maniglie (auto tangente)"
+
+msgid "Make Handles Mirrored (Auto Tangent)"
+msgstr "Rendi specchiate le maniglie (auto tangente)"
+
msgid "Add Bezier Point"
msgstr "Inserisci un punto di controllo di Bézier"
msgid "Move Bezier Points"
msgstr "Sposta dei punti di controllo di Bézier"
+msgid "Animation Duplicate Keys"
+msgstr "Duplica le chiavi di un'animazione"
+
+msgid "Animation Delete Keys"
+msgstr "Elimina le chiavi di un'animazione"
+
+msgid "Focus"
+msgstr "Seleziona"
+
+msgid "Select All Keys"
+msgstr "Seleziona tutte le chiavi"
+
+msgid "Deselect All Keys"
+msgstr "Deseleziona tutte le chiavi"
+
+msgid "Animation Change Keyframe Value"
+msgstr "Cambia il valore del fotogramma chiave di un'animazione"
+
+msgid "Animation Change Call"
+msgstr "Cambia la chiamata di un'animazione"
+
+msgid "Animation Multi Change Transition"
+msgstr "Cambio multiplo di transizione di un'animazione"
+
+msgid "Animation Multi Change %s"
+msgstr "Cambio multiplo di %s di un'animazione"
+
+msgid "Animation Multi Change Keyframe Value"
+msgstr "Cambio multiplo del valore dei fotogrammi chiave di un'animazione"
+
+msgid "Animation Multi Change Call"
+msgstr "Cambio multiplo della chiamata di un'animazione"
+
msgid "Change Animation Length"
msgstr "Cambia la durata dell'animazione"
msgid "Change Animation Loop"
msgstr "Cambia ciclo di animazione"
+msgid "Can't change loop mode on animation instanced from imported scene."
+msgstr ""
+"Impossibile cambiare la modalità di ripetizione di un'animazione istanziata "
+"da una scena importata."
+
+msgid "Can't change loop mode on animation embedded in another scene."
+msgstr ""
+"Impossibile cambiare la modalità di ripetizione di un'animazione integrata "
+"in un'altra scena."
+
msgid "Property Track"
msgstr "Traccia di proprietà"
+msgid "3D Position Track"
+msgstr "Traccia di posizione 3D"
+
+msgid "3D Rotation Track"
+msgstr "Traccia di rotazione 3D"
+
+msgid "3D Scale Track"
+msgstr "Traccia di scalatura 3D"
+
msgid "Call Method Track"
msgstr "Traccia di metodi"
@@ -319,6 +676,9 @@ msgstr "Funzioni:"
msgid "Audio Clips:"
msgstr "Segmenti audio:"
+msgid "Animation Clips:"
+msgstr "Clip di animazione:"
+
msgid "Change Track Path"
msgstr "Cambia Percorso Traccia"
@@ -364,6 +724,18 @@ msgstr "In Gestione:"
msgid "Out-Handle:"
msgstr "Fuori Gestione:"
+msgid "Handle mode: Free\n"
+msgstr "Modalità della maniglia: lineare\n"
+
+msgid "Handle mode: Linear\n"
+msgstr "Modalità della maniglia: lineare\n"
+
+msgid "Handle mode: Balanced\n"
+msgstr "Modalità della maniglia: bilanciata\n"
+
+msgid "Handle mode: Mirrored\n"
+msgstr "Modalità della maniglia: specchiata\n"
+
msgid "Stream:"
msgstr "Flusso:"
@@ -397,6 +769,12 @@ msgstr "Lineare"
msgid "Cubic"
msgstr "Cubica"
+msgid "Linear Angle"
+msgstr "Angolo lineare"
+
+msgid "Cubic Angle"
+msgstr "Angolo cubico"
+
msgid "Clamp Loop Interp"
msgstr "Blocca l'interpolazione d'un ciclo"
@@ -424,12 +802,28 @@ msgstr "Cambia la modalità d'interpolazione di un'animazione"
msgid "Change Animation Loop Mode"
msgstr "Cambia la modalità del ciclo di un'animazione"
+msgid ""
+"Compressed tracks can't be edited or removed. Re-import the animation with "
+"compression disabled in order to edit."
+msgstr ""
+"Le tracce compresse non possono essere né modificate né rimosse. Per "
+"modificarla, reimportare l'animazione senza compressione."
+
msgid "Remove Anim Track"
msgstr "Rimuovi una traccia d'animazione"
+msgid "Create new track for %s and insert key?"
+msgstr "Creare una nuova traccia per %s e inserire la chiave?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "Creare %d nuove tracce e inserirci i fotogrammi chiavi?"
+
msgid "Create"
msgstr "Crea"
+msgid "Animation Insert Key"
+msgstr "Inscerisci una chiave in un'animazione"
+
msgid "node '%s'"
msgstr "nodo \"%s\""
@@ -448,6 +842,11 @@ msgstr "Cambia il passo di animazione"
msgid "Rearrange Tracks"
msgstr "Riordina delle tracce"
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"Le tracce di posizione/rotazione/scala 3D si applicano solo a nodi basati "
+"sul 3D."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -464,7 +863,7 @@ msgstr ""
"Le tracce di animazioni possono puntare solo a nodi di tipo AnimationPlayer."
msgid "Not possible to add a new track without a root"
-msgstr "Non è possibile aggiungere una nuova traccia senza un nodo radice"
+msgstr "Non è possibile aggiungere una nuova traccia senza una radice"
msgid "Invalid track for Bezier (no suitable sub-properties)"
msgstr ""
@@ -476,6 +875,18 @@ msgstr "Aggiungi una traccia di curve di Bézier"
msgid "Track path is invalid, so can't add a key."
msgstr "La traccia non è valida, quindi è impossibile aggiungere una chiave."
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "La traccia non è di tipo Node3D, impossibile aggiungere la chiave"
+
+msgid "Add Position Key"
+msgstr "Aggiungi una chiave di animazione"
+
+msgid "Add Rotation Key"
+msgstr "Aggiungi una chiave di rotazione"
+
+msgid "Add Scale Key"
+msgstr "Aggiungi una chiave di scalatura"
+
msgid "Add Track Key"
msgstr "Aggiungi una chiave a una traccia"
@@ -520,6 +931,31 @@ msgstr ""
"Questa opzione non funziona per modificare delle curve di Bézier, dato che "
"si tratta di una singola traccia."
+msgid "Animation Add RESET Keys"
+msgstr "Aggiungi le chiavi RESET di un'animazione"
+
+msgid "Bake Animation as Linear keys."
+msgstr "Cuoci l'animazione come chiavi lineari."
+
+msgid ""
+"This animation belongs to an imported scene, so changes to imported tracks "
+"will not be saved.\n"
+"\n"
+"To modify this animation, navigate to the scene's Advanced Import settings "
+"and select the animation.\n"
+"Some options, including looping, are available here. To add custom tracks, "
+"enable \"Save To File\" and\n"
+"\"Keep Custom Tracks\"."
+msgstr ""
+"Quest'animazione appartiene a una scena importata, pertanto eventuali "
+"modifiche fatte alle tracce importate non verranno salvate.\n"
+"\n"
+"Per modificare quest'animazione, navigare nelle impostazioni d'importanzione "
+"avanzate e selezionare l'animazione.\n"
+"Qui sono disponibili alcune opzioni, inclusa la ripetizione. Per aggiungere "
+"delle tracce personalizzate, abilitare \"Save To File\" e\n"
+"\"Keep Custom Tracks\"."
+
msgid "Warning: Editing imported animation"
msgstr "Attenzione: sta venendo modificata un'animazione importata"
@@ -527,6 +963,12 @@ msgid "Select an AnimationPlayer node to create and edit animations."
msgstr ""
"Selezionare un nodo AnimationPlayer per creare e modificare animazioni."
+msgid "Imported Scene"
+msgstr "Scena importata"
+
+msgid "Toggle between the bezier curve editor and track editor."
+msgstr "Commuta tra l'editor di curve di Bézier e l'editor di tracce."
+
msgid "Only show tracks from nodes selected in tree."
msgstr "Mostra solo le tracce dei nodi selezionati nell'albero."
@@ -578,18 +1020,24 @@ msgstr "Vai al passo precedente"
msgid "Apply Reset"
msgstr "Reimposta"
+msgid "Bake Animation"
+msgstr "Cuoci animazione"
+
+msgid "Optimize Animation (no undo)"
+msgstr "Ottimizza l'animazione (irreversibile)"
+
+msgid "Clean-Up Animation (no undo)"
+msgstr "Pulisci l'animazione (irreversibile)"
+
+msgid "Pick a node to animate:"
+msgstr "Seleziona il nodo da animare:"
+
msgid "Use Bezier Curves"
msgstr "Usa le curve di Bézier"
msgid "Create RESET Track(s)"
msgstr "Crea traccia/e di rispristino"
-msgid "Anim. Optimizer"
-msgstr "Ottimizzatore animazioni"
-
-msgid "Max. Angular Error:"
-msgstr "Max errore angolare:"
-
msgid "Optimize"
msgstr "Ottimizza"
@@ -635,6 +1083,16 @@ msgstr "Numero della linea:"
msgid "%d replaced."
msgstr "%d sostituito."
+msgid "%d match"
+msgid_plural "%d matches"
+msgstr[0] "%d corrispondenza"
+msgstr[1] "%d corrispondenze"
+
+msgid "%d of %d match"
+msgid_plural "%d of %d matches"
+msgstr[0] "%d di %d corrispondenza"
+msgstr[1] "%d di %d corrispondenze"
+
msgid "Match Case"
msgstr "Maiuscole distinte"
@@ -684,6 +1142,9 @@ msgstr ""
"Metodo di destinazione non trovato. Specifica un metodo valido o assegna uno "
"script al nodo di destinazione."
+msgid "Attached Script"
+msgstr "Script allegato"
+
msgid "Connect to Node:"
msgstr "Connetti al Nodo:"
@@ -693,12 +1154,30 @@ msgstr "Connetti allo script:"
msgid "From Signal:"
msgstr "Dal segnale:"
+msgid "Filter Nodes"
+msgstr "Filtra i nodi"
+
+msgid "Go to Source"
+msgstr "Vai alla sorgente"
+
msgid "Scene does not contain any script."
msgstr "La scena non contiene alcuno script."
msgid "Select Method"
msgstr "Seleziona Metodo"
+msgid "Filter Methods"
+msgstr "Filtra i metodi"
+
+msgid "No method found matching given filters."
+msgstr "Nessun metodo trovato corrispondente ai filtri dati."
+
+msgid "Script Methods Only"
+msgstr "Solo i metodi dello script"
+
+msgid "Compatible Methods Only"
+msgstr "Solo i metodi compatibili"
+
msgid "Remove"
msgstr "Rimuovi"
@@ -708,6 +1187,9 @@ msgstr "Aggiungi un argomento di chiamata aggiuntivo:"
msgid "Extra Call Arguments:"
msgstr "Argomenti di chiamata aggiuntivi:"
+msgid "Allows to drop arguments sent by signal emitter."
+msgstr "Permette di ignorare gli argomenti inviati dall'emittente del segnale."
+
msgid "Receiver Method:"
msgstr "Metodo ricevitore:"
@@ -738,6 +1220,9 @@ msgstr "Connetti"
msgid "Signal:"
msgstr "Segnale:"
+msgid "No description."
+msgstr "Nessuna descrizione."
+
msgid "Connect '%s' to '%s'"
msgstr "Connetti \"%s\" a \"%s\""
@@ -756,12 +1241,18 @@ msgstr "Disconnetti"
msgid "Connect a Signal to a Method"
msgstr "Connetti un segnale a un metodo"
+msgid "Edit Connection: '%s'"
+msgstr "Modifica la connessione: \"%s\""
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "Sei sicuro di voler rimuovere tutte le connessioni dal segnale \"%s\"?"
msgid "Signals"
msgstr "Segnali"
+msgid "Filter Signals"
+msgstr "Filtra i segnali"
+
msgid "Are you sure you want to remove all connections from this signal?"
msgstr "Confermare la rimozione di tutte le connessioni da questo segnale?"
@@ -774,6 +1265,9 @@ msgstr "Modifica..."
msgid "Go to Method"
msgstr "Vai al metodo"
+msgid "Change Type of \"%s\""
+msgstr "Cambia il tipo di \"%s\""
+
msgid "Change"
msgstr "Cambia"
@@ -783,6 +1277,12 @@ msgstr "Crea un nuovo %s"
msgid "No results for \"%s\"."
msgstr "Nessun risultato per \"%s\"."
+msgid "This class is marked as deprecated."
+msgstr "Questa classe è stata segnata come deprecata."
+
+msgid "This class is marked as experimental."
+msgstr "Questa classe è stata segnata come sperimentale."
+
msgid "No description available for %s."
msgstr "Nessuna descrizione disponibile per %s."
@@ -792,6 +1292,9 @@ msgstr "Preferiti:"
msgid "Recent:"
msgstr "Recenti:"
+msgid "(Un)favorite selected item."
+msgstr "Aggiungi/rimuovi l'elemento attuale dai preferiti."
+
msgid "Search:"
msgstr "Cerca:"
@@ -819,9 +1322,21 @@ msgstr "Copia percorso del nodo"
msgid "Instance:"
msgstr "Istanza:"
+msgid ""
+"This node has been instantiated from a PackedScene file:\n"
+"%s\n"
+"Click to open the original file in the Editor."
+msgstr ""
+"Questo nodo è stato istanziato da un file PackedScene:\n"
+"%s\n"
+"Cliccare per aprire il file oriignale nell'Editor."
+
msgid "Toggle Visibility"
msgstr "Commuta visibilità"
+msgid "ms"
+msgstr "ms"
+
msgid "Monitors"
msgstr "Monitor"
@@ -891,6 +1406,15 @@ msgstr "Tempo"
msgid "Calls"
msgstr "Chiamate"
+msgid "CPU"
+msgstr "CPU"
+
+msgid "GPU"
+msgstr "GPU"
+
+msgid "Execution resumed."
+msgstr "Esecuzione ripresa."
+
msgid "Bytes:"
msgstr "Byte:"
@@ -903,9 +1427,36 @@ msgstr "Errore:"
msgid "%s Error"
msgstr "Errore %s"
+msgid "%s Error:"
+msgstr "Errore %s:"
+
+msgid "%s Source"
+msgstr "Sorgente %s"
+
+msgid "%s Source:"
+msgstr "Sorgente %s:"
+
msgid "Stack Trace"
msgstr "Analisi dello stack"
+msgid "Debug session started."
+msgstr "Sessione di debug iniziata."
+
+msgid "Debug session closed."
+msgstr "Sessione di debug terminata."
+
+msgid "Line %d"
+msgstr "Riga %d"
+
+msgid "Delete Breakpoint"
+msgstr "Elimina il punto d'interruzione"
+
+msgid "Delete All Breakpoints in:"
+msgstr "Rimuovi tutti i punti d'interruzione in:"
+
+msgid "Delete All Breakpoints"
+msgstr "Rimuovi tutti i punti d'interruzione"
+
msgid "Copy Error"
msgstr "Copia Errore"
@@ -936,6 +1487,9 @@ msgstr "Continua"
msgid "Stack Frames"
msgstr "Stack Frame"
+msgid "Filter Stack Variables"
+msgstr "Filtra le variabili nello stack"
+
msgid "Breakpoints"
msgstr "Punti di interruzione"
@@ -946,7 +1500,10 @@ msgid "Collapse All"
msgstr "Comprimi Tutto"
msgid "Profiler"
-msgstr "Profiler"
+msgstr "Profilatore"
+
+msgid "Visual Profiler"
+msgstr "Profilatore visivo"
msgid "List of Video Memory Usage by Resource:"
msgstr "Lista di Utilizzo Memoria Video per Risorsa:"
@@ -1037,6 +1594,13 @@ msgstr "Apri Scene"
msgid "Owners of: %s (Total: %d)"
msgstr "proprietario di: %s (Totale: %d)"
+msgid "Localization remap"
+msgstr "Rimappatura della localizzazione"
+
+msgid "Localization remap for path '%s' and locale '%s'."
+msgstr ""
+"Rimappatura della localizzazione per il percorso \"%s\" e il locale \"%s\"."
+
msgid ""
"Remove the selected files from the project? (Cannot be undone.)\n"
"Depending on your filesystem configuration, the files will either be moved "
@@ -1256,6 +1820,12 @@ msgstr "Aggira"
msgid "Bus Options"
msgstr "Opzioni Bus"
+msgid "Duplicate Bus"
+msgstr "Duplica un bus"
+
+msgid "Delete Bus"
+msgstr "Elimina un bus"
+
msgid "Reset Volume"
msgstr "Ripristina il volume"
@@ -1343,12 +1913,18 @@ msgstr "Caratteri validi:"
msgid "Must not collide with an existing engine class name."
msgstr "Non deve collidere con il nome di una classe del motore esistente."
+msgid "Must not collide with an existing global script class name."
+msgstr "Non deve collidere con un nome di classe globale di uno script."
+
msgid "Must not collide with an existing built-in type name."
msgstr "Non deve confliggere con il nome di un tipo predefinito già esistente."
msgid "Must not collide with an existing global constant name."
msgstr "Non deve collidere con il nome di una costante globale esistente."
+msgid "Keyword cannot be used as an Autoload name."
+msgstr "Una parola chiave non può essere utilizzata come nome di un Autoload."
+
msgid "Autoload '%s' already exists!"
msgstr "L'Autoload \"%s\" esiste già!"
@@ -1367,6 +1943,9 @@ msgstr "Abilita"
msgid "Rearrange Autoloads"
msgstr "Riordina gli Autoload"
+msgid "Can't add Autoload:"
+msgstr "Impossibile aggiungere l'Autoload:"
+
msgid "%s is an invalid path. File does not exist."
msgstr "%s è un path non valido. File inesistente."
@@ -1375,18 +1954,133 @@ msgstr ""
"%s non è un percorso valido. Non si trova nel percorso delle risorse "
"(res://)."
+msgid "Add Autoload"
+msgstr "Aggiungi un Autoload"
+
msgid "Path:"
msgstr "Percorso:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "Impostare il percorso o premere \"%s\" per creare uno script."
+
msgid "Node Name:"
msgstr "Nome del Nodo:"
msgid "Global Variable"
msgstr "Valiabile globale"
+msgid "3D Engine"
+msgstr "Motore 3D"
+
+msgid "2D Physics"
+msgstr "Fisica 2D"
+
+msgid "3D Physics"
+msgstr "Fisica 3D"
+
msgid "Navigation"
msgstr "Navigazione"
+msgid "XR"
+msgstr "XR"
+
+msgid "RenderingDevice"
+msgstr "RenderingDevice"
+
+msgid "OpenGL"
+msgstr "OpenGL"
+
+msgid "Vulkan"
+msgstr "Vulkan"
+
+msgid "Text Server: Fallback"
+msgstr "Server testuale: di ripiego"
+
+msgid "Text Server: Advanced"
+msgstr "Server di testo: avanzato"
+
+msgid "TTF, OTF, Type 1, WOFF1 Fonts"
+msgstr "Font TTF, OTF, Type 1, WOFF1"
+
+msgid "WOFF2 Fonts"
+msgstr "Font WOFF2"
+
+msgid "SIL Graphite Fonts"
+msgstr "Font SIL Graphite"
+
+msgid "3D Nodes as well as RenderingServer access to 3D features."
+msgstr "Nodi 3D e acceso alle funzionalità 3D di RenderingServer."
+
+msgid "2D Physics nodes and PhysicsServer2D."
+msgstr "Nodi fisici 2D e PhysicsServer2D."
+
+msgid "3D Physics nodes and PhysicsServer3D."
+msgstr "Nodi fisici 3D e PhysicsServer3D."
+
+msgid "Navigation, both 2D and 3D."
+msgstr "Navigazione, sia 2D che 3D."
+
+msgid "XR (AR and VR)."
+msgstr "XR (AR e VR)."
+
+msgid ""
+"RenderingDevice based rendering (if disabled, the OpenGL back-end is "
+"required)."
+msgstr ""
+"Elaborazione basata su RenderingDevice (se disabilitata, è richiesto il "
+"backend OpenGL)."
+
+msgid ""
+"OpenGL back-end (if disabled, the RenderingDevice back-end is required)."
+msgstr ""
+"Backend OpenGL (se disabilitata, è richiesto il backend RenderingDevice)."
+
+msgid "Vulkan back-end of RenderingDevice."
+msgstr "Backend Vulkan di RenderingDevice."
+
+msgid ""
+"Fallback implementation of Text Server\n"
+"Supports basic text layouts."
+msgstr ""
+"Implementazione di ripiego di un server di testo\n"
+"Supporta disposizioni di testo basilari."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Implementazione di un server di testo che sfrutta le librerie ICU e "
+"HarfBuzz.\n"
+"Supporta modelli di testo complessi, BiDi e funzionalità contestuali dei "
+"font OpenType."
+
+msgid ""
+"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
+"library (if disabled, WOFF2 support is also disabled)."
+msgstr ""
+"Supporto ai font TrueType, OpenType, Type 1 e WOFF1 utilizzando la libreria "
+"FreeType (se disabilitata, è disabilitato anche il support WOFF2)."
+
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr ""
+"Supporto al formato di font WOFF2 utilizzando le librerie FreeType e Brotli."
+
+msgid ""
+"SIL Graphite smart font technology support (supported by Advanced Text "
+"Server only)."
+msgstr ""
+"Supporto alla tecnologia di font intelligente SIL Graphite (supportata solo "
+"dal server di testo avanzato)."
+
+msgid "General Features:"
+msgstr "Funzionalità generali:"
+
+msgid "Text Rendering and Font Options:"
+msgstr "Opzioni di rendering di testo e di font:"
+
+msgid "File saving failed."
+msgstr "Salvataggio del file fallito."
+
msgid "Nodes and Classes:"
msgstr "Nodi e Classi:"
@@ -1402,12 +2096,39 @@ msgstr "Nuovo"
msgid "Save"
msgstr "Salva"
+msgid "Profile:"
+msgstr "Profilo:"
+
msgid "Reset to Defaults"
msgstr "Ripristinare le impostazioni predefinite"
+msgid "Detect from Project"
+msgstr "Rileva dal progetto"
+
+msgid "Actions:"
+msgstr "Azioni:"
+
+msgid "Configure Engine Build Profile:"
+msgstr "Configura il profilo di costruzione del motore:"
+
+msgid "Please Confirm:"
+msgstr "Per favore conferma:"
+
+msgid "Engine Build Profile"
+msgstr "Profilo di costruzione del motore"
+
+msgid "Load Profile"
+msgstr "Carica un profilo"
+
msgid "Export Profile"
msgstr "Esporta il profilo"
+msgid "Edit Build Configuration Profile"
+msgstr "Modifica il profilo di configurazione di costruzione"
+
+msgid "Filter Commands"
+msgstr "Filtra i comandi"
+
msgid "Paste Params"
msgstr "Incolla dei parametri"
@@ -1429,6 +2150,9 @@ msgstr "[non salvato]"
msgid "Please select a base directory first."
msgstr "Si prega di selezionare prima una cartella di base."
+msgid "Could not create folder. File with that name already exists."
+msgstr "Impossibile creare una cartella. Esiste già un file con quel nome."
+
msgid "Choose a Directory"
msgstr "Scegli una cartella"
@@ -1465,6 +2189,9 @@ msgstr "Pannello del file system"
msgid "Import Dock"
msgstr "Pannello d'importazione"
+msgid "History Dock"
+msgstr "Pannello cronologia"
+
msgid "Allows to view and edit 3D scenes."
msgstr "Permette di visuallizzare e modificare le scene 3D."
@@ -1495,6 +2222,11 @@ msgstr ""
"Permette di configurare le impostazioni d'importazione di contenuti "
"individuali. Richiede il pannello del file system per funzionare."
+msgid "Provides an overview of the editor's and each scene's undo history."
+msgstr ""
+"Offre una panoramica della cronologia di annullamento dell'editor e di ogni "
+"scena."
+
msgid "(current)"
msgstr "(Attuale)"
@@ -1559,7 +2291,7 @@ msgid "Make Current"
msgstr "Rendi attuale"
msgid "Import"
-msgstr "Importare"
+msgstr "Importa"
msgid "Export"
msgstr "Esporta"
@@ -1596,9 +2328,6 @@ msgstr "Apri"
msgid "Select Current Folder"
msgstr "Seleziona la cartella attuale"
-msgid "File exists, overwrite?"
-msgstr "File esistente, sovrascrivere?"
-
msgid "Select This Folder"
msgstr "Seleziona questa cartella"
@@ -1635,6 +2364,9 @@ msgstr "Apri un file o una cartella"
msgid "Save a File"
msgstr "Salva un file"
+msgid "Favorited folder does not exist anymore and will be removed."
+msgstr "La cartella preferita non esiste più e verrà rimossa."
+
msgid "Go Back"
msgstr "Torna indietro"
@@ -1695,6 +2427,20 @@ msgstr "Anteprima:"
msgid "File:"
msgstr "File:"
+msgid ""
+"Remove the selected files? For safety only files and empty directories can "
+"be deleted from here. (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
+msgstr ""
+"Rimuovere i file selezionati dal progetto? (Non può essere annullato.)\n"
+"A seconda della propria configurazione di sistema, essi saranno spostati nel "
+"cestino di sistema oppure eliminati permanentemente."
+
+msgid "Some extensions need the editor to restart to take effect."
+msgstr ""
+"Alcune estensioni hanno bisogno di un riavvio dell'editor per avere effetto."
+
msgid "Restart"
msgstr "Ricomincia"
@@ -1714,6 +2460,55 @@ msgstr ""
msgid "(Re)Importing Assets"
msgstr "Reimportando i contenuti"
+msgid "Import resources of type: %s"
+msgstr "Importa risorse di tipo: %s"
+
+msgid "No return value."
+msgstr "Nessun valore di ritorno."
+
+msgid "Deprecated"
+msgstr "Deprecato"
+
+msgid "Experimental"
+msgstr "Sperimentale"
+
+msgid "This method supports a variable number of arguments."
+msgstr "Questo metodo supporta un numero variabile di argomenti."
+
+msgid ""
+"This method is called by the engine.\n"
+"It can be overridden to customize built-in behavior."
+msgstr ""
+"Questo metodo è chiamato dal motore.\n"
+"Può essere sovrascritto per personalizzare un comportamento integrato."
+
+msgid ""
+"This method has no side effects.\n"
+"It does not modify the object in any way."
+msgstr ""
+"Questo metodo non ha effetti collaterali.\n"
+"Non modifica l'oggetto in alcun modo."
+
+msgid ""
+"This method does not need an instance to be called.\n"
+"It can be called directly using the class name."
+msgstr ""
+"Questo metodo non richiede un'istanza per essere chiamato.\n"
+"Può essere chiamato direttamente utilizzando il nome della classe."
+
+msgid "Error codes returned:"
+msgstr "Codici di errore restituiti:"
+
+msgid "There is currently no description for this %s."
+msgstr "Attualmente non esiste alcuna descrizione per questo %s."
+
+msgid ""
+"There is currently no description for this %s. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Al momento non esiste alcune descrizione per questo %s. Per piacere aiutaci "
+"[color=$color][url=$url]aggiungendone una[/url][/color]!"
+
msgid "Top"
msgstr "In cima"
@@ -1726,9 +2521,31 @@ msgstr "Eredita:"
msgid "Inherited by:"
msgstr "Ereditato da:"
+msgid ""
+"This class is marked as deprecated. It will be removed in future versions."
+msgstr ""
+"Questa classe è segnata come deprecata. Verrà rimossa in versioni future."
+
+msgid ""
+"This class is marked as experimental. It is subject to likely change or "
+"possible removal in future versions. Use at your own discretion."
+msgstr ""
+"Questa classe è segnata come sperimentale. Verrà probabilmente cambiata o "
+"rimossa in versioni future. Usare a propria discrezione."
+
msgid "Description"
msgstr "Descrizione"
+msgid "There is currently no description for this class."
+msgstr "Non esiste alcuna descrizione per questa classe."
+
+msgid ""
+"There is currently no description for this class. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Al momento non esiste alcune descrizione per questa classe. Per piacere "
+"aiutaci [color=$color][url=$url]aggiungendone una[/url][/color]!"
+
msgid "Online Tutorials"
msgstr "Corsi Online"
@@ -1741,6 +2558,9 @@ msgstr "sovrascrive %s:"
msgid "default:"
msgstr "predefinito:"
+msgid "property:"
+msgstr "proprietà:"
+
msgid "Constructors"
msgstr "Costruttori"
@@ -1759,6 +2579,9 @@ msgstr "Costanti"
msgid "Fonts"
msgstr "Font"
+msgid "Font Sizes"
+msgstr "Dimensioni dei font"
+
msgid "Icons"
msgstr "Icone"
@@ -1768,12 +2591,28 @@ msgstr "Stili"
msgid "Enumerations"
msgstr "Enumerazioni"
+msgid "Annotations"
+msgstr "Annotazioni"
+
+msgid "There is currently no description for this annotation."
+msgstr "Non esiste alcuna descrizione per quest'annotazione."
+
+msgid ""
+"There is currently no description for this annotation. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Al momento non esiste alcune descrizione per quest'annotazoine. Per piacere "
+"aiutaci [color=$color][url=$url]aggiungendone una[/url][/color]!"
+
msgid "Property Descriptions"
msgstr "Descrizioni delle proprietà"
msgid "(value)"
msgstr "(valore)"
+msgid "There is currently no description for this property."
+msgstr "Non esiste alcune descrizione per questa proprietà."
+
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
@@ -1811,12 +2650,21 @@ msgstr "Mostra tutto"
msgid "Classes Only"
msgstr "Solo le classi"
+msgid "Constructors Only"
+msgstr "Solo i costruttori"
+
msgid "Methods Only"
msgstr "Solo i metodi"
+msgid "Operators Only"
+msgstr "Solo gli operatori"
+
msgid "Signals Only"
msgstr "Solo i segnali"
+msgid "Annotations Only"
+msgstr "Sono le annotazioni"
+
msgid "Constants Only"
msgstr "Solo le costanti"
@@ -1829,6 +2677,9 @@ msgstr "Solo le proprietà del tema"
msgid "Member Type"
msgstr "Tipo di membro"
+msgid "(constructors)"
+msgstr "(costruttori)"
+
msgid "Class"
msgstr "Classe"
@@ -1838,6 +2689,9 @@ msgstr "Metodo"
msgid "Signal"
msgstr "Segnale"
+msgid "Annotation"
+msgstr "Annotazione"
+
msgid "Constant"
msgstr "Costante"
@@ -1847,9 +2701,21 @@ msgstr "Proprietà"
msgid "Theme Property"
msgstr "Proprietà del tema"
+msgid "This member is marked as deprecated."
+msgstr "Questo membro è segnato come deprecato."
+
+msgid "This member is marked as experimental."
+msgstr "Questo membro è stato segnato come sperimentale."
+
msgid "Property:"
msgstr "Proprietà:"
+msgid "Pin Value"
+msgstr "Fissa il valore"
+
+msgid "Pin Value [Disabled because '%s' is editor-only]"
+msgstr "Fissa il valore [Disabilitato perché '%s' è solo per l'editor]"
+
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
@@ -1865,27 +2731,93 @@ msgstr "Sposta su"
msgid "Move Down"
msgstr "Sposta giù"
+msgid "Insert New Before"
+msgstr "Inserisci nuovo prima"
+
+msgid "Insert New After"
+msgstr "Inserisci nuovo dopo"
+
+msgid "Clear Array"
+msgstr "Pulisci lista"
+
+msgid "Resize Array..."
+msgstr "Ridimensiona lista..."
+
+msgid "Add Element"
+msgstr "Aggiungi un elemento"
+
msgid "Resize Array"
msgstr "Ridimensiona lista"
+msgid "New Size:"
+msgstr "Nuova dimensione:"
+
+msgid "Element %s"
+msgstr "Elemento %s"
+
+msgid "Add Metadata"
+msgstr "Aggiungi un metadato"
+
msgid "Set %s"
msgstr "Imposta %s"
msgid "Set Multiple:"
msgstr "Imposta più valori:"
+msgid "Remove metadata %s"
+msgstr "Rimuovi metadato %s"
+
msgid "Pinned %s"
msgstr "%s fissato"
msgid "Unpinned %s"
msgstr "%s non fissato"
+msgid "Add metadata %s"
+msgstr "Aggiungi il metadato %s"
+
+msgid "Metadata name can't be empty."
+msgstr "Il nome del metadato non può essere vuoto."
+
+msgid "Metadata name must be a valid identifier."
+msgstr "Il nome del metadato deve essere un identificatore valido."
+
+msgid "Metadata with name \"%s\" already exists."
+msgstr "Un metadato chiamato \"%s\" esiste già."
+
+msgid "Names starting with _ are reserved for editor-only metadata."
+msgstr "I nomi che iniziano con _ sono riservati ai metadati dell'editor."
+
+msgid "Metadata name is valid."
+msgstr "Il nome del metadato è valido."
+
+msgid "Add Metadata Property for \"%s\""
+msgstr "Aggiungi una proprietà del metadato per: \"%s\""
+
+msgid "Copy Value"
+msgstr "Copia il valore"
+
+msgid "Paste Value"
+msgstr "Incolla il valore"
+
msgid "Copy Property Path"
msgstr "Copia il percorso della proprietà"
+msgid "Select existing layout:"
+msgstr "Seleziona una disposizione esistente:"
+
+msgid "Changed Locale Country Filter"
+msgstr "Filtro del paese del locale modificato"
+
msgid "Changed Locale Filter Mode"
msgstr "Modalità filtro lingue modificata"
+msgid "[Default]"
+msgstr "[Predefinito]"
+
+msgid "Select a Locale"
+msgstr "Seleziona un locale"
+
msgid "Show All Locales"
msgstr "Mostra tutte le lingue"
@@ -1898,15 +2830,59 @@ msgstr "Modifica Filtri"
msgid "Language:"
msgstr "Lingua:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "Alfabeto:"
+
+msgid "Country:"
+msgstr "Paese:"
+
+msgid "Language"
+msgstr "Lingua"
+
+msgctxt "Locale"
+msgid "Script"
+msgstr "Alfabeto"
+
+msgid "Country"
+msgstr "Paese"
+
msgid "Variant"
msgstr "Variante"
+msgid "Filter Messages"
+msgstr "Filtra i messaggi"
+
msgid "Clear Output"
msgstr "Svuota l'output"
msgid "Copy Selection"
msgstr "Copia selezione"
+msgid ""
+"Collapse duplicate messages into one log entry. Shows number of occurrences."
+msgstr ""
+"Collassa i messaggi duplicati in un singolo elemento. Mostra il numero di "
+"ricorrenze."
+
+msgid "Focus Search/Filter Bar"
+msgstr "Seleziona la barra di ricerca/filtraggio"
+
+msgid "Toggle visibility of standard output messages."
+msgstr "Commuta la visibilità dei messaggi dall'uscita standard."
+
+msgid "Toggle visibility of errors."
+msgstr "Commuta la visibilità degli errori."
+
+msgid "Toggle visibility of warnings."
+msgstr "Commuta la visibilità degli avvisi."
+
+msgid "Toggle visibility of editor messages."
+msgstr "Commuta la visibilità dei messaggi dell'editor."
+
+msgid "Native Shader Source Inspector"
+msgstr "Ispettore delle sorgenti native degli shader"
+
msgid "New Window"
msgstr "Nuova Finestra"
@@ -1941,6 +2917,13 @@ msgstr ""
"Questa risorsa non può essere salvata perché non appartiene alla scena che "
"si sta modificando. Assicurarsi di renderla unica."
+msgid ""
+"This resource can't be saved because it was imported from another file. Make "
+"it unique first."
+msgstr ""
+"Questa risorsa non può essere salvata perché è stata importata da un altro "
+"file. Renderla prima unica."
+
msgid "Save Resource As..."
msgstr "Salva risorsa come..."
@@ -1953,6 +2936,23 @@ msgstr "Formato del file richiesto sconosciuto:"
msgid "Error while saving."
msgstr "Errore durante il salvataggio."
+msgid "Can't open file '%s'. The file could have been moved or deleted."
+msgstr ""
+"Impossibile aprire il file \"%s\". Il file potrebbe essere stato spostato o "
+"eliminato."
+
+msgid "Error while parsing file '%s'."
+msgstr "Errore durante l'analisi del file \"%s\"."
+
+msgid "Scene file '%s' appears to be invalid/corrupt."
+msgstr "Il file della scena \"%s\" sembra essere invalido/corrotto."
+
+msgid "Missing file '%s' or one its dependencies."
+msgstr "File \"%s\" o una delle sue dipendenze mancanti."
+
+msgid "Error while loading file '%s'."
+msgstr "Errore durante il caricamento del file \"%s\"."
+
msgid "Saving Scene"
msgstr "Salvando la scena"
@@ -1967,6 +2967,14 @@ msgstr ""
"Questa operazione non può essere eseguita senza una radice dell'albero."
msgid ""
+"This scene can't be saved because there is a cyclic instance inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Questa scena non può essere salvata perché include un'instanziazione "
+"ciclica.\n"
+"Per favore risolverla e poi tentare di salvarla di nuovo."
+
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2011,6 +3019,9 @@ msgstr "Nome della disposizione non trovato!"
msgid "Restored the Default layout to its base settings."
msgstr "Ripristinata la disposzione predefinita alle sue impostazioni di base."
+msgid "This object is marked as read-only, so it's not editable."
+msgstr "L'oggetto è segnato come in sola lettura, pertanto non è modificabile."
+
msgid ""
"This resource belongs to a scene that was imported, so it's not editable.\n"
"Please read the documentation relevant to importing scenes to better "
@@ -2022,27 +3033,76 @@ msgstr ""
"per capire meglio questa prassi."
msgid ""
+"This resource belongs to a scene that was instantiated or inherited.\n"
+"Changes to it must be made inside the original scene."
+msgstr ""
+"Questa risorsa appartiene a una scena che è stata istanziata o ereditata.\n"
+"I cambiamenti a essa devono essere fatti nella scena originale."
+
+msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
"Questa risorsa è stata importata e non è quindi modificabile. Modificare le "
"sue impostazioni nel pannello d'importazione e re-importarla."
+msgid ""
+"This scene was imported, so changes to it won't be kept.\n"
+"Instantiating or inheriting it will allow you to make changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Questa scena è stata importata, pertanto non verranno preservati eventuali "
+"cambiamenti.\n"
+"Istanziarla o ereditarla permetteranno di effettuarci dei cambiamenti.\n"
+"Per favore leggere la documentazione rilevante all'importazione delle scene "
+"per comprendere meglio questo flusso di lavoro."
+
msgid "Changes may be lost!"
msgstr "Le modifiche potrebbero essere perse!"
+msgid "This object is read-only."
+msgstr "Questo oggetto è in sola lettura."
+
+msgid ""
+"Movie Maker mode is enabled, but no movie file path has been specified.\n"
+"A default movie file path can be specified in the project settings under the "
+"Editor > Movie Writer category.\n"
+"Alternatively, for running single scenes, a `movie_file` string metadata can "
+"be added to the root node,\n"
+"specifying the path to a movie file that will be used when recording that "
+"scene."
+msgstr ""
+"La modalità regista è attiva, ma non è stato specificato nessun percorso per "
+"il file video.\n"
+"Un percorso per il file video può essere specificato nelle impostazioni del "
+"progetto sotto la categoria Editor > Movie Writer.\n"
+"In alternativa, per eseguire scene singole, può essere aggiunto un metadato "
+"stringa \"movie_file\" nel nodo radice,\n"
+"specificando il percorso per un file video che verrà usato per registrare "
+"quella scena."
+
msgid "There is no defined scene to run."
msgstr "Non c'è nessuna scena definita da eseguire."
msgid "Save scene before running..."
msgstr "Salva scena prima di eseguire..."
+msgid "Could not start subprocess(es)!"
+msgstr "Impossibile avviare i sottoprocessi!"
+
+msgid "Reload the played scene."
+msgstr "Ricarica la scena eseguita."
+
msgid "Play the project."
msgstr "Esegui il progetto."
msgid "Play the edited scene."
msgstr "Esegui la scena modificata."
+msgid "Play a custom scene."
+msgstr "Avvia una scena personalizzata."
+
msgid "Open Base Scene"
msgstr "Apri una scena di base"
@@ -2053,14 +3113,20 @@ msgid "Quick Open Scene..."
msgstr "Apri una scena rapidamente…"
msgid "Quick Open Script..."
-msgstr "Apri script rapidamente…"
+msgstr "Apri uno script rapidamente…"
msgid "Save & Reload"
msgstr "Salva e Ricarica"
+msgid "Save modified resources before reloading?"
+msgstr "Salvare le risorse modificate prima di ricaricare?"
+
msgid "Save & Quit"
msgstr "Salva ed esci"
+msgid "Save modified resources before closing?"
+msgstr "Salvare le risorse modificate prima di chiudere?"
+
msgid "Save changes to '%s' before reloading?"
msgstr "Salvare le modifiche a '%s' prima di ricaricare?"
@@ -2074,15 +3140,15 @@ msgid ""
"The current scene has no root node, but %d modified external resource(s) "
"were saved anyway."
msgstr ""
-"La scena attuale non ha un nodo radice, ma %d risorse esterne modificate "
-"sono state salvate comunque."
+"La scena attuale non ha un nodo radice, ma sono state salvate comunque %d "
+"risorse esterne modificate."
msgid ""
"A root node is required to save the scene. You can add a root node using the "
"Scene tree dock."
msgstr ""
-"È necessario un nodo principale per salvare la scena. Puoi aggiungerne uno "
-"nel pannello di scena."
+"È necessario un nodo radice per salvare la scena. È possibile aggiungerne "
+"uno nel pannello di scena."
msgid "Save Scene As..."
msgstr "Salva la scena come…"
@@ -2096,12 +3162,30 @@ msgstr "Impossibile tornare indietro mentre i tasti del mouse sono premuti."
msgid "Nothing to undo."
msgstr "Niente da annullare."
+msgid "Global Undo: %s"
+msgstr "Annullamento globale: %s"
+
+msgid "Remote Undo: %s"
+msgstr "Annullamento remoto: %s"
+
+msgid "Scene Undo: %s"
+msgstr "Annullamento di scena: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "Impossibile ripetere mentre si premono pulsanti del mouse."
msgid "Nothing to redo."
msgstr "Niente da ripetere."
+msgid "Global Redo: %s"
+msgstr "Ripetizione globale: %s"
+
+msgid "Remote Redo: %s"
+msgstr "Ripetizione remota: %s"
+
+msgid "Scene Redo: %s"
+msgstr "Ripetizione di scena: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "Impossibile ricaricare una scena che non è mai stata salvata."
@@ -2198,7 +3282,7 @@ msgid "Scene '%s' has broken dependencies:"
msgstr "La scena \"%s\" ha rotto le dipendenze:"
msgid "Clear Recent Scenes"
-msgstr "Rimuovi scene recenti"
+msgstr "Pulisci le scene recenti"
msgid ""
"No main scene has ever been defined, select one?\n"
@@ -2280,6 +3364,9 @@ msgstr "Trasla Visuale"
msgid "Dock Position"
msgstr "Posizione del pannello"
+msgid "Make Floating"
+msgstr "Rendi fluttuante"
+
msgid "Add a new scene."
msgstr "Aggiungi una nuova scena."
@@ -2301,6 +3388,18 @@ msgstr "Va alla scena precedentemente aperta."
msgid "Copy Text"
msgstr "Copia il testo"
+msgid "Next Scene Tab"
+msgstr "Prossima scheda di scena"
+
+msgid "Previous Scene Tab"
+msgstr "Scheda di scena precedente"
+
+msgid "Focus FileSystem Filter"
+msgstr "Seleziona il filtro del FileSystem"
+
+msgid "Command Palette"
+msgstr "Tavolozza dei comandi"
+
msgid "New Scene"
msgstr "Nuova scena"
@@ -2319,6 +3418,9 @@ msgstr "Apri una scena recente"
msgid "Save Scene"
msgstr "Salva la scena"
+msgid "Export As..."
+msgstr "Esporta come..."
+
msgid "MeshLibrary..."
msgstr "MeshLibrary..."
@@ -2334,9 +3436,18 @@ msgstr "Progetto"
msgid "Project Settings..."
msgstr "Impostazioni del progetto…"
+msgid "Project Settings"
+msgstr "Impostazioni del progetto"
+
msgid "Version Control"
msgstr "Controllo della versione"
+msgid "Create Version Control Metadata"
+msgstr "Crea i metadati di controllo della versione"
+
+msgid "Version Control Settings"
+msgstr "Impostazioni del controllo della versione"
+
msgid "Export..."
msgstr "Esporta..."
@@ -2346,6 +3457,9 @@ msgstr "Installa il modello di costruzione per Android…"
msgid "Open User Data Folder"
msgstr "Apri la cartella dei dati utente"
+msgid "Customize Engine Build Configuration..."
+msgstr "Personalizza la configurazione di costruzione del motore..."
+
msgid "Tools"
msgstr "Strumenti"
@@ -2364,6 +3478,9 @@ msgstr "Editor"
msgid "Editor Settings..."
msgstr "Impostazioni dell'editor…"
+msgid "Command Palette..."
+msgstr "Tavolozza dei comandi..."
+
msgid "Editor Layout"
msgstr "Disposizione dell'editor"
@@ -2392,6 +3509,9 @@ msgstr "Gestisci le funzionalità dell'editor…"
msgid "Manage Export Templates..."
msgstr "Gestisci i modelli d'esportazione…"
+msgid "Configure FBX Importer..."
+msgstr "Configura l'importatore FBX..."
+
msgid "Help"
msgstr "Aiuto"
@@ -2419,15 +3539,66 @@ msgstr "Informazioni su Godot"
msgid "Support Godot Development"
msgstr "Supporta lo sviluppo di Godot"
+msgid "Run the project's default scene."
+msgstr "Esegui la scena predefinita del progetto."
+
msgid "Run Project"
msgstr "Esegui progetto"
+msgid "Pause the running project's execution for debugging."
+msgstr "Metti in pausa l'esecuzione del progetto in corso a fini di debug."
+
+msgid "Pause Running Project"
+msgstr "Pausa il progetto in esecuzione"
+
+msgid "Stop the currently running project."
+msgstr "Ferma il progetto in esecuzione."
+
+msgid "Stop Running Project"
+msgstr "Annulla progetto in esecuzione"
+
+msgid "Run the currently edited scene."
+msgstr "Esegui la scena attualmente in modifica."
+
+msgid "Run Current Scene"
+msgstr "Esegui la scena corrente"
+
+msgid "Run a specific scene."
+msgstr "Esegui una scena specifica."
+
+msgid "Run Specific Scene"
+msgstr "Esegui una scena specifica"
+
+msgid ""
+"Enable Movie Maker mode.\n"
+"The project will run at stable FPS and the visual and audio output will be "
+"recorded to a video file."
+msgstr ""
+"Attiva la modalità regista.\n"
+"Il progetto andrà a FPS stabili e l'uscita audiovisiva verrà registrata in "
+"un file video."
+
+msgid "Choose a renderer."
+msgstr "Scegli un renderer."
+
+msgid "Forward+"
+msgstr "Forward+"
+
+msgid "Mobile"
+msgstr "Mobile"
+
msgid "Compatibility"
msgstr "Compatibilità"
+msgid "Changing the renderer requires restarting the editor."
+msgstr "Il cambiamento del renderer richiede il riavvio dell'editor."
+
msgid "Update Continuously"
msgstr "Aggiorna Continuamente"
+msgid "Update When Changed"
+msgstr "Aggiorna quando cambiato"
+
msgid "Hide Update Spinner"
msgstr "Nascondi la rotella di aggiornamento"
@@ -2440,6 +3611,9 @@ msgstr "Ispettore"
msgid "Node"
msgstr "Nodo"
+msgid "History"
+msgstr "Cronologia"
+
msgid "Expand Bottom Panel"
msgstr "Espandi il pannello inferiore"
@@ -2455,11 +3629,32 @@ msgstr ""
"rilevanti."
msgid "Manage Templates"
-msgstr "Gestisci i modelli d'esportazione"
+msgstr "Gestisci i modelli"
msgid "Install from file"
msgstr "Installa da un file"
+msgid "Select Android sources file"
+msgstr "Seleziona l'archivio delle sorgenti di Android"
+
+msgid ""
+"This will set up your project for gradle Android builds by installing the "
+"source template to \"res://android/build\".\n"
+"You can then apply modifications and build your own custom APK on export "
+"(adding modules, changing the AndroidManifest.xml, etc.).\n"
+"Note that in order to make gradle builds instead of using pre-built APKs, "
+"the \"Use Gradle Build\" option should be enabled in the Android export "
+"preset."
+msgstr ""
+"Questo configurerà il progetto per le costruzioni gradle di Android "
+"installando il modello sorgente in \"res://android/build\".\n"
+"È possibile allora applicare delle modifiche e costruire il proprio APK "
+"durante l'esportazione (aggiungendo moduli, modificando l'AndroidManifest."
+"xml, ecc)\n"
+"Nota che per usare le costruzioni gradle invece degli APK precostruiti, deve "
+"essere attiva l'opzione \"Use Gradle Build\" nella preimpostazione di "
+"esportazione per Android."
+
msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
@@ -2529,6 +3724,9 @@ msgstr "Apri l'editor successivo"
msgid "Open the previous Editor"
msgstr "Apri l'editor precedente"
+msgid "Ok"
+msgstr "Ok"
+
msgid "Warning!"
msgstr "Attenzione!"
@@ -2553,6 +3751,9 @@ msgstr "Modifica l'estensione"
msgid "Installed Plugins:"
msgstr "Estensioni installate:"
+msgid "Create New Plugin"
+msgstr "Crea una nuova estensione"
+
msgid "Version"
msgstr "Versione"
@@ -2568,6 +3769,9 @@ msgstr "Modifica il testo:"
msgid "On"
msgstr "On"
+msgid "Renaming layer %d:"
+msgstr "Rinominando il livello %d:"
+
msgid "No name provided."
msgstr "Nessun nome fornito."
@@ -2580,12 +3784,30 @@ msgstr "Bit %d, valore %d"
msgid "Rename"
msgstr "Rinomina"
+msgid "Rename layer"
+msgstr "Rinomina il livello"
+
+msgid "Layer %d"
+msgstr "Livello %d"
+
+msgid "No Named Layers"
+msgstr "Nessun livello con nome"
+
+msgid "Edit Layer Names"
+msgstr "Modifica i nomi dei livelli"
+
+msgid "<empty>"
+msgstr "<vuoto>"
+
msgid "Assign..."
msgstr "Assegna..."
msgid "Invalid RID"
msgstr "RID non valido"
+msgid "Recursion detected, unable to assign resource to property."
+msgstr "Ricorsione rilevata, impossibile assegnare la risorsa alla proprietà."
+
msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
@@ -2610,12 +3832,24 @@ msgstr "Selezionare una vista"
msgid "Selected node is not a Viewport!"
msgstr "Il nodo selezionato non è un Viewport!"
+msgid "(Nil) %s"
+msgstr "(Nullo) %s"
+
+msgid "%s (size %s)"
+msgstr "%s (grandezza %s)"
+
msgid "Size:"
msgstr "Dimensione:"
msgid "Remove Item"
msgstr "Rimuovi l'elemento"
+msgid "Dictionary (Nil)"
+msgstr "Dizionario (nullo)"
+
+msgid "Dictionary (size %d)"
+msgstr "Dizionario (grandezza %s)"
+
msgid "New Key:"
msgstr "Nuova chiave:"
@@ -2625,6 +3859,15 @@ msgstr "Nuovo valore:"
msgid "Add Key/Value Pair"
msgstr "Aggiungi una coppia chiave/valore"
+msgid "Localizable String (Nil)"
+msgstr "Stringa localizzabile (nulla)"
+
+msgid "Localizable String (size %d)"
+msgstr "Stringa localizzabile (dimensione %d)"
+
+msgid "Add Translation"
+msgstr "Aggiungi una traduzione"
+
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
@@ -2635,9 +3878,15 @@ msgstr ""
msgid "Quick Load"
msgstr "Caricamento rapido"
+msgid "Inspect"
+msgstr "Ispeziona"
+
msgid "Make Unique"
msgstr "Rendi Unico"
+msgid "Make Unique (Recursive)"
+msgstr "Rendi unica (ricorsivo)"
+
msgid "Convert to %s"
msgstr "Converti in %s"
@@ -2650,6 +3899,15 @@ msgstr "Nuovo script"
msgid "Extend Script"
msgstr "Estendi script"
+msgid "New Shader"
+msgstr "Nuovo shader"
+
+msgid "No Remote Debug export presets configured."
+msgstr "Nessuna preimpostazione di debug remoto configurata."
+
+msgid "Remote Debug"
+msgstr "Debug remoto"
+
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the Export menu or define an existing preset "
@@ -2669,14 +3927,26 @@ msgstr "Inserisci la logica dello script nel metodo _run()."
msgid "There is an edited scene already."
msgstr "Vi è già una scena correntemente modificata."
+msgid ""
+"Couldn't run editor script, did you forget to override the '_run' method?"
+msgstr ""
+"Impossibile eseguire lo script editor, hai dimenticato di sovrascrivere il "
+"metodo `_run`?"
+
+msgid "Edit Built-in Action"
+msgstr "Modifica un'azione integrata"
+
+msgid "Edit Shortcut"
+msgstr "Modifica una scorciatoia"
+
msgid "Common"
msgstr "Comune"
msgid "Editor Settings"
msgstr "Impostazioni Editor"
-msgid "General"
-msgstr "Generale"
+msgid "Filter Settings"
+msgstr "Filtra le impostazioni"
msgid "The editor must be restarted for changes to take effect."
msgstr "Per rendere effettive le modifiche, l'editor deve essere riavviato."
@@ -2687,12 +3957,111 @@ msgstr "Scorciatoie"
msgid "Binding"
msgstr "Associazione"
+msgid ""
+"Hold %s to round to integers.\n"
+"Hold Shift for more precise changes."
+msgstr ""
+"Tenere premuto %s per arrotondare gli interi.\n"
+"Tenere premuto Maiusc per cambiamenti più precisi."
+
+msgid "No notifications."
+msgstr "Nessuna notifica."
+
+msgid "Show notifications."
+msgstr "Mostra le notifiche."
+
+msgid "Silence the notifications."
+msgstr "Silenzia le notifiche."
+
+msgid "Left Stick Left, Joystick 0 Left"
+msgstr "Levetta sinistra verso sinistra, joystick 0 verso sinistra"
+
+msgid "Left Stick Right, Joystick 0 Right"
+msgstr "Levetta sinistra verso detra, joystick 0 verso destra"
+
+msgid "Left Stick Up, Joystick 0 Up"
+msgstr "Levetta sinistra verso su, joystick 0 verso su"
+
+msgid "Left Stick Down, Joystick 0 Down"
+msgstr "Levetta sinistra verso giù joystick 0 verso giù"
+
+msgid "Right Stick Left, Joystick 1 Left"
+msgstr "Levetta destra verso sinistra, joystick 1 verso sinistra"
+
+msgid "Right Stick Right, Joystick 1 Right"
+msgstr "Levetta destra verso destra, joystick 1 verso destra"
+
+msgid "Right Stick Up, Joystick 1 Up"
+msgstr "Levetta destra verso su, Joystick 1 verso su"
+
+msgid "Right Stick Down, Joystick 1 Down"
+msgstr "Levetta destra verso giù, joystick 1 verso giù"
+
+msgid "Joystick 2 Left"
+msgstr "Joystick 2 verso sinistra"
+
+msgid "Left Trigger, Sony L2, Xbox LT, Joystick 2 Right"
+msgstr "Grilletto sinistro, L2 sony, LT Xbox, joystick 2 verso destra"
+
+msgid "Joystick 2 Up"
+msgstr "Joystick 2 verso su"
+
+msgid "Right Trigger, Sony R2, Xbox RT, Joystick 2 Down"
+msgstr "Grilletto destro, R2 Sony, RT Xbox, joystick 2 verso giù"
+
+msgid "Joystick 3 Left"
+msgstr "Joystick 3 verso sinistra"
+
+msgid "Joystick 3 Right"
+msgstr "Joystick 3 verso destra"
+
+msgid "Joystick 3 Up"
+msgstr "Joystick 3 verso su"
+
+msgid "Joystick 3 Down"
+msgstr "Joystick 3 verso giù"
+
+msgid "Joystick 4 Left"
+msgstr "Joystick 4 verso sinistra"
+
+msgid "Joystick 4 Right"
+msgstr "Joystick 4 verso destra"
+
+msgid "Joystick 4 Up"
+msgstr "Joystick 4 verso su"
+
+msgid "Joystick 4 Down"
+msgstr "Joystick 4 verso giù"
+
+msgid "Joypad Axis %d %s (%s)"
+msgstr "Asse %d del joypad %s (%s)"
+
msgid "All Devices"
msgstr "Tutti i Dispositivi"
msgid "Device"
msgstr "Dispositivo"
+msgid "Listening for input..."
+msgstr "Aspettando ingressi..."
+
+msgid "Filter by event..."
+msgstr "Filtra per evento..."
+
+msgid ""
+"Target platform requires 'ETC2/ASTC' texture compression. Enable 'Import "
+"ETC2 ASTC' in Project Settings."
+msgstr ""
+"La piattaforma di destinazione richiede la compressione delle texture \"ETC2/"
+"ASTC\". Attivare \"Import ETC2 ASTC\" nelle impostazioni del progetto."
+
+msgid ""
+"Target platform requires 'S3TC/BPTC' texture compression. Enable 'Import "
+"S3TC BPTC' in Project Settings."
+msgstr ""
+"La piattaforma di destinazione richiede la compressione delle testure \"S3TC/"
+"BPTC\". Attivare \"Import S3TC BPTC\" nelle impostazioni del progetto."
+
msgid "Project export for platform:"
msgstr "Esportazione del progetto per piattaforma:"
@@ -2714,6 +4083,9 @@ msgstr "Nessun modello d'esportazione trovato nel percorso previsto:"
msgid "ZIP Creation"
msgstr "Creazione dello ZIP"
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Impossibile aprire il file da leggere dal percorso \"%s\"."
+
msgid "Packing"
msgstr "Impacchettando"
@@ -2724,13 +4096,19 @@ msgid "Cannot create file \"%s\"."
msgstr "impossibile creare il file \"%s\"."
msgid "Failed to export project files."
-msgstr "Esportazione dei file di progetto fallita."
+msgstr "Esportazione dei file del progetto fallita."
+
+msgid "Can't create encrypted file."
+msgstr "Impossibile creare il file crittografato."
+
+msgid "Can't open encrypted file to write."
+msgstr "Impossibile aprire il file crittografato da scrivere."
msgid "Can't open file to read from path \"%s\"."
msgstr "impossibile aprire file da leggere dalla path \"%s\"."
msgid "Save ZIP"
-msgstr "Salva ZIP"
+msgstr "Salva uno ZIP"
msgid "Custom debug template not found."
msgstr "Modello di sviluppo personalizzato non trovato."
@@ -2739,7 +4117,7 @@ msgid "Custom release template not found."
msgstr "Modello di rilascio personalizzato non trovato."
msgid "Prepare Template"
-msgstr "Prepara Modello"
+msgstr "Prepara un modello"
msgid "The given export path doesn't exist."
msgstr "Il percorso di esportazione specificato non esiste."
@@ -2748,10 +4126,10 @@ msgid "Template file not found: \"%s\"."
msgstr "File modello non trovato: \"%s\"."
msgid "Failed to copy export template."
-msgstr "Copiatura del modello di esportazione fallita."
+msgstr "Copia del modello di esportazione fallita."
msgid "PCK Embedding"
-msgstr "Incorporazione PCK"
+msgstr "Integrando il PCK"
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -2759,7 +4137,7 @@ msgstr ""
"bit."
msgid "Open the folder containing these templates."
-msgstr "Apre la cartella che contiene questi modelli."
+msgstr "Apri la cartella che contiene questi modelli."
msgid "Uninstall these templates."
msgstr "Disinstalla questi modelli."
@@ -2855,6 +4233,9 @@ msgstr "Download in corso"
msgid "Connection Error"
msgstr "Errore di Connessione"
+msgid "TLS Handshake Error"
+msgstr "Errore handshake TLS"
+
msgid "Can't open the export templates file."
msgstr "Impossibile aprire il file di esportazione dei modelli."
@@ -2871,7 +4252,7 @@ msgid "Error creating path for extracting templates:"
msgstr "Errore nella creazione del percorso per l'estrazione dei modelli:"
msgid "Extracting Export Templates"
-msgstr "Estrazione Template d'Esportazione"
+msgstr "Estraendo i modelli di esportazione"
msgid "Importing:"
msgstr "Importo:"
@@ -2883,16 +4264,16 @@ msgid "Uncompressing Android Build Sources"
msgstr "Decomprimendo Android Build Sources"
msgid "Export Template Manager"
-msgstr "Gestore Template Esportazione"
+msgstr "Gestore dei modelli di esportazione"
msgid "Current Version:"
msgstr "Versione Corrente:"
msgid "Export templates are missing. Download them or install from a file."
-msgstr "Modelli d'eportazione mancanti. Scaricarli o installarli da un file."
+msgstr "Modelli di esportazione mancanti. Scaricarli o installarli da un file."
msgid "Export templates are installed and ready to be used."
-msgstr "I modelli d'esportazione sono installati e pronti all'uso."
+msgstr "I modelli di esportazione sono installati e pronti all'uso."
msgid "Open Folder"
msgstr "Apri cartella"
@@ -2944,13 +4325,13 @@ msgid "Other Installed Versions:"
msgstr "Altre Versioni Installate:"
msgid "Uninstall Template"
-msgstr "Disinstalla Modello"
+msgstr "Disinstalla il modello"
msgid "Select Template File"
-msgstr "Seleziona File Modello"
+msgstr "Seleziona il file del modello"
msgid "Godot Export Templates"
-msgstr "Modello di Esportazione Godot"
+msgstr "Modelli di esportazione di Godot"
msgid ""
"The templates will continue to download.\n"
@@ -2973,6 +4354,9 @@ msgstr ""
msgid "Delete preset '%s'?"
msgstr "Eliminare preset \"%s\"?"
+msgid "%s Export"
+msgstr "Esportazione %s"
+
msgid "Release"
msgstr "Rilascio"
@@ -3014,12 +4398,27 @@ msgstr "Esporta le scene selezionate (incluse le dipendenze)"
msgid "Export selected resources (and dependencies)"
msgstr "Esporta le risorse selezionate (incluse le dipendenze)"
+msgid "Export all resources in the project except resources checked below"
+msgstr ""
+"Esporta tutte le risorse nel progetto eccetto le risorse selezionate sotto"
+
+msgid "Export as dedicated server"
+msgstr "Esporta come server dedicato"
+
msgid "Export Mode:"
msgstr "Modalità d'Esportazione:"
msgid "Resources to export:"
msgstr "Risorse da esportare:"
+msgid ""
+"\"Strip Visuals\" will replace the following resources with placeholders:"
+msgstr ""
+"\"Rimuovi visuali\" rimpiazzerà le seguenti risorse con dei segnaposto:"
+
+msgid "Strip Visuals"
+msgstr "Rimuovi visuali"
+
msgid "Keep"
msgstr "Mantieni"
@@ -3046,10 +4445,36 @@ msgstr "Personalizzato (separati da virgola):"
msgid "Feature List:"
msgstr "Lista di Funzionalità:"
+msgid "Encryption"
+msgstr "Crittografia"
+
+msgid "Encrypt Exported PCK"
+msgstr "Crittografa il PCK esportato"
+
+msgid "Encrypt Index (File Names and Info)"
+msgstr "Crittografa l'indice (nomi e informazioni dei file)"
+
+msgid ""
+"Filters to include files/folders\n"
+"(comma-separated, e.g: *.tscn, *.tres, scenes/*)"
+msgstr ""
+"Filtri per escludere file/cartelle\n"
+"(separati da virgole, per esempio: *.tscn *.tres, scene/*)"
+
+msgid ""
+"Filters to exclude files/folders\n"
+"(comma-separated, e.g: *.ctex, *.import, music/*)"
+msgstr ""
+"Filtri per escludere file/cartelle\n"
+"(separati da virgole, per esempio: *.ctex, *.import, musica/*)"
+
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
"Chiave Crittografica non Valida (deve essere lunga 64 caratteri esadecimali)"
+msgid "Encryption Key (256-bits as hexadecimal):"
+msgstr "Chiave di crittografia (256 bit in esadecimale):"
+
msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
@@ -3060,6 +4485,9 @@ msgstr ""
msgid "More Info..."
msgstr "Maggiori Informazioni..."
+msgid "Export PCK/ZIP..."
+msgstr "Esporta PCK/ZIP..."
+
msgid "Export Project..."
msgstr "Esporta Progetto..."
@@ -3085,14 +4513,43 @@ msgid "Project Export"
msgstr "Esporta Progetto"
msgid "Manage Export Templates"
-msgstr "Gestisci template d'esportazione"
+msgstr "Gestisci i modelli di esportazione"
msgid "Export With Debug"
msgstr "Esporta Con Debug"
+msgid "Path to FBX2glTF executable is empty."
+msgstr "Il percorso per FBX2glTF è vuoto."
+
+msgid "Path to FBX2glTF executable is invalid."
+msgstr "Il percorso per l'eseguibile di FBX2glTF non è valido."
+
+msgid "Error executing this file (wrong version or architecture)."
+msgstr ""
+"Errore durante l'esecuzione del file (versione o architettura sbagliati)."
+
+msgid "FBX2glTF executable is valid."
+msgstr "L'eseguibile di FBX2glTF è valido."
+
+msgid "Configure FBX Importer"
+msgstr "Configura l'importatore FBX"
+
+msgid ""
+"FBX2glTF is required for importing FBX files.\n"
+"Please download it and provide a valid path to the binary:"
+msgstr ""
+"FBX2glTF è richiesto per importare i file FBX.\n"
+"Per favore, scaricarlo e offrire un percorso valido al binario:"
+
+msgid "Click this link to download FBX2glTF"
+msgstr "Cliccare questo collegamento per scaricare FGX2glTF"
+
msgid "Browse"
msgstr "Sfoglia"
+msgid "Confirm Path"
+msgstr "Conferma il percorso"
+
msgid "Favorites"
msgstr "Preferiti"
@@ -3108,7 +4565,7 @@ msgstr ""
"aprirlo per modificarlo."
msgid "Cannot move/rename resources root."
-msgstr "Impossibile spostare/rinominare risorse root."
+msgstr "Impossibile spostare/rinominare le risorse radici."
msgid "Cannot move a folder into itself."
msgstr "Impossibile spostare una cartella all'interno di se stessa."
@@ -3119,6 +4576,12 @@ msgstr "Errore spostamento:"
msgid "Error duplicating:"
msgstr "Errore duplicazione:"
+msgid "Failed to save resource at %s: %s"
+msgstr "Impossibile salvare la risorsa in %s: %s"
+
+msgid "Failed to load resource at %s: %s"
+msgstr "Impossibile caricare la risorsa in %s: %s"
+
msgid "Unable to update dependencies:"
msgstr "Impossibile aggiornare le dipendenze:"
@@ -3173,6 +4636,9 @@ msgstr "Nuova Scena Ereditata"
msgid "Set As Main Scene"
msgstr "Imposta Come Scena Principale"
+msgid "Instantiate"
+msgstr "Istanzia"
+
msgid "Add to Favorites"
msgstr "Aggiungi ai Preferiti"
@@ -3188,6 +4654,21 @@ msgstr "Vedi Proprietari..."
msgid "Move To..."
msgstr "Sposta in..."
+msgid "Folder..."
+msgstr "Cartella..."
+
+msgid "Scene..."
+msgstr "Scena..."
+
+msgid "Script..."
+msgstr "Script..."
+
+msgid "Resource..."
+msgstr "Risorsa..."
+
+msgid "TextFile..."
+msgstr "TextFile..."
+
msgid "New Scene..."
msgstr "Nuova Scena…"
@@ -3197,6 +4678,12 @@ msgstr "Nuovo Script..."
msgid "New Resource..."
msgstr "Nuova Risorsa..."
+msgid "New TextFile..."
+msgstr "Nuovo TextFile..."
+
+msgid "Sort Files"
+msgstr "Ordina i file"
+
msgid "Sort by Name (Ascending)"
msgstr "Ordina per nome (Crescente)"
@@ -3215,18 +4702,33 @@ msgstr "Ordina per Ultima Modifica"
msgid "Sort by First Modified"
msgstr "Ordina per primo modificato"
+msgid "Copy UID"
+msgstr "Copia UID"
+
msgid "Duplicate..."
msgstr "Duplica..."
msgid "Rename..."
msgstr "Rinomina..."
+msgid "Open in External Program"
+msgstr "Apri in un programma esterno"
+
+msgid "Go to previous selected folder/file."
+msgstr "Vai al file (o cartella) precedentemente selezionato."
+
+msgid "Go to next selected folder/file."
+msgstr "Vai al prossimo file (o cartella) selezionato."
+
msgid "Re-Scan Filesystem"
msgstr "Ri-scansiona il Filesystem"
msgid "Toggle Split Mode"
msgstr "Commuta la modalità divisa"
+msgid "Filter Files"
+msgstr "Filtra i file"
+
msgid ""
"Scanning Files,\n"
"Please Wait..."
@@ -3274,9 +4776,21 @@ msgstr "Sostituisci..."
msgid "Replace in Files"
msgstr "Sostituisci nei file"
+msgid "Replace all (no undo)"
+msgstr "Sostituisci tutto (irreversibile)"
+
msgid "Searching..."
msgstr "Ricerca..."
+msgid "%d match in %d file"
+msgstr "%d corrispondenza in %d file"
+
+msgid "%d matches in %d file"
+msgstr "%d corrispondenze in %d file"
+
+msgid "%d matches in %d files"
+msgstr "%d corrispondenze in %d file"
+
msgid "Add to Group"
msgstr "Aggiungi a Gruppo"
@@ -3313,12 +4827,182 @@ msgstr "Editor Gruppo"
msgid "Manage Groups"
msgstr "Gestisci Gruppi"
+msgid "The Beginning"
+msgstr "L'inizio"
+
+msgid "Global"
+msgstr "Globale"
+
+msgid "Audio Stream Importer: %s"
+msgstr "Importatore flussi audio: %s"
+
msgid "Reimport"
msgstr "Reimporta"
+msgid "Enable looping."
+msgstr "Abilita ripetizione."
+
msgid "Offset:"
msgstr "Scostamento:"
+msgid ""
+"Loop offset (from beginning). Note that if BPM is set, this setting will be "
+"ignored."
+msgstr ""
+"Scostamento ciclico (dall'inizio). Notare che se i BMP sono impostati, "
+"questa opzione verrà ignorata."
+
+msgid "Loop:"
+msgstr "Ripetizione:"
+
+msgid "BPM:"
+msgstr "BPM:"
+
+msgid ""
+"Configure the Beats Per Measure (tempo) used for the interactive streams.\n"
+"This is required in order to configure beat information."
+msgstr ""
+"Configura i Battiti Per Misura (tempo) utilizzato per flussi interattivi.\n"
+"Questo è richiesto per configurare le informazioni dei battiti."
+
+msgid "Beat Count:"
+msgstr "Numero di battiti:"
+
+msgid ""
+"Configure the amount of Beats used for music-aware looping. If zero, it will "
+"be autodetected from the length.\n"
+"It is recommended to set this value (either manually or by clicking on a "
+"beat number in the preview) to ensure looping works properly."
+msgstr ""
+"Configura la quantità di battiti usati per la ripetizione musicale. Se "
+"impostata a zero, verrà autorilevata dalla lunghezza.\n"
+"È consigliato impostare questo valore (manualmente o cliccando su un numero "
+"di battiti dall'anteprima) per assicurarsi che la ripetizione funzioni "
+"correttamente."
+
+msgid "Music Playback:"
+msgstr "Riproduzione musicale:"
+
+msgid "New Configuration"
+msgstr "Nuova configurazione"
+
+msgid "Remove Variation"
+msgstr "Rimuovi la variazione"
+
+msgid "Preloaded glyphs: %d"
+msgstr "Glifi precaricati: %d"
+
+msgid ""
+"Warning: There are no configurations specified, no glyphs will be pre-"
+"rendered."
+msgstr ""
+"Attenzione: Non ci sono configurazioni specificate, non verrà pre-"
+"renderizzato alcun glifo."
+
+msgid ""
+"Warning: Multiple configurations have identical settings. Duplicates will be "
+"ignored."
+msgstr ""
+"Attenzione: Più configurazioni hanno le stesse impostazioni. I duplicati "
+"verranno ignorati."
+
+msgid ""
+"Note: LCD Subpixel antialiasing is selected, each of the glyphs will be pre-"
+"rendered for all supported subpixel layouts (5x)."
+msgstr ""
+"Nota: L'antitaliasing subpixel LCD è selezionato, ognuno dei glifi verrà pre-"
+"renderizzato per tutte le disposizioni subpixel supportate (5x)."
+
+msgid ""
+"Note: Subpixel positioning is selected, each of the glyphs might be pre-"
+"rendered for multiple subpixel offsets (up to 4x)."
+msgstr ""
+"Nota: Il posizionamento subpixel è selezionato, ognuno dei glifi potrebbe "
+"essere pre-renderizzato per più scostamenti subpixel (fino a 4x)."
+
+msgid "Advanced Import Settings for '%s'"
+msgstr "Impostazioni d'importazione avanzate per \"%s\""
+
+msgid "Rendering Options"
+msgstr "Opzioni di rendering"
+
+msgid "Select font rendering options, fallback font, and metadata override:"
+msgstr ""
+"Selezionare le opzioni di rendering dei font, il font di ripiego, e la "
+"sovrascrittura dei metadati:"
+
+msgid "Pre-render Configurations"
+msgstr "Configurazioni pre-render"
+
+msgid ""
+"Add font size, and variation coordinates, and select glyphs to pre-render:"
+msgstr ""
+"Aggiungere una dimensione del font, delle coordinate di variazione e "
+"selezionare i glifi da pre-renderizzare:"
+
+msgid "Configuration:"
+msgstr "Configurazione:"
+
+msgid "Add configuration"
+msgstr "Aggiungi una configurazione"
+
+msgid "Clear Glyph List"
+msgstr "Pulisci la lista dei glifi"
+
+msgid "Glyphs from the Translations"
+msgstr "Glifi dalle traduzioni"
+
+msgid "Select translations to add all required glyphs to pre-render list:"
+msgstr ""
+"Selezionare le traduzioni da cui aggiungere tutti i glifi richiesti alla "
+"lista di pre-renderizzazione:"
+
+msgid "Shape all Strings in the Translations and Add Glyphs"
+msgstr "Forma tutte le stringhe nelle traduzioni e aggiungi i glifi"
+
+msgid "Glyphs from the Text"
+msgstr "Glifi dal testo"
+
+msgid ""
+"Enter a text and select OpenType features to shape and add all required "
+"glyphs to pre-render list:"
+msgstr ""
+"Inserire un testo e selezionare le funzionalità OpenType per formare e "
+"aggiungere tutti i glifi richiesti alla lista di pre-renderizzazione:"
+
+msgid "Shape Text and Add Glyphs"
+msgstr "Forma il testo e aggiungi i glifi"
+
+msgid "Glyphs from the Character Map"
+msgstr "Glifi dalla mappa dei caratteri"
+
+msgid ""
+"Add or remove glyphs from the character map to pre-render list:\n"
+"Note: Some stylistic alternatives and glyph variants do not have one-to-one "
+"correspondence to character, and not shown in this map, use \"Glyphs from "
+"the text\" tab to add these."
+msgstr ""
+"Aggiungere o rimuovere dei glifi dalla mappa dei caratteri nella lista di "
+"pre-renderizzazione:\n"
+"Nota: alcune alternative stilistiche e varianti dei glifi non hanno una "
+"corrispondenza uno-a-uno con un carattere e non vengono mostrati nella "
+"mappa, utilizzare la scheda \"Glifi dal testo\" per aggiungerle."
+
+msgid "Dynamically rendered TrueType/OpenType font"
+msgstr "Font TrueType/OpenType renderizzato dinamicamente"
+
+msgid "Can't load font texture:"
+msgstr "Impossibile caricare texture del font:"
+
+msgid "Image margin too big."
+msgstr "Margine dell'immagine troppo grande."
+
+msgid "Character margin too bit."
+msgstr "Margine dei caratteri troppo grande."
+
+msgid "Pre-Import Scene"
+msgstr "Pre-importazione della scena"
+
msgid "Importing Scene..."
msgstr "Importando Scena..."
@@ -3337,10 +5021,21 @@ msgstr "Script di post-import invalido/non funzionante (controllare console):"
msgid "Error running post-import script:"
msgstr "Errore di esecuzione dello script di post-import:"
+msgid "Did you return a Node-derived object in the `_post_import()` method?"
+msgstr ""
+"Hai restituito un oggetto derivato da un Nodo nel metodo `post_import()`?"
+
msgid "Saving..."
msgstr "Salvataggio..."
msgid ""
+"Error importing GLSL shader file: '%s'. Open the file in the filesystem dock "
+"in order to see the reason."
+msgstr ""
+"Errore durante l'importazione del file shader GLSL : \"%s\". Aprire il file "
+"nel pannello filsystem per vedere il motivo."
+
+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 ""
@@ -3348,18 +5043,161 @@ msgstr ""
"compressione rosso-verde della texture per ridurre l'uso di memoria (il "
"canale blu è ignorato)."
+msgid ""
+"%s: Texture detected as used as a roughness map in 3D. Enabling roughness "
+"limiter based on the detected associated normal map at %s."
+msgstr ""
+"%s: Rilevato uso della texture come mappa di ruvidità in 3D. Attivando la "
+"limtazione della ruvidità basata sulla mappa dei normali in %s."
+
+msgid ""
+"%s: Texture detected as used in 3D. Enabling mipmap generation and setting "
+"the texture compression mode to %s."
+msgstr ""
+"%s: Rilevato uso della texture in 3D. Attivando la generazione delle mipmap "
+"e impostando la modalità di compressione della texture su %s."
+
+msgid "2D/3D (Auto-Detect)"
+msgstr "2D/3D (autorileva)"
+
msgid "2D"
msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid "<Unnamed Material>"
+msgstr "<Materiale senza nome>"
+
+msgid "Import ID: %s"
+msgstr "ID d'importazione: %s"
+
+msgid ""
+"Type: %s\n"
+"Import ID: %s"
+msgstr ""
+"Tipo: %s\n"
+"ID d'importazione: %s"
+
+msgid "Error opening scene"
+msgstr "Errore durante l'apertura della scena"
+
+msgid "Advanced Import Settings for AnimationLibrary '%s'"
+msgstr "Impostazioni avanzate d'importazione per l'AnimationLibrary \"%s\""
+
+msgid "Advanced Import Settings for Scene '%s'"
+msgstr "Impostazioni d'importatzione avanzate per lo Scene \"%s\""
+
+msgid "Select folder to extract material resources"
+msgstr "Seleziona la cartella in cui estrarre le risorse materiali"
+
+msgid "Select folder where mesh resources will save on import"
+msgstr ""
+"Selezionare la cartella in cui le risorse mesh verranno salvate durante "
+"l'importazione"
+
+msgid "Select folder where animations will save on import"
+msgstr ""
+"Selezionare la cartella in cui le animazioni verranno salvate durante "
+"l'importazione"
+
+msgid "Existing file with the same name will be replaced."
+msgstr "Il file esistente con lo stesso nome verrà rimpiazzato."
+
+msgid ""
+"This material already references an external file, no action will be taken.\n"
+"Disable the external property for it to be extracted again."
+msgstr ""
+"Questo materiale si riferisce già a un file esterno, non verrà fatto nulla.\n"
+"Disabilitare la proprietà esterna per estrarlo di nuovo."
+
+msgid ""
+"Material has no name nor any other way to identify on re-import.\n"
+"Please name it or ensure it is exported with an unique ID."
+msgstr ""
+"Il materiale non ha un nome né alcun altro modo per identificarlo durante la "
+"reimportazione.\n"
+"Per favore, dargli un nome o assicurarsi che venga esportato con un ID unico."
+
+msgid "Extract Materials to Resource Files"
+msgstr "Estrai i materiali in dei file risorsa"
+
+msgid "Extract"
+msgstr "Estrai"
+
+msgid ""
+"This mesh already saves to an external resource, no action will be taken."
+msgstr "Questa mesh viene già salvata in una risorsa, non verrà fatto nulla."
+
+msgid "Existing file with the same name will be replaced on import."
+msgstr ""
+"Il file esistente con lo stesso nome verrà rimpiazzato durante "
+"l'importazione."
+
+msgid ""
+"Mesh has no name nor any other way to identify on re-import.\n"
+"Please name it or ensure it is exported with an unique ID."
+msgstr ""
+"La mesh non ha un nome né alcun altro modo per essere identificata durante "
+"la reimportazione.\n"
+"Per favore, darle un nome o assicurarsi che venga esportata con un ID unico."
+
+msgid "Set paths to save meshes as resource files on Reimport"
+msgstr ""
+"Impostare i percorsi per salvare le mesh come file risorsa durante la "
+"reimportazione"
+
+msgid "Set Paths"
+msgstr "Imposta i percorsi"
+
+msgid ""
+"This animation already saves to an external resource, no action will be "
+"taken."
+msgstr ""
+"Quest'animazione viene già salvata in una risorsa esterna, non verrà fatto "
+"nulla."
+
+msgid "Set paths to save animations as resource files on Reimport"
+msgstr ""
+"Imposta i percorsi in cui salvare le animazioni come file risorsa durante la "
+"reimportazione"
+
+msgid "Can't make material external to file, write error:"
+msgstr "Impossibile rendere il materiale esterno al file, errore di scrittura:"
+
+msgid "Actions..."
+msgstr "Azioni..."
+
+msgid "Extract Materials"
+msgstr "Estrai i materiali"
+
+msgid "Set Animation Save Paths"
+msgstr "Imposta i percorsi di salvataggio delle animazioni"
+
+msgid "Set Mesh Save Paths"
+msgstr "Imposta i percorsi di salvataggio delle mesh"
+
msgid "Meshes"
msgstr "Mesh"
msgid "Materials"
msgstr "Materiali"
+msgid "Save Extension:"
+msgstr "Estensione di salvataggio:"
+
+msgid "Text: *.tres"
+msgstr "Testo: *.tres"
+
+msgid "Binary: *.res"
+msgstr "Binario: *.res"
+
+msgid "Text Resource"
+msgstr "Risorsa testuale"
+
+msgid "Binary Resource"
+msgstr "Risorsa binaria"
+
msgid "Select Importer"
msgstr "Seleziona Importatore"
@@ -3367,7 +5205,7 @@ msgid "Importer:"
msgstr "Importatore:"
msgid "Keep File (No Import)"
-msgstr "Mantieni il File (Non Importare)"
+msgstr "Mantieni il file (non importare)"
msgid "%d Files"
msgstr "%d File"
@@ -3391,11 +5229,14 @@ msgstr ""
"Importazione."
msgid "Import As:"
-msgstr "Importa Come:"
+msgstr "Importa come:"
msgid "Preset"
msgstr "Preimpostazione"
+msgid "Advanced..."
+msgstr "Avanzato..."
+
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Salva scene, re-importa e riavvia"
@@ -3415,12 +5256,70 @@ msgstr ""
"Seleziona un file risorsa nel filesystem o nell'ispettore per aggiustare le "
"impostazioni di importazione."
+msgid "No Event Configured"
+msgstr "Nessun evento configurato"
+
+msgid "Keyboard Keys"
+msgstr "Tasti della tastiera"
+
+msgid "Mouse Buttons"
+msgstr "Pulsanti del mouse"
+
+msgid "Joypad Buttons"
+msgstr "Pulsanti del joypad"
+
+msgid "Joypad Axes"
+msgstr "Assi del joypad"
+
+msgid "Event Configuration"
+msgstr "Configurazione dell'evento"
+
+msgid "Manual Selection"
+msgstr "Selezione manuale"
+
+msgid "Filter Inputs"
+msgstr "Filtra gli ingressi"
+
+msgid "Additional Options"
+msgstr "Opzioni aggiuntive"
+
msgid "Device:"
msgstr "Dispositivo:"
+msgid "Command / Control (auto)"
+msgstr "Command / Control (auto)"
+
+msgid ""
+"Automatically remaps between 'Meta' ('Command') and 'Control' depending on "
+"current platform."
+msgstr ""
+"Rimappa automatica tra \"Meta\" (\"Command\") e \"Control\" a seconda della "
+"piattaforma corrente."
+
+msgid "Keycode (Latin Equivalent)"
+msgstr "Codice del tasto (equivalente latino)"
+
+msgid "Physical Keycode (Position on US QWERTY Keyboard)"
+msgstr "Codice del tasto fisico (posizione in una tastiera QWERTY US)"
+
+msgid "Key Label (Unicode, Case-Insensitive)"
+msgstr "Etichetta del tastto (Unicode, senza distinzione di maiuscola)"
+
+msgid ""
+"The following resources will be duplicated and embedded within this resource/"
+"object."
+msgstr ""
+"Le seguenti risorse verranno duplicate e integrate in questa risorsa/oggetto."
+
+msgid "This object has no resources."
+msgstr "Questo oggetto non ha risorse."
+
msgid "Failed to load resource."
msgstr "Caricamento della risorsa fallito."
+msgid "(Current)"
+msgstr "(Attuale)"
+
msgid "Property Name Style"
msgstr "Stile Nome Proprietà"
@@ -3469,15 +5368,27 @@ msgstr "Copia Risorsa"
msgid "Make Resource Built-In"
msgstr "Rendi Risorsa Integrata"
+msgid "Go to previous edited object in history."
+msgstr "Vai al precedente oggetto modificato nella cronologia."
+
+msgid "Go to next edited object in history."
+msgstr "Vai al prossimo oggetto modificato nella cronologia."
+
msgid "History of recently edited objects."
msgstr "Cronologia di oggetti recentemente modificati."
msgid "Open documentation for this object."
msgstr "Apri la documentazione per questo oggetto."
+msgid "Filter Properties"
+msgstr "Filtra le proprietà"
+
msgid "Manage object properties."
msgstr "Gestisci proprietà oggetto."
+msgid "This cannot be undone. Are you sure?"
+msgstr "Questo non può essere annullato. Continuare?"
+
msgid "Add %d Translations"
msgstr "Aggiungi %d Traduzioni"
@@ -3499,6 +5410,18 @@ msgstr "Rimuovi Remap Risorse"
msgid "Remove Resource Remap Option"
msgstr "Rimuovi Opzione di Remap Rimorse"
+msgid "Add %d file(s) for POT generation"
+msgstr "Aggiungi %d file per la generazione del POT"
+
+msgid "Remove file from POT generation"
+msgstr "Rimuovi un file dalla generazione POT"
+
+msgid "Removed"
+msgstr "Rimosso"
+
+msgid "%s cannot be found."
+msgstr "Impossibile trovare %s."
+
msgid "Translations"
msgstr "Traduzioni"
@@ -3517,9 +5440,38 @@ msgstr "Rimappature per Locale:"
msgid "Locale"
msgstr "Locale"
+msgid "POT Generation"
+msgstr "Generazione del POT"
+
+msgid "Files with translation strings:"
+msgstr "Flie con stringhe di traduzione:"
+
+msgid "Generate POT"
+msgstr "Genera il POT"
+
+msgid "Set %s on %d nodes"
+msgstr "Imposta %s su %s nodi"
+
+msgid "%s (%d Selected)"
+msgstr "%s (%d selezionati)"
+
msgid "Select a single node to edit its signals and groups."
msgstr "Seleziona un singolo nodo per modificarne i segnali e gruppi."
+msgid "Plugin name cannot be blank."
+msgstr "Il nome dell'estensione non può essere vuoto."
+
+msgid "Script extension must match chosen language extension (.%s)."
+msgstr ""
+"L'estensione dello script deve coincidere con l'estensione della lingua "
+"scelta (.%s)."
+
+msgid "Subfolder name is not a valid folder name."
+msgstr "Il nome della sottocartella non è un nome di cartella valido."
+
+msgid "Subfolder cannot be one which already exists."
+msgstr "La sottocartella non può essere una che esiste già."
+
msgid "Edit a Plugin"
msgstr "Modifica un'estensione"
@@ -3589,9 +5541,17 @@ msgstr "Carica..."
msgid "Move Node Point"
msgstr "Sposta Punto Nodo"
+msgid "Change BlendSpace1D Config"
+msgstr "Cambia la configurazione di un BlendSpace1D"
+
msgid "Change BlendSpace1D Labels"
msgstr "Cambia Etichette BlendSpace1D"
+msgid "This type of node can't be used. Only animation nodes are allowed."
+msgstr ""
+"Questo tipo di nodo non può essere utilizzato. Sono permessi solo i nodi di "
+"animazione."
+
msgid "This type of node can't be used. Only root nodes are allowed."
msgstr ""
"Questo tipo di nodo non può essere utilizzato. Sono permessi solo i nodi "
@@ -3627,6 +5587,9 @@ msgstr ""
msgid "Enable snap and show grid."
msgstr "Abilita lo scatto e mostra la griglia."
+msgid "Sync:"
+msgstr "Sincronizza:"
+
msgid "Blend:"
msgstr "Blend:"
@@ -3645,6 +5608,9 @@ msgstr "Il triangolo esiste già."
msgid "Add Triangle"
msgstr "Aggiungi Triangolo"
+msgid "Change BlendSpace2D Config"
+msgstr "Cambia la configurazione di un BlendSpace2D"
+
msgid "Change BlendSpace2D Labels"
msgstr "Cambia Etichette BlendSpace2D"
@@ -3675,6 +5641,9 @@ msgstr "Genera i triangoli di fusione automaticamente (anziché manualmente)"
msgid "Parameter Changed:"
msgstr "Parametro modificato:"
+msgid "Inspect Filters"
+msgstr "Ispeziona i filtri"
+
msgid "Output node can't be added to the blend tree."
msgstr "Il nodo in output non può essere aggiunto al BlendTree."
@@ -3736,6 +5705,9 @@ msgstr "Segmenti audio"
msgid "Functions"
msgstr "Funzioni"
+msgid "Inspect Filtered Tracks:"
+msgstr "Ispeziona le tracce filtrate:"
+
msgid "Edit Filtered Tracks:"
msgstr "Modifica Tracce Filtrate:"
@@ -3748,18 +5720,179 @@ msgstr "Aggiungi Nodo..."
msgid "Enable Filtering"
msgstr "Abilita filtraggio"
+msgid "Library Name:"
+msgstr "Nome della libreria:"
+
+msgid "Animation name can't be empty."
+msgstr "Il nome di un'animazione non può essere vuoto."
+
+msgid "Animation name contains invalid characters: '/', ':', ',' or '['."
+msgstr ""
+"Il nome dell'animazione contiene caratteri non validi: \"/\", \":\", '\"\" "
+"or \"[\"."
+
+msgid "Animation with the same name already exists."
+msgstr "Un'animazione con lo stesso nome esiste già."
+
+msgid "Enter a library name."
+msgstr "Inserire il nome di una libreria."
+
+msgid "Library name contains invalid characters: '/', ':', ',' or '['."
+msgstr ""
+"Il nome della libreria contiene caratteri non validi: \"/\", \":\", '\"\" or "
+"\"[\"."
+
+msgid "Library with the same name already exists."
+msgstr "Esiste già una libreria con lo stesso nome."
+
+msgid "Animation name is valid."
+msgstr "Il nome dell'animazione è valido."
+
+msgid "Global library will be created."
+msgstr "Verrà creata una libreria globale."
+
+msgid "Library name is valid."
+msgstr "Il nome della libreria è valido."
+
+msgid "Add Animation to Library: %s"
+msgstr "Aggiungi un'animazione alla libreria: %s"
+
+msgid "Add Animation Library: %s"
+msgstr "Aggiungi una libreria di animazioni: %s"
+
msgid "Load Animation"
msgstr "Carica Animazione"
+msgid ""
+"This animation library can't be saved because it does not belong to the "
+"edited scene. Make it unique first."
+msgstr ""
+"Questa libreria di animazioni non può essere salvata perché non appartiene "
+"alla scena modificata. Renderla prima unica."
+
+msgid ""
+"This animation library can't be saved because it was imported from another "
+"file. Make it unique first."
+msgstr ""
+"Questa libreria di animazioni non può essere salvata perché è stata "
+"importata da un altro file. Renderla prima unica."
+
+msgid "Save Library"
+msgstr "Salva la libreria"
+
+msgid "Make Animation Library Unique: %s"
+msgstr "Rendi unica una libreria di animazioni: %s"
+
+msgid ""
+"This animation can't be saved because it does not belong to the edited "
+"scene. Make it unique first."
+msgstr ""
+"Quest'animazione non può essere salvata perché non appartiene alla scena "
+"modificata. Renderla prima unica."
+
+msgid ""
+"This animation can't be saved because it was imported from another file. "
+"Make it unique first."
+msgstr ""
+"Quest'animazione non può essere salvata perché è stata importata da un altro "
+"file. Renderla prima unica."
+
+msgid "Save Animation"
+msgstr "Salva l'animazione"
+
+msgid "Make Animation Unique: %s"
+msgstr "Rendi unica un'animazione: %s"
+
+msgid "Invalid AnimationLibrary file."
+msgstr "File AnimationLibrary non valido."
+
+msgid "This library is already added to the player."
+msgstr "Questa libreria è stata già aggiunta al riproduttore."
+
+msgid "Invalid Animation file."
+msgstr "File Animation non valido."
+
+msgid "This animation is already added to the library."
+msgstr "Quest'animazione è stata già aggiunta alla libreria."
+
+msgid "Load Animation into Library: %s"
+msgstr "Importa un'animazione nella libreria: %s"
+
+msgid "Save Animation library to File: %s"
+msgstr "Salva una libreria di animazioni in un file: %s"
+
+msgid "Save Animation to File: %s"
+msgstr "Salva un animazione in un archivio: %s"
+
+msgid "Rename Animation Library: %s"
+msgstr "Rinomina una libreria di animazioni: %s"
+
+msgid "[Global]"
+msgstr "[Globale]"
+
+msgid "Rename Animation: %s"
+msgstr "Rinomina un'animazione: %s"
+
msgid "Animation Name:"
msgstr "Nome Animazione:"
+msgid "No animation resource in clipboard!"
+msgstr "Nessuna risorsa di animazione negli appunti!"
+
msgid "Pasted Animation"
msgstr "Animazione Incollata"
msgid "Open in Inspector"
msgstr "Apri nell'Inspector"
+msgid "Remove Animation Library: %s"
+msgstr "Rimuovi una libreria di animazioni: %s"
+
+msgid "Remove Animation from Library: %s"
+msgstr "Rimuovi un'animazione dalla libreria: %s"
+
+msgid "[built-in]"
+msgstr "[integrato]"
+
+msgid "[foreign]"
+msgstr "[esterno]"
+
+msgid "[imported]"
+msgstr "[importata]"
+
+msgid "Add Animation to Library"
+msgstr "Aggiungi un'animazione alla libreria"
+
+msgid "Load animation from file and add to library"
+msgstr "Carica l'animazione da un file e aggiungilo alla libreria"
+
+msgid "Paste Animation to Library from clipboard"
+msgstr "Incolla un'animazione nella libreria dagli appunti"
+
+msgid "Save animation library to resource on disk"
+msgstr "Salva la libreria di animazioni in una risorsa sul disco"
+
+msgid "Remove animation library"
+msgstr "Rimuovi la libreria di animazioni"
+
+msgid "Copy animation to clipboard"
+msgstr "Copia l'animazione negli appunti"
+
+msgid "Save animation to resource on disk"
+msgstr "Salva l'animazione in una risorsa sul disco"
+
+msgid "Remove animation from Library"
+msgstr "Rimuovi l'animazione dalla libreria"
+
+msgid "Edit Animation Libraries"
+msgstr "Modifica le librerie di animazioni"
+
+msgid "Add Library"
+msgstr "Aggiungi una libreria"
+
+msgid "Load Library"
+msgstr "Carica una libreria"
+
msgid "Storage"
msgstr "Memorizzazione"
@@ -3778,12 +5911,18 @@ msgstr "Rinomina Animazione"
msgid "Change Animation Name:"
msgstr "Cambia Nome Animazione:"
+msgid "Delete Animation '%s'?"
+msgstr "Cancellare l'animazione \"%s\"?"
+
msgid "Remove Animation"
msgstr "Rimuovi Animazione"
msgid "Invalid animation name!"
msgstr "Nome animazione non valido!"
+msgid "Animation '%s' already exists!"
+msgstr "L'animazione \"%s\" esiste già!"
+
msgid "Duplicate Animation"
msgstr "Duplica Animazione"
@@ -3793,6 +5932,12 @@ msgstr "Fondi il Successivo Cambiato"
msgid "Change Blend Time"
msgstr "Cambia tempo di Blend"
+msgid "[Global] (create)"
+msgstr "[Globale] (crea)"
+
+msgid "Duplicated Animation Name:"
+msgstr "Nome dell'animazione duplicata:"
+
msgid "Play selected animation backwards from current pos. (A)"
msgstr ""
"Esegui la seguente animazione al contrario dalla posizione corrente. (A)"
@@ -3800,6 +5945,9 @@ msgstr ""
msgid "Play selected animation backwards from end. (Shift+A)"
msgstr "Esegui la seguente animazione al contrario dalla fine. (Shift+A)"
+msgid "Pause/stop animation playback. (S)"
+msgstr "Pausa/ferma la riproduzione dell'animazione. (S)"
+
msgid "Play selected animation from start. (Shift+D)"
msgstr "Esegui la seguente l'animazione dall'inizio. (Shift+D)"
@@ -3818,6 +5966,9 @@ msgstr "Strumenti di Animazione"
msgid "Animation"
msgstr "Animazione"
+msgid "Manage Animations..."
+msgstr "Gestisci le animazioni..."
+
msgid "Edit Transitions..."
msgstr "Modifica Transizioni..."
@@ -3863,6 +6014,11 @@ msgstr "Forza Modulazione Bianca"
msgid "Include Gizmos (3D)"
msgstr "Includi Gizmo (3D)"
+msgid "Onion Skinning temporarily disabled due to rendering bug."
+msgstr ""
+"Buccia di cipolla temporaneamente disabilitata a causa di un bug di "
+"rendering."
+
msgid "Pin AnimationPlayer"
msgstr "Fissa AnimationPlayer"
@@ -3884,6 +6040,9 @@ msgstr "Sposta Nodo"
msgid "Transition exists!"
msgstr "La transizione esiste!"
+msgid "Add Node and Transition"
+msgstr "Aggiungi un nodo e una transizione"
+
msgid "Add Transition"
msgstr "Aggiungi Transizione"
@@ -3911,6 +6070,17 @@ msgstr "Nodo Rimosso"
msgid "Transition Removed"
msgstr "Transizione Rimossa"
+msgid ""
+"Select and move nodes.\n"
+"RMB: Add node at position clicked.\n"
+"Shift+LMB+Drag: Connects the selected node with another node or creates a "
+"new node if you select an area without nodes."
+msgstr ""
+"Seleziona e muove i nodi.\n"
+"RMB: Aggiungi un nodo alla posizione clicata.\n"
+"Maiusc+LMB+Trascina: Connette il nodo selezionato con un altro nodo o crea "
+"un nuovo nodo se viene selezionata un'area senza nodi."
+
msgid "Create new nodes."
msgstr "Crea nuovi nodi."
@@ -3920,18 +6090,30 @@ msgstr "Connetti nodi."
msgid "Group Selected Node(s)"
msgstr "Raggruppa Nodo/i Selezionato(/i"
+msgid "Ungroup Selected Node"
+msgstr "Separa il nodo selezionato"
+
msgid "Remove selected node or transition."
msgstr "Rimuovi il nodo o la transizione selezionati."
msgid "Transition:"
msgstr "Transizione:"
+msgid "New Transitions Should Auto Advance"
+msgstr "Le nuove transizioni auto-proseguiranno"
+
msgid "Play Mode:"
msgstr "Modalità Riproduzione:"
msgid "Delete Selected"
msgstr "Elimina selezionati"
+msgid "Delete All"
+msgstr "Cancella tutto"
+
+msgid "Root"
+msgstr "Radice"
+
msgid "AnimationTree"
msgstr "AnimationTree"
@@ -4004,6 +6186,9 @@ msgstr "Controllo hash SHA-256 fallito"
msgid "Asset Download Error:"
msgstr "Errore di download del contenuto:"
+msgid "Ready to install!"
+msgstr "Pronto a installare!"
+
msgid "Downloading (%s / %s)..."
msgstr "Download in corso (%s / %s)..."
@@ -4074,6 +6259,24 @@ msgstr "Ultimo"
msgid "All"
msgstr "Tutto"
+msgid "No results for \"%s\" for support level(s): %s."
+msgstr "Nessun risultato per \"%s\" per i livelli di support: %s."
+
+msgid ""
+"No results compatible with %s %s for support level(s): %s.\n"
+"Check the enabled support levels using the 'Support' button in the top-right "
+"corner."
+msgstr ""
+"Nessun risultato compatibile con %s %s per i livelli di supporto: %s.\n"
+"Controllare i livelli di supporto abilitati utilizzando il pulsante "
+"\"Supporto\" in alto a destra."
+
+msgid "Search Templates, Projects, and Demos"
+msgstr "Cerca tra modelli, progetti e demo"
+
+msgid "Search Assets (Excluding Templates, Projects, and Demos)"
+msgstr "Cerca tra i contenuti (escludendo modelli, progetti e demo)"
+
msgid "Import..."
msgstr "Importa…"
@@ -4128,6 +6331,9 @@ msgstr "Passo di rotazione:"
msgid "Scale Step:"
msgstr "Passo della scala:"
+msgid "Move Node(s) to Position"
+msgstr "Muovi dei nodi in una posizione"
+
msgid "Move Vertical Guide"
msgstr "Muovi Guida Verticale"
@@ -4188,6 +6394,27 @@ msgstr "Raggruppato"
msgid "Add Node Here"
msgstr "Aggiungi Nodo Qui"
+msgid "Instantiate Scene Here"
+msgstr "Istanzia la scena qui"
+
+msgid "Paste Node(s) Here"
+msgstr "Incolla i nodi qui"
+
+msgid "Move Node(s) Here"
+msgstr "Muovi i nodi qui"
+
+msgid "px"
+msgstr "px"
+
+msgid "units"
+msgstr "unità"
+
+msgid "Moving:"
+msgstr "Muovendo:"
+
+msgid "Rotating:"
+msgstr "Ruotando:"
+
msgid "Scaling:"
msgstr "Scala:"
@@ -4226,6 +6453,9 @@ msgstr "Incolla Posa"
msgid "Clear Guides"
msgstr "Rimuovi Guide"
+msgid "Create Custom Bone2D(s) from Node(s)"
+msgstr "Crea dei Bone2D personalizzati a partire da dei Node"
+
msgid "Zoom to 3.125%"
msgstr "Zoom a 3.125%"
@@ -4291,6 +6521,9 @@ msgstr "Modalità scala"
msgid "Shift: Scale proportionally."
msgstr "Maiusc: Ridimensiona proporzionalmente."
+msgid "Show list of selectable nodes at position clicked."
+msgstr "Mostra una lista di nodi selezionabili nella posizione cliccata."
+
msgid "Click to change object's rotation pivot."
msgstr "Clicca per cambiare il perno di rotazione dell'oggetto."
@@ -4331,7 +6564,7 @@ msgid "Smart Snapping"
msgstr "Scatto intelligente"
msgid "Configure Snap..."
-msgstr "Configura Agganciamenti..."
+msgstr "Configura l'agganciamento..."
msgid "Snap to Parent"
msgstr "Aggancia sul Genitore"
@@ -4351,12 +6584,24 @@ msgstr "Aggancia agli Altri Nodi"
msgid "Snap to Guides"
msgstr "Aggancia alle Guide"
+msgid "Lock selected node, preventing selection and movement."
+msgstr "Blocca il nodo selezionato, impedendo la selezione e il movimento."
+
msgid "Lock Selected Node(s)"
msgstr "Blocca Nodo/i selezionato/i"
+msgid "Unlock selected node, allowing selection and movement."
+msgstr "Sblocca il nodo selezionato, permettendo la selezione e il movimento."
+
msgid "Unlock Selected Node(s)"
msgstr "Sblocca Nodo/i Selezionato/i"
+msgid "Make selected node's children not selectable."
+msgstr "Rendi non selezionabili i figli del nodo selezionato."
+
+msgid "Make selected node's children selectable."
+msgstr "Rendi selezionabili i figli del nodo selezionato."
+
msgid "Ungroup Selected Node(s)"
msgstr "Separa Nodo/i Selezionato/i"
@@ -4366,6 +6611,9 @@ msgstr "Opzioni Scheletro"
msgid "Show Bones"
msgstr "Mostra Ossa"
+msgid "Make Bone2D Node(s) from Node(s)"
+msgstr "Crea dei nodi Bone2D da dei nodi"
+
msgid "View"
msgstr "Vista"
@@ -4384,9 +6632,6 @@ msgstr "Commuta Griglia"
msgid "Grid"
msgstr "Griglia"
-msgid "Show Helpers"
-msgstr "Mostra guide"
-
msgid "Show Rulers"
msgstr "Mostra Righelli"
@@ -4402,6 +6647,9 @@ msgstr "Mostra Viewport"
msgid "Show Group And Lock Icons"
msgstr "Mostra Gruppo e Blocca Icone"
+msgid "Show Transformation Gizmos"
+msgstr "Mostra i gizmo di trasformazione"
+
msgid "Center Selection"
msgstr "Centra Selezione"
@@ -4459,18 +6707,56 @@ msgstr "Divide per 2 il passo della griglia"
msgid "Adding %s..."
msgstr "Aggiungendo %s..."
+msgid "Drag and drop to add as child of current scene's root node."
+msgstr ""
+"Trascinare e rilasciare per aggiungere come figlio del nodo radice delal "
+"scena corrente."
+
+msgid "Hold Ctrl when dropping to add as child of selected node."
+msgstr ""
+"Tenere premuto Ctrk durante il rilascio per aggiungere come figlio del nodo "
+"selezionato."
+
+msgid "Hold Shift when dropping to add as sibling of selected node."
+msgstr ""
+"Tenere premuto Shift durante il rilascio per aggiungere come figlio del nodo "
+"selezionato."
+
+msgid "Hold Alt when dropping to add as a different node type."
+msgstr ""
+"Tenere premuto Alt durante il rilascio per aggiungere come tipo di nodo "
+"diverso."
+
msgid "Cannot instantiate multiple nodes without root."
-msgstr "Impossibile istanziare nodi multipli in mancanza di root."
+msgstr "Impossibile istanziare nodi multipli senza una radice."
msgid "Create Node"
msgstr "Crea Nodo"
+msgid "Error instantiating scene from %s"
+msgstr "Errore durante l'istanziazione della scena da %s"
+
msgid "Change Default Type"
msgstr "Cambia Tipo Predefinito"
msgid "Set Handle"
msgstr "Imposta Maniglia"
+msgid "This node doesn't have a control parent."
+msgstr "Questo nodo non ha un genitore Control."
+
+msgid "This node is a child of a container."
+msgstr "Questo nodo è figlio di un contenitore."
+
+msgid "Use container properties for positioning."
+msgstr "Utilizza le proprietà del contenitore per il posizionamento."
+
+msgid "This node is a child of a regular control."
+msgstr "Questo nodo è il figlio di un Control normale."
+
+msgid "Use anchors and the rectangle for positioning."
+msgstr "Utilizza le ancore e il rettangolo per il posizionamento."
+
msgid "Expand"
msgstr "Espandi"
@@ -4522,9 +6808,18 @@ msgstr "Lato Destro"
msgid "Full Rect"
msgstr "Rettangolo Completo"
+msgid "Horizontal alignment"
+msgstr "Allineamento orizzontale"
+
+msgid "Vertical alignment"
+msgstr "Allineamento verticale"
+
msgid "Load Emission Mask"
msgstr "Carica Maschera Emissione"
+msgid "CPUParticles2D"
+msgstr "CPUParticles2D"
+
msgid "Generated Point Count:"
msgstr "Conteggio Punti Generati:"
@@ -4546,6 +6841,9 @@ msgstr "Cattura da Pixel"
msgid "Emission Colors"
msgstr "Colori Emissione"
+msgid "CPUParticles3D"
+msgstr "CPUParticles3D"
+
msgid "Create Emission Points From Node"
msgstr "Crea Punti Emissione Da Nodo"
@@ -4648,6 +6946,16 @@ msgstr ""
"Quando questa opzione è abilitata, le forme di collisione e i nodi RayCast "
"(sia 2D che 3D) sarrano visibili nel progetto in esecuzione."
+msgid "Visible Paths"
+msgstr "Percorsi visibili"
+
+msgid ""
+"When this option is enabled, curve resources used by path nodes will be "
+"visible in the running project."
+msgstr ""
+"Quando questa opzione è abilitata, le risorse delle curve utilizzate dai "
+"nodi Path saranno visibili nel progetto in esecuzione."
+
msgid "Visible Navigation"
msgstr "Navigazione visibile"
@@ -4686,15 +6994,74 @@ msgstr ""
"Quando usato in remoto su un dispositivo, essa risulta più efficace "
"abilitando l'opzione \"network filesystem\"."
+msgid "Keep Debug Server Open"
+msgstr "Mantieni il server di debug aperto"
+
+msgid ""
+"When this option is enabled, the editor debug server will stay open and "
+"listen for new sessions started outside of the editor itself."
+msgstr ""
+"Quando questa opzione è attiva, il server di debug dell'editor rimarrà "
+"aperto e ascolterà nuove sessioni iniziate fuori dall'editor stesso."
+
+msgid "Run Multiple Instances"
+msgstr "Esegui istanze multiple"
+
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Esegui %d istanza"
+msgstr[1] "Esegui %d istanze"
+
+msgid "Overrides (%d)"
+msgstr "Sovrascrive (%d)"
+
+msgctxt "Locale"
+msgid "Add Script"
+msgstr "Aggiungi un alfabeto"
+
+msgid "Add Locale"
+msgstr "Aggiungi un locale"
+
+msgid "Variation Coordinates (%d)"
+msgstr "Coordinate di variazione (%d)"
+
+msgid "No supported features"
+msgstr "Nessuna funzionalità supportata"
+
+msgid "Features (%d of %d set)"
+msgstr "Funzionalità (%d su %d impostate)"
+
+msgid "Add Feature"
+msgstr "Aggiungi una funzionalità"
+
+msgid " - Variation"
+msgstr " - Variazione"
+
+msgid "Unable to preview font"
+msgstr "Impossibile visualizzare l'anteprima del font"
+
msgid "Convert to CPUParticles2D"
msgstr "Converti in CPUParticles2D"
+msgid "Generating Visibility Rect (Waiting for Particle Simulation)"
+msgstr ""
+"Generazione del rettangolo di visibilità (aspettando la simulazione delle "
+"particelle)"
+
msgid "Generate Visibility Rect"
msgstr "Genera Rect Visibilità"
+msgid "Can only set point into a ParticleProcessMaterial process material"
+msgstr ""
+"È solamente possibile impostare il punto in un materiale di processo "
+"ParticlesProcessMaterial"
+
msgid "Clear Emission Mask"
msgstr "Cancella Maschera Emissione"
+msgid "GPUParticles2D"
+msgstr "GPUParticles2D"
+
msgid "Generation Time (sec):"
msgstr "Tempo di Generazione (sec):"
@@ -4704,6 +7071,9 @@ msgstr "Le facce della geometria non contengono nessuna area."
msgid "The geometry doesn't contain any faces."
msgstr "La geometria non contiene facce."
+msgid "\"%s\" doesn't inherit from Node3D."
+msgstr "\"%s\" non eredita da Node3D."
+
msgid "\"%s\" doesn't contain geometry."
msgstr "\"%s\" non contiene geometria."
@@ -4728,12 +7098,66 @@ msgstr "Volume"
msgid "Emission Source:"
msgstr "Sorgente dell' Emissione:"
+msgid "A processor material of type 'ParticleProcessMaterial' is required."
+msgstr ""
+"È richiesto un materiale di processo di tipo 'ParticleProcessMaterial'."
+
+msgid "Convert to CPUParticles3D"
+msgstr "Converti in CPUParticles3D"
+
+msgid "Generating Visibility AABB (Waiting for Particle Simulation)"
+msgstr ""
+"Generazione dell'AABB di visibilità (aspettando la simulazione delle "
+"particelle)"
+
msgid "Generate Visibility AABB"
msgstr "Genera Visibilità AABB"
+msgid "GPUParticles3D"
+msgstr "GPUParticles3D"
+
+msgid "Generate AABB"
+msgstr "Genera l'AABB"
+
+msgid "Low"
+msgstr "Bassa"
+
+msgid "Moderate"
+msgstr "Moderata"
+
+msgid "High"
+msgstr "Alta"
+
+msgid "Subdivisions: %s"
+msgstr "Suddivisioni: %s"
+
+msgid "Cell size: %s"
+msgstr "Dimensione delle celle: %s"
+
+msgid "Video RAM size: %s MB (%s)"
+msgstr "Dimensione della RAM video: %s MB (%s)"
+
+msgid "Bake SDF"
+msgstr "Cuoci l'SDF"
+
+msgid ""
+"No faces detected during GPUParticlesCollisionSDF3D bake.\n"
+"Check whether there are visible meshes matching the bake mask within its "
+"extents."
+msgstr ""
+"Nessuna faccia rilevata durante la cottura del GPUParticlesCollisionSDF3D.\n"
+"Controllare la presenza di mesh visibili che corrispondono alla maschera di "
+"cottura nei suoi confini."
+
+msgid "Select path for SDF Texture"
+msgstr "Selezionare il percorso per la texture SDF"
+
msgid "Gradient Edited"
msgstr "Gradiente Modificato"
+msgid "Reverse/mirror gradient."
+msgstr "Inverti/specchia il gradiente."
+
msgid "Swap GradientTexture2D Fill Points"
msgstr "Scambia Punti di Riempimento del GradientTexture2D"
@@ -4743,6 +7167,9 @@ msgstr "Scambia Punti di Riempimento del Gradiente"
msgid "Toggle Grid Snap"
msgstr "Commuta scatto sulla griglia"
+msgid "Configure"
+msgstr "Configura"
+
msgid "Create Occluder Polygon"
msgstr "Crea Poligono di Occlusione"
@@ -4754,11 +7181,21 @@ msgstr ""
"lightmap.\n"
"Salva la scena e riprova."
+msgid ""
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
+"Light' flag is on."
+msgstr ""
+"Nessuna mesh da cuocere. Assicurarsi che contengano un canale UV2 e che la "
+"spunta \"Bake Light\" sia abilitata."
+
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
"Tentativo di creazione delle immagini di lightmap fallito, assicurarsi che "
"il percorso dei file sia scrivibile."
+msgid "No editor scene root found."
+msgstr "Nessuna radice della scena dell'editor trovata."
+
msgid "Bake Lightmaps"
msgstr "Preprocessa Lightmaps"
@@ -4778,7 +7215,7 @@ msgid "Create Static Trimesh Body"
msgstr "Crea Corpo Trimesh Statico"
msgid "This doesn't work on scene root!"
-msgstr "Questo non funziona sulla root della scena!"
+msgstr "Questo non funziona sulla radice della scena!"
msgid "Create Trimesh Static Shape"
msgstr "Crea Forma Statica Trimesh"
@@ -4811,6 +7248,9 @@ msgstr "Crea Multiple Forme Covesse"
msgid "Create Navigation Mesh"
msgstr "Crea Mesh di Navigazione"
+msgid "Create Debug Tangents"
+msgstr "Genera tangenti di debug"
+
msgid "Contained Mesh is not of type ArrayMesh."
msgstr "La Mesh contenuta non è del tipo ArrayMesh."
@@ -4824,6 +7264,18 @@ msgstr "Nessuna mesh da debuggare."
msgid "Mesh has no UV in layer %d."
msgstr "Il modello non ha UV sul layer %d."
+msgid "MeshInstance3D lacks a Mesh."
+msgstr "MeshInstance3D non ha un Mesh."
+
+msgid "Mesh has no surface to create outlines from."
+msgstr "La mesh non ha una superficie da cui creare un contorno."
+
+msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES."
+msgstr "Il tipo di primitivo del mesh non è PRIMITIVE_TRIANGLES."
+
+msgid "Could not create outline."
+msgstr "Impossiblile creare un contorno."
+
msgid "Create Outline"
msgstr "Crea Outline"
@@ -4833,6 +7285,16 @@ msgstr "Mesh"
msgid "Create Trimesh Static Body"
msgstr "Crea Corpo Statico Trimesh"
+msgid ""
+"Creates a StaticBody3D and assigns a polygon-based collision shape to it "
+"automatically.\n"
+"This is the most accurate (but slowest) option for collision detection."
+msgstr ""
+"Crea uno StaticBody3D e gli assegna automaticamente una forma di collisione "
+"a poligoni.\n"
+"Questa è l'opzione più accurata (ma anche più lenta) per rilevare le "
+"collisioni."
+
msgid "Create Trimesh Collision Sibling"
msgstr "Crea Fratello di Collisione Trimesh"
@@ -4882,6 +7344,17 @@ msgstr ""
msgid "Create Outline Mesh..."
msgstr "Crea Mesh di Outline..."
+msgid ""
+"Creates a static outline mesh. The outline mesh will have its normals "
+"flipped automatically.\n"
+"This can be used instead of the StandardMaterial Grow property when using "
+"that property isn't possible."
+msgstr ""
+"Crea una mesh di contorno statica. Questa mesh avrà le sue normali invertite "
+"automaticamente.\n"
+"Può essere utilizzata al posto della proprietà Grow di StandardMaterial "
+"quando questa non è disponibile."
+
msgid "View UV1"
msgstr "Vista UV1"
@@ -4945,6 +7418,9 @@ msgstr ""
msgid "Mesh source is invalid (invalid path)."
msgstr "Sorgente Mesh invalida (percorso invalido)."
+msgid "Mesh source is invalid (not a MeshInstance3D)."
+msgstr "Mesh sorgente non valida (non è un MeshInstance3D)."
+
msgid "Mesh source is invalid (contains no Mesh resource)."
msgstr "Sorgente Mesh invalida (non contiene alcuna risorsa Mesh)."
@@ -5005,6 +7481,12 @@ msgstr "Quantità:"
msgid "Populate"
msgstr "Popola"
+msgid "Set start_position"
+msgstr "Imposta start_position"
+
+msgid "Set end_position"
+msgstr "Imposta end_position"
+
msgid "Create Navigation Polygon"
msgstr "Crea Poligono di Navigazione"
@@ -5026,12 +7508,21 @@ msgstr "Cambia dimensione Telecamera"
msgid "Change Sphere Shape Radius"
msgstr "Cambia Raggio di Sphere Shape"
+msgid "Change Box Shape Size"
+msgstr "Cambia la dimensione della forma a scatola"
+
msgid "Change Notifier AABB"
msgstr "Cambia notificatore AABB"
msgid "Change Particles AABB"
msgstr "Cambia AABB Particelle"
+msgid "Change Radius"
+msgstr "Cambia il raggio"
+
+msgid "Change Decal Size"
+msgstr "Cambia dimensione decalcomania"
+
msgid "Change Capsule Shape Radius"
msgstr "Cambia Raggio Capsule Shape"
@@ -5044,6 +7535,21 @@ msgstr "Modifica Raggio di Forma del Cilindro"
msgid "Change Cylinder Shape Height"
msgstr "Modifica Altezza di Forma del Cilindro"
+msgid "Start Location"
+msgstr "Posizione iniziale"
+
+msgid "End Location"
+msgstr "Posizione finale"
+
+msgid "Change Start Position"
+msgstr "Cambia posizione iniziale"
+
+msgid "Change End Position"
+msgstr "Cambia posizione finale"
+
+msgid "Change Fog Volume Size"
+msgstr "Cambia la dimensione del volume della nebbia"
+
msgid "Transform Aborted."
msgstr "Transform Abortito."
@@ -5104,12 +7610,51 @@ msgstr "Trasformazione asse Z."
msgid "View Plane Transform."
msgstr "Visualizza la trasformazione del piano."
+msgid "YZ-Plane Transform."
+msgstr "Trasformazione sul piano YZ."
+
+msgid "XZ-Plane Transform."
+msgstr "Trasformazione sul piano XZ."
+
+msgid "XY-Plane Transform."
+msgstr "Trasformazione sul piano XY."
+
msgid "Keying is disabled (no key inserted)."
msgstr "Inserimento di chiavi disabilitato (nessuna chiave inserita)."
msgid "Animation Key Inserted."
msgstr "Chiave d'animazione inserita."
+msgid "X: %s\n"
+msgstr "X: %s\n"
+
+msgid "Y: %s\n"
+msgstr "Y: %s\n"
+
+msgid "Z: %s\n"
+msgstr "Z: %s\n"
+
+msgid "Size: %s (%.1fMP)\n"
+msgstr "Dimensioni: %s (%.1fMP)\n"
+
+msgid "Objects: %d\n"
+msgstr "Oggetti: %d\n"
+
+msgid "Primitive Indices: %d\n"
+msgstr "Indici primitivi: %d\n"
+
+msgid "Draw Calls: %d"
+msgstr "Chiamate di disegno: %d"
+
+msgid "CPU Time: %s ms"
+msgstr "Tempo della CPU: %s ms"
+
+msgid "GPU Time: %s ms"
+msgstr "Tempo della GPU: %s ms"
+
+msgid "FPS: %d"
+msgstr "FPS: %d"
+
msgid "Top View."
msgstr "Vista dall'alto."
@@ -5134,6 +7679,15 @@ msgstr "Allinea la trasformazione con la vista"
msgid "Align Rotation with View"
msgstr "Allinea la rotazione con la vista"
+msgid "Set Surface %d Override Material"
+msgstr "Imposta il materiale di sovrascrittura della superfice %d"
+
+msgid "Set Material Override"
+msgstr "Imposta il materiale di sovrascrittura"
+
+msgid "Cannot drag and drop into multiple selected nodes."
+msgstr "Impossibile trascinare e rilasciare in più nodi selezionati."
+
msgid "None"
msgstr "Nessuno"
@@ -5164,9 +7718,51 @@ msgstr "Visualizzazione fildiferro"
msgid "Display Overdraw"
msgstr "Visualizza Overdraw"
+msgid "Display Lighting"
+msgstr "Visualizza l'illuminazione"
+
msgid "Display Unshaded"
msgstr "Visualizzazione senza ombre"
+msgid "Normal Buffer"
+msgstr "Buffer dei normali"
+
+msgid "Shadow Atlas"
+msgstr "Atlas delle ombre"
+
+msgid "Directional Shadow Map"
+msgstr "Mappa delle ombre direzionale"
+
+msgid "Decal Atlas"
+msgstr "Atlas delle decalcomanie"
+
+msgid "VoxelGI Lighting"
+msgstr "Illuminazione VoxelGI"
+
+msgid "VoxelGI Albedo"
+msgstr "Albedo VoxelGI"
+
+msgid "VoxelGI Emission"
+msgstr "Emissione VoxelGI"
+
+msgid "Scene Luminance"
+msgstr "Brillanza della scena"
+
+msgid "SSAO"
+msgstr "SSAO"
+
+msgid "SSIL"
+msgstr "SSIL"
+
+msgid "VoxelGI/SDFGI Buffer"
+msgstr "Buffer VoxelGI/SDFGI"
+
+msgid "Disable Mesh LOD"
+msgstr "Disabilita il LOD delle mesh"
+
+msgid "Display Advanced..."
+msgstr "Mostra avanzata..."
+
msgid "View Environment"
msgstr "Visualizza ambiente"
@@ -5176,6 +7772,9 @@ msgstr "Visualizza Gizmos"
msgid "View Information"
msgstr "Visualizza Informazioni"
+msgid "View Frame Time"
+msgstr "Visualizza il tempo dei fotogrammi"
+
msgid "Half Resolution"
msgstr "Risoluzione Dimezzata"
@@ -5188,6 +7787,9 @@ msgstr "Abilita Doppler"
msgid "Cinematic Preview"
msgstr "Anteprima Cinematografica"
+msgid "Not available when using the OpenGL renderer."
+msgstr "Non disponibile quando il renderer OpenGL è in uso."
+
msgid "Freelook Left"
msgstr "Vista Libera Sinistra"
@@ -5212,6 +7814,36 @@ msgstr "Modificatore Velocità Vista Libera"
msgid "Freelook Slow Modifier"
msgstr "Modificatore Velocità Lenta Vista Libera"
+msgid "Lock Transformation to X axis"
+msgstr "Blocca la trasformazione sull'asse X"
+
+msgid "Lock Transformation to Y axis"
+msgstr "Blocca la trasformazione sull'asse Y"
+
+msgid "Lock Transformation to Z axis"
+msgstr "Blocca la trasformazione sull'asse Z"
+
+msgid "Lock Transformation to YZ plane"
+msgstr "Blocca la trasformazione sul piano YZ"
+
+msgid "Lock Transformation to XZ plane"
+msgstr "Blocca la trasformazione sul piano XZ"
+
+msgid "Lock Transformation to XY plane"
+msgstr "Blocca la trasformazione sul piano XY"
+
+msgid "Cancel Transformation"
+msgstr "Annulla la trasformazione"
+
+msgid "Begin Translate Transformation"
+msgstr "Inizia una trasformazione di traslazione"
+
+msgid "Begin Rotate Transformation"
+msgstr "Inizia una traslazione di rotazione"
+
+msgid "Begin Scale Transformation"
+msgstr "Inizia una trasformazione di scala"
+
msgid "Toggle Camera Preview"
msgstr "Cambia Anteprima Telecamera"
@@ -5224,6 +7856,18 @@ msgstr ""
"Per un maggiore ingrandimento, cambia i piani del clip della videocamera "
"(Vista -> Impostazioni...)"
+msgid "Overriding material..."
+msgstr "Sovrascrivendo il materiale..."
+
+msgid ""
+"Drag and drop to override the material of any geometry node.\n"
+"Hold Ctrl when dropping to override a specific surface."
+msgstr ""
+"Trascinare e rilasciare per sovrascrivere il materiale di qualsiasi nodo "
+"geometrico.\n"
+"Tenere premuto Ctrl durante il rilascio per sovrascrivere una superficie "
+"specifica."
+
msgid "XForm Dialog"
msgstr "Finestra di XForm"
@@ -5248,12 +7892,60 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
"Impossibile trovare un pavimento solido sul quale agganciare la selezione."
+msgid "Add Preview Sun to Scene"
+msgstr "Aggiungi un sole di anteprima alla scena"
+
+msgid "Add Preview Environment to Scene"
+msgstr "Aggiungi un ambiente di anteprima alla scena"
+
+msgid ""
+"Scene contains\n"
+"DirectionalLight3D.\n"
+"Preview disabled."
+msgstr ""
+"La scena contiene un\n"
+"DirectionalLight3D.\n"
+"Anteprima disabilitata."
+
+msgid "Preview disabled."
+msgstr "Anteprima disabilitata."
+
+msgid ""
+"Scene contains\n"
+"WorldEnvironment.\n"
+"Preview disabled."
+msgstr ""
+"La scena contiene un\n"
+"WorldEnvironment\n"
+"Anteprima disabilitata."
+
msgid "Use Local Space"
msgstr "Usa Spazio Locale"
msgid "Use Snap"
msgstr "Usa Scatto"
+msgid ""
+"Toggle preview sunlight.\n"
+"If a DirectionalLight3D node is added to the scene, preview sunlight is "
+"disabled."
+msgstr ""
+"Commuta la luce del sole di anteprima.\n"
+"La luce del sole di anteprima è disabilitata se viene aggiunto alla scena un "
+"nodo DirectionalLight3D."
+
+msgid ""
+"Toggle preview environment.\n"
+"If a WorldEnvironment node is added to the scene, preview environment is "
+"disabled."
+msgstr ""
+"Commuta l'ambiente di anteprima.\n"
+"L'ambiente di anteprima viene disabilitato se viene aggiunto alla scena un "
+"nodo DirectionalLight3D."
+
+msgid "Edit Sun and Environment settings."
+msgstr "Modifica le impostazioni del sole e dell'ambiente."
+
msgid "Bottom View"
msgstr "Vista dal basso"
@@ -5395,6 +8087,104 @@ msgstr "Pre"
msgid "Post"
msgstr "Post"
+msgid "Preview Sun"
+msgstr "Sole di anteprima"
+
+msgid "Sun Direction"
+msgstr "Direzione del sole"
+
+msgid "Angular Altitude"
+msgstr "Altezza angolare"
+
+msgid "Azimuth"
+msgstr "Azimut"
+
+msgid "Sun Color"
+msgstr "Colore del sole"
+
+msgid "Sun Energy"
+msgstr "Energia del sole"
+
+msgid "Shadow Max Distance"
+msgstr "Distanza massima delle ombre"
+
+msgid "Add Sun to Scene"
+msgstr "Aggiungi il sole nella scena"
+
+msgid ""
+"Adds a DirectionalLight3D node matching the preview sun settings to the "
+"current scene.\n"
+"Hold Shift while clicking to also add the preview environment to the current "
+"scene."
+msgstr ""
+"Aggiunge un nodo DirectionalLight3D nella scena corrente corrispondente alle "
+"impostazioni del sole di anteprima.\n"
+"Tenere premuto Maiusc mentre si clicca per aggiungere anche l'ambiente di "
+"anteprima alla scena corrente."
+
+msgid "Preview Environment"
+msgstr "Ambiante di anteprima"
+
+msgid "Sky Color"
+msgstr "Colore del cielo"
+
+msgid "Ground Color"
+msgstr "Colore del terreno"
+
+msgid "Sky Energy"
+msgstr "Energia del cielo"
+
+msgid "AO"
+msgstr "AO"
+
+msgid "Glow"
+msgstr "Bagliore"
+
+msgid "GI"
+msgstr "GI"
+
+msgid "Post Process"
+msgstr "Post elaborazione"
+
+msgid "Add Environment to Scene"
+msgstr "Aggiungi l'ambiente nelle scena"
+
+msgid ""
+"Adds a WorldEnvironment node matching the preview environment settings to "
+"the current scene.\n"
+"Hold Shift while clicking to also add the preview sun to the current scene."
+msgstr ""
+"Aggiunge un nodo WorldEnvironment nella scena corrente corrispondente alle "
+"impostazioni dell'ambiente di anteprima.\n"
+"Tenere premuto Maiusc mentre si clicca per aggiungere anche il sole di "
+"anteprima alla scena corrente."
+
+msgid ""
+"Can't determine a save path for the occluder.\n"
+"Save your scene and try again."
+msgstr ""
+"Impossibile determinare un percorso di salvataggio per l'occlusore.\n"
+"Salvare la scena e riprovare."
+
+msgid ""
+"No meshes to bake.\n"
+"Make sure there is at least one MeshInstance3D node in the scene whose "
+"visual layers are part of the OccluderInstance3D's Bake Mask property."
+msgstr ""
+"Nessuna mesh da cuocere.\n"
+"Assicurarsi che nella scena ci sia almeno un nodo MeshInstance3D che "
+"appartiene agli stessi strati visivi della maschera di cottura "
+"dell'OccluderInstance3D."
+
+msgid "Could not save the new occluder at the specified path:"
+msgstr "Impossibile salvare il nuovo occlusore nel percorso specificato:"
+
+msgid "Bake Occluders"
+msgstr "Cuoci gli occlusori"
+
+msgid "Select occluder bake file:"
+msgstr "Selezionare il filei di cottura degli occlusori:"
+
msgid "Remove Point from Curve"
msgstr "Rimuovi Punto dalla Curva"
@@ -5648,16 +8438,16 @@ msgid "Add Resource"
msgstr "Aggiungi risorsa"
msgid "Rename Resource"
-msgstr "Rinomina risorsa"
+msgstr "Rinomina Risorsa"
msgid "Delete Resource"
-msgstr "Elimina risorsa"
+msgstr "Elimina Risorsa"
msgid "Resource clipboard is empty!"
msgstr "Gli appunti delle risorse sono vuoti!"
msgid "Paste Resource"
-msgstr "Incolla risorsa"
+msgstr "Incolla Risorsa"
msgid "Open in Editor"
msgstr "Apri nell'editor"
@@ -5712,6 +8502,12 @@ msgstr "Non è stato possibile caricare il file a:"
msgid "Save File As..."
msgstr "Salva file come..."
+msgid "Can't obtain the script for reloading."
+msgstr "Impossibile ottenere lo script per la ricarica."
+
+msgid "Reload only takes effect on tool scripts."
+msgstr "La ricarica ha effetto solo sugli script strumento."
+
msgid "Can't obtain the script for running."
msgstr "Impossibile ottenere lo script per l'esecuzione."
@@ -5740,6 +8536,9 @@ msgstr "Errore di salvataggio"
msgid "Save Theme As..."
msgstr "Salva tema come..."
+msgid "Unsaved file."
+msgstr "File non salvato."
+
msgid "%s Class Reference"
msgstr "%s Riferimento di classe"
@@ -5749,6 +8548,9 @@ msgstr "Trova successivo"
msgid "Find Previous"
msgstr "Trova precedente"
+msgid "Filter Scripts"
+msgstr "Filtra gli script"
+
msgid "Toggle alphabetical sorting of the method list."
msgstr "Commuta l'ordinamento alfabetico della lista dei metodi."
@@ -5773,6 +8575,9 @@ msgstr "Riapri script chiuso"
msgid "Save All"
msgstr "Salva tutto"
+msgid "Soft Reload Tool Script"
+msgstr "Ricarica leggera dello script strumento"
+
msgid "Copy Script Path"
msgstr "Copia il percorso dello script"
@@ -5840,6 +8645,9 @@ msgstr "Rimuovi Script Recenti"
msgid "Standard"
msgstr "Standard"
+msgid "Plain Text"
+msgstr "Testo semplice"
+
msgid "Connections to method:"
msgstr "Connessioni al metodo:"
@@ -5849,6 +8657,9 @@ msgstr "Sorgente"
msgid "Target"
msgstr "Target"
+msgid "Error at (%d, %d):"
+msgstr "Errore in (%d, %d):"
+
msgid ""
"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
msgstr ""
@@ -5867,6 +8678,9 @@ msgstr "Vai alla funzione"
msgid "Only resources from filesystem can be dropped."
msgstr "Solo le risorse dal filesystem possono essere eliminate."
+msgid "Can't drop nodes without an open scene."
+msgstr "Impossibile trascinare dei nodi senza una scena aperta."
+
msgid "Can't drop nodes because script '%s' is not used in this scene."
msgstr ""
"Impossibile rilasciare i nodi perché lo script \"%s\" non è usato in questa "
@@ -5878,6 +8692,12 @@ msgstr "Ricerca simbolo"
msgid "Pick Color"
msgstr "Scegli un colore"
+msgid "Folding"
+msgstr "Raggruppamento"
+
+msgid "Indentation"
+msgstr "Indentazione"
+
msgid "Uppercase"
msgstr "Maiuscolo"
@@ -5902,6 +8722,9 @@ msgstr "Vai a"
msgid "Delete Line"
msgstr "Elimina linea"
+msgid "Unindent"
+msgstr "De-indenta"
+
msgid "Toggle Comment"
msgstr "Commuta i commenti"
@@ -5968,6 +8791,34 @@ msgstr "Vai al punto di interruzione successivo"
msgid "Go to Previous Breakpoint"
msgstr "Vai al punto di interruzione precedente"
+msgid "Load Shader File"
+msgstr "Carica un file shader"
+
+msgid "Save File"
+msgstr "Salva il file"
+
+msgid "Save File As"
+msgstr "Salva il file come"
+
+msgid "Open File in Inspector"
+msgstr "Apri il file nell'ispettore"
+
+msgid "Close File"
+msgstr "Chiudi il file"
+
+msgid "Shader Editor"
+msgstr "Editor degli shader"
+
+msgid ""
+"File structure for '%s' contains unrecoverable errors:\n"
+"\n"
+msgstr ""
+"La struttura del file di \"%s\" contiene degli errori irrecuperabili:\n"
+"\n"
+
+msgid "ShaderFile"
+msgstr "ShaderFile"
+
msgid "This skeleton has no bones, create some children Bone2D nodes."
msgstr "Questo scheletro non ha ossa, crea dei nodi figlio Bone2D."
@@ -5986,12 +8837,68 @@ msgstr "Ripristina a Posizione di Riposo"
msgid "Overwrite Rest Pose"
msgstr "Sovrascrivi Posa a Riposo"
+msgid "Set Bone Transform"
+msgstr "Imposta la trasformazione di un osso"
+
+msgid "Set Bone Rest"
+msgstr "Imposta il riposo di un osso"
+
+msgid "Cannot create a physical skeleton for a Skeleton3D node with no bones."
+msgstr ""
+"Impossibile creare uno scheletro fisico per un nodo Skeleton3D senza ossa."
+
msgid "Create physical bones"
msgstr "Crea ossa fisiche"
+msgid "Cannot export a SkeletonProfile for a Skeleton3D node with no bones."
+msgstr ""
+"Impossibile esportare uno SkeletonProfile per un nodo Skeleton3D senza ossa."
+
+msgid "Export Skeleton Profile As..."
+msgstr "Esporta il profilo dello scheletro come..."
+
+msgid "Set Bone Parentage"
+msgstr "Imposta la parentela dell'osso"
+
+msgid "Skeleton3D"
+msgstr "Skeleton3D"
+
+msgid "Reset All Bone Poses"
+msgstr "Reimposta le pose di tutti gli ossi"
+
+msgid "Reset Selected Poses"
+msgstr "Reimposta le pose selezionate"
+
+msgid "Apply All Poses to Rests"
+msgstr "Applica tutte le pose come riposi"
+
+msgid "Apply Selected Poses to Rests"
+msgstr "Applica le pose selezionate come riposo"
+
+msgid "Create Physical Skeleton"
+msgstr "Crea uno scheletro fisico"
+
+msgid "Export Skeleton Profile"
+msgstr "Esporta il profilo dello scheletro"
+
+msgid "Insert key of all bone poses."
+msgstr "Inserisci una chiave della posa di tutti gli ossi."
+
+msgid "Insert Key (All Bones)"
+msgstr "Inserisci una chiave (tutte le ossa)"
+
+msgid "Bone Transform"
+msgstr "Trasformazione dell'osso"
+
msgid "Play IK"
msgstr "Riproduci IK"
+msgid "Create MeshInstance2D"
+msgstr "Crea un MeshInstance2D"
+
+msgid "MeshInstance2D Preview"
+msgstr "Anteprima del MeshInstance2D"
+
msgid "Create Polygon2D"
msgstr "Crea Polygon2D"
@@ -6010,6 +8917,12 @@ msgstr "Crea LightOccluder2D"
msgid "LightOccluder2D Preview"
msgstr "Anteprima LightOccluder2D"
+msgid "Can't convert a Sprite2D from a foreign scene."
+msgstr "Impossibile convertire uno Sprite2D da una scena esterna."
+
+msgid "Sprite2D is empty!"
+msgstr "Lo Sprite2D è vuoto!"
+
msgid "Can't convert a sprite using animation frames to mesh."
msgstr ""
"Impossibile convertire in una mesh uno sprite che utilizza frame di "
@@ -6039,6 +8952,9 @@ msgstr "Geometria non valida, impossibile creare un occlusore di luce."
msgid "Create LightOccluder2D Sibling"
msgstr "Crea fratello del LightOccluder2D"
+msgid "Sprite2D"
+msgstr "Sprite2D"
+
msgid "Simplification:"
msgstr "Semplificazione:"
@@ -6087,18 +9003,57 @@ msgstr "Eliminare Animazione?"
msgid "Change Animation FPS"
msgstr "Cambia FPS Animazione"
+msgid "Set Frame Duration"
+msgstr "Imposta la durata del fotogramma"
+
msgid "(empty)"
msgstr "(vuoto)"
msgid "Animations:"
msgstr "Animazioni:"
+msgid "Animation Speed"
+msgstr "Velocità di animazione"
+
+msgid "Filter Animations"
+msgstr "Filtra le animazioni"
+
+msgid "Delete Animation"
+msgstr "Cancella l'animazione"
+
msgid "Animation Frames:"
msgstr "Frame Animazione:"
+msgid "Frame Duration:"
+msgstr "Durata del fotogramma:"
+
msgid "Zoom Reset"
msgstr "Ripristina Zoom"
+msgid "Add frame from file"
+msgstr "Aggiungi un fotogramma da un file"
+
+msgid "Add frames from sprite sheet"
+msgstr "Aggiungi i fotogrammi da una scheda di sprite"
+
+msgid "Delete Frame"
+msgstr "Cancella un fotogramma"
+
+msgid "Copy Frame"
+msgstr "Copia un fotogramma"
+
+msgid "Insert Empty (Before Selected)"
+msgstr "Inserisci un fotogramma vuoto (prima della selezione)"
+
+msgid "Insert Empty (After Selected)"
+msgstr "Inserisci un fotogramma vuoto (dopo la selezione)"
+
+msgid "Move Frame Left"
+msgstr "Muovi un fotogramma a sinistra"
+
+msgid "Move Frame Right"
+msgstr "Muovi un fotogramma a destra"
+
msgid "Select Frames"
msgstr "Seleziona Frames"
@@ -6120,6 +9075,25 @@ msgstr "Crea Frames da uno Spritesheet"
msgid "SpriteFrames"
msgstr "Sprite Frames"
+msgid "Warnings should be fixed to prevent errors."
+msgstr "Gli avvisi andrebbero risolti per evitare errori."
+
+msgid ""
+"This shader has been modified on disk.\n"
+"What action should be taken?"
+msgstr ""
+"Questo shader è stato modificato sul disco.\n"
+"Cosa andrebbe fatto?"
+
+msgid "%s Mipmaps"
+msgstr "%s mipmap"
+
+msgid "Memory: %s"
+msgstr "Memoria: %s"
+
+msgid "No Mipmaps"
+msgstr "Nessun mipmap"
+
msgid "Set Region Rect"
msgstr "Imposta Region Rect"
@@ -6141,24 +9115,68 @@ msgstr "Auto Divisione"
msgid "Step:"
msgstr "Passo:"
+msgid "Region Editor"
+msgstr "Editor delle regioni"
+
+msgid "Edit Region"
+msgstr "Modifica la regione"
+
msgid "Styleboxes"
msgstr "Styleboxes"
+msgid "1 color"
+msgid_plural "{num} colors"
+msgstr[0] "1 colore"
+msgstr[1] "{num} colori"
+
msgid "No colors found."
msgstr "Nessun colore trovato."
+msgid "1 constant"
+msgid_plural "{num} constants"
+msgstr[0] "1 costante"
+msgstr[1] "{num} costanti"
+
msgid "No constants found."
msgstr "Nessuna costante trovata."
+msgid "1 font"
+msgid_plural "{num} fonts"
+msgstr[0] "1 font"
+msgstr[1] "{num} font"
+
msgid "No fonts found."
msgstr "Nessun font trovato."
+msgid "1 font size"
+msgid_plural "{num} font sizes"
+msgstr[0] "1 dimensione del font"
+msgstr[1] "{num} dimensioni del font"
+
+msgid "No font sizes found."
+msgstr "Nessuna dimensione del font trovata."
+
+msgid "1 icon"
+msgid_plural "{num} icons"
+msgstr[0] "1 icona"
+msgstr[1] "{num} icone"
+
msgid "No icons found."
msgstr "Nessuna icona trovata."
+msgid "1 stylebox"
+msgid_plural "{num} styleboxes"
+msgstr[0] "1 stylebox"
+msgstr[1] "{num} styleboxes"
+
msgid "No styleboxes found."
msgstr "Nessun stylebox trovato."
+msgid "{num} currently selected"
+msgid_plural "{num} currently selected"
+msgstr[0] "{num} selezionato"
+msgstr[1] "{num} selezionati"
+
msgid "Nothing was selected for the import."
msgstr "Non è stato selezionato nulla da importare."
@@ -6174,6 +9192,9 @@ msgstr "Aggiornamento dell'editor"
msgid "Finalizing"
msgstr "Completando"
+msgid "Filter Items"
+msgstr "Filtra gli elementi"
+
msgid "With Data"
msgstr "Con i Dati"
@@ -6207,6 +9228,19 @@ msgstr "Seleziona tutti gli elementi di carattere visibili e i loro dati."
msgid "Deselect all visible font items."
msgstr "Deseleziona tutti gli elementi di carattere visibili."
+msgid "Font sizes"
+msgstr "Dimensioni del font"
+
+msgid "Select all visible font size items."
+msgstr "Seleziona tutti gli elementi di dimensione del font visibili."
+
+msgid "Select all visible font size items and their data."
+msgstr ""
+"Seleziona tutti gli elementi di dimensione del font visibili e i loro dati."
+
+msgid "Deselect all visible font size items."
+msgstr "Deseleziona tutti gli elementi di dimensione del font visibili."
+
msgid "Select all visible icon items."
msgstr "Seleziona tutte le icone visibili."
@@ -6288,6 +9322,9 @@ msgstr "Rimuovi Tutti gli Elementi Costanti"
msgid "Remove All Font Items"
msgstr "Rimuovi Tutti gli Elementi Caratteri"
+msgid "Remove All Font Size Items"
+msgstr "Rimuovi tutti gli elementi di dimensione del font"
+
msgid "Remove All Icon Items"
msgstr "Rimuovi Tutti gli Elementi Icone"
@@ -6301,12 +9338,30 @@ msgstr ""
"Questo tipo di tema è vuoto.\n"
"Aggiungici più elementi manualmente o importando da un altro tema."
+msgid "Remove Theme Item"
+msgstr "Rimuovi un elemento del tema"
+
msgid "Add Theme Type"
msgstr "Aggiungi Tipo Di Tema"
+msgid "Create Theme Item"
+msgstr "Crea un elemento del tema"
+
msgid "Remove Theme Type"
msgstr "Rimuovi Tipo Di Tema"
+msgid "Remove Data Type Items From Theme"
+msgstr "Rimuovi degli elementi di un tipo di dati da un tema"
+
+msgid "Remove Class Items From Theme"
+msgstr "Rimuovi degli elementi di una classe da un tema"
+
+msgid "Remove Custom Items From Theme"
+msgstr "Rimuovi degli elementi personalizzati da un tema"
+
+msgid "Remove All Items From Theme"
+msgstr "Rimuovi tutti gli elementi da un tema"
+
msgid "Add Color Item"
msgstr "Aggiungi Elementi Colore"
@@ -6316,6 +9371,9 @@ msgstr "Aggiungi Elemento Costante"
msgid "Add Font Item"
msgstr "Aggiungi Elemento Carattere"
+msgid "Add Font Size Item"
+msgstr "Aggiungi un elemento di dimensione del font"
+
msgid "Add Icon Item"
msgstr "Aggiungi Elemento Icona"
@@ -6331,12 +9389,18 @@ msgstr "Rinomina Elemento Costante"
msgid "Rename Font Item"
msgstr "Rinomina Elemento Carattere"
+msgid "Rename Font Size Item"
+msgstr "Rinomina un elemento di dimensione del font"
+
msgid "Rename Icon Item"
msgstr "Rinomina Elemento Icona"
msgid "Rename Stylebox Item"
msgstr "Rinomina Elemento Stylebox"
+msgid "Rename Theme Item"
+msgstr "Rinomina un elemento del tema"
+
msgid "Invalid file, not a Theme resource."
msgstr "File non valido, non una risorsa Tema."
@@ -6434,6 +9498,27 @@ msgstr "Aggiungi Tipo Elemento"
msgid "Add Type"
msgstr "Aggiungi Tipo"
+msgid "Override All Default Theme Items"
+msgstr "Sovrascrivi tutti gli elementi predefiniti di un tema"
+
+msgid "Override Theme Item"
+msgstr "Sovrascrivi un elemento di un tema"
+
+msgid "Set Color Item in Theme"
+msgstr "Imposta un elemento di colore in un tema"
+
+msgid "Set Constant Item in Theme"
+msgstr "Imposta un elemento costante in un tema"
+
+msgid "Set Font Size Item in Theme"
+msgstr "Imposta un elemento di dimensione del carattere in un tema"
+
+msgid "Set Font Item in Theme"
+msgstr "Imposta un elemento di carattere in un tema"
+
+msgid "Set Icon Item in Theme"
+msgstr "Imposta un elemento icona in un tema"
+
msgid "Set Variation Base Type"
msgstr "Imposta Tipo di Variazione Base"
@@ -6504,12 +9589,6 @@ msgstr "Elemento"
msgid "Disabled Item"
msgstr "Oggetto disabilitato"
-msgid "Check Item"
-msgstr "Check Item"
-
-msgid "Checked Item"
-msgstr "Checked Item"
-
msgid "Radio Item"
msgstr "Radio Elemento"
@@ -6570,6 +9649,30 @@ msgstr "File non valido, non è una risorsa PackedScene."
msgid "Reload the scene to reflect its most actual state."
msgstr "Ricarica la scena per riflettere i suo stato più reale."
+msgid "%s (ID: %d)"
+msgstr "%s (ID: %d)"
+
+msgid "Reset Polygons"
+msgstr "Reimposta dei poligoni"
+
+msgid "Clear Polygons"
+msgstr "Pulisci dei poligoni"
+
+msgid "Rotate Polygons Right"
+msgstr "Ruota dei poligoni a destra"
+
+msgid "Rotate Polygons Left"
+msgstr "Ruota dei poligoni a sinistra"
+
+msgid "Flip Polygons Horizontally"
+msgstr "Ribalta dei poligoni orizzontalmente"
+
+msgid "Flip Polygons Vertically"
+msgstr "Ribalta dei poligoni verticalmente"
+
+msgid "Edit Polygons"
+msgstr "Modifica dei poligoni"
+
msgid "Rotate Right"
msgstr "Ruota a destra"
@@ -6582,15 +9685,244 @@ msgstr "Ribalta orizzontalmente"
msgid "Flip Vertically"
msgstr "Ribalta verticalmente"
+msgid "No terrains"
+msgstr "Nessun terreno"
+
+msgid "No terrain"
+msgstr "Nessun terreno"
+
+msgid "Move tiles"
+msgstr "Muovi i tasselli"
+
+msgid "Paint tiles"
+msgstr "Disegna i tasselli"
+
+msgid "Paste tiles"
+msgstr "Incolla i tasselli"
+
+msgid "Paint"
+msgstr "Disegna"
+
+msgid "Shift: Draw line."
+msgstr "Maiusc: Disegna una linea."
+
+msgid "Shift+Ctrl: Draw rectangle."
+msgstr "Shift+Ctrl: Disegna un rettangolo."
+
+msgid "Alternatively hold Ctrl with other tools to pick tile."
+msgstr ""
+"In alternativa, tenere premuto Ctrl con altri strumenti per prelevare un "
+"tassello."
+
+msgid "Alternatively use RMB to erase tiles."
+msgstr "In alternativa, utilizzare RMB per cancellare dei tasselli."
+
+msgid "Place Random Tile"
+msgstr "Piazza un tassello casuale"
+
+msgid "Scattering:"
+msgstr "Dispersione:"
+
+msgid "Tiles"
+msgstr "Tasselli"
+
+msgid "Sort sources"
+msgstr "Ordina le sorgenti"
+
+msgid "Sort by ID (Ascending)"
+msgstr "Ordina per ID (crescente)"
+
+msgid "Sort by ID (Descending)"
+msgstr "Ordina per ID (decrescente)"
+
+msgid "Invalid source selected."
+msgstr "Sorgente non valida selezionata."
+
+msgid "Paint terrain"
+msgstr "Disegna il terreno"
+
+msgid "Matches Corners Only"
+msgstr "Abbina solo agli angoli"
+
+msgid "Matches Sides Only"
+msgstr "Abbina solo ai lati"
+
+msgid ""
+"Connect mode: paints a terrain, then connects it with the surrounding tiles "
+"with the same terrain."
+msgstr ""
+"Modalità di connessione: disegna un terreno, poi lo connette coi tasselli "
+"circostanti con lo stesso terreno."
+
+msgid ""
+"Path mode: paints a terrain, thens connects it to the previous tile painted "
+"within the same stroke."
+msgstr ""
+"Modalità percorso: disegna un terreno, poi lo connette al tassello "
+"precedente disegnato con lo stesso tratto."
+
+msgid "No Layers"
+msgstr "Nessun livello"
+
+msgid "Select Next Tile Map Layer"
+msgstr "Seleziona il prossimo livello della mappa dei tasselli"
+
+msgid "Select Previous Tile Map Layer"
+msgstr "Seleziona il livello precedente della mappa dei tasselli"
+
+msgid "TileMap Layers"
+msgstr "Livelli della mappa dei tasselli"
+
+msgid "Highlight Selected TileMap Layer"
+msgstr "Seleziona il livello della mappa dei tasselli selezionata"
+
+msgid "Toggle grid visibility."
+msgstr "Commuta la visibilità della griglia."
+
+msgid "The edited TileMap node has no TileSet resource."
+msgstr "Il nodo TileMap modificato non ha alcuna risorsa TileSet."
+
msgid "Atlas"
msgstr "Atlas"
+msgid ""
+"Selected tile:\n"
+"Source: %d\n"
+"Atlas coordinates: %s\n"
+"Alternative: %d"
+msgstr ""
+"Tassello selezionato:\n"
+"Sorgente: %d\n"
+"Coordinate dell'atlas: %s\n"
+"Alternativa: %d"
+
+msgid "Select a property editor"
+msgstr "Seleziona un editor delle proprietà"
+
+msgid "Create tiles"
+msgstr "Crea dei tasselli"
+
+msgid "Create a tile"
+msgstr "Crea un tassello"
+
+msgid "Remove tiles"
+msgstr "Rimuovi dei tasselli"
+
+msgid "Move a tile"
+msgstr "Muovi un tassello"
+
+msgid "Select tiles"
+msgstr "Seleziona dei tasselli"
+
+msgid "Resize a tile"
+msgstr "Ridimensiona un tassello"
+
+msgid "Remove tile"
+msgstr "Rimuovi un tassello"
+
+msgid "Create tile alternatives"
+msgstr "Crea delle alternative a un tassello"
+
+msgid "Create tiles in non-transparent texture regions"
+msgstr "Crea dei tasselli nelle regioni opache della texture"
+
+msgid "Remove tiles in fully transparent texture regions"
+msgstr ""
+"Rimuovi i tasselli nelle regioni completemante trasparenti della texture"
+
+msgid "Setup"
+msgstr "Configura"
+
+msgid ""
+"Atlas setup. Add/Remove tiles tool (use the shift key to create big tiles, "
+"control for rectangle editing)."
+msgstr ""
+"Configurazione dell'atlas. Strumento aggiungi/rimuovi tasselli (utilizzare "
+"il tasto Maiusc per creare dei tasselli grandi, Ctrl per la modifica dei "
+"rettangoli)."
+
+msgid "Select tiles."
+msgstr "Seleziona dei tasselli."
+
+msgid "Paint properties."
+msgstr "Proprietà di disegno."
+
+msgid "No tiles selected."
+msgstr "Nessun tassello selezionato."
+
+msgid "Paint Properties:"
+msgstr "Proprietà di disegno:"
+
+msgid "Create Tiles in Non-Transparent Texture Regions"
+msgstr "Crea dei tasselli nelle regioni opache della texture"
+
+msgid "Remove Tiles in Fully Transparent Texture Regions"
+msgstr ""
+"Rimuovi i tasselli nelle regioni completamente trasparenti della texture"
+
+msgid "Create an Alternative Tile"
+msgstr "Crea un tassello alternativo"
+
+msgid "Create a Tile"
+msgstr "Crea un tassello"
+
+msgid "Auto Create Tiles in Non-Transparent Texture Regions?"
+msgstr "Auto creare dei tasselli nelle regioni opache nella texture?"
+
+msgid ""
+"The atlas's texture was modified.\n"
+"Would you like to automatically create tiles in the atlas?"
+msgstr ""
+"La texture dell'atlas è stata modificata.\n"
+"Creare automaticamente i tasselli nell'atlas?"
+
msgid "Yes"
msgstr "Sì"
+msgid "No"
+msgstr "No"
+
+msgid "Add a new atlas source"
+msgstr "Aggiungi una nuova sorgente dell'atlas"
+
+msgid "Remove source"
+msgstr "Rimuovi una sorgente"
+
+msgid "Add atlas source"
+msgstr "Aggiungi una sorgente dell'atlas"
+
+msgid "Sort Sources"
+msgstr "Ordina i sorgenti"
+
+msgid "Open Atlas Merging Tool"
+msgstr "Apri lo strumento di fusione degli atlas"
+
+msgid "No TileSet source selected. Select or create a TileSet source."
+msgstr ""
+"Nessuna sorgente TileSet selezionata. Selezionare o creare una fonte TileSet."
+
+msgid "Add a Scene Tile"
+msgstr "Aggiungi un tassello scena"
+
+msgid "Remove a Scene Tile"
+msgstr "Rimuovi un tassello scena"
+
+msgid "Tile properties:"
+msgstr "Proprietà del tassello:"
+
msgid "TileSet"
msgstr "TileSet"
+msgid "TileMap"
+msgstr "TileMap"
+
+msgid ""
+"No VCS plugins are available in the project. Install a VCS plugin to use VCS "
+"integration features."
+msgstr ""
+"Non è disponibile alcuna estensione VCS nel progetto. Installare "
+"un'estensione VCS o utilizzare le funzionalità di integrazione coi VCS."
+
msgid "Error"
msgstr "Errore"
@@ -6603,6 +9935,12 @@ msgstr ""
msgid "Commit"
msgstr "Commit"
+msgid "Open in editor"
+msgstr "Apri nell'editor"
+
+msgid "Discard changes"
+msgstr "Annulla tutte le modifiche"
+
msgid "Staged Changes"
msgstr "Cambiamenti Graduali"
@@ -6624,9 +9962,24 @@ msgstr "Vuo rimuovere il ramo %s?"
msgid "Do you want to remove the %s remote?"
msgstr "Vuoi rimuovere il %s remoto?"
+msgid "Create VCS metadata files for:"
+msgstr "Crea dei file di metadati VCS per:"
+
+msgid "Existing VCS metadata files will be overwritten."
+msgstr "I file di metadati VCS esistenti verranno sovrascritti."
+
+msgid "Local Settings"
+msgstr "Impostazioni del locale"
+
msgid "Apply"
msgstr "Applica"
+msgid "VCS Provider"
+msgstr "Fornitore VCS"
+
+msgid "Connect to VCS"
+msgstr "Connetti al VCS"
+
msgid "Remote Login"
msgstr "Login da Remoto"
@@ -6657,6 +10010,14 @@ msgstr "Rileva nuove modifiche"
msgid "Discard all changes"
msgstr "Annulla tutte le modifiche"
+msgid "This operation is IRREVERSIBLE. Your changes will be deleted FOREVER."
+msgstr ""
+"Questa operazione è IRREVERSIBILE. Qualsiasi cambiamento verrà eliminato PER "
+"SEMPRE."
+
+msgid "Permanentally delete my changes"
+msgstr "Cancella permanentemente le modifiche"
+
msgid "Stage all changes"
msgstr "Applica tutte le modifiche"
@@ -6708,6 +10069,9 @@ msgstr "Fetch"
msgid "Pull"
msgstr "Pull"
+msgid "Push"
+msgstr "Carica"
+
msgid "Force Push"
msgstr "Forza Push"
@@ -6726,6 +10090,10 @@ msgstr "Cambio di tipo"
msgid "Unmerged"
msgstr "Non combinato"
+msgid "View file diffs before committing them to the latest version"
+msgstr ""
+"Visualizza le differenze dei file prima di commissionarle all'ultima versione"
+
msgid "View:"
msgstr "Vista:"
@@ -6765,36 +10133,160 @@ msgstr "Aggiungi Input"
msgid "Add Output"
msgstr "Aggiungi Ouput"
+msgid "Float"
+msgstr "Float"
+
+msgid "Int"
+msgstr "Int"
+
+msgid "UInt"
+msgstr "UInt"
+
+msgid "Vector2"
+msgstr "Vector2"
+
+msgid "Vector3"
+msgstr "Vector3"
+
+msgid "Vector4"
+msgstr "Vector4"
+
msgid "Boolean"
msgstr "Booleano"
msgid "Sampler"
msgstr "Sampler"
+msgid "[default]"
+msgstr "[predefinito]"
+
+msgid ""
+"The 2D preview cannot correctly show the result retrieved from instance "
+"parameter."
+msgstr ""
+"L'anteprima 2D non può mostrare correttamente il risultato prelevato dal "
+"parametro dell'istanza."
+
msgid "Add Input Port"
msgstr "Aggiungi Porta Input"
msgid "Add Output Port"
msgstr "Aggiungi Porta Output"
+msgid "Change Input Port Type"
+msgstr "Cambia il tipo di una porta d'ingresso"
+
+msgid "Change Output Port Type"
+msgstr "Cambia il tipo di una porta di uscita"
+
+msgid "Change Input Port Name"
+msgstr "Cambia il nome di una porta d'ingresso"
+
+msgid "Change Output Port Name"
+msgstr "Cambia il nome di una porta di uscita"
+
+msgid "Expand Output Port"
+msgstr "Espandi una porta di uscita"
+
+msgid "Shrink Output Port"
+msgstr "Restringi una porta di uscita"
+
msgid "Remove Input Port"
msgstr "Rimuovi Porta Input"
msgid "Remove Output Port"
msgstr "Rimuovi Porta Output"
+msgid "Set VisualShader Expression"
+msgstr "Imposta un'espressione di un VisualShader"
+
+msgid "Resize VisualShader Node"
+msgstr "Ridimensiona un nodo VisualShader"
+
+msgid "Hide Port Preview"
+msgstr "Nascondi l'anteprima della porta"
+
+msgid "Show Port Preview"
+msgstr "Mostra l'anteprima della porta"
+
+msgid "Set Comment Node Title"
+msgstr "Imposta il titolo di un nodo commento"
+
+msgid "Set Comment Node Description"
+msgstr "Imposta la descrizione di un nodo commento"
+
+msgid "Set Parameter Name"
+msgstr "Imposta il nome di un parametro"
+
msgid "Set Input Default Port"
msgstr "Imposta Porta Input Predefinita"
msgid "Add Node to Visual Shader"
msgstr "Aggiungi Nodo a Visual Shader"
+msgid "Add Varying to Visual Shader: %s"
+msgstr "Aggiungi un variante allo shader visuale: %s"
+
+msgid "Remove Varying from Visual Shader: %s"
+msgstr "Rimouvi un variante dallo shader visuale: %s"
+
msgid "Node(s) Moved"
msgstr "Nodo(i) Spostato(i)"
+msgid "Convert Constant Node(s) To Parameter(s)"
+msgstr "Converti dei nodi costanti a dei parametri"
+
+msgid "Convert Parameter Node(s) To Constant(s)"
+msgstr "Converti nei nodi parametri a delle costanti"
+
+msgid "Delete VisualShader Node"
+msgstr "Cancella un nodo VisualShader"
+
+msgid "Delete VisualShader Node(s)"
+msgstr "Cancella dei nodi VisualShader"
+
+msgid "Float Constants"
+msgstr "Costanti float"
+
+msgid "Convert Constant(s) to Parameter(s)"
+msgstr "Converti delle costanti in parametri"
+
+msgid "Convert Parameter(s) to Constant(s)"
+msgstr "Converti dei parametri in costanti"
+
+msgid "Set Comment Title"
+msgstr "Imposta il titolo di un commento"
+
+msgid "Set Comment Description"
+msgstr "Imposta la descrizione di un commento"
+
+msgid "Duplicate VisualShader Node(s)"
+msgstr "Duplica dei nodi VisualShader"
+
+msgid "Paste VisualShader Node(s)"
+msgstr "Incolla dei nodi VisualShader"
+
+msgid "Cut VisualShader Node(s)"
+msgstr "Taglia dei nodi VisualShader"
+
msgid "Visual Shader Input Type Changed"
msgstr "Tipo di Input Visual Shader Cambiato"
+msgid "Varying Name Changed"
+msgstr "Nome di una variante modificato"
+
+msgid "Set Constant: %s"
+msgstr "Imposta una costante: %s"
+
+msgid "Invalid name for varying."
+msgstr "Nome non valido per una variante."
+
+msgid "Varying with that name is already exist."
+msgstr "Una variante con quel nome esiste già."
+
+msgid "Add Node(s) to Visual Shader"
+msgstr "Aggiungi dei nodi a uno shader visivo"
+
msgid "Vertex"
msgstr "Vertice"
@@ -6813,6 +10305,12 @@ msgstr "Cielo"
msgid "Fog"
msgstr "Nebbia"
+msgid "Manage Varyings"
+msgstr "Gestisci i varianti"
+
+msgid "Add Varying"
+msgstr "Aggiungi un variante"
+
msgid "Add Node"
msgstr "Aggiungi Nodo"
@@ -6938,12 +10436,53 @@ msgstr "Parametro di input \"%s\" per le modalità shader frammento e luce."
msgid "'%s' input parameter for fragment shader mode."
msgstr "Parametro di input \"%s\" per la modalità shader frammento."
+msgid "'%s' input parameter for sky shader mode."
+msgstr "Parametro d'ingresso \"%s\" per la modalità cielo dello shader."
+
+msgid "'%s' input parameter for fog shader mode."
+msgstr "Parametro d'ingresso \"%s\" per la modalità nebbia dello shader."
+
msgid "'%s' input parameter for light shader mode."
msgstr "Parametro di input \"%s\" per la modalità shader luce."
msgid "'%s' input parameter for vertex shader mode."
msgstr "Parametro di input \"%s\" per la modalità shader vertice."
+msgid "'%s' input parameter for start shader mode."
+msgstr "Parametro d'ingresso \"%s\" per la modalità inizio dello shader."
+
+msgid "'%s' input parameter for process shader mode."
+msgstr ""
+"Parametro d'ingresso \"%s\" per la modalità di elaborazione dello shader."
+
+msgid "'%s' input parameter for start and process shader modes."
+msgstr ""
+"Parametro d'ingresso \"%s\" per la modalità inizio e di elaborazione dello "
+"shader."
+
+msgid "'%s' input parameter for process and collide shader modes."
+msgstr ""
+"Parametro d'ingresso \"%s\" per la modalità di elaborazione e collisione "
+"dello shader."
+
+msgid "Float function."
+msgstr "Funzione float."
+
+msgid "Float operator."
+msgstr "Operatore float."
+
+msgid "Integer function."
+msgstr "Funzione intera."
+
+msgid "Integer operator."
+msgstr "Operatore intero."
+
+msgid "Unsigned integer function."
+msgstr "Funzione intera senza segno."
+
+msgid "Unsigned integer operator."
+msgstr "Operatore intero senza segno."
+
msgid "Returns the absolute value of the parameter."
msgstr "Restituisce il valore assoluto del parametro."
@@ -6968,6 +10507,15 @@ msgstr "Restituisce l'arco-tangente dei parametri."
msgid "Returns the inverse hyperbolic tangent of the parameter."
msgstr "Restituisce l'inversa della tangente iperbolica del parametro."
+msgid "Returns the result of bitwise NOT (~a) operation on the integer."
+msgstr "Restituisce il risultato dell'operazione bit NOT (~a) sull'intero."
+
+msgid ""
+"Returns the result of bitwise NOT (~a) operation on the unsigned integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit NOT (~a) sull'intero senza "
+"segno."
+
msgid ""
"Finds the nearest integer that is greater than or equal to the parameter."
msgstr ""
@@ -7106,12 +10654,139 @@ msgstr "Restituisce la tangente iperbolica del parametro."
msgid "Finds the truncated value of the parameter."
msgstr "Trova il valore troncato del parametro."
+msgid "Sums two floating-point scalars."
+msgstr "Somma due scalari a virgola mobile."
+
+msgid "Sums two integer scalars."
+msgstr "Somma due scalari interi."
+
+msgid "Sums two unsigned integer scalars."
+msgstr "Somma due scalari interi senza segno."
+
+msgid "Returns the result of bitwise AND (a & b) operation for two integers."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit AND (a & b) tra due "
+"interi."
+
+msgid ""
+"Returns the result of bitwise AND (a & b) operation for two unsigned "
+"integers."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit AND (a & b) tra due "
+"interi senza segno."
+
+msgid ""
+"Returns the result of bitwise left shift (a << b) operation on the integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit di scostamento a sinistra "
+"(a << b) sull'intero."
+
+msgid ""
+"Returns the result of bitwise left shift (a << b) operation on the unsigned "
+"integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit di scostamento a sinistra "
+"(a << b) sull'intero senza segno."
+
+msgid "Returns the result of bitwise OR (a | b) operation for two integers."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit OR (a | b) tra due interi."
+
+msgid ""
+"Returns the result of bitwise OR (a | b) operation for two unsigned integers."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit OR (a | b) tra due interi "
+"senza segno."
+
+msgid ""
+"Returns the result of bitwise right shift (a >> b) operation on the integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit di scostamento a destra "
+"(a >> b) sull'intero."
+
+msgid ""
+"Returns the result of bitwise right shift (a >> b) operation on the unsigned "
+"integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit di scostamento a destra "
+"(a >> b) sull'intero senza segno."
+
+msgid "Returns the result of bitwise XOR (a ^ b) operation on the integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit XOR (a ^ b) sull'intero."
+
+msgid ""
+"Returns the result of bitwise XOR (a ^ b) operation on the unsigned integer."
+msgstr ""
+"Restituisce il risultato dell'operazione bit a bit XOR (a ^ b) sull'intero "
+"senza segno."
+
+msgid "Divides two floating-point scalars."
+msgstr "Divide due scalari a virgola mobile."
+
+msgid "Divides two integer scalars."
+msgstr "Divide due scalari interi."
+
+msgid "Divides two unsigned integer scalars."
+msgstr "Divide due scalari interi senza segno."
+
+msgid "Multiplies two floating-point scalars."
+msgstr "Moltiplica due scalari a virgola mobile."
+
+msgid "Multiplies two integer scalars."
+msgstr "Moltiplica due scalari interi."
+
+msgid "Multiplies two unsigned integer scalars."
+msgstr "Moltiplica due scalari interi senza segno."
+
+msgid "Returns the remainder of the two floating-point scalars."
+msgstr "Restituisce il resto dei due scalari a virgola mobile."
+
+msgid "Returns the remainder of the two integer scalars."
+msgstr "Restituisce il resto dei due scalari interi."
+
+msgid "Returns the remainder of the two unsigned integer scalars."
+msgstr "Restituisce il resto dei due scalari interi senza segno."
+
+msgid "Subtracts two floating-point scalars."
+msgstr "Sottrae due scalari a virgola mobile."
+
+msgid "Subtracts two integer scalars."
+msgstr "Sottrae due scalari interi."
+
+msgid "Subtracts two unsigned integer scalars."
+msgstr "Sottrae due scalari interi senza segno."
+
+msgid "Scalar floating-point constant."
+msgstr "Costante scalare a virgola mobile."
+
+msgid "Scalar integer constant."
+msgstr "Costante scalare intera."
+
+msgid "Scalar unsigned integer constant."
+msgstr "Costante scalare intera senza segno."
+
+msgid "Scalar floating-point parameter."
+msgstr "Parametro scalare a virgola mobile."
+
+msgid "Scalar integer parameter."
+msgstr "Parametro scalare intero."
+
+msgid "Scalar unsigned integer parameter."
+msgstr "Parametro scalare intero senza segno."
+
msgid "Perform the cubic texture lookup."
msgstr "Esegue la ricerca di texture cubiche."
+msgid "Perform the 3D texture lookup."
+msgstr "Esegue la ricerca di texture 3D."
+
msgid "Transform function."
msgstr "Funzione di trasformazione."
+msgid "Transform operator."
+msgstr "Operatore di trasformazione."
+
msgid ""
"Calculate the outer product of a pair of vectors.\n"
"\n"
@@ -7145,18 +10820,68 @@ msgstr "Calcola l'inverso di una trasformazione."
msgid "Calculates the transpose of a transform."
msgstr "Calcola la trasposizione di una trasformazione."
+msgid "Sums two transforms."
+msgstr "Somma due trasformazioni."
+
+msgid "Divides two transforms."
+msgstr "Divide due trasformazioni."
+
+msgid "Multiplies two transforms."
+msgstr "Moltiplica due trasformazioni."
+
+msgid "Performs per-component multiplication of two transforms."
+msgstr "Esegue la moltiplicazione per componente di due trasformazioni."
+
+msgid "Subtracts two transforms."
+msgstr "Sottrae due trasformazioni."
+
msgid "Multiplies vector by transform."
msgstr "Moltiplica il vettore per la trasformazione."
msgid "Transform constant."
msgstr "Costante transform."
+msgid "Transform parameter."
+msgstr "Parametro di trasformazione."
+
+msgid "Returns a random value between the minimum and maximum input values."
+msgstr ""
+"Restituisce un valore casuale incluso tra i valori minimi e massimi "
+"d'ingresso."
+
+msgid "Remaps a given input from the input range to the output range."
+msgstr "Rimappa un valore dato dall'intervallo d'ingresso a quello di uscita."
+
msgid "Vector function."
msgstr "Funzione vettore."
msgid "Vector operator."
msgstr "Operatore vettore."
+msgid "Composes vector from scalars."
+msgstr "Compone un valore da degli scalari."
+
+msgid "Decomposes vector to scalars."
+msgstr "Decompone un vettore in degli scalari."
+
+msgid "Composes 2D vector from two scalars."
+msgstr "Compone un vettore 2D da due scalari."
+
+msgid "Decomposes 2D vector to two scalars."
+msgstr "Scompone un vettore 2D in due scalari."
+
+msgid "Composes 3D vector from three scalars."
+msgstr "Compone un vettore 3D da tre scalari."
+
+msgid "Decomposes 3D vector to three scalars."
+msgstr "Scompone un vettore 3D in tre scalari."
+
+msgid "Composes 4D vector from four scalars."
+msgstr "Compone un vettore 4D da quattro scalari."
+
+msgid "Decomposes 4D vector to four scalars."
+msgstr "Scompone un vettore 4D in quattro scalari."
+
msgid "Calculates the cross product of two vectors."
msgstr "Calcola il prodotto vettoriale di due vettori."
@@ -7278,6 +11003,75 @@ msgstr ""
"(Solo in modalità Fragment/Light) (Vettore) Somma delle derivate assolute in "
"\"x\" e \"y\"."
+msgid "Adds 2D vector to 2D vector."
+msgstr "Aggiunge un vettore 2D a un vettore 2D."
+
+msgid "Adds 3D vector to 3D vector."
+msgstr "Aggiunge un vettore 3D a un vettore 3D."
+
+msgid "Adds 4D vector to 4D vector."
+msgstr "Aggiunge un vettore 4D a un vettore 4D."
+
+msgid "Divides 2D vector by 2D vector."
+msgstr "Divide un vettore 2D per un vettore 2D."
+
+msgid "Divides 3D vector by 3D vector."
+msgstr "Divide un vettore 3D per un vettore 3D."
+
+msgid "Divides 4D vector by 4D vector."
+msgstr "Divide un vettore 4D per un vettore 4D."
+
+msgid "Multiplies 2D vector by 2D vector."
+msgstr "Moltiplica un vettore 2D per un vettore 2D."
+
+msgid "Multiplies 3D vector by 3D vector."
+msgstr "Moltiplica un vettore 3D per un vettore 3D."
+
+msgid "Multiplies 4D vector by 4D vector."
+msgstr "Moltiplica un vettore 4D per un vettore 4D."
+
+msgid "Returns the remainder of the two 2D vectors."
+msgstr "Restituisce il resto di due vettori 2D."
+
+msgid "Returns the remainder of the two 3D vectors."
+msgstr "Restituisce il resto di due vettori 3D."
+
+msgid "Returns the remainder of the two 4D vectors."
+msgstr "Restituisce il resto di due vettori 4D."
+
+msgid "Subtracts 2D vector from 2D vector."
+msgstr "Sottrae un vettore 2D da un vettore 2D."
+
+msgid "Subtracts 3D vector from 3D vector."
+msgstr "Sottrae un vettore 3D da un vettore 3D."
+
+msgid "Subtracts 4D vector from 4D vector."
+msgstr "Sottrae un vettore 4D da un vettore 4D."
+
+msgid "2D vector constant."
+msgstr "Costante vettore 2D."
+
+msgid "2D vector parameter."
+msgstr "Parametro vettore 2D."
+
+msgid "3D vector constant."
+msgstr "Costante vettore 3D."
+
+msgid "3D vector parameter."
+msgstr "Parametro vettore 3D."
+
+msgid "4D vector constant."
+msgstr "Costante vettore 4D."
+
+msgid "4D vector parameter."
+msgstr "Parametro vettore 4D."
+
+msgid ""
+"A rectangular area with a description string for better graph organization."
+msgstr ""
+"Un'area rettangolare con una stringa di descrizione per un'organizzazione "
+"migliore del grafo."
+
msgid ""
"Custom Godot Shader Language expression, with custom amount of input and "
"output ports. This is a direct injection of code into the vertex/fragment/"
@@ -7288,12 +11082,41 @@ msgstr ""
"nella funzione vertex/fragment/light, non usarla per scrivere dichiarazioni "
"di funzioni al suo interno."
+msgid ""
+"Custom Godot Shader Language expression, which is placed on top of the "
+"resulted shader. You can place various function definitions inside and call "
+"it later in the Expressions. You can also declare varyings, parameters and "
+"constants."
+msgstr ""
+"Espressione personalizzata per il Godot Shader Language, la quale sarà posta "
+"in cima allo shader risultante. È possibile piazzare varie definizioni di "
+"funzioni all'interno e chiamarla in seguito nelle espressioni. È possibile "
+"anche dichiarare varianti, uniformi e costanti."
+
+msgid "A reference to an existing parameter."
+msgstr "Un riferimento a parametro esistente."
+
msgid "Edit Visual Property:"
msgstr "Modifica Proprietà Visive:"
msgid "Visual Shader Mode Changed"
msgstr "Modalità Visual Shader Cambiata"
+msgid "Voxel GI data is not local to the scene."
+msgstr "I dati GI Voxel non sono locali alla scena."
+
+msgid "Voxel GI data is part of an imported resource."
+msgstr "I dati GI Voxel fanno parte di una risorsa importata."
+
+msgid "Voxel GI data is an imported resource."
+msgstr "I dati GI Voxel sono una risorsa importata."
+
+msgid "Bake VoxelGI"
+msgstr "Cuoci VoxelGI"
+
+msgid "Select path for VoxelGI Data File"
+msgstr "Selezionare un percorso per il file di dati VoxelGI"
+
msgid "The path specified doesn't exist."
msgstr "Il percorso specificato non esiste."
@@ -7315,8 +11138,15 @@ msgstr "Si prega di scegliere un file \"project.godot\" o \".zip\"."
msgid "This directory already contains a Godot project."
msgstr "Questa cartella contiene già un progetto Godot."
+msgid ""
+"The selected path is not empty. Choosing an empty folder is highly "
+"recommended."
+msgstr ""
+"Il percorso selezionato non è vuoto. Selezionare una cartella vuota è "
+"altamente consigliato."
+
msgid "New Game Project"
-msgstr "Nuovo Progetto di Gioco"
+msgstr "Nuovo progetto di gioco"
msgid "Imported Project"
msgstr "Progetto Importato"
@@ -7333,12 +11163,81 @@ msgstr "Esiste già una cartella in questo percorso con il nome specificato."
msgid "It would be a good idea to name your project."
msgstr "Sarebbe una buona idea dare un nome al tuo progetto."
+msgid "Supports desktop platforms only."
+msgstr "Supporta solo le piattaforme desktop."
+
+msgid "Advanced 3D graphics available."
+msgstr "Grafica 3D avanzata disponibile."
+
+msgid "Can scale to large complex scenes."
+msgstr "Può adattarsi a grandi scene complesse."
+
+msgid "Uses RenderingDevice backend."
+msgstr "Utilizza un backend RenderingDevice."
+
+msgid "Slower rendering of simple scenes."
+msgstr "Elaborazione più lenta di scene semplici."
+
+msgid "Supports desktop + mobile platforms."
+msgstr "Supporta le piattaforme desktop e mobili."
+
+msgid "Less advanced 3D graphics."
+msgstr "Grafica 3D meno avanzata."
+
+msgid "Less scalable for complex scenes."
+msgstr "Meno adattabile per scene complesse."
+
+msgid "Fast rendering of simple scenes."
+msgstr "Elaborazione rapida di scene semplici."
+
+msgid "Supports desktop, mobile + web platforms."
+msgstr "Supporta le piattaforme desktop, mobili e web."
+
+msgid "Least advanced 3D graphics (currently work-in-progress)."
+msgstr "Grafica 3D minimamente avanzata (attualmente in lavorazione)."
+
+msgid "Intended for low-end/older devices."
+msgstr "Progettato per dispositivi di fascia bassa o più vecchi."
+
+msgid "Uses OpenGL 3 backend (OpenGL 3.3/ES 3.0/WebGL2)."
+msgstr "Utilizza un backend OpenGL3 (OpenGL 3.3/ES 3.0/WebGL2)."
+
+msgid "Fastest rendering of simple scenes."
+msgstr "Elaborazione velocissima di scene semplici."
+
msgid "Invalid project path (changed anything?)."
msgstr "Percorso del progetto invalido (cambiato qualcosa?)."
+msgid ""
+"Couldn't load project at '%s' (error %d). It may be missing or corrupted."
+msgstr ""
+"Impossibile caricare il progetto in \"%s\" (errore %d). Potrebbe essere "
+"mancante o corrotto."
+
+msgid "Couldn't save project at '%s' (error %d)."
+msgstr "Impossibile salvare il progetto in \"%s\" (errore %d)."
+
+msgid "Warning: This folder is not empty"
+msgstr "Attenzione: questa cartella non è vuota"
+
+msgid ""
+"You are about to create a Godot project in a non-empty folder.\n"
+"The entire contents of this folder will be imported as project resources!\n"
+"\n"
+"Are you sure you wish to continue?"
+msgstr ""
+"Sta per essere creato un progetto di Godot in una cartella non vuota.\n"
+"Tutto il contenuto di questa cartella verrà importata come una risorsa del "
+"progetto!\n"
+"\n"
+"Sicuri di continuare?"
+
msgid "Couldn't create project.godot in project path."
msgstr "Impossibile creare project.godot nel percorso del progetto."
+msgid "Couldn't create icon.svg in project path."
+msgstr "Impossibile creare icon.svg nel percorso del progetto."
+
msgid "Error opening package file, not in ZIP format."
msgstr "Errore nell'apertura del file del pacchetto, non è in formato ZIP."
@@ -7358,7 +11257,7 @@ msgid "Import & Edit"
msgstr "Importa e Modifica"
msgid "Create New Project"
-msgstr "Crea Nuovo Progetto"
+msgstr "Crea un nuovo progetto"
msgid "Create & Edit"
msgstr "Crea e Modifica"
@@ -7381,6 +11280,17 @@ msgstr "Percorso Installazione del Progetto:"
msgid "Renderer:"
msgstr "Renderer:"
+msgid "The renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+"Il renderer può essere cambiato in seguito, ma potrebbe essere necessario "
+"rivedere le scene."
+
+msgid "Version Control Metadata:"
+msgstr "Metadati di controllo della versione:"
+
+msgid "Git"
+msgstr "Git"
+
msgid "Missing Project"
msgstr "Progetto Mancante"
@@ -7400,6 +11310,159 @@ msgid "Can't open project at '%s'."
msgstr "Impossibile aprire il progetto a \"%s\"."
msgid ""
+"You requested to open %d projects in parallel. Do you confirm?\n"
+"Note that usual checks for engine version compatibility will be bypassed."
+msgstr ""
+"È stato richiesto di aprire %d progetti in parallelo. Confermare?\n"
+"Nota che i soliti controlli per la compatibilità della versione del motore "
+"verranno saltati."
+
+msgid ""
+"The selected project \"%s\" does not specify its supported Godot version in "
+"its configuration file (\"project.godot\").\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"If you proceed with opening it, it will be converted to Godot's current "
+"configuration file format.\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Il progetto \"%s\" selezionato non specifica la sua versione di Godot "
+"compatibile nel suo file di configurazione (\"project.godot\").\n"
+"\n"
+"Percorso del progetto: %s\n"
+"\n"
+"Se si procede con l'apertura, esso verrà convertito al formato attuale di "
+"configurazione di Godot.\n"
+"\n"
+"Attenzione: Non sarà più possibile aprire il progetto con una versione "
+"precedente del motore."
+
+msgid ""
+"The selected project \"%s\" was generated by Godot 3.x, and needs to be "
+"converted for Godot 4.x.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"You have three options:\n"
+"- Convert only the configuration file (\"project.godot\"). Use this to open "
+"the project without attempting to convert its scenes, resources and "
+"scripts.\n"
+"- Convert the entire project including its scenes, resources and scripts "
+"(recommended if you are upgrading).\n"
+"- Do nothing and go back.\n"
+"\n"
+"Warning: If you select a conversion option, you won't be able to open the "
+"project with previous versions of the engine anymore."
+msgstr ""
+"Il progetto \"%s\" selezionato non è stato generato da Godot 4.x e a bisogno "
+"di essere convertito per Godot 4.x.\n"
+"\n"
+"Percorso del progetto: %s\n"
+"\n"
+"Sono disponibili tre opzioni:\n"
+"- Convertire solo il file di confgurazione (\"project.godot\"). Utilizzare "
+"quest'opzione per aprire il progetto senza tentare di convertire le sue "
+"scene, risorse e script.\n"
+"- Convertire l'intero progetto incluse le sue scene, risorse e script "
+"(raccomandato durante un'aggiornamento).\n"
+"- Non fare nulla e tornare indietro.\n"
+"\n"
+"Attenzione: Se viene selezionata un'opzione di conversione, non sarà più "
+"possibile aprire il progetto con una versione precedente del motore."
+
+msgid "Convert project.godot Only"
+msgstr "Convertire solo project.godot"
+
+msgid ""
+"The selected project \"%s\" was generated by an older engine version, and "
+"needs to be converted for this version.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"Do you want to convert it?\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"Il progetto \"%s\" selezionato è stato generato da una versione del motore "
+"più vecchia e ha bisogno di essere convertita a questa versione.\n"
+"\n"
+"Percorso del progetto: %s\n"
+"\n"
+"Convertirlo?\n"
+"\n"
+"Attenzione: Non sarà più possibile aprire il progetto con una versione "
+"precedente del motore."
+
+msgid "Convert project.godot"
+msgstr "Convertire project.godot"
+
+msgid ""
+"Can't open project \"%s\" at the following path:\n"
+"\n"
+"%s\n"
+"\n"
+"The project settings were created by a newer engine version, whose settings "
+"are not compatible with this version."
+msgstr ""
+"Impossibile aprire il progetto \"%s\" nel percorso seguente:\n"
+"\n"
+"%s\n"
+"\n"
+"Le impostazioni del progetto sono state create da una versione del motore "
+"più nuova, le impostazioni della quale non sono più compatibili con questa."
+
+msgid ""
+"Warning: This project uses double precision floats, but this version of\n"
+"Godot uses single precision floats. Opening this project may cause data "
+"loss.\n"
+"\n"
+msgstr ""
+"Attenzione: questo progetto utilizza numeri a virgola mobile a doppia "
+"precisione, ma questa versione di\n"
+"Godot utilizza numeri a virgola mobile a precisione singola. Aprire questo "
+"progetto potrebbe causare una perdita di dati.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses C#, but this build of Godot does not have\n"
+"the Mono module. If you proceed you will not be able to use any C# scripts.\n"
+"\n"
+msgstr ""
+"Attenzione: questo progetto utilizza C#, ma questa versione di godot non ha\n"
+"il modulo Mono. Se si procede, non sarà possibile utilizzare alcun script "
+"C#.\n"
+"\n"
+
+msgid ""
+"Warning: This project was built in Godot %s.\n"
+"Opening will upgrade or downgrade the project to Godot %s.\n"
+"\n"
+msgstr ""
+"Attenzione: Questo progetto è stato costruito con Godot %s.\n"
+"Aprilo l'aggiornerà o porterà indietro a Godot %s.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses the following features not supported by this "
+"build of Godot:\n"
+"\n"
+"%s\n"
+"\n"
+msgstr ""
+"Attenzione: Questo progetto utilizza le seguenti funzionalità non supportate "
+"da questa versione di Godot:\n"
+"\n"
+"%s\n"
+"\n"
+
+msgid "Open anyway? Project will be modified."
+msgstr "Aprire comunque? Il progetto verrà modificato."
+
+msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
@@ -7436,8 +11499,8 @@ msgid ""
"The interface will update after restarting the editor or project manager."
msgstr ""
"Lingua cambiata.\n"
-"L'interfaccia utente sarà aggiornata la prossima volta che l'editor o il "
-"gestore dei progetti sarà avviato."
+"L'interfaccia si aggiornerà dopo un riavvio dell'editor o del gestore dei "
+"progetti."
msgid ""
"Are you sure to scan %s folders for existing Godot projects?\n"
@@ -7451,6 +11514,9 @@ msgctxt "Application"
msgid "Project Manager"
msgstr "Gestore Progetto"
+msgid "Filter Projects"
+msgstr "Filtra i progetti"
+
msgid ""
"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
@@ -7463,8 +11529,11 @@ msgstr ""
msgid "Loading, please wait..."
msgstr "Caricamento, per favore attendere..."
+msgid "Last Edited"
+msgstr "Ultima modifica"
+
msgid "New Project"
-msgstr "Nuovo Progetto"
+msgstr "Nuovo progetto"
msgid "Import Project"
msgstr "Importa Progetto"
@@ -7499,6 +11568,28 @@ msgstr "Rimuovi Tutto"
msgid "Also delete project contents (no undo!)"
msgstr "Elimina anche i contenuti del progetto (non reversibile!)"
+msgid ""
+"This option will perform full project conversion, updating scenes, resources "
+"and scripts from Godot 3.x to work in Godot 4.0.\n"
+"\n"
+"Note that this is a best-effort conversion, i.e. it makes upgrading the "
+"project easier, but it will not open out-of-the-box and will still require "
+"manual adjustments.\n"
+"\n"
+"IMPORTANT: Make sure to backup your project before converting, as this "
+"operation makes it impossible to open it in older versions of Godot."
+msgstr ""
+"Quest'opzione eseguirà una conversione completa del progetto, incluse le "
+"scene, risorse e script da Godot 3.x per farle funzionare con Godot 4.0\n"
+"\n"
+"Nota che questa è una conversione alla meglio, cioè renderà più facile un "
+"aggiornamento del progetto, ma non si aprirà di suo e richiederà delle "
+"correzioni manuali.\n"
+"\n"
+"IMPORTANTE: assicurarsi di eseguire una copia del progetto prima di "
+"convertirlo, visto che quest'operazione renderà impossibile l'apertura in "
+"versioni più vecchie di Godot."
+
msgid "Can't run project"
msgstr "Impossibile eseguire il progetto"
@@ -7509,9 +11600,15 @@ msgstr ""
"Al momento non esiste alcun progetto.\n"
"Esplorare i progetti di esempio ufficiali nella libreria dei contenuti?"
+msgid "Add Project Setting"
+msgstr "Aggiungi un'impostazione del progetto"
+
msgid "Delete Item"
msgstr "Elimina Elemento"
+msgid "(All)"
+msgstr "(Tutto)"
+
msgid "Add Input Action"
msgstr "Aggiungi Azione di Input"
@@ -7521,18 +11618,21 @@ msgstr "Cambia la zona morta d'azione"
msgid "Erase Input Action"
msgstr "Cancella Azione di Input"
-msgid "Rename Input Action Event"
-msgstr "Rinomina Evento di Azione Input"
-
msgid "Project Settings (project.godot)"
msgstr "Impostazioni Progetto (project.godot)"
+msgid "Advanced Settings"
+msgstr "Opzioni avanzate"
+
msgid "Input Map"
msgstr "Mappa Input"
msgid "Localization"
msgstr "Localizzazione"
+msgid "Autoload"
+msgstr "Autoload"
+
msgid "Plugins"
msgstr "Estensioni"
@@ -7563,6 +11663,21 @@ msgstr "Opzioni Avanzate"
msgid "Substitute"
msgstr "Sostituto"
+msgid "Node name."
+msgstr "Nome del nodo."
+
+msgid "Node's parent name, if available."
+msgstr "Nome del genitore del nodo, se disponibile"
+
+msgid "Node type."
+msgstr "Tipo del nodo."
+
+msgid "Current scene name."
+msgstr "Nome della scena corrente."
+
+msgid "Root node name."
+msgstr "Nome del nodo radice."
+
msgid ""
"Sequential integer counter.\n"
"Compare counter options."
@@ -7577,9 +11692,15 @@ msgid "If set, the counter restarts for each group of child nodes."
msgstr ""
"Se impostato, il contatore si riavvierà per ciascun gruppo di nodi figlio."
+msgid "Initial value for the counter."
+msgstr "Valore iniziale per il contatore."
+
msgid "Step"
msgstr "Passo"
+msgid "Amount by which counter is incremented for each node."
+msgstr "Quantità per la quale verrà incrementato il contatore per ogni nodo."
+
msgid "Padding"
msgstr "Padding"
@@ -7621,7 +11742,10 @@ msgid "At character %s"
msgstr "Al carattere %s"
msgid "Reparent Node"
-msgstr "Reparent Nodo"
+msgstr "Riparenta un nodo"
+
+msgid "Select new parent:"
+msgstr "Selezionare il nuovo genitore:"
msgid "Keep Global Transform"
msgstr "Mantieni Transform Globale"
@@ -7629,6 +11753,30 @@ msgstr "Mantieni Transform Globale"
msgid "Reparent"
msgstr "Riaccoppiare"
+msgid "Pick Root Node Type"
+msgstr "Seleziona il tipo del nodo radice"
+
+msgid "Pick"
+msgstr "Preleva"
+
+msgid "Scene name is valid."
+msgstr "Il nome della scena è valido."
+
+msgid "Scene name is empty."
+msgstr "Il nome della scena è vuoto."
+
+msgid "File name invalid."
+msgstr "Il nome del file è invalido."
+
+msgid "File already exists."
+msgstr "Il file esiste già."
+
+msgid "Invalid root node name."
+msgstr "Nome del nodo radice non valido."
+
+msgid "Root Type:"
+msgstr "Tipo della radice:"
+
msgid "2D Scene"
msgstr "Scena 2D"
@@ -7636,14 +11784,45 @@ msgid "3D Scene"
msgstr "Scena 3D"
msgid "User Interface"
-msgstr "Interfaccia Utente"
+msgstr "Interfaccia utente"
+
+msgid "Scene Name:"
+msgstr "Nome della scena:"
+
+msgid "Root Name:"
+msgstr "Nome della radice:"
+
+msgid "Leave empty to use scene name"
+msgstr "Lasciare vuoto per utilizzare il nome della scena"
+
+msgid "Create New Scene"
+msgstr "Crea una nuova scena"
+
+msgid "No parent to instantiate a child at."
+msgstr "Nessun genitore in cui istanziare un figlio."
+
+msgid "No parent to instantiate the scenes at."
+msgstr "Nessun genitore in cui istanziare le scene."
msgid "Error loading scene from %s"
msgstr "Errore caricamento scena da %s"
+msgid ""
+"Cannot instantiate the scene '%s' because the current scene exists within "
+"one of its nodes."
+msgstr ""
+"Impossibile istanziare la scena \"%s\" perché la scena corrente esiste in "
+"uno dei suoi nodi."
+
+msgid "Instantiate Scene(s)"
+msgstr "Istanzia delle scene"
+
msgid "Replace with Branch Scene"
msgstr "Sostituisci con Scena Ramo"
+msgid "Instantiate Child Scene"
+msgstr "Istanzia una scena figlia"
+
msgid "Detach Script"
msgstr "Rimuovi Script"
@@ -7702,6 +11881,28 @@ msgstr ""
"sono stati selezionati %s."
msgid ""
+"Can't save the root node branch as an instantiated scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+"Impossibile salvare il ramo del nodo radice come una scena istanziata.\n"
+"Per creare una copia modificabile della scena corrente, duplicarla tramite "
+"il menu contestuale del pannello FileSystem\n"
+"o creare invece una scena ereditata attraverso Scena > Nuova Scena "
+"Ereditata... ."
+
+msgid ""
+"Can't save the branch of an already instantiated scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instantiated scene using Scene > New Inherited Scene... instead."
+msgstr ""
+"Impossibile salvare il ramo di una scena già istanziata.\n"
+"Per creare una variante di una scena, si potrebbe invece creare una scena "
+"ereditata basata sulla scena istanziata attraverso Scena > Nuova Scena "
+"Ereditata... ."
+
+msgid ""
"Can't save a branch which is a child of an already instantiated scene.\n"
"To save this branch into its own scene, open the original scene, right click "
"on this branch, and select \"Save Branch as Scene\"."
@@ -7741,24 +11942,45 @@ msgstr ""
msgid "Make Local"
msgstr "Rendi Locale"
+msgid "Enable Scene Unique Name(s)"
+msgstr "Abilita dei nomi unici della scena"
+
+msgid "Unique names already used by another node in the scene:"
+msgstr "Nomi unici già usati da un altro nodo nella scena:"
+
+msgid "Disable Scene Unique Name(s)"
+msgstr "Disabilita dei nomi unici della scena"
+
msgid "New Scene Root"
msgstr "Nuova Scena Radice"
msgid "Create Root Node:"
-msgstr "Crea Nodo Radice:"
+msgstr "Crea un nodo radice:"
+
+msgid "Switch to Favorite Nodes"
+msgstr "Passa ai nodi preferiti"
msgid "Other Node"
msgstr "Altro nodo"
+msgid "Paste From Clipboard"
+msgstr "Incolla dagli appunti"
+
msgid "Can't operate on nodes from a foreign scene!"
msgstr "Impossibile operare su nodi di una scena esterna!"
msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Impossibile operare su nodi da cui la scena corrente eredita!"
+msgid "This operation can't be done on instantiated scenes."
+msgstr "Questa operazione non può essere eseguita su delle scene istanziate."
+
msgid "Attach Script"
msgstr "Allega Script"
+msgid "Set Shader"
+msgstr "Imposta lo shader"
+
msgid "Cut Node(s)"
msgstr "Taglia Nodo(i)"
@@ -7784,9 +12006,18 @@ msgstr "Errore durante il salvataggio della scena."
msgid "Error duplicating scene to save it."
msgstr "Errore nel duplicare la scena per salvarla."
+msgid "Instantiate Script"
+msgstr "Istanzia uno script"
+
msgid "Sub-Resources"
msgstr "Sotto-Risorse"
+msgid "Revoke Unique Name"
+msgstr "Revoca un nome unico"
+
+msgid "Access as Unique Name"
+msgstr "Accedi come nome unico"
+
msgid "Clear Inheritance"
msgstr "Libera Ereditarietà"
@@ -7799,6 +12030,19 @@ msgstr "Carica come Placeholder"
msgid "Filters"
msgstr "Filtri"
+msgid "Filter by Type"
+msgstr "Filtra per tipo"
+
+msgid "Filter by Group"
+msgstr "Filtra per gruppo"
+
+msgid ""
+"Selects all Nodes belonging to the given group.\n"
+"If empty, selects any Node belonging to any group."
+msgstr ""
+"Seleziona tutti i nodi che appartengono a un gruppo dato.\n"
+"Se vuoto, seleziona qualsiasi nodo appartenente a qualsiasi gruppo."
+
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -7817,6 +12061,9 @@ msgstr "Incolla Nodo(i)"
msgid "Add Child Node"
msgstr "Aggiungi un nodo figlio"
+msgid "Expand/Collapse Branch"
+msgstr "Espandi/Comprimi un ramo"
+
msgid "Change Type"
msgstr "Cambia Tipo"
@@ -7824,7 +12071,10 @@ msgid "Reparent to New Node"
msgstr "Riparenta a Nuovo Nodo"
msgid "Make Scene Root"
-msgstr "Rendi Scena Radice"
+msgstr "Rendi la radice della scena"
+
+msgid "Toggle Access as Unique Name"
+msgstr "Commuta l'accesso come nome unico"
msgid "Delete (No Confirm)"
msgstr "Elimina (Senza Conferma)"
@@ -7832,12 +12082,22 @@ msgstr "Elimina (Senza Conferma)"
msgid "Add/Create a New Node."
msgstr "Aggiungi/Crea un Nuovo Nodo."
+msgid ""
+"Instantiate a scene file as a Node. Creates an inherited scene if no root "
+"node exists."
+msgstr ""
+"Istanzia un file scena come Node. Crea una scena ereditata se nessun nodo "
+"radice esiste."
+
msgid "Attach a new or existing script to the selected node."
msgstr "Allega un nuovo script o uno già esistente al nodo selezionato."
msgid "Detach the script from the selected node."
msgstr "Rimuovi lo script dal nodo selezionato."
+msgid "Extra scene options."
+msgstr "Opzioni extra della scena."
+
msgid "Remote"
msgstr "Remoto"
@@ -7880,6 +12140,25 @@ msgstr ""
"precedere dal prefisso '%s' in un percorso di nodo.\n"
"Clicca per disabilitarlo."
+msgid "Node has one connection."
+msgid_plural "Node has {num} connections."
+msgstr[0] "Il nodo ha una connessione."
+msgstr[1] "Il nodo ha {num} connessioni."
+
+msgid "Node is in this group:"
+msgid_plural "Node is in the following groups:"
+msgstr[0] "Il nodo è in questo gruppo:"
+msgstr[1] "I nodi sono nei gruppi seguenti:"
+
+msgid "Click to show signals dock."
+msgstr "Cliccare per mostrare il pannello dei segnali."
+
+msgid "This script is currently running in the editor."
+msgstr "Questo script è attualmente in esecuzione nell'editor."
+
+msgid "This script is a custom type."
+msgstr "Questo script è un tipo personalizzato."
+
msgid "Open Script:"
msgstr "Apri Script:"
@@ -7891,12 +12170,22 @@ msgstr ""
"Fai clic per sbloccarlo."
msgid ""
+"Children are not selectable.\n"
+"Click to make them selectable."
+msgstr ""
+"I figli non sono selezionabili.\n"
+"Cliccare per renderli selezionabili."
+
+msgid ""
"AnimationPlayer is pinned.\n"
"Click to unpin."
msgstr ""
"AnimationPlayer è bloccato.\n"
"Fai clic per sbloccare."
+msgid "\"%s\" is not a known filter."
+msgstr "\"%s\" non è un filtro conosciuto."
+
msgid "Invalid node name, the following characters are not allowed:"
msgstr "Nome nodo invalido, i caratteri seguenti non sono consentiti:"
@@ -7921,9 +12210,15 @@ msgstr "Il percorso è vuoto."
msgid "Filename is empty."
msgstr "Il nome del file è vuoto."
+msgid "Filename is invalid."
+msgstr "Il nome del file non è valido."
+
msgid "Path is not local."
msgstr "Percorso non locale."
+msgid "Base path is invalid."
+msgstr "Il percorso di base non è valido."
+
msgid "A directory with the same name exists."
msgstr "Esiste già una directory con lo stesso nome."
@@ -7933,6 +12228,9 @@ msgstr "File inesistente."
msgid "Invalid extension."
msgstr "Estensione non valida."
+msgid "Extension doesn't match chosen language."
+msgstr "L'esensione non corrisponde ad alcuna lingua scelta."
+
msgid "Template:"
msgstr "Template:"
@@ -7948,6 +12246,12 @@ msgstr "Apri Script / Scegli Posizione"
msgid "Open Script"
msgstr "Apri Script"
+msgid "Inherit %s"
+msgstr "Eredita %s"
+
+msgid "Inherit"
+msgstr "Eredita"
+
msgid "File exists, it will be reused."
msgstr "Il file è già esistente, quindi, verrà riutilizzato."
@@ -7975,12 +12279,21 @@ msgstr "Script integrato (nel file della scena)."
msgid "Will create a new script file."
msgstr "Verrà creato un nuovo file di script."
+msgid "Using existing script file."
+msgstr "Utilizzando un file di uno script esistente."
+
msgid "Will load an existing script file."
msgstr "Caricherà un file di script esistente."
msgid "Script file already exists."
msgstr "Il file di script esiste già."
+msgid "No suitable template."
+msgstr "Nessun modello adatto."
+
+msgid "Empty"
+msgstr "Vuoto"
+
msgid ""
"Note: Built-in scripts have some limitations and can't be edited using an "
"external editor."
@@ -8004,12 +12317,69 @@ msgstr "Script Integrato:"
msgid "Attach Node Script"
msgstr "Allega Script Nodo"
+msgid "Error - Could not create shader include in filesystem."
+msgstr "Errore - impossibile creare un'inclusione degli shader nel filesystem."
+
+msgid "Error - Could not create shader in filesystem."
+msgstr "Errore - Impossibile creare uno shader nel filesystem."
+
+msgid "Error loading shader from %s"
+msgstr "Errore durante il caricamento dello shader da %s"
+
+msgid "Open Shader / Choose Location"
+msgstr "Apri uno shader / Segli la posizione"
+
msgid "Invalid base path."
msgstr "Percorso di base non valido."
msgid "Wrong extension chosen."
msgstr "Selezionata estensione errata."
+msgid "Shader path/name is valid."
+msgstr "Il nome/percorso dello shader è valido."
+
+msgid "Built-in shader (into scene file)."
+msgstr "Shader integrato (nella scena)."
+
+msgid "Will create a new shader file."
+msgstr "Creerà un nuovo file di shader."
+
+msgid "Will load an existing shader file."
+msgstr "Caricherà un file di shader esistente."
+
+msgid "Shader file already exists."
+msgstr "Il file di shader esiste già."
+
+msgid "Note: Built-in shaders can't be edited using an external editor."
+msgstr ""
+"Nota: gli script integrati non possono essere modificati tramite un'editor "
+"esterno."
+
+msgid "Mode:"
+msgstr "Modalità:"
+
+msgid "Built-in Shader:"
+msgstr "Shader integrato:"
+
+msgid "Create Shader"
+msgstr "Crea uno shader"
+
+msgid "Set Shader Global Variable"
+msgstr "Imposta una variabile globale di uno shader"
+
+msgid "Please specify a valid shader uniform identifier name."
+msgstr "Per favore specificare un nome d'indentificatore dello shader valido."
+
+msgid "Global shader parameter '%s' already exists'"
+msgstr "Il parametro globale \"%s\" dello shader esiste già"
+
+msgid "Name '%s' is a reserved shader language keyword."
+msgstr ""
+"Il nome \"%s\" è una parola chiave riservata del linguaggio dello shader."
+
+msgid "Add Shader Global Parameter"
+msgstr "Aggiungi un parametro globale dello shader"
+
msgid "Change Cylinder Radius"
msgstr "Modifica Raggio del Cilindro"
@@ -8052,6 +12422,68 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Formato del dizionario dell'istanza non valido (sottoclassi invalide)"
+msgid "Value of type '%s' can't provide a length."
+msgstr "Il valore di tipo \"%s\" non può dare una lunghezza."
+
+msgid "Export Scene to glTF 2.0 File"
+msgstr "Esporta la scena in un file glTF 2.0"
+
+msgid "glTF 2.0 Scene..."
+msgstr "Scena glTF 2.0..."
+
+msgid "Path does not contain a Blender installation."
+msgstr "Il percorso non contiene un'istallazione di Blender."
+
+msgid "Can't execute Blender binary."
+msgstr "Impossibile eseguire il binario di Blender."
+
+msgid "Unexpected --version output from Blender binary at: %s"
+msgstr "Risultato inaspettato di --version dal binario di Blender in: %s"
+
+msgid "Path supplied lacks a Blender binary."
+msgstr "Il percorso specificato è privo di un binario di blender."
+
+msgid "This Blender installation is too old for this importer (not 3.0+)."
+msgstr ""
+"Questa istallazione di Blender è troppo vecchia per questo importatore (non "
+"3.0+)."
+
+msgid "This Blender installation is too new for this importer (not 3.x)."
+msgstr ""
+"Questa istallazione di Blender è troppo nuova per questo importatore (non 3."
+"x)."
+
+msgid "Path to Blender installation is valid (Autodetected)."
+msgstr "Il percorso all'istallazione di Blender è valida (autorilevato)."
+
+msgid "Path to Blender installation is valid."
+msgstr "Il percorso all'istallazione di Blender è valido."
+
+msgid "Configure Blender Importer"
+msgstr "Configura l'importatore di Blender"
+
+msgid ""
+"Blender 3.0+ is required to import '.blend' files.\n"
+"Please provide a valid path to a Blender installation:"
+msgstr ""
+"È richiesto Blender 3.0+ per importare i file \".blend\".\n"
+"Per favore fornire un percorso valido per un'istallazione di Blender:"
+
+msgid "Disable '.blend' Import"
+msgstr "Disabilita l'importazione dei \".blend\""
+
+msgid ""
+"Disables Blender '.blend' files import for this project. Can be re-enabled "
+"in Project Settings."
+msgstr ""
+"Disabilita l'importazione dei file \".blend\" per questo progetto. Può "
+"essere riattivato nelle impostazioni del progetto."
+
+msgid "Disabling '.blend' file import requires restarting the editor."
+msgstr ""
+"È necessario riavviare l'editor per disabilitare l'importazione dei file \"."
+"blend\"."
+
msgid "Next Plane"
msgstr "Piano Successivo"
@@ -8136,13 +12568,37 @@ msgstr "Impostazioni GridMap"
msgid "Pick Distance:"
msgstr "Scegli la Distanza:"
+msgid "Filter Meshes"
+msgstr "Filtra le mesh"
+
msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
msgstr ""
"Assegna una risorsa MeshLibrary a questa GridMap per usare le sue mesh."
+msgid "Determining optimal atlas size"
+msgstr "Determinanto la dimensione ottimale dell'atlas"
+
+msgid "Optimizing acceleration structure"
+msgstr "Ottimizzando la struttura di accelerazione"
+
msgid "Begin Bake"
msgstr "Inizia il Baking"
+msgid "Preparing shaders"
+msgstr "Preparando gli shader"
+
+msgid "Un-occluding geometry"
+msgstr "De-occludendo la geometria"
+
+msgid "Integrate indirect lighting"
+msgstr "Integra l'illuminazione indiretta"
+
+msgid "Denoising"
+msgstr "Derumorizzazione"
+
+msgid "Retrieving textures"
+msgstr "Prelevando le texture"
+
msgid "Class name can't be a reserved keyword"
msgstr "Il nome della classe non può essere una parola chiave riservata"
@@ -8152,15 +12608,25 @@ msgstr "Crea Soluzione"
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Byte insufficienti per decodificarli o formato non valido."
+msgid "%d (%s)"
+msgstr "%d (%s)"
+
msgid "%s/s"
msgstr "%s/s"
+msgctxt "Network"
+msgid "Up"
+msgstr "In uscita"
+
msgid "Incoming RPC"
msgstr "RPC in arrivo"
msgid "Outgoing RPC"
msgstr "RPC in uscita"
+msgid "Synchronizer"
+msgstr "Sincronizzatore"
+
msgid "Config"
msgstr "Configurazione"
@@ -8173,13 +12639,97 @@ msgstr "Dimensione"
msgid "Network Profiler"
msgstr "Profiler di Rete"
+msgid "Replication"
+msgstr "Replicazione"
+
+msgid "Select a replicator node in order to pick a property to add to it."
+msgstr ""
+"Selezionare un nodo replicatore per selezionare una proprietà da aggiungerci."
+
+msgid "Not possible to add a new property to synchronize without a root."
+msgstr ""
+"Non è possibile aggiungere una nuova proprietà da sincronizzare senza una "
+"radice."
+
+msgid "Property is already being synchronized."
+msgstr "La proprietà sta già venendo sincronizzata."
+
+msgid "Add property to synchronizer"
+msgstr "Aggiungi una proprietà al sincronizzatore"
+
+msgid "Pick a node to synchronize:"
+msgstr "Selezionare un nodo da sincronizzare:"
+
+msgid "Add property to sync..."
+msgstr "Aggiungi una proprietà da sincronizzare..."
+
+msgid "Add from path"
+msgstr "Aggiungi da un percorso"
+
+msgid "Spawn"
+msgstr "Genera"
+
+msgid ""
+"Add properties using the buttons above or\n"
+"drag them them from the inspector and drop them here."
+msgstr ""
+"Aggiungere delle proprietà tramite i pulsanti sopra o\n"
+"trascinarli dall'ispettore e rilasciarli qui."
+
+msgid "Please select a MultiplayerSynchronizer first."
+msgstr "Per favore selezionare prima un MultiplayerSynchronizer."
+
+msgid "The MultiplayerSynchronizer needs a root path."
+msgstr "Il MultiplayerSynchronizer ha bisogno di un percorso radice."
+
+msgid "Delete Property?"
+msgstr "Cancellare la proprietà?"
+
+msgid "Remove Property"
+msgstr "Rimuovi una proprietà"
+
+msgid ""
+"A valid NodePath must be set in the \"Spawn Path\" property in order for "
+"MultiplayerSpawner to be able to spawn Nodes."
+msgstr ""
+"Una risorsa NodePath valida deve essere impostata nella proprietà \"Spawn "
+"Path\" affinché un MultiplayerSpawner possa generare dei nodi."
+
+msgid ""
+"A valid NodePath must be set in the \"Root Path\" property in order for "
+"MultiplayerSynchronizer to be able to synchronize properties."
+msgstr ""
+"Un NodePath valido deve essere impostato nella proprietà \"Root Path\" "
+"affinché un MultiplayerSynchronizer possa sincronizzare delle proprietà."
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
"È necessario creare o impostare una risorsa NavigationMesh affinché questo "
"nodo funzioni."
+msgid ""
+"Cannot generate navigation mesh because it does not belong to the edited "
+"scene. Make it unique first."
+msgstr ""
+"Impossibile generare una mesh di navigzione perché non appartiene alla scena "
+"modificata. Renderla prima unica."
+
+msgid ""
+"Cannot generate navigation mesh because it belongs to a resource which was "
+"imported."
+msgstr ""
+"Impossibile generare la mesh di navigazione perché appartiene a una risorsa "
+"che è stata importata."
+
+msgid ""
+"Cannot generate navigation mesh because the resource was imported from "
+"another type."
+msgstr ""
+"Impossibile generare la mesh di navigazione perché la risorsa è stata "
+"importata da un altro tipo."
+
msgid "Bake NavMesh"
-msgstr "Prepara NavMesh"
+msgstr "Preprocessa NavMesh"
msgid "Clear the navigation mesh."
msgstr "Cancella mesh di navigazione."
@@ -8223,6 +12773,96 @@ msgstr "Elaborazione Geometria..."
msgid "Done!"
msgstr "Fatto!"
+msgid "Rename Action"
+msgstr "Rinomina un'azione"
+
+msgid "Rename Actions Localized name"
+msgstr "Rinomina il nome localizzato di un'azione"
+
+msgid "Change Action Type"
+msgstr "Cambia il tipo di azione"
+
+msgid "Remove action"
+msgstr "Rimuovi un'azione"
+
+msgid "Add action set"
+msgstr "Aggiungi un insieme di azioni"
+
+msgid "Remove action set"
+msgstr "Rimuovi un insieme di azioni"
+
+msgid "Add interaction profile"
+msgstr "Aggiungi un profilo d'interazoine"
+
+msgid "Error saving file %s: %s"
+msgstr "Errore nel salvataggio del file %s: %s"
+
+msgid "Error loading %s: %s."
+msgstr "Errore caricando %s: %s."
+
+msgid "OpenXR Action map:"
+msgstr "Mappa delle azioni OpenXR:"
+
+msgid "Remove interaction profile"
+msgstr "Rimuovi un profilo d'interazione"
+
+msgid "Action Map"
+msgstr "Mappa delle azioni"
+
+msgid "Add an action set."
+msgstr "Aggiungi un insieme di azioni."
+
+msgid "Add profile"
+msgstr "Aggiungi un profilo"
+
+msgid "Add an interaction profile."
+msgstr "Aggiungi un profilo d'interazione."
+
+msgid "Save this OpenXR action map."
+msgstr "Salva questa mappa delle azioni OpenXR."
+
+msgid "Reset to default OpenXR action map."
+msgstr "Reimposta alla mappa delle azioni OpenXR predefinita."
+
+msgid "Action Sets"
+msgstr "Insiemi di azioni"
+
+msgid "Rename Action Set"
+msgstr "Rinomina un insieme di azioni"
+
+msgid "Rename Action Sets Localized name"
+msgstr "Cambia il nome localizzato di degli insiemi di azioni"
+
+msgid "Change Action Sets priority"
+msgstr "Cambia la priorità di degli insiemi di azioni"
+
+msgid "Add action"
+msgstr "Aggiungi un azione"
+
+msgid "Delete action"
+msgstr "Elimina un'azione"
+
+msgid "OpenXR Action Map"
+msgstr "Mappa delle azioni OpenXR"
+
+msgid "Remove action from interaction profile"
+msgstr "Rimouvi un azione dal profilo d'interazione"
+
+msgid "Add binding"
+msgstr "Aggiungi un associazione"
+
+msgid "Remove binding"
+msgstr "Rimuovi un'associazione"
+
+msgid "Pose"
+msgstr "Posa"
+
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+msgid "Select an action"
+msgstr "Selezionare un azione"
+
msgid "Package name is missing."
msgstr "Il nome del pacchetto è mancante."
@@ -8246,6 +12886,13 @@ msgstr ""
msgid "The package must have at least one '.' separator."
msgstr "Il pacchetto deve avere almeno un \".\" separatore."
+msgid ""
+"The project name does not meet the requirement for the package name format. "
+"Please explicitly specify the package name."
+msgstr ""
+"Il nome del progetto non rispetta i requisiti per il formato del nome del "
+"pacchetto. Per favore specificare esplicitamente il nome del pacchetto."
+
msgid "Select device from the list"
msgstr "Seleziona il dispositivo dall'elenco"
@@ -8274,8 +12921,8 @@ msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
msgstr ""
-"Il template build di Android non è installato in questo progetto. Installalo "
-"dal menu Progetto."
+"Il modello di costruzione di Android non è installato in questo progetto. "
+"Installarlo dal menu Progetto."
msgid ""
"Either Debug Keystore, Debug User AND Debug Password settings must be "
@@ -8333,11 +12980,30 @@ msgstr "Chiave pubblica non valida per l'espansione dell'APK."
msgid "Invalid package name:"
msgstr "Nome del pacchetto non valido:"
+msgid "\"Use Gradle Build\" must be enabled to use the plugins."
+msgstr "Per utilizzare i plugin \"Use Gradle Build\" deve essere abilitato."
+
+msgid "OpenXR requires \"Use Gradle Build\" to be enabled"
+msgstr "OpenXR richiede che \"Use Gradle Build\" sia attivo"
+
+msgid "\"Hand Tracking\" is only valid when \"XR Mode\" is \"OpenXR\"."
+msgstr ""
+"\"Hand Tracking\" è valido solo quando \"XR Mode\" è impostato su \"OpenXR\"."
+
msgid "\"Passthrough\" is only valid when \"XR Mode\" is \"OpenXR\"."
msgstr ""
"\"Oltrepassaggio\" è valido solo quando \"Modalità XR\" è impostato su "
"\"OpenXR\"."
+msgid "\"Export AAB\" is only valid when \"Use Gradle Build\" is enabled."
+msgstr ""
+"\"Export AAB\" è valido soltanto quanto \"Use Gradle Build\" è abilitato."
+
+msgid ""
+"\"Min SDK\" can only be overridden when \"Use Gradle Build\" is enabled."
+msgstr ""
+"\"Min SDK\" può essere sovrascritto solo se \"Use Gradle Build\" è abilitato."
+
msgid "\"Min SDK\" should be a valid integer, but got \"%s\" which is invalid."
msgstr ""
"\"Min SDK\" dovrebbe essere un intero valido, ma si è ottenuto \"%s\" che è "
@@ -8351,6 +13017,12 @@ msgstr ""
"dalla libreria Godot."
msgid ""
+"\"Target SDK\" can only be overridden when \"Use Gradle Build\" is enabled."
+msgstr ""
+"\"Target SDK\" può essere sovrascritto solo se \"Use Gradle BUild\" è "
+"abilitato."
+
+msgid ""
"\"Target SDK\" should be a valid integer, but got \"%s\" which is invalid."
msgstr ""
"\"Target SDK\" dovrebbe essere un intero valido, ma si è ottenuto \"%s\" che "
@@ -8368,10 +13040,31 @@ msgstr ""
"La versione di \"Target SDK\" dovrebbe essere maggiore o uguale della "
"versione di \"Min SDK\"."
+msgid ""
+"The \"%s\" renderer is designed for Desktop devices, and is not suitable for "
+"Android devices."
+msgstr ""
+"Il renderer \"%s\" è stato sviluppato per dispositivi desktop, e non è "
+"adatto ai dispositivi Android."
+
+msgid "\"Min SDK\" should be greater or equal to %d for the \"%s\" renderer."
+msgstr ""
+"\"Min SDK\" dovrebbe essere maggiore o uguale a %d per il renderer \"%s\"."
+
msgid "Code Signing"
msgstr "Firmatura Codice"
msgid ""
+"All 'apksigner' tools located in Android SDK 'build-tools' directory failed "
+"to execute. Please check that you have the correct version installed for "
+"your target sdk version. The resulting %s is unsigned."
+msgstr ""
+"Tutti gli strumenti \"apksigner\" nella cartella \"build-tools\" dell'SDK di "
+"Android hanno fallito l'esecuzione. Per favore controllare di avere la "
+"versione corretta installata per la propria versione dell'SDK di "
+"destinazione. Il %s risultante è senza firma."
+
+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 ""
@@ -8393,6 +13086,13 @@ msgstr "Non è stato possibile avviare l'eseguibile apksigner."
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' ha restituito con errore #%d"
+msgid ""
+"output: \n"
+"%s"
+msgstr ""
+"uscita:\n"
+"%s"
+
msgid "Verifying %s..."
msgstr "Verificando %s..."
@@ -8416,12 +13116,20 @@ msgid "Unsupported export format!"
msgstr "Formato d'esportazione non supportato!"
msgid ""
+"Trying to build from a gradle built template, but no version info for it "
+"exists. Please reinstall from the 'Project' menu."
+msgstr ""
+"Tentato di costruire da un modello di costruzione gradle, ma nessuna "
+"informazione sulla sua versione esiste. Per favore, reinstallarlo dal menu "
+"\"Progetto\"."
+
+msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"La Versione build di Android non corrisponde: Template installato: %s, "
-"Versione Godot: %s. Per favore, reinstalla il build template di Android dal "
-"menu \"Progetto\"."
+"Versione della costruzione Android non corrispondente: modello installato: "
+"%d, versione di Godot: %s. Per favore, reinstallare il modello di "
+"costruzione Android dal menu \"Progetto\"."
msgid ""
"Unable to overwrite res://android/build/res/*.xml files with project name."
@@ -8490,9 +13198,37 @@ msgstr "Impossibile decomprimere l'APK temporaneamente non allineato."
msgid "Export Icons"
msgstr "Icone Esportazione"
+msgid "Prepare Templates"
+msgstr "Preparazione dei modelli"
+
msgid "Export template not found."
msgstr "Modello di esportazione non trovato."
+msgid "Code signing failed, see editor log for details."
+msgstr ""
+"Firma del codice fallita, controllare il registro dell'editor per più "
+"dettagli."
+
+msgid "Xcode Build"
+msgstr "Costruzione Xcode"
+
+msgid "Xcode project build failed, see editor log for details."
+msgstr ""
+"Costruzione Xcode del progetto, controllare il registro dell'editor per più "
+"dettagli."
+
+msgid ".ipa export failed, see editor log for details."
+msgstr ""
+"Esportazione .ipa fallita, controllare il registro dell'editor per più "
+"dettagli."
+
+msgid ""
+".ipa can only be built on macOS. Leaving Xcode project without building the "
+"package."
+msgstr ""
+"I .ipa possono essere solo costruiti su macOS. Mantenendo il progetto Xcode "
+"senza costruire il pacchetto."
+
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID non specificato - non è possibile configurare il progetto."
@@ -8506,6 +13242,60 @@ msgstr "Identificatore mancante."
msgid "The character '%s' is not allowed in Identifier."
msgstr "Il carattere \"%s\" non è consentito nell'Identificatore."
+msgid "Debug Script Export"
+msgstr "Esportazione di debug degli script"
+
+msgid "Could not open file \"%s\"."
+msgstr "Impossibile aprire il file \"%s\"."
+
+msgid "Could not create console script."
+msgstr "Impossibile creare lo script dei console."
+
+msgid "Failed to open executable file \"%s\"."
+msgstr "Impossibile aprire l'eseguibile \"%s\"."
+
+msgid "Executable file header corrupted."
+msgstr "Intestazione del file eseguibile corrotta."
+
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr "Gli eseguibili a 32 bit non possono avere dati incorporati >= 4GiB."
+
+msgid "Executable \"pck\" section not found."
+msgstr "Sezione \"pck\" dell'eseguibile non trovata."
+
+msgid "Stop and uninstall"
+msgstr "Ferma e disinstalla"
+
+msgid "Run on remote Linux/BSD system"
+msgstr "Esegui su un sistema Linux/BSD remoto"
+
+msgid "Stop and uninstall running project from the remote system"
+msgstr "Ferma e disinstalla il progetto in esecuzione dal sistema remoto"
+
+msgid "Run exported project on remote Linux/BSD system"
+msgstr "Esegui il progetto esportato su un sistema Linux/BSD remoto"
+
+msgid "Running..."
+msgstr "Eseguendo..."
+
+msgid "Could not create temp directory:"
+msgstr "Impossibile creare una cartella temporanea:"
+
+msgid "Exporting project..."
+msgstr "Esportando il progetto..."
+
+msgid "Creating temporary directory..."
+msgstr "Creando una cartella temporanea..."
+
+msgid "Uploading archive..."
+msgstr "Caricando l'archivio..."
+
+msgid "Uploading scripts..."
+msgstr "Caricando gli script..."
+
+msgid "Starting project..."
+msgstr "Avviando il progetto..."
+
msgid "Can't get filesystem access."
msgstr "Non si può avere accesso al filesystem."
@@ -8539,6 +13329,9 @@ msgstr "Elaborazione risorse nidificate fallito."
msgid "Failed to create _CodeSignature subfolder."
msgstr "Creazione sottocartella _CodeSignature fallita."
+msgid "Failed to get CodeResources hash."
+msgstr "Impossibile ottenere l'hash di CodeResources."
+
msgid "Invalid entitlements file."
msgstr "File di permessi non valido."
@@ -8560,10 +13353,23 @@ msgstr "Tipo di oggetto sconosciuto."
msgid "Icon Creation"
msgstr "Creazione Icona"
+msgid "Could not open icon file \"%s\"."
+msgstr "Impossibile aprire il file icona \"%s\"."
+
msgid "Notarization"
msgstr "Autenticazione"
msgid ""
+"rcodesign path is not set. Configure rcodesign path in the Editor Settings "
+"(Export > macOS > rcodesign)."
+msgstr ""
+"Il percorso di rcodesign non è impostato. Conigurare ill percorso di "
+"rcodesign nelle impostazioni dell'editor (Export > macOS > rcodesign)."
+
+msgid "Could not start rcodesign executable."
+msgstr "Impossibile eseguire l'eseguibile di rcodesign."
+
+msgid ""
"You can check progress manually by opening a Terminal and running the "
"following command:"
msgstr ""
@@ -8577,6 +13383,12 @@ msgstr ""
"Lancia il seguente comando per agganciare il ticket di notarizzazione "
"all'applicazione esportata (opzionale):"
+msgid "Apple ID password not specified."
+msgstr "Password dell Apple ID non specificata."
+
+msgid "Could not start xcrun executable."
+msgstr "Impossibile avviare l'eseguibile di xcrun."
+
msgid ""
"The notarization process generally takes less than an hour. When the process "
"is completed, you'll receive an email."
@@ -8591,12 +13403,22 @@ msgid "Built-in CodeSign require regex module."
msgstr "La firma del codice incorporata richiede il modulo regex."
msgid ""
+"Xrcodesign path is not set. Configure rcodesign path in the Editor Settings "
+"(Export > macOS > rcodesign)."
+msgstr ""
+"Il percorso di Xrcodesign non è impostato. Configurare il percorso di "
+"rcodesign nelle impostazioni dell'editor (Export > macOS > rcodesign)."
+
+msgid ""
"Could not start codesign executable, make sure Xcode command line tools are "
"installed."
msgstr ""
"Non è stato possibile lanciare l'eseguibile di firma del codice, controllare "
"che gli strumenti da linea di comando di Xcode siano installati."
+msgid "Cannot sign file %s."
+msgstr "Impossibile firmare il file %s"
+
msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
msgstr ""
"I link simbolici relativi non sono supportati, \"%s\" esportato potrebbe "
@@ -8605,6 +13427,9 @@ msgstr ""
msgid "DMG Creation"
msgstr "Creazione del DMG"
+msgid "Could not start hdiutil executable."
+msgstr "Impossibile avviare l'eseguibile di hdiutil."
+
msgid "`hdiutil create` failed - file exists."
msgstr "`hdutil create` fallito - Il file già esiste."
@@ -8620,6 +13445,12 @@ msgstr "Impossibile trovare il template dell'app per l'esportazione:\"%s\"."
msgid "Invalid export format."
msgstr "Formato di esportazione invalido."
+msgid "Could not create directory: \"%s\"."
+msgstr "Impossibile creare la cartella: \"%s\"."
+
+msgid "Could not create directory \"%s\"."
+msgstr "Impossibile creare la cartella \"%s\"."
+
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -8627,6 +13458,12 @@ msgstr ""
"I link simbolici relativi non sono supportati in questo Sistema Operativo, "
"il progetto esportato potrebbe essere danneggiato!"
+msgid "Could not created symlink \"%s\" -> \"%s\"."
+msgstr "Impossibile creare il collegamento simbolico \"%s\" -> \"%s\"."
+
+msgid "Could not open \"%s\"."
+msgstr "Impossibile aprire \"%s\"."
+
msgid ""
"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
@@ -8703,12 +13540,21 @@ msgstr ""
"Privacy: L'accesso alla Camera è abilitato, ma la descrizione d'uso non è "
"specificata."
+msgid "Run on remote macOS system"
+msgstr "Esegui su un sistema macOS remoto"
+
+msgid "Run exported project on remote macOS system"
+msgstr "Esegui il progetto esportato su un sistema macOS remoto"
+
msgid "Invalid package short name."
msgstr "Nome breve del pacchetto non valido."
msgid "Invalid package unique name."
msgstr "Nome univoco del pacchetto non valido."
+msgid "Invalid package publisher display name."
+msgstr "Nome visualizzato dell'editore del pacchetto invalido."
+
msgid "Invalid product GUID."
msgstr "GUID prodotto invalido."
@@ -8766,6 +13612,9 @@ msgstr "PWA"
msgid "Could not read HTML shell: \"%s\"."
msgstr "Non è stato possibile leggere lo shell HTML: \"%s\"."
+msgid "Could not create HTTP server directory: %s."
+msgstr "Impossibile creare la cartella per il server HTTP: %s."
+
msgid "Error starting HTTP server: %d."
msgstr "Errore all'avvio del server HTTP: %d."
@@ -8778,6 +13627,46 @@ msgstr "Esegui nel Browser"
msgid "Run exported HTML in the system's default browser."
msgstr "Esegui il codice HTML esportato nel browser di sistema predefinito."
+msgid "Icon size \"%d\" is missing."
+msgstr "La dimensione dell'icona \"%s\" è mancante."
+
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Impossibile rinominare il file temporaneo \"%s\"."
+
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Impossibile trovare l'eseguibile di rcedit in \"%s\"."
+
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Impossibile trovare l'eseguibile di wine in \"%s\"."
+
+msgid "Invalid icon file \"%s\"."
+msgstr "Nome del file dell'icona \"%s\" non valido."
+
+msgid ""
+"Could not start rcedit executable. Configure rcedit path in the Editor "
+"Settings (Export > Windows > rcedit), or disable \"Application > Modify "
+"Resources\" in the export preset."
+msgstr ""
+"Impossibile avviare l'eseguibile di rcedit. Configurare il percorso di "
+"rcedit nelle impostazioni dell'editor (Export > Windows > rcedit), o "
+"disabilitare \"Application > Modify Resources\" nella preimpostazione di "
+"esportazione."
+
+msgid "rcedit failed to modify executable: %s."
+msgstr "rcedit non è riuscito a modificare l'eseguibile: %s."
+
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Impossibile trovare l'esegubile di signtool in \"%s\"."
+
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Impossibile trovare l'eseguible di osslsigncode in \"%s\"."
+
+msgid "No identity found."
+msgstr "Nessuna identità trovata."
+
+msgid "Invalid identity type."
+msgstr "Tipo d'identità non trovato."
+
msgid "Invalid icon path:"
msgstr "Percorso icona non valido:"
@@ -8787,6 +13676,19 @@ msgstr "Versione file non valida:"
msgid "Invalid product version:"
msgstr "Versione prodotto non valida:"
+msgid "Run on remote Windows system"
+msgstr "Esegui su un sistema Windows remoto"
+
+msgid "Run exported project on remote Windows system"
+msgstr "Esegui il progetto esportato su un sistema Windows remoto"
+
+msgid ""
+"A SpriteFrames resource must be created or set in the \"Frames\" property in "
+"order for AnimatedSprite2D to display frames."
+msgstr ""
+"Una risorsa SpriteFrames deve essere creata o impostata nella proprietà "
+"\"Frames\" per permettere a AnimatedSprite2D di visualizzare i fotogrammi."
+
msgid ""
"This node has no shape, so it can't collide or interact with other objects.\n"
"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
@@ -8879,6 +13781,20 @@ msgstr ""
"Il poligono per questo occluder è vuoto. Si prega di disegnare un poligono."
msgid ""
+"NavigationLink2D start position should be different than the end position to "
+"be useful."
+msgstr ""
+"La posizione iniziale di NavigationLink2D deve essere diversa da quella "
+"finale per essere utile."
+
+msgid ""
+"The NavigationObstacle2D only serves to provide collision avoidance to a "
+"Node2D object."
+msgstr ""
+"Il NavigationObstalcle2D serve solo a fornire l'evitamento delle collisioni "
+"a un oggetto Node2D."
+
+msgid ""
"ParallaxLayer node only works when set as child of a ParallaxBackground node."
msgstr ""
"Il nodo ParallaxLayer funziona solamente se impostato come figlio di un nodo "
@@ -8909,9 +13825,119 @@ msgid "Nothing is visible because no mesh has been assigned."
msgstr "Niente è visibile perché non è stata assegnata alcuna mesh."
msgid ""
+"The decal has a Normal and/or ORM texture, but no Albedo texture is set.\n"
+"An Albedo texture with an alpha channel is required to blend the normal/ORM "
+"maps onto the underlying surface.\n"
+"If you don't want the Albedo texture to be visible, set Albedo Mix to 0."
+msgstr ""
+"La decalcomania ha una texture dei normali e/o ORM, ma non ha alcuna texture "
+"albedo impostata.\n"
+"È richiesta una texture albedo con un canale alfa per fondere le mappe dei "
+"normali/ORM sulla superficie sottostante.\n"
+"Se non è voluto che la texture albedo sia visibile, impostare Albedo Mix su "
+"0."
+
+msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass."
+msgid ""
+"Particles animation requires the usage of a BaseMaterial3D whose Billboard "
+"Mode is set to \"Particle Billboard\"."
+msgstr ""
+"L'animazinoe delle particelle richiede l'utilizzo di un BaseMaterial3D che "
+"abbia Billboard Mode imposttat su \"Particle Billboard\"."
+
+msgid "Node A and Node B must be PhysicsBody3Ds"
+msgstr "Il nodo A e il nodo B devono essere PhysicsBody3D"
+
+msgid "Node A must be a PhysicsBody3D"
+msgstr "Il nodo A deve essere un PhysicsBody3D"
+
+msgid "Node B must be a PhysicsBody3D"
+msgstr "Il nodo B deve essere un PhysicsBody3D"
+
+msgid "Joint is not connected to any PhysicsBody3Ds"
+msgstr "Il giunto non è collegato ad alcun PhysicsBody3D"
+
+msgid "Node A and Node B must be different PhysicsBody3Ds"
+msgstr "Il nodo A e il nodo B devono essere due PhysicsBody3D diversi"
+
+msgid "A light's scale does not affect the visual size of the light."
+msgstr "La scala di una luce non altera la sua dimensione visiva."
+
+msgid "Projector texture only works with shadows active."
+msgstr "Le texture proiettate funzionano solo con le ombre attive."
+
+msgid "A SpotLight3D with an angle wider than 90 degrees cannot cast shadows."
+msgstr ""
+"Un SpotLight3D con un angolo più ampio di 90 gradi non può proiettare delle "
+"ombre."
+
+msgid "Finding meshes, lights and probes"
+msgstr "Cercando mesh, luci e sonde"
+
+msgid "Preparing geometry %d/%d"
+msgstr "Preparando la geometria %d/%d"
+
+msgid "Creating probes"
+msgstr "Creando le sonde"
+
+msgid "Creating probes from mesh %d/%d"
+msgstr "Creando delle sonde dalla mesh %d/%d"
+
+msgid "Preparing Lightmapper"
+msgstr "Preparando il mappatore delle luci"
+
+msgid "Preparing Environment"
+msgstr "Preparando l'ambiente"
+
+msgid "Generating Probe Volumes"
+msgstr "Generando i volumi sonda"
+
+msgid "Generating Probe Acceleration Structures"
+msgstr "Generando le strutture di accelerazione delle sonde"
+
+msgid ""
+"The NavigationAgent3D can be used only under a Node3D inheriting parent node."
+msgstr ""
+"Il NavigationAgent3D può essere usato solo sotto un genitore che eredita da "
+"Node3D."
+
+msgid ""
+"NavigationLink3D start position should be different than the end position to "
+"be useful."
+msgstr ""
+"La posizione iniziale di NavigationLink3D deve essere diversa da quella "
+"finale per essere utile."
+
+msgid ""
+"The NavigationObstacle3D only serves to provide collision avoidance to a "
+"Node3D inheriting parent object."
+msgstr ""
+"Il NavigationObstacle3D serve solo a fornire l'evitamento delle collisioni a "
+"un oggetto genitore che eredita da Node3D."
+
+msgid ""
+"The \"Remote Path\" property must point to a valid Node3D or Node3D-derived "
+"node to work."
+msgstr ""
+"La proprietà \"Remote Path\" deve puntare a un Node3D o a un nodo derivato "
+"da Node3D per funzionare."
+
+msgid ""
+"This node cannot interact with other objects unless a Shape3D is assigned."
+msgstr ""
+"Questo nodo non può interagire con altri oggetti a meno che non gli venga "
+"assegnato uno Shape3D."
+
+msgid ""
+"ShapeCast3D does not support ConcavePolygonShape3Ds. Collisions will not be "
+"reported."
+msgstr ""
+"ShapeCast3D non supporta i ConcavePolygonShape3D. Le collisioni non verranno "
+"segnalate."
+
msgid "This body will be ignored until you set a mesh."
msgstr "Questo corpo verrà ignorato finché non imposterai una mesh."
@@ -8922,11 +13948,22 @@ msgstr ""
"Una risorsa SpriteFrames deve essere creata o impostata nella proprietà "
"\"Frames\" per permettere a AnimatedSprite3D di visualizzare i frame."
+msgid ""
+"VehicleWheel3D serves to provide a wheel system to a VehicleBody3D. Please "
+"use it as a child of a VehicleBody3D."
+msgstr ""
+"VehicleWheel3D serve a fornire un sistema di ruote a un VehicleBody3D. Per "
+"favore, usarlo come figlio di un VehicleBody3D."
+
msgid "Plotting Meshes"
msgstr "Tracciando Meshes"
-msgid "Finishing Plot"
-msgstr "Trama di Finitura"
+msgid ""
+"XR is not enabled in rendering project settings. Stereoscopic output is not "
+"supported unless this is enabled."
+msgstr ""
+"L'XR non è abilitato nelle impostazioni di rendering del progetto. L'uscita "
+"stereoscopica non è supportata a meno che esso non sia attivo."
msgid "On BlendTree node '%s', animation not found: '%s'"
msgstr "Sul nodo BlendTree \"%s\", animazione non trovata: \"%s\""
@@ -8944,7 +13981,7 @@ msgid "Nothing connected to input '%s' of node '%s'."
msgstr "Niente collegato all'input \"%s\" del nodo \"%s\"."
msgid "No root AnimationNode for the graph is set."
-msgstr "Non è stato impostato alcun AnimationNode root per il grafico."
+msgstr "Non è stata impostata alcuna radice AnimationNode per il grafico."
msgid "Path to an AnimationPlayer node containing animations is not set."
msgstr ""
@@ -8956,10 +13993,23 @@ msgstr ""
"AnimationPlayer."
msgid "The AnimationPlayer root node is not a valid node."
-msgstr "Il nodo radice dell'AnimationPlayer non è valido."
+msgstr "Il nodo radice dell'AnimationPlayer non è un nodo valido."
-msgid "Pick a color from the editor window."
-msgstr "Scegli un colore dalla finestra dell'editor."
+msgid ""
+"Color: #%s\n"
+"LMB: Apply color\n"
+"RMB: Remove preset"
+msgstr ""
+"Colore: #%s\n"
+"LMB: Imposta il colore\n"
+"RMB: Rimuovi la preimpostazione"
+
+msgid ""
+"Color: #%s\n"
+"LMB: Apply color"
+msgstr ""
+"Colore: #%s\n"
+"LMB: Imposta il colore"
msgid "Switch between hexadecimal and code values."
msgstr "Cambia tra valori esadecimali e valori di codice."
@@ -8983,12 +14033,33 @@ msgstr "Attenzione!"
msgid "Please Confirm..."
msgstr "Per Favore Conferma..."
-msgid "Must use a valid extension."
-msgstr "È necessaria un'estensione valida."
+msgid "All Files"
+msgstr "Tutti i file"
msgid "Enable grid minimap."
msgstr "Abilita mini-mappa griglia."
+msgid "Arrange nodes."
+msgstr "Disponi i nodi."
+
+msgid "Auto-Detect Direction"
+msgstr "Auto-rileva la direzione"
+
+msgid "Left-to-Right"
+msgstr "Sinistra a destra"
+
+msgid "Right-to-Left"
+msgstr "Destra a sinistra"
+
+msgid "Text Writing Direction"
+msgstr "Direzione di scrittura del testo"
+
+msgid "Display Control Characters"
+msgstr "Mostra i caratteri di controllo"
+
+msgid "Insert Control Character"
+msgstr "Inserisci un carattere di controllo"
+
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
msgstr "Se \"Exp Edit\" è abilitato, \"Min Value\" deve essere maggiore di 0."
@@ -9006,6 +14077,37 @@ msgid "(Other)"
msgstr "(Altro)"
msgid ""
+"This node was saved as class type '%s', which was no longer available when "
+"this scene was loaded."
+msgstr ""
+"Questo nodo è stato salvato come una classe di tipo \"%s\", la quale non era "
+"più disponibile quando questa scena è stata caricata."
+
+msgid ""
+"Data from the original node is kept as a placeholder until this type of node "
+"is available again. It can hence be safely re-saved without risk of data "
+"loss."
+msgstr ""
+"I dati del nodo originale sono stati preservati come segnaposto finché il "
+"tipo di questo nodo non è di nuovo dispoinibile. Esso può essere perciò "
+"risalvato senza rischiare perdite di dati."
+
+msgid ""
+"This node is marked as deprecated and will be removed in future versions.\n"
+"Please check the Godot documentation for information about migration."
+msgstr ""
+"Questo nodo è segnato come deprecato e verrà rimosso in versioni future.\n"
+"Per favore controllare la documentazione di Godot per informazioni sulla "
+"migrazione."
+
+msgid ""
+"This node is marked as experimental and may be subject to removal or major "
+"changes in future versions."
+msgstr ""
+"Questo nodo è segnato come sperimentale e potrebbe essere soggetto a "
+"rimozioni o cambiamenti maggiori in versioni future."
+
+msgid ""
"Default Environment as specified in Project Settings (Rendering -> "
"Environment -> Default Environment) could not be loaded."
msgstr ""
@@ -9030,6 +14132,12 @@ msgstr ""
"La dimensione del Viewport deve essere maggiore o uguale a 2 pixel su "
"entrambi i lati per visualizzare qualcosa."
+msgid "Cannot open font from file: %s."
+msgstr "Impossibile aprie il font dal file: %s."
+
+msgid "Can't load font texture: %s."
+msgstr "Impossibile caricare la texture del font: %s."
+
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
@@ -9043,6 +14151,9 @@ msgstr "Sorgente non valida per l'anteprima."
msgid "Invalid source for shader."
msgstr "Sorgente non valida per la shader."
+msgid "Default Color"
+msgstr "Colore predefinito"
+
msgid "Filter"
msgstr "Filtro"
@@ -9052,6 +14163,27 @@ msgstr "Ripeti"
msgid "Invalid comparison function for that type."
msgstr "Funzione di confronto non valida per quel tipo."
+msgid "2D Mode"
+msgstr "Modalità 2D"
+
+msgid "Use All Surfaces"
+msgstr "Usa tutte le superfici"
+
+msgid "Surface Index"
+msgstr "Indice di superficie"
+
+msgid "A constant value cannot be passed for the '%s' parameter."
+msgstr "Un valore costante non può essere passato per il parametro \"%s\"."
+
+msgid "Recursion is not allowed."
+msgstr "La ricorsione è vietata."
+
+msgid "Expected constant expression."
+msgstr "Prevista un'espressione costante."
+
+msgid "Expected ',' or ')' after argument."
+msgstr "Prevista una \",\" o una \")\" dopo un argomento."
+
msgid "Varying may not be assigned in the '%s' function."
msgstr "Le variabili non possono essere assegnate nella funzione \"%s\"."
@@ -9063,3 +14195,111 @@ msgstr "Assegnazione all'uniforme."
msgid "Constants cannot be modified."
msgstr "Le constanti non possono essere modificate."
+
+msgid "No matching constructor found for: '%s'."
+msgstr "Nessun costruttore corrispondente trovato per: \"%s\"."
+
+msgid "Expected a function name."
+msgstr "Previsto il nome di una funzione."
+
+msgid "No matching function found for: '%s'."
+msgstr "Nessuna funzione corrispondente trovata per: \"%s\"."
+
+msgid "A constant value cannot be passed for '%s' parameter."
+msgstr "Un valore costante non può essere passato per il parametro \"%s\"."
+
+msgid "Unknown identifier in expression: '%s'."
+msgstr "Identificatore sconosciuto nell'espressione \"%s\"."
+
+msgid "Can't use function as identifier: '%s'."
+msgstr "Impossibile usare una funzione come identificatore: \"%s\"."
+
+msgid "Only integer expressions are allowed for indexing."
+msgstr "Sono ammesse solo espressioni intere per l'indicizzazione."
+
+msgid "Index [%d] out of range [%d..%d]."
+msgstr "Indice [%d] fuori intervallo [%d..%d]."
+
+msgid "Expected expression, found: '%s'."
+msgstr "Prevista un'espressione, trovato: \"%s\"."
+
+msgid "An object of type '%s' can't be indexed."
+msgstr "Un oggetto di tipo \"%s\" non può essere indicizzato."
+
+msgid "Invalid base type for increment/decrement operator."
+msgstr "Tipo base invalido per l'operatore d'incremento/decremento."
+
+msgid "Invalid use of increment/decrement operator in a constant expression."
+msgstr ""
+"Uso non valido dell'operatore d'incremento/decremento in un'espressione "
+"costante."
+
+msgid "Invalid token for the operator: '%s'."
+msgstr "Gettone non valido per l'operatore: \"%d\"."
+
+msgid "Unexpected end of expression."
+msgstr "Fine dell'espressione inaspettata."
+
+msgid "Invalid arguments to unary operator '%s': %s."
+msgstr "Argomenti non validi per l'operatore unario \"%s\": %s."
+
+msgid "Expected an identifier or '[' after type."
+msgstr "Previsto un identificatore o una \"[\" dopo un tipo."
+
+msgid "Expected an identifier."
+msgstr "Previsto un identificatore."
+
+msgid "Expected array initializer."
+msgstr "Previsto un inizializzatore di un vettore."
+
+msgid "Expected a constant expression."
+msgstr "Prevista un'espressione costante."
+
+msgid "Expected initialization of constant."
+msgstr "Prevista l'inizializzazione di una costante."
+
+msgid "Expected a boolean expression."
+msgstr "Prevista un'espressione booleana."
+
+msgid "Expected an integer expression."
+msgstr "Prevista un'espressione intera."
+
+msgid "'%s' must be placed within a '%s' block."
+msgstr "\"%s\" deve essere piazzato in un blocco \"%s\"."
+
+msgid "Expected an integer constant."
+msgstr "Prevista una costante intera."
+
+msgid "Expected an identifier for render mode."
+msgstr "Previsto un identificatore per la modalità di rendering."
+
+msgid "Duplicated render mode: '%s'."
+msgstr "Modalità di rendering duplicata: \"%s\"."
+
+msgid ""
+"Redefinition of render mode: '%s'. The '%s' mode has already been set to "
+"'%s'."
+msgstr ""
+"Ridefinizione della modalità di rendering: \"%s\". La modalità \"%s\" è "
+"stata già impostata come \"%s\"."
+
+msgid "Invalid render mode: '%s'."
+msgstr "Modalità di rendering non valida: \"%s\"."
+
+msgid "Unexpected token: '%s'."
+msgstr "Gettone inaspettato: \"%s\"."
+
+msgid "Expected a struct identifier."
+msgstr "Previsto un identificatore struct."
+
+msgid "Expected data type."
+msgstr "Previsto un tipo di dati."
+
+msgid "A '%s' data type is not allowed here."
+msgstr "Qui non è ammesso un tipo di dati \"%s\"."
+
+msgid "Expected an identifier or '['."
+msgstr "Previsto un identificatore o una \"[\"."
+
+msgid "Empty structs are not allowed."
+msgstr "Gli struct vuoti sono vietati."
diff --git a/editor/translations/editor/ja.po b/editor/translations/editor/ja.po
index f24c55d10f..556781ffbf 100644
--- a/editor/translations/editor/ja.po
+++ b/editor/translations/editor/ja.po
@@ -49,13 +49,15 @@
# T K <kidaaam@gmail.com>, 2022, 2023.
# MizunagiKB <mizukb@live.jp>, 2023.
# Saitos <purifyzombie@gmail.com>, 2023.
+# UENO Masahiro <ueno.mshr@gmail.com>, 2023.
+# ueshita <nalto32@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 00:54+0000\n"
-"Last-Translator: Saitos <purifyzombie@gmail.com>\n"
+"PO-Revision-Date: 2023-02-18 07:45+0000\n"
+"Last-Translator: ueshita <nalto32@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
"Language: ja\n"
@@ -141,40 +143,40 @@ msgid "Unknown Joypad Axis"
msgstr "ä¸æ˜Žãªã‚¸ãƒ§ã‚¤ãƒ‘ッド軸"
msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
-msgstr "値 %.2f ã®è»¸ %d (%s) ã®ã‚¸ãƒ§ã‚¤ãƒ‘ッド モーション"
+msgstr "ジョイパッドモーション 軸:%d (%s) 値:%.2f"
msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
-msgstr "下アクションã€ã‚½ãƒ‹ãƒ¼âœ•ã€Xbox Aã€Nintendo B"
+msgstr "下アクション。Sony ✕ã€Xbox Aã€Nintendo B"
msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
-msgstr "å³ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã€ã‚½ãƒ‹ãƒ¼â—‹ã€Xbox B,Nintendo A"
+msgstr "å³ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã€‚Sony â—‹ã€Xbox B,Nintendo A"
msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
-msgstr "左アクションã€ã‚½ãƒ‹ãƒ¼â–¡ã€Xbox Xã€Nintendo Y"
+msgstr "左アクション。Sony â–¡ã€Xbox Xã€Nintendo Y"
msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
-msgstr "上アクション, ソニー△, Xbox Y, Nintendo X"
+msgstr "上アクション。Sony â–³ã€Xbox Yã€Nintendo X"
msgid "Back, Sony Select, Xbox Back, Nintendo -"
-msgstr "Back, ソニー Select, Xbox Back, Nintendo -"
+msgstr "Back。Sony Selectã€Xbox Backã€Nintendo -"
msgid "Guide, Sony PS, Xbox Home"
-msgstr "ガイド, Sony PS, Xbox Home"
+msgstr "Guide。Sony PSã€Xbox Home"
msgid "Start, Nintendo +"
-msgstr "スタート, Nintendo +"
+msgstr "Start。Nintendo +"
msgid "Left Stick, Sony L3, Xbox L/LS"
-msgstr "左スティック, ソニー L3, Xbox L/LS"
+msgstr "左スティック。Sony L3ã€Xbox L/LS"
msgid "Right Stick, Sony R3, Xbox R/RS"
-msgstr "å³ã‚¹ãƒ†ã‚£ãƒƒã‚¯, ソニー R3, Xbox R/RS"
+msgstr "å³ã‚¹ãƒ†ã‚£ãƒƒã‚¯ã€‚Sony R3ã€Xbox R/RS"
msgid "Left Shoulder, Sony L1, Xbox LB"
-msgstr "左ショルダー, ソニー L1, Xbox LB"
+msgstr "左ショルダー。Sony L1ã€Xbox LB"
msgid "Right Shoulder, Sony R1, Xbox RB"
-msgstr "å³ã‚·ãƒ§ãƒ«ãƒ€ãƒ¼, ソニー R1, Xbox RB"
+msgstr "å³ã‚·ãƒ§ãƒ«ãƒ€ãƒ¼ã€‚Sony R1。Xbox RB"
msgid "D-pad Up"
msgstr "D-pad 上"
@@ -206,6 +208,12 @@ msgstr "Xbox パドル 4"
msgid "PS4/5 Touchpad"
msgstr "PS4/5 タッãƒãƒ‘ッド"
+msgid "Joypad Button %d"
+msgstr "ジョイパッドã®ãƒœã‚¿ãƒ³ %d"
+
+msgid "Pressure:"
+msgstr "圧力:"
+
msgid "touched"
msgstr "タッãƒ"
@@ -217,7 +225,7 @@ msgstr "ç”»é¢ %s (%s) 㧠%s 個ã®ã‚¿ãƒƒãƒãƒã‚¤ãƒ³ãƒˆ"
msgid ""
"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
-msgstr "ä½ç½® (%s) ã§é€Ÿåº¦ (%s) ã® %s 個ã®ã‚¿ãƒƒãƒãƒã‚¤ãƒ³ãƒˆã§ç”»é¢ã‚’ドラッグã—ã¾ã—ãŸ"
+msgstr "%s個ã®ã‚¿ãƒƒãƒãƒã‚¤ãƒ³ãƒˆã§ç”»é¢ã‚’ドラッグã—ã¾ã—ãŸã€‚ä½ç½®:(%s), 速度:(%s)"
msgid "Magnify Gesture at (%s) with factor %s"
msgstr "拡大ジェスãƒãƒ£ãƒ¼(%s)ã§å€çŽ‡ %sã«ã—ã¾ã™"
@@ -253,10 +261,10 @@ msgid "Right"
msgstr "å³"
msgid "Up"
-msgstr "上り"
+msgstr "上"
msgid "Down"
-msgstr "下り"
+msgstr "下"
msgid "Page Up"
msgstr "Page Up"
@@ -268,7 +276,7 @@ msgid "Home"
msgstr "Home"
msgid "End"
-msgstr "終り"
+msgstr "End"
msgid "Cut"
msgstr "切りå–ã‚Š"
@@ -283,7 +291,7 @@ msgid "Undo"
msgstr "å…ƒã«æˆ»ã™"
msgid "Redo"
-msgstr "ã‚„ã‚Šç›´ã™"
+msgstr "ã‚„ã‚Šç›´ã—"
msgid "Completion Query"
msgstr "自動補完"
@@ -384,9 +392,6 @@ msgstr "キャレットã¨é¸æŠžã‚’クリア"
msgid "Toggle Insert Mode"
msgstr "インサートモードを切り替ãˆã‚‹"
-msgid "Text Submitted"
-msgstr "é€ä¿¡ã•ã‚ŒãŸãƒ†ã‚­ã‚¹ãƒˆ"
-
msgid "Duplicate Nodes"
msgstr "ノードを複製"
@@ -470,6 +475,12 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "'%s' ã¨ã„ã†åå‰ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚"
+msgid "Cannot Revert - Action is same as initial"
+msgstr "å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ - アクションã¯åˆæœŸã¨åŒã˜ã§ã™"
+
+msgid "Revert Action"
+msgstr "アクションを元ã«æˆ»ã™"
+
msgid "Add Event"
msgstr "イベントを追加"
@@ -655,6 +666,9 @@ msgstr "トラックパスを変更"
msgid "Toggle this track on/off."
msgstr "ã“ã®ãƒˆãƒ©ãƒƒã‚¯ã® オン/オフ を切り替ãˆã€‚"
+msgid "Use Blend"
+msgstr "ブレンドを使用"
+
msgid "Update Mode (How this property is set)"
msgstr "Update モード (ã“ã®ãƒ—ロパティã®è¨­å®šæ–¹æ³•)"
@@ -724,6 +738,9 @@ msgstr "アニメーションクリップ:"
msgid "Toggle Track Enabled"
msgstr "トラックを有効 / 無効"
+msgid "Don't Use Blend"
+msgstr "ブレンドを使用ã—ãªã„"
+
msgid "Continuous"
msgstr "継続的"
@@ -775,6 +792,9 @@ msgstr "アニメーション補間モードã®å¤‰æ›´"
msgid "Change Animation Loop Mode"
msgstr "アニメーションã®ãƒ«ãƒ¼ãƒ—モードを変更"
+msgid "Change Animation Use Blend"
+msgstr "アニメーションã®ãƒ–レンドã®ä½¿ç”¨ã‚’変更"
+
msgid ""
"Compressed tracks can't be edited or removed. Re-import the animation with "
"compression disabled in order to edit."
@@ -1026,18 +1046,6 @@ msgstr "ベジェ曲線を使用"
msgid "Create RESET Track(s)"
msgstr "RESETトラックを作æˆ"
-msgid "Anim. Optimizer"
-msgstr "アニメーションã®ã‚ªãƒ—ティマイザー"
-
-msgid "Max. Velocity Error:"
-msgstr "最大ベロシティエラー:"
-
-msgid "Max. Angular Error:"
-msgstr "最大。角度エラー:"
-
-msgid "Max. Precision Error:"
-msgstr "最大精度エラー:"
-
msgid "Optimize"
msgstr "最é©åŒ–"
@@ -1062,9 +1070,6 @@ msgstr "スケール比:"
msgid "Select Transition and Easing"
msgstr "トランジションã¨ã‚¤ãƒ¼ã‚¸ãƒ³ã‚°ã‚’é¸æŠž"
-msgid "Anim. Baker"
-msgstr "アニメーションベイカー"
-
msgid "Select Tracks to Copy"
msgstr "コピーã™ã‚‹ãƒˆãƒ©ãƒƒã‚¯ã‚’é¸æŠž"
@@ -1149,6 +1154,9 @@ msgstr ""
"対象ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。有効ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’指定ã™ã‚‹ã‹ã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒŽãƒ¼ãƒ‰"
"ã«ã‚¹ã‚¯ãƒªãƒ—トをアタッãƒã—ã¦ãã ã•ã„。"
+msgid "Attached Script"
+msgstr "スクリプトを添付"
+
msgid "Connect to Node:"
msgstr "ノードã¸ã®æŽ¥ç¶š:"
@@ -1161,12 +1169,27 @@ msgstr "シグナルã‹ã‚‰:"
msgid "Filter Nodes"
msgstr "ノードをフィルタ"
+msgid "Go to Source"
+msgstr "ソースã«ç§»å‹•"
+
msgid "Scene does not contain any script."
msgstr "シーンã«ã¯ã‚¹ã‚¯ãƒªãƒ—トãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。"
msgid "Select Method"
msgstr "メソッドã®é¸æŠž"
+msgid "Filter Methods"
+msgstr "メソッドを絞り込む"
+
+msgid "No method found matching given filters."
+msgstr "指定ã•ã‚ŒãŸãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã«ä¸€è‡´ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+msgid "Script Methods Only"
+msgstr "スクリプト メソッドã®ã¿"
+
+msgid "Compatible Methods Only"
+msgstr "互æ›æ€§ã®ã‚るメソッドã®ã¿"
+
msgid "Remove"
msgstr "除去"
@@ -1234,6 +1257,9 @@ msgstr "切断"
msgid "Connect a Signal to a Method"
msgstr "メソッドã«ã‚·ã‚°ãƒŠãƒ«ã‚’接続"
+msgid "Edit Connection: '%s'"
+msgstr "接続を編集: '%s'"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "シグナル %s ã‹ã‚‰ã™ã¹ã¦ã®æŽ¥ç¶šã‚’除去ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ"
@@ -1426,6 +1452,15 @@ msgstr "エラー:"
msgid "%s Error"
msgstr "%s エラー"
+msgid "%s Error:"
+msgstr "%s エラー:"
+
+msgid "%s Source"
+msgstr "%s ソース"
+
+msgid "%s Source:"
+msgstr "%s ソース:"
+
msgid "Stack Trace"
msgstr "スタックトレース"
@@ -1950,6 +1985,9 @@ msgstr "自動読ã¿è¾¼ã¿ã‚’追加"
msgid "Path:"
msgstr "パス:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "パスを設定ã™ã‚‹ã‹ã€\"%s \"を押ã—ã¦ã‚¹ã‚¯ãƒªãƒ—トを作æˆã—ã¦ãã ã•ã„。"
+
msgid "Node Name:"
msgstr "ノードå:"
@@ -2323,9 +2361,6 @@ msgstr "é–‹ã"
msgid "Select Current Folder"
msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
-msgid "File exists, overwrite?"
-msgstr "ファイルãŒã™ã§ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
-
msgid "Select This Folder"
msgstr "ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
@@ -2819,6 +2854,9 @@ msgstr "ロケール国フィルターを変更"
msgid "Changed Locale Filter Mode"
msgstr "ロケールフィルターモードを変更"
+msgid "[Default]"
+msgstr "[デフォルト]"
+
msgid "Select a Locale"
msgstr "ロケールをé¸æŠž"
@@ -2834,12 +2872,20 @@ msgstr "フィルターã®ç·¨é›†"
msgid "Language:"
msgstr "言語:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "スクリプト:"
+
msgid "Country:"
msgstr "国:"
msgid "Language"
msgstr "言語:"
+msgctxt "Locale"
+msgid "Script"
+msgstr "スクリプト"
+
msgid "Country"
msgstr "国"
@@ -3621,6 +3667,23 @@ msgid "Select Android sources file"
msgstr "Androidã®ã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"
msgid ""
+"This will set up your project for gradle Android builds by installing the "
+"source template to \"res://android/build\".\n"
+"You can then apply modifications and build your own custom APK on export "
+"(adding modules, changing the AndroidManifest.xml, etc.).\n"
+"Note that in order to make gradle builds instead of using pre-built APKs, "
+"the \"Use Gradle Build\" option should be enabled in the Android export "
+"preset."
+msgstr ""
+"ã“ã®æ“作㯠\"res://android/build\" ã«ã‚½ãƒ¼ã‚¹ãƒ†ãƒ³ãƒ—レートをインストールã—ã€"
+"gradle Android ビルドã®ãŸã‚ã«ãƒ—ロジェクトをセットアップã—ã¾ã™ã€‚\n"
+"後ã‹ã‚‰è¨­å®šã«å¤‰æ›´ã‚’加ãˆãŸã‚Šã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ™‚ã«ã‚«ã‚¹ã‚¿ãƒ APKをビルドã§ãã¾ã™ (モ"
+"ジュールを追加ã™ã‚‹ã€AndroidManifest.xmlを変更ã™ã‚‹ãªã©)。\n"
+"ãªãŠã€ãƒ“ルド済ã¿ã®APKを使用ã™ã‚‹ä»£ã‚ã‚Šã«gradleビルドを作æˆã™ã‚‹ã«ã¯ã€Androidエ"
+"クスãƒãƒ¼ãƒˆãƒ—リセット㧠\"Use Gradle Build\" オプションãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹å¿…è¦"
+"ãŒã‚ã‚Šã¾ã™ã€‚"
+
+msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
"Remove the \"res://android/build\" directory manually before attempting this "
@@ -4014,6 +4077,9 @@ msgstr "ジョイスティック 4 上"
msgid "Joystick 4 Down"
msgstr "ジョイスティック 4 下"
+msgid "Joypad Axis %d %s (%s)"
+msgstr "ジョイパッドã®è»¸ %d %s (%s)"
+
msgid "All Devices"
msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹"
@@ -4026,6 +4092,20 @@ msgstr "入力を確èªã—ã¦ã„ã¾ã™..."
msgid "Filter by event..."
msgstr "イベントã§ãƒ•ã‚£ãƒ«ã‚¿..."
+msgid ""
+"Target platform requires 'ETC2/ASTC' texture compression. Enable 'Import "
+"ETC2 ASTC' in Project Settings."
+msgstr ""
+"ターゲットプラットフォームã¯ã€'ETC2/ASTC'テクスãƒãƒ£åœ§ç¸®ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚プロ"
+"ジェクト設定㧠'Import ETC2 ASTC'を有効ã«ã—ã¾ã™ã€‚"
+
+msgid ""
+"Target platform requires 'S3TC/BPTC' texture compression. Enable 'Import "
+"S3TC BPTC' in Project Settings."
+msgstr ""
+"ターゲットプラットフォームã¯ã€'S3TC/BPTC' テクスãƒãƒ£åœ§ç¸®ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚プロ"
+"ジェクト設定ã§'Import S3TC BPTC' を有効ã«ã—ã¾ã™ã€‚"
+
msgid "Project export for platform:"
msgstr "次ã®ãƒ—ラットフォームå‘ã‘ã«ãƒ—ロジェクトをエクスãƒãƒ¼ãƒˆ:"
@@ -4062,18 +4142,15 @@ msgstr "ファイル \"%s\" を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
msgid "Failed to export project files."
msgstr "プロジェクトファイルをエクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-msgid "Can't open file to read from path \"%s\"."
-msgstr "読ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’パス \"%s\" ã‹ã‚‰é–‹ã‘ã¾ã›ã‚“。"
-
-msgid "Can't open executable file from path \"%s\"."
-msgstr "パス \"%s\" ã‹ã‚‰å®Ÿè¡Œå¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã‘ã¾ã›ã‚“。"
-
msgid "Can't create encrypted file."
msgstr "æš—å·åŒ–ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã§ãã¾ã›ã‚“。"
msgid "Can't open encrypted file to write."
msgstr "æš—å·åŒ–ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã„ã¦æ›¸ã込むã“ã¨ãŒã§ãã¾ã›ã‚“。"
+msgid "Can't open file to read from path \"%s\"."
+msgstr "読ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’パス \"%s\" ã‹ã‚‰é–‹ã‘ã¾ã›ã‚“。"
+
msgid "Save ZIP"
msgstr "ZIPã‚’ä¿å­˜"
@@ -4861,6 +4938,9 @@ msgstr "æ–°ã—ã„構æˆ"
msgid "Remove Variation"
msgstr "ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’削除"
+msgid "Preloaded glyphs: %d"
+msgstr "プリロードã•ã‚ŒãŸã‚°ãƒªãƒ•: %d"
+
msgid ""
"Warning: There are no configurations specified, no glyphs will be pre-"
"rendered."
@@ -4941,6 +5021,35 @@ msgstr "テキストã®ã‚·ã‚§ã‚¤ãƒ—ã¨ã‚°ãƒªãƒ•ã‚’追加"
msgid "Glyphs from the Character Map"
msgstr "文字コード表ã®ã‚°ãƒªãƒ•"
+msgid ""
+"Add or remove glyphs from the character map to pre-render list:\n"
+"Note: Some stylistic alternatives and glyph variants do not have one-to-one "
+"correspondence to character, and not shown in this map, use \"Glyphs from "
+"the text\" tab to add these."
+msgstr ""
+"プリレンダーリストã«æ–‡å­—マップã‹ã‚‰ã‚°ãƒªãƒ•ã‚’追加ã¾ãŸã¯å‰Šé™¤ã—ã¾ã™ã€‚\n"
+"注æ„: 文体代替やグリフãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã®ä¸­ã«ã¯ã€æ–‡å­—ã¨ä¸€å¯¾ä¸€ã«å¯¾å¿œã—ã¦ãŠã‚‰ãšã€"
+"ã“ã®ãƒžãƒƒãƒ—ã«è¡¨ç¤ºã•ã‚Œã¦ã„ãªã„ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚ã“れらを追加ã™ã‚‹ã«ã¯ \"テキストã‹"
+"らグリフ\" タブを使用ã—ã¾ã™ã€‚"
+
+msgid "Dynamically rendered TrueType/OpenType font"
+msgstr "å‹•çš„ã«ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã•ã‚Œã‚‹TrueType/OpenTypeフォント"
+
+msgid "Prerendered multichannel(+true) signed distance field"
+msgstr "プリレンダリングã•ã‚ŒãŸãƒžãƒ«ãƒãƒãƒ£ãƒ³ãƒãƒ«(+true) 符å·ä»˜ãè·é›¢ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰"
+
+msgid "Can't load font texture:"
+msgstr "フォントテクスãƒãƒ£ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。"
+
+msgid "Image margin too big."
+msgstr "ç”»åƒã®ä½™ç™½ãŒå¤§ãã™ãŽã¾ã™ã€‚"
+
+msgid "Character margin too bit."
+msgstr "文字余白ãŒå¤šã™ãŽã¾ã™ã€‚"
+
+msgid "Pre-Import Scene"
+msgstr "シーンを事å‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
msgid "Importing Scene..."
msgstr "シーンをインãƒãƒ¼ãƒˆä¸­..."
@@ -4959,10 +5068,21 @@ msgstr "無効ã¾ãŸã¯å£Šã‚ŒãŸã‚¤ãƒ³ãƒãƒ¼ãƒˆæ¸ˆã‚¹ã‚¯ãƒªãƒ—ト(コンソーãƒ
msgid "Error running post-import script:"
msgstr "インãƒãƒ¼ãƒˆæ¸ˆã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œä¸­ã«ã‚¨ãƒ©ãƒ¼:"
+msgid "Did you return a Node-derived object in the `_post_import()` method?"
+msgstr ""
+"`_post_import()` メソッド内ã§ã€Nodeを継承ã—ãŸã‚ªãƒ–ジェクトを返ã—ã¾ã—ãŸã‹ï¼Ÿ"
+
msgid "Saving..."
msgstr "ä¿å­˜ä¸­..."
msgid ""
+"Error importing GLSL shader file: '%s'. Open the file in the filesystem dock "
+"in order to see the reason."
+msgstr ""
+"GLSLシェーダーファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: '%s', ファイルシ"
+"ステムã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã„ã¦åŽŸå› ã‚’確èªã—ã¦ãã ã•ã„。"
+
+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 ""
@@ -4970,12 +5090,22 @@ msgstr ""
"クスãƒãƒ£åœ§ç¸®ã‚’有効ã«ã—ã¦ãƒ¡ãƒ¢ãƒªä½¿ç”¨é‡ã‚’削減ã—ã¾ã™ï¼ˆé’ãƒãƒ£ãƒ³ãƒãƒ«ã¯ç ´æ£„ã•ã‚Œã¾"
"ã™ï¼‰ã€‚"
+msgid "2D/3D (Auto-Detect)"
+msgstr "2D/3D (自動切æ›ãˆ)"
+
msgid "2D"
msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid ""
+"Type: %s\n"
+"Import ID: %s"
+msgstr ""
+"åž‹: %s\n"
+"インãƒãƒ¼ãƒˆID: %s"
+
msgid "Error opening scene"
msgstr "シーンを開ãéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
@@ -5052,6 +5182,9 @@ msgstr ""
"ファイルシステムやインスペクターã«ã‚るリソースファイルをé¸æŠžã—ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆè¨­"
"定を調整ã—ã¾ã™ã€‚"
+msgid "Joypad Buttons"
+msgstr "ジョイパッドã®ãƒœã‚¿ãƒ³"
+
msgid "Device:"
msgstr "デãƒã‚¤ã‚¹:"
@@ -5852,6 +5985,12 @@ msgstr "グループ化済ã¿"
msgid "Add Node Here"
msgstr "ã“ã“ã«ãƒŽãƒ¼ãƒ‰ã‚’追加"
+msgid "Paste Node(s) Here"
+msgstr "ã“ã“ã«ãƒŽãƒ¼ãƒ‰ã‚’貼り付ã‘"
+
+msgid "Move Node(s) Here"
+msgstr "ã“ã“ã«ãƒŽãƒ¼ãƒ‰ã‚’移動"
+
msgid "Moving:"
msgstr "移動:"
@@ -6353,6 +6492,23 @@ msgstr ""
"リモートã®ãƒ‡ãƒã‚¤ã‚¹ä¸Šã§ä½¿ç”¨ã™ã‚‹å ´åˆã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã®ã‚ªãƒ—ション"
"も有効ã§ã‚ã‚Œã°ã‚ˆã‚ŠåŠ¹çŽ‡çš„ã«ãªã‚Šã¾ã™ã€‚"
+msgid ""
+"When this option is enabled, the editor debug server will stay open and "
+"listen for new sessions started outside of the editor itself."
+msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ãƒ‡ãƒãƒƒã‚¬ãƒ¼ã¯èµ·å‹•ã—ãŸã¾ã¾ã¨ãªã‚Šã€ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ä»¥å¤–"
+"ã§é–‹å§‹ã•ã‚ŒãŸæ–°ã—ã„実行を監視ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚"
+
+msgid "Run Multiple Instances"
+msgstr "実行インスタンス数"
+
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "インスタンス %d個"
+
+msgid "Overrides (%d)"
+msgstr "上書ã (%d)"
+
msgid " - Variation"
msgstr " - ãƒãƒªã‚¨ãƒ¼ã‚·ãƒ§ãƒ³"
@@ -9326,9 +9482,6 @@ msgstr "アクション デッドゾーンを変更"
msgid "Erase Input Action"
msgstr "入力アクションを消去"
-msgid "Rename Input Action Event"
-msgstr "入力アクションイベントã®åå‰ã‚’変更ã™ã‚‹"
-
msgid "Project Settings (project.godot)"
msgstr "プロジェクト設定 (project.godot)"
@@ -10091,6 +10244,12 @@ msgstr "ジオメトリを解æžã—ã¦ã„ã¾ã™..."
msgid "Done!"
msgstr "完了ï¼"
+msgid "Rename Action"
+msgstr "アクションåを変更"
+
+msgid "Rename Actions Localized name"
+msgstr "ローカライズã•ã‚Œã‚‹ã‚¢ã‚¯ã‚·ãƒ§ãƒ³åを変更"
+
msgid "Error loading %s: %s."
msgstr "%s ã®ãƒ­ãƒ¼ãƒ‰ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s"
@@ -10838,9 +10997,6 @@ msgstr ""
"色: #%s\n"
"左クリック: 色をセット"
-msgid "Pick a color from the editor window."
-msgstr "エディターウィンドウã‹ã‚‰è‰²ã‚’é¸æŠžã€‚"
-
msgid "Select a picker shape."
msgstr "ピッカーシェイプをé¸æŠž"
@@ -10877,9 +11033,6 @@ msgstr "警告ï¼"
msgid "Please Confirm..."
msgstr "確èª"
-msgid "Must use a valid extension."
-msgstr "有効ãªæ‹¡å¼µå­ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-
msgid "Enable grid minimap."
msgstr "グリッドミニマップを有効ã«ã™ã‚‹ã€‚"
diff --git a/editor/translations/editor/ko.po b/editor/translations/editor/ko.po
index 3400b8d86e..af042d8503 100644
--- a/editor/translations/editor/ko.po
+++ b/editor/translations/editor/ko.po
@@ -498,12 +498,6 @@ msgstr "베지어 곡선 사용"
msgid "Create RESET Track(s)"
msgstr "재설정 트랙 만들기"
-msgid "Anim. Optimizer"
-msgstr "애니메ì´ì…˜ 최ì í™”"
-
-msgid "Max. Angular Error:"
-msgstr "최대 ê°ë„ 오류:"
-
msgid "Optimize"
msgstr "최ì í™”"
@@ -1502,9 +1496,6 @@ msgstr "열기"
msgid "Select Current Folder"
msgstr "현재 í´ë” ì„ íƒ"
-msgid "File exists, overwrite?"
-msgstr "파ì¼ì´ 존재합니다. ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?"
-
msgid "Select This Folder"
msgstr "ì´ í´ë” ì„ íƒ"
@@ -7296,9 +7287,6 @@ msgstr "ì•¡ì…˜ ë°ë“œì¡´ 바꾸기"
msgid "Erase Input Action"
msgstr "입력 액션 지우기"
-msgid "Rename Input Action Event"
-msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íŠ¸ ì´ë¦„ 바꾸기"
-
msgid "Project Settings (project.godot)"
msgstr "프로ì íŠ¸ 설정 (project.godot)"
@@ -8471,9 +8459,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "AnimationPlayer 루트 노드가 올바른 노드가 아닙니다."
-msgid "Pick a color from the editor window."
-msgstr "ì—디터 ì°½ì—ì„œ 색ìƒì„ 고르세요."
-
msgid "Switch between hexadecimal and code values."
msgstr "16진수나 코드 값으로 전환합니다."
@@ -8505,9 +8490,6 @@ msgstr "경고!"
msgid "Please Confirm..."
msgstr "확ì¸í•´ì£¼ì„¸ìš”..."
-msgid "Must use a valid extension."
-msgstr "올바른 확장ìžë¥¼ 사용해야 합니다."
-
msgid "Enable grid minimap."
msgstr "그리드 ë¯¸ë‹ˆë§µì„ í™œì„±í™”í•©ë‹ˆë‹¤."
diff --git a/editor/translations/editor/lv.po b/editor/translations/editor/lv.po
index 79048ab1e7..13041ba95c 100644
--- a/editor/translations/editor/lv.po
+++ b/editor/translations/editor/lv.po
@@ -386,12 +386,6 @@ msgstr "Izmanto Bezjē Līknes"
msgid "Create RESET Track(s)"
msgstr "Izveidot atiestatīšanas celiņu(s)"
-msgid "Anim. Optimizer"
-msgstr "Anim. OptimizÄ“tÄjs"
-
-msgid "Max. Angular Error:"
-msgstr "Maks. RotÄcijas Kļūda:"
-
msgid "Optimize"
msgstr "Optimizēt"
@@ -1267,9 +1261,6 @@ msgstr "Atvērt"
msgid "Select Current Folder"
msgstr "Izvēlēties pašreizējo mapi"
-msgid "File exists, overwrite?"
-msgstr "Fails eksistÄ“. PÄrrakstÄ«t ?"
-
msgid "Select This Folder"
msgstr "Izvēlēties Šo Mapi"
@@ -3515,9 +3506,6 @@ msgstr "NederÄ«ga animÄcija: '%s'."
msgid "Nothing connected to input '%s' of node '%s'."
msgstr "Nekas nav savienots ar ieeju '%s' mezglam '%s'."
-msgid "Pick a color from the editor window."
-msgstr "IzvÄ“lÄ“ties krÄsu no redaktora loga."
-
msgid "Add current color as a preset."
msgstr "Pievienot paÅ¡reizÄ“jo krÄsu kÄ iepriekÅ¡noteiktu krÄsu."
@@ -3527,9 +3515,6 @@ msgstr "BrÄ«dinÄjums!"
msgid "Please Confirm..."
msgstr "LÅ«dzu apstipriniet..."
-msgid "Must use a valid extension."
-msgstr "JÄbÅ«t derÄ«gai galotnei."
-
msgid "Enable grid minimap."
msgstr "Iespējot režģa minikarti."
diff --git a/editor/translations/editor/ms.po b/editor/translations/editor/ms.po
index 83a970ad95..170ef33d4b 100644
--- a/editor/translations/editor/ms.po
+++ b/editor/translations/editor/ms.po
@@ -428,12 +428,6 @@ msgstr "Guna Lengkung Bezier"
msgid "Create RESET Track(s)"
msgstr "Cipta Trek RESET"
-msgid "Anim. Optimizer"
-msgstr "Pengoptimum Anim."
-
-msgid "Max. Angular Error:"
-msgstr "Max. Ralat Sudut:"
-
msgid "Optimize"
msgstr "Mengoptimumkan"
@@ -1309,9 +1303,6 @@ msgstr "Buka"
msgid "Select Current Folder"
msgstr "Pilih Folder Semasa"
-msgid "File exists, overwrite?"
-msgstr "Fail wujud, tulis ganti?"
-
msgid "Select This Folder"
msgstr "Pilih Folder Ini"
@@ -4216,8 +4207,5 @@ msgstr "Nod A mestilah PhysicsBody2D"
msgid "Node B must be a PhysicsBody2D"
msgstr "Nod B mestilah PhysicsBody2D"
-msgid "Must use a valid extension."
-msgstr "Mesti menggunakan sambungan yang sah."
-
msgid "Constants cannot be modified."
msgstr "Pemalar tidak dapat diubah suai."
diff --git a/editor/translations/editor/nb.po b/editor/translations/editor/nb.po
index e2001fa866..983d36f982 100644
--- a/editor/translations/editor/nb.po
+++ b/editor/translations/editor/nb.po
@@ -370,12 +370,6 @@ msgstr "GÃ¥ til forrige steg"
msgid "Use Bezier Curves"
msgstr "Bruk Bezier-kurver"
-msgid "Anim. Optimizer"
-msgstr "Anim. Optimaliserer"
-
-msgid "Max. Angular Error:"
-msgstr "Max. Vinklet Feilmelding:"
-
msgid "Optimize"
msgstr "Optimaliser"
@@ -3185,9 +3179,6 @@ msgstr "Avinstallerer …"
msgid "Invalid animation: '%s'."
msgstr "Ugyldig animasjon: '%s'."
-msgid "Must use a valid extension."
-msgstr "MÃ¥ ha en gyldig filutvidelse."
-
msgid "(Other)"
msgstr "(Annet)"
diff --git a/editor/translations/editor/nl.po b/editor/translations/editor/nl.po
index 668568460d..d8b1c4d2a6 100644
--- a/editor/translations/editor/nl.po
+++ b/editor/translations/editor/nl.po
@@ -60,13 +60,14 @@
# voylin <0voylin0@gmail.com>, 2022.
# Gert-dev <qnyasgjhapqyuhoibr@kiabws.com>, 2022.
# Nnn <irri2020@outlook.com>, 2022.
+# Jasper <jasper@dj-dj.be>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-08 12:14+0000\n"
-"Last-Translator: Uxilo <jmolendijk93@gmail.com>\n"
+"PO-Revision-Date: 2023-02-13 03:50+0000\n"
+"Last-Translator: Jasper <jasper@dj-dj.be>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
@@ -76,6 +77,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.16-dev\n"
+msgid "Unset"
+msgstr "Niet ingesteld"
+
msgid "Physical"
msgstr "Fysiek"
@@ -103,6 +107,48 @@ msgstr "Dubbel Klik"
msgid "Mouse motion at position (%s) with velocity (%s)"
msgstr "Muis beweging op positie (%s) met snelheid (%s)"
+msgid "Left Stick X-Axis, Joystick 0 X-Axis"
+msgstr "Linker Pook X-As, Joystick 0 X-As"
+
+msgid "Left Stick Y-Axis, Joystick 0 Y-Axis"
+msgstr "Linker Pook Y-As, Joystick 0 Y-As"
+
+msgid "Right Stick X-Axis, Joystick 1 X-Axis"
+msgstr "Rechter Pook X-As, Joystick 1 X-As"
+
+msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
+msgstr "Rechter Pook Y-As, Joystick 1 Y-As"
+
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "Joystick 2 X-As, Linker Trekker, Sony L2, Xbox LT"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "Joystick 2 Y-As, Rechter Trekker, Sony R2, Xbox RT"
+
+msgid "Unknown Joypad Axis"
+msgstr "Onbekende Joypad As"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "Joypad Beweging op As %d (%s) met Waarde %.2f"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "Onderste Actie, Sony Kruisje, Xbox A, Nintendo B"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Rechter Actie, Sony Cirkel, Xbox B, Nintendo A"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "Linker Actie, Sony Vierkantje, Xbox X, Nintendo Y"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "Bovenste Actie, Sony Driehoekje, Xbox Y, Nintendo X"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Terug, Sony Selecteer, Xbox Terug, Nintendo -"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "Gids, Sony PS, Xbox Thuis"
+
msgid "Select"
msgstr "Selecteer"
@@ -115,6 +161,9 @@ msgstr "Omhoog"
msgid "Down"
msgstr "Omlaag"
+msgid "Page Up"
+msgstr "Pagina Omhoog"
+
msgid "End"
msgstr "Einde"
@@ -136,6 +185,9 @@ msgstr "Opnieuw"
msgid "Delete"
msgstr "Verwijder"
+msgid "Caret Page Up"
+msgstr "Caret Pagina Omhoog"
+
msgid "Select All"
msgstr "Alles selecteren"
@@ -208,6 +260,9 @@ msgstr "Verwijder Actie"
msgid "Cannot Remove Action"
msgstr "Kan Actie Niet Verwijderen"
+msgid "Remove Event"
+msgstr "Remote Event"
+
msgid "Filter by name..."
msgstr "Filter op naam..."
@@ -553,12 +608,6 @@ msgstr "Gebruik Bezier Curves"
msgid "Create RESET Track(s)"
msgstr "Creëer RESET Track(s)"
-msgid "Anim. Optimizer"
-msgstr "Anim. Optimalisator"
-
-msgid "Max. Angular Error:"
-msgstr "Max. Fout in hoek:"
-
msgid "Optimize"
msgstr "Optimaliseren"
@@ -803,6 +852,9 @@ msgstr "Overeenkomsten:"
msgid "Description:"
msgstr "Omschrijving:"
+msgid "Remote %s:"
+msgstr "Remote %s:"
+
msgid "Debugger"
msgstr "Debugger"
@@ -1604,9 +1656,6 @@ msgstr "Openen"
msgid "Select Current Folder"
msgstr "Huidige Map Selecteren"
-msgid "File exists, overwrite?"
-msgstr "Bestand bestaat, overschrijven?"
-
msgid "Select This Folder"
msgstr "Deze map selecteren"
@@ -1749,6 +1798,9 @@ msgstr "overschrijft %s:"
msgid "default:"
msgstr "standaard:"
+msgid "Operators"
+msgstr "Operatoren"
+
msgid "Theme Properties"
msgstr "Thema-eigenschappen"
@@ -1864,6 +1916,9 @@ msgstr "Plaats Omlaag"
msgid "Resize Array"
msgstr "Array Grootte Wijzigen"
+msgid "New Size:"
+msgstr "Nieuwe Grootte:"
+
msgid "Set %s"
msgstr "Zet %s"
@@ -2073,9 +2128,15 @@ msgstr "Kan niet ongedaan maken terwijl de muis knoppen ingedrukt zijn."
msgid "Nothing to undo."
msgstr "Niks om ongedaan te maken."
+msgid "Remote Undo: %s"
+msgstr "Op afstand ongedaan maken: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "Kan niet opnieuw doen terwijl de muis knoppen ingedrukt zijn."
+msgid "Remote Redo: %s"
+msgstr "Op afstand opnieuw doen: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "Een scène die nooit opgeslagen is kan niet opnieuw laden worden."
@@ -2556,6 +2617,9 @@ msgstr "Beeldvenster kiezen"
msgid "Selected node is not a Viewport!"
msgstr "Geselecteerde knoop is geen Viewport!"
+msgid "Size:"
+msgstr "Grootte:"
+
msgid "Remove Item"
msgstr "Verwijder Item"
@@ -2593,6 +2657,9 @@ msgstr "Nieuw Script"
msgid "Extend Script"
msgstr "Script uitbreiden"
+msgid "Remote Debug"
+msgstr "Remote Debug"
+
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the Export menu or define an existing preset "
@@ -2622,6 +2689,13 @@ msgstr "Sneltoetsen"
msgid "Binding"
msgstr "Binding"
+msgid ""
+"Hold %s to round to integers.\n"
+"Hold Shift for more precise changes."
+msgstr ""
+"Houdt %s ingedrukt om op gehele getallen af te ronden.\n"
+"Houdt Shift ingedrukt voor preciezere veranderingen."
+
msgid "All Devices"
msgstr "Alle Apparaten"
@@ -3233,6 +3307,9 @@ msgstr "Omleidingen per lokalisatie:"
msgid "Locale"
msgstr "Localisatie"
+msgid "Set %s on %d nodes"
+msgstr "Verwijder %d knopen"
+
msgid "Select a single node to edit its signals and groups."
msgstr "Selecteer één knoop om zijn signalen groepen aan te passen."
@@ -3626,6 +3703,9 @@ msgstr "Knopen verbinden."
msgid "Remove selected node or transition."
msgstr "De uitgekozen knoop of overgang verwijderen."
+msgid "Transition:"
+msgstr "Overgang:"
+
msgid "Play Mode:"
msgstr "Afspeelmodus:"
@@ -3860,6 +3940,9 @@ msgstr "Verplaats %d CanvasItems"
msgid "Move CanvasItem \"%s\" to (%d, %d)"
msgstr "CanvasItem \"%s\" naar (%d, %d) verplaatsen"
+msgid "Scaling:"
+msgstr "Schaal:"
+
msgid "Lock Selected"
msgstr "Slot Geselecteerd"
@@ -3893,6 +3976,11 @@ msgstr "Alt + Slepen : Schalen."
msgid "V: Set selected node's pivot position."
msgstr "V: Stel het draaipunt in van de geselecteerde Node."
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"Alt+RMB: Toont een lijst van alle nodes op de aangeklikte positie, inclusief "
+"vergrendeld."
+
msgid "Move Mode"
msgstr "Verplaatsingsmodus"
@@ -3905,6 +3993,9 @@ msgstr "Schaalmodus"
msgid "Shift: Scale proportionally."
msgstr "Shift: Proportioneel schalen."
+msgid "Show list of selectable nodes at position clicked."
+msgstr "Toont een lijst van selecteerbare nodes op de aangeklikte positie."
+
msgid "Click to change object's rotation pivot."
msgstr "Klik om het draaipunt van het object aan te passen."
@@ -4273,6 +4364,14 @@ msgstr ""
"Wanneer dit op afstand wordt gebruikt op een andere machine, is dit "
"efficiënter met de netwerk bestandssysteem optie aan."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Run %d Instantie"
+msgstr[1] "Run %d Instanties"
+
+msgid " - Variation"
+msgstr " - Variatie"
+
msgid "Convert to CPUParticles2D"
msgstr "Omzetten naar CPUParticles2D"
@@ -4312,6 +4411,9 @@ msgstr "Oppervlakte Punten+Normaal (Gericht)"
msgid "Volume"
msgstr "Volume"
+msgid "Emission Source:"
+msgstr "Emissiebron:"
+
msgid "Generate Visibility AABB"
msgstr "Genereer Zichtbaarheid AABB"
@@ -4624,6 +4726,9 @@ msgstr "Arrangeer Rotatie naar Aanzicht"
msgid "None"
msgstr "Geen"
+msgid "Translating:"
+msgstr "Translatie:"
+
msgid "Rotating %s degrees."
msgstr "Roteren %s graden."
@@ -4645,6 +4750,9 @@ msgstr "Weergave Overdraw"
msgid "Display Unshaded"
msgstr "Weergave Zonder Shading"
+msgid "Normal Buffer"
+msgstr "Normale Buffer"
+
msgid "View Environment"
msgstr "Bekijk Omgeving"
@@ -5467,6 +5575,15 @@ msgstr "Ongeldige geometrie, kan geen light occluder creëren."
msgid "Create LightOccluder2D Sibling"
msgstr "Creëer LightOccluder2D Sibling"
+msgid "Simplification:"
+msgstr "Simplificatie:"
+
+msgid "Shrink (Pixels):"
+msgstr "Krimpen (Pixels):"
+
+msgid "Grow (Pixels):"
+msgstr "Vergroot (Pixels):"
+
msgid "Update Preview"
msgstr "Voorbeeld bijwerken"
@@ -5512,6 +5629,9 @@ msgstr "(leeg)"
msgid "Animations:"
msgstr "Animaties:"
+msgid "Delete Animation"
+msgstr "Animatie wissen"
+
msgid "Animation Frames:"
msgstr "Animatiebeelden:"
@@ -5560,6 +5680,29 @@ msgstr "Automatisch Snijden"
msgid "Step:"
msgstr "Stap:"
+msgid "1 color"
+msgid_plural "{num} colors"
+msgstr[0] "1 kleur"
+msgstr[1] "{num} kleuren"
+
+msgid "1 constant"
+msgid_plural "{num} constants"
+msgstr[0] "1 constante"
+msgstr[1] "{num} constantes"
+
+msgid "1 font size"
+msgid_plural "{num} font sizes"
+msgstr[0] "1 lettertype grootte"
+msgstr[1] "{num} lettertype groottes"
+
+msgid "1 stylebox"
+msgid_plural "{num} styleboxes"
+msgstr[0] "1 stijlbox"
+msgstr[1] "{num} stijlboxen"
+
+msgid "Updating the editor"
+msgstr "Editor aan het updaten"
+
msgid "Remove Class Items"
msgstr "Class Items Verwijderen"
@@ -5644,6 +5787,9 @@ msgstr "Horizontaal omdraaien"
msgid "Flip Vertically"
msgstr "Verticaal omdraaien"
+msgid "Scattering:"
+msgstr "Verspreiding:"
+
msgid "Yes"
msgstr "Ja"
@@ -5656,6 +5802,9 @@ msgstr "Fout"
msgid "Commit"
msgstr "Commit"
+msgid "Discard changes"
+msgstr "Wijzigingen ongedaan maken"
+
msgid "Staged Changes"
msgstr "Gefaseerde Wijzigingen"
@@ -5689,9 +5838,18 @@ msgstr "SSH Wachtwoord"
msgid "Detect new changes"
msgstr "Detecteer nieuwe veranderingen"
+msgid "Discard all changes"
+msgstr "Alle wijzigingen ongedaan maken"
+
msgid "Commit Changes"
msgstr "Commit veranderingen"
+msgid "Remote Name"
+msgstr "Remote Naam"
+
+msgid "Remote URL"
+msgstr "Remote URL"
+
msgid "Modified"
msgstr "Bewerkt"
@@ -6150,10 +6308,10 @@ msgid ""
"incident vector, and Nref, the reference vector. If the dot product of I and "
"Nref is smaller than zero the return value is N. Otherwise -N is returned."
msgstr ""
-"Geeft de vector met dezelfde richting als de referentievector. De functie "
-"bevat drie vectorparameters: N, de oriëntatievector, I, de incidentvector en "
-"Nref, de referentievector. Als het inproduct van I en Nref kleiner dan nul "
-"is, is de terugkeerwaarde N, anders -N."
+"Geeft de vector dat naar dezelfde richting als de referentievector kijkt. De "
+"functie bevat drie vector parameters: N, de oriëntatievector, I, de "
+"incidenten vector en Nref, de referentievector. Als het punt product van I "
+"en Nref kleiner dan nul is, is de terugkeer waarde N, anders -N."
msgid ""
"Returns falloff based on the dot product of surface normal and view "
@@ -6369,6 +6527,12 @@ msgstr ""
msgid "Are you sure to run %d projects at once?"
msgstr "Weet je zeker dat je %d projecten wilt uitvoeren?"
+msgid "Remove %d projects from the list?"
+msgstr "%d projecten uit de lijst verwijderen?"
+
+msgid "Remove this project from the list?"
+msgstr "Dit project van de lijst verwijderen?"
+
msgid ""
"Remove all missing projects from the list?\n"
"The project folders' contents won't be modified."
@@ -6436,9 +6600,6 @@ msgstr "Wijzig Action Deadzone"
msgid "Erase Input Action"
msgstr "Verwijder Input Actie"
-msgid "Rename Input Action Event"
-msgstr "Hernoem Input Action Event"
-
msgid "Project Settings (project.godot)"
msgstr "Projectinstellingen (project.godot)"
@@ -6554,6 +6715,9 @@ msgstr "3D Scène"
msgid "User Interface"
msgstr "Gebruikersomgeving"
+msgid "Root Name:"
+msgstr "Root Naam:"
+
msgid "Error loading scene from %s"
msgstr "Fout bij het laden van scène uit %s"
@@ -6739,6 +6903,16 @@ msgstr "(Verbonden vanaf)"
msgid "Node configuration warning:"
msgstr "Waarschuwing over knoopconfiguratie:"
+msgid "Node has one connection."
+msgid_plural "Node has {num} connections."
+msgstr[0] "Node heeft een connectie."
+msgstr[1] "Node heeft {num} connecties."
+
+msgid "Node is in this group:"
+msgid_plural "Node is in the following groups:"
+msgstr[0] "Node is in deze groep:"
+msgstr[1] "Node is in de volgende groepen:"
+
msgid "Open Script:"
msgstr "Open Script:"
@@ -7010,6 +7184,9 @@ msgstr "Grootte"
msgid "Network Profiler"
msgstr "Netwerk Profiler"
+msgid "Delete Property?"
+msgstr "Property verwijderen?"
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr "Een NavigationMesh-bron is nodig om deze knoop te laten werken."
@@ -7126,6 +7303,14 @@ msgstr "APK Expansion werkt niet samen met Android App Bundle."
msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Bestandsnaam niet toegestaan! Android APK vereist een *.apk extensie."
+msgid ""
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
+"Please reinstall Android build template from 'Project' menu."
+msgstr ""
+"Android build versie mismatch: Template geïnstalleerd: %s, Godot versie: %s. "
+"Gelieve het Android build template vanuit het 'Project' menu te "
+"Herinstalleren."
+
msgid "Building Android Project (gradle)"
msgstr "Bouwen van Android Project (gradle)"
@@ -7319,6 +7504,9 @@ msgstr ""
"Niets is zichtbaar want meshes zijn niet toegewezen aan de tekendoorlopen "
"(draw passes)."
+msgid "Generating Probe Volumes"
+msgstr "Sonde volumes aan het genereren"
+
msgid "This body will be ignored until you set a mesh."
msgstr "Dit lichaam zal worden genegeerd totdat je een mesh instelt."
@@ -7363,9 +7551,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "De AnimationPlayer wortel is een ongeldig knoop."
-msgid "Pick a color from the editor window."
-msgstr "Kies een kleur uit het editorvenster."
-
msgid "Switch between hexadecimal and code values."
msgstr "Wissel tussen hexadecimaal en codewaarden."
@@ -7396,9 +7581,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Bevestig alstublieft..."
-msgid "Must use a valid extension."
-msgstr "Een geldige extensie moet gebruikt worden."
-
msgid "Enable grid minimap."
msgstr "Rasteroverzicht inschakelen."
@@ -7441,3 +7623,15 @@ msgstr "Toewijzing aan uniform."
msgid "Constants cannot be modified."
msgstr "Constanten kunnen niet worden aangepast."
+
+msgid "Invalid argument name."
+msgstr "Ongeldige argument naam."
+
+msgid "Invalid macro argument list."
+msgstr "Ongeldige macro argumenten lijst."
+
+msgid "Invalid macro argument."
+msgstr "Ongeldig macro argument."
+
+msgid "Invalid macro argument count."
+msgstr "Ongeldige hoeveelheid macro argumenten."
diff --git a/editor/translations/editor/pl.po b/editor/translations/editor/pl.po
index 68805f2e2d..d32906f9e1 100644
--- a/editor/translations/editor/pl.po
+++ b/editor/translations/editor/pl.po
@@ -71,12 +71,14 @@
# Jan Kurzak <Iqaz0oki@outlook.com>, 2022, 2023.
# Wojciech Pluta <wojciech.pluta@oracle.com>, 2022.
# mars9t <mars9t.dev@gmail.com>, 2023.
+# Michał Walczak <mjf.walczak@gmail.com>, 2023.
+# Lukas <ox86udoo@duck.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 00:54+0000\n"
+"PO-Revision-Date: 2023-02-20 10:58+0000\n"
"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
@@ -229,6 +231,12 @@ msgstr "Xbox paletka 4"
msgid "PS4/5 Touchpad"
msgstr "PS4/5 panel dotykowy"
+msgid "Joypad Button %d"
+msgstr "Przycisk joysticka %d"
+
+msgid "Pressure:"
+msgstr "Nacisk:"
+
msgid "touched"
msgstr "dotknięty"
@@ -408,9 +416,6 @@ msgstr "Wyczyść kursory i zaznaczenie"
msgid "Toggle Insert Mode"
msgstr "Przełącz tryb wstawiania"
-msgid "Text Submitted"
-msgstr "Tekst przedłożony"
-
msgid "Duplicate Nodes"
msgstr "Duplikuj węzły"
@@ -491,6 +496,12 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Akcja o nazwie \"%s\" już istnieje."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "Nie można przywrócić - akcja jest taka sama jak początkowa"
+
+msgid "Revert Action"
+msgstr "Przywróć akcję"
+
msgid "Add Event"
msgstr "Dodaj zdarzenie"
@@ -614,9 +625,30 @@ msgstr "Zmień długość animacji"
msgid "Change Animation Loop"
msgstr "Zmień pętle animacji"
+msgid "Can't change loop mode on animation instanced from imported scene."
+msgstr ""
+"Nie można zmienić trybu zapętlania w animacji instancjonowanej z "
+"importowanej sceny."
+
+msgid "Can't change loop mode on animation embedded in another scene."
+msgstr ""
+"Nie można zmienić trybu zapętlania w animacji zagnieżdżonej w innej scenie."
+
msgid "Property Track"
msgstr "Ścieżka właściwości"
+msgid "3D Position Track"
+msgstr "Ścieżka pozycji 3D"
+
+msgid "3D Rotation Track"
+msgstr "Ścieżka obrotu 3D"
+
+msgid "3D Scale Track"
+msgstr "Ścieżka skali 3D"
+
+msgid "Blend Shape Track"
+msgstr "Ścieżka mieszania kształtu"
+
msgid "Call Method Track"
msgstr "Ścieżka wywołania metody"
@@ -647,12 +679,18 @@ msgstr "Funkcje:"
msgid "Audio Clips:"
msgstr "Klipy dźwiękowe:"
+msgid "Animation Clips:"
+msgstr "Klipy animacji:"
+
msgid "Change Track Path"
msgstr "Zmień adres ścieżki"
msgid "Toggle this track on/off."
msgstr "Włącz/wyłącz ścieżkę."
+msgid "Use Blend"
+msgstr "Użyj mieszania"
+
msgid "Update Mode (How this property is set)"
msgstr "Sposób odświeżania (jak ta właściwość jest ustawiana)"
@@ -677,6 +715,9 @@ msgstr "Obrót:"
msgid "Scale:"
msgstr "Skala:"
+msgid "Blend Shape:"
+msgstr "Kształt mieszania:"
+
msgid "Type:"
msgstr "Typ:"
@@ -692,6 +733,18 @@ msgstr "Uchwyt wew.:"
msgid "Out-Handle:"
msgstr "Uchwyt zew.:"
+msgid "Handle mode: Free\n"
+msgstr "Tryb uchwytów: swobodne\n"
+
+msgid "Handle mode: Linear\n"
+msgstr "Tryb uchwytów: liniowe\n"
+
+msgid "Handle mode: Balanced\n"
+msgstr "Tryb uchwytów: zrównoważone\n"
+
+msgid "Handle mode: Mirrored\n"
+msgstr "Tryb uchwytów: odbite\n"
+
msgid "Stream:"
msgstr "Strumień:"
@@ -707,6 +760,9 @@ msgstr "Animacja:"
msgid "Toggle Track Enabled"
msgstr "Przełącz aktywność ścieżki"
+msgid "Don't Use Blend"
+msgstr "Nie używaj mieszania"
+
msgid "Continuous"
msgstr "Ciągłe"
@@ -725,6 +781,12 @@ msgstr "Liniowy"
msgid "Cubic"
msgstr "Sześcienny"
+msgid "Linear Angle"
+msgstr "KÄ…t liniowy"
+
+msgid "Cubic Angle"
+msgstr "Kąt sześcienny"
+
msgid "Clamp Loop Interp"
msgstr "Przytnij"
@@ -752,12 +814,31 @@ msgstr "Zmień sposób interpolacji animacji"
msgid "Change Animation Loop Mode"
msgstr "Zmień sposób zapętlania animacji"
+msgid "Change Animation Use Blend"
+msgstr "Zmień animację, by używała mieszania"
+
+msgid ""
+"Compressed tracks can't be edited or removed. Re-import the animation with "
+"compression disabled in order to edit."
+msgstr ""
+"Skompresowane ścieżki nie mogą być edytowane ani usuwane. Przeimportuj "
+"animację z wyłączoną kompresją, by edytować."
+
msgid "Remove Anim Track"
msgstr "Usuń ścieżkę animacji"
+msgid "Create new track for %s and insert key?"
+msgstr "Utworzyć nową ścieżkę dla %s i wstawić klatki kluczowe?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "Utworzyć %d nowych ścieżek i wstawić klatki kluczowe?"
+
msgid "Create"
msgstr "Utwórz"
+msgid "Animation Insert Key"
+msgstr "Animacja wstaw klatkÄ™ kluczowÄ…"
+
msgid "node '%s'"
msgstr "węzeł \"%s\""
@@ -777,6 +858,15 @@ msgstr "Zmień krok animacji"
msgid "Rearrange Tracks"
msgstr "Przestaw ścieżki"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr ""
+"Ścieżki kształtu mieszania mogą być zastosowane tylko do węzłów "
+"MeshInstance3D."
+
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"Ścieżki pozycji/obrotu/skali 3D mogą być zastosowane tylko do węzłów 3D."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -803,6 +893,18 @@ msgstr "Dodaj ścieżkę krzywej Beziera"
msgid "Track path is invalid, so can't add a key."
msgstr "Ścieżka jest nieprawidłowa, więc nie można wstawić klucza."
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "Ścieżka nie jest typu Node3D, nie można wstawić klatki kluczowej"
+
+msgid "Add Position Key"
+msgstr "Dodaj klatkÄ™ kluczowÄ… pozycji"
+
+msgid "Add Rotation Key"
+msgstr "Dodaj klatkÄ™ kluczowÄ… obrotu"
+
+msgid "Add Scale Key"
+msgstr "Dodaj klatkÄ™ kluczowÄ… skali"
+
msgid "Add Track Key"
msgstr "Dodaj klucz ścieżki"
@@ -815,6 +917,9 @@ msgstr "Dodaj klucz ścieżki metody"
msgid "Method not found in object:"
msgstr "Metoda nie znaleziona w obiekcie:"
+msgid "Animation Move Keys"
+msgstr "Animacja przesuń klatki kluczowe"
+
msgid "Position"
msgstr "Pozycja"
@@ -824,6 +929,9 @@ msgstr "Obrót"
msgid "Scale"
msgstr "Skala"
+msgid "BlendShape"
+msgstr "KształtMieszania"
+
msgid "Methods"
msgstr "Metody"
@@ -839,17 +947,54 @@ msgstr "Schowek jest pusty!"
msgid "Paste Tracks"
msgstr "Wklej ścieżki"
+msgid "Animation Scale Keys"
+msgstr "Animacja przeskaluj klatki kluczowe"
+
+msgid "Make Easing Keys"
+msgstr "Utwórz klatki kluczowe wygładzania"
+
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
"Ta opcja nie działa dla edycji Beziera, ponieważ jest to tylko jedna ścieżka."
+msgid "Animation Add RESET Keys"
+msgstr "Animacja dodaj klatki kluczowe RESET"
+
+msgid "Bake Animation as Linear keys."
+msgstr "Wypiecz animacjÄ™ jako liniowe klatki kluczowe."
+
+msgid ""
+"This animation belongs to an imported scene, so changes to imported tracks "
+"will not be saved.\n"
+"\n"
+"To modify this animation, navigate to the scene's Advanced Import settings "
+"and select the animation.\n"
+"Some options, including looping, are available here. To add custom tracks, "
+"enable \"Save To File\" and\n"
+"\"Keep Custom Tracks\"."
+msgstr ""
+"Ta animacja należy do importowanej sceny, więc zmiany w importowanych "
+"ścieżkach nie zostaną zapisane.\n"
+"\n"
+"By zmodyfikować tę animację, przejdź do zaawansowanych ustawień importu "
+"sceny i wybierz animacjÄ™.\n"
+"Niektóre opcje, włączając w to zapętlanie, są tu dostępne. By dodać własne "
+"ścieżki, włącz \"Zapisz do pliku\" i\n"
+"\"Zachowaj własne ścieżki\"."
+
msgid "Warning: Editing imported animation"
msgstr "Ostrzeżenie: Edytowanie importowanej animacji"
msgid "Select an AnimationPlayer node to create and edit animations."
msgstr "Wybierz węzeł AnimationPlayer, by tworzyć i edytować animacje."
+msgid "Imported Scene"
+msgstr "Importowana scena"
+
+msgid "Toggle between the bezier curve editor and track editor."
+msgstr "Przełącz między edytorem krzywych beziera i edytorem ścieżki."
+
msgid "Only show tracks from nodes selected in tree."
msgstr "Pokaż tylko ścieżki z węzłów zaznaczonych w drzewie."
@@ -883,6 +1028,9 @@ msgstr "Skaluj zaznaczone"
msgid "Scale From Cursor"
msgstr "Skaluj od kursora"
+msgid "Make Easing Selection"
+msgstr "Interpoluj zaznaczone"
+
msgid "Duplicate Selection"
msgstr "Duplikuj zaznaczone"
@@ -901,18 +1049,24 @@ msgstr "Przejdź do poprzedniego kroku"
msgid "Apply Reset"
msgstr "Zastosuj reset"
+msgid "Bake Animation"
+msgstr "Wypiecz animacjÄ™"
+
+msgid "Optimize Animation (no undo)"
+msgstr "Optymalizuj animację (nie można cofnąć)"
+
+msgid "Clean-Up Animation (no undo)"
+msgstr "Oczyść animację (nie można cofnąć)"
+
+msgid "Pick a node to animate:"
+msgstr "Wybierz węzeł do animowania:"
+
msgid "Use Bezier Curves"
msgstr "Użyj krzywych Beziera"
msgid "Create RESET Track(s)"
msgstr "Utwórz ścieżki RESET"
-msgid "Anim. Optimizer"
-msgstr "Optymalizator animacji"
-
-msgid "Max. Angular Error:"
-msgstr "Maks. błąd kątowy:"
-
msgid "Optimize"
msgstr "Zoptymalizuj"
@@ -934,12 +1088,18 @@ msgstr "Oczyść"
msgid "Scale Ratio:"
msgstr "Współczynnik skali:"
+msgid "Select Transition and Easing"
+msgstr "Wybierz przejście i łagodzenie"
+
msgid "Select Tracks to Copy"
msgstr "Wybierz ścieżki do skopiowania"
msgid "Select All/None"
msgstr "Wybierz wszystkie/żadne"
+msgid "Animation Change Keyframe Time"
+msgstr "Animacja zmień czas klatki kluczowej"
+
msgid "Add Audio Track Clip"
msgstr "Dodaj klip ścieżki audio"
@@ -958,6 +1118,18 @@ msgstr "Numer linii:"
msgid "%d replaced."
msgstr "%d zamieniono."
+msgid "%d match"
+msgid_plural "%d matches"
+msgstr[0] "%d dopasowanie"
+msgstr[1] "%d dopasowania"
+msgstr[2] "%d dopasowań"
+
+msgid "%d of %d match"
+msgid_plural "%d of %d matches"
+msgstr[0] "%d z %d dopasowania"
+msgstr[1] "%d z %d dopasowań"
+msgstr[2] "%d z %d dopasowań"
+
msgid "Match Case"
msgstr "Uwzględnij wielkość liter"
@@ -1007,6 +1179,9 @@ msgstr ""
"Docelowa metoda nie znaleziona. Podaj właściwą metodę lub dołącz skrypt do "
"wybranego węzła."
+msgid "Attached Script"
+msgstr "Dołączony skrypt"
+
msgid "Connect to Node:"
msgstr "Połącz do węzła:"
@@ -1016,12 +1191,30 @@ msgstr "Połącz do skryptu:"
msgid "From Signal:"
msgstr "Z sygnału:"
+msgid "Filter Nodes"
+msgstr "Filtruj węzły"
+
+msgid "Go to Source"
+msgstr "Idź do źródła"
+
msgid "Scene does not contain any script."
msgstr "Scena nie posiada żadnego skryptu."
msgid "Select Method"
msgstr "Wybierz metodÄ™"
+msgid "Filter Methods"
+msgstr "Filtruj metody"
+
+msgid "No method found matching given filters."
+msgstr "Nie znaleziono metody odpowiadajÄ…cej podanym filtrom."
+
+msgid "Script Methods Only"
+msgstr "Tylko metody ze skryptu"
+
+msgid "Compatible Methods Only"
+msgstr "Tylko metody kompatybilne"
+
msgid "Remove"
msgstr "Usuń"
@@ -1031,6 +1224,12 @@ msgstr "Dodaj dodatkowy argument wywołania funkcji:"
msgid "Extra Call Arguments:"
msgstr "Dodatkowe argumenty wywołania:"
+msgid "Allows to drop arguments sent by signal emitter."
+msgstr "Pozwala na pominięcie argumentów przesłanych przez emiter sygnału."
+
+msgid "Unbind Signal Arguments:"
+msgstr "Odwiąż argumenty sygnału:"
+
msgid "Receiver Method:"
msgstr "Metoda odbiorcy:"
@@ -1063,6 +1262,9 @@ msgstr "Połącz"
msgid "Signal:"
msgstr "Sygnał:"
+msgid "No description."
+msgstr "Brak opisu."
+
msgid "Connect '%s' to '%s'"
msgstr "Połącz '%s' z '%s'"
@@ -1081,24 +1283,36 @@ msgstr "Rozłącz"
msgid "Connect a Signal to a Method"
msgstr "Połącz sygnał do metody"
+msgid "Edit Connection: '%s'"
+msgstr "Edytuj połączenie: '%s'"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "Na pewno chcesz usunąć wszystkie połączenia z sygnału \"%s\"?"
msgid "Signals"
msgstr "Sygnały"
+msgid "Filter Signals"
+msgstr "Filtruj sygnały"
+
msgid "Are you sure you want to remove all connections from this signal?"
msgstr "Na pewno chcesz usunąć wszystkie połączenia z tego sygnału?"
msgid "Disconnect All"
msgstr "Rozłącz wszystkie"
+msgid "Copy Name"
+msgstr "Kopiuj nazwÄ™"
+
msgid "Edit..."
msgstr "Edytuj..."
msgid "Go to Method"
msgstr "Idź do metody"
+msgid "Change Type of \"%s\""
+msgstr "Zmień typ \"%s\""
+
msgid "Change"
msgstr "Zmień"
@@ -1108,6 +1322,12 @@ msgstr "Utwórz nowy %s"
msgid "No results for \"%s\"."
msgstr "Brak wyników dla \"%s\"."
+msgid "This class is marked as deprecated."
+msgstr "Ta klasa jest oznaczona jako przestarzała."
+
+msgid "This class is marked as experimental."
+msgstr "Ta klasa jest oznaczona jako eksperymentalna."
+
msgid "No description available for %s."
msgstr "Brak dostępnego opisu dla %s."
@@ -1117,6 +1337,9 @@ msgstr "Ulubione:"
msgid "Recent:"
msgstr "Ostatnie:"
+msgid "(Un)favorite selected item."
+msgstr "Dodaj/usuń wybrany element z ulubionych."
+
msgid "Search:"
msgstr "Szukaj:"
@@ -1126,6 +1349,9 @@ msgstr "PasujÄ…ce:"
msgid "Description:"
msgstr "Opis:"
+msgid "Remote %s:"
+msgstr "Zdalny %s:"
+
msgid "Debugger"
msgstr "Debugger"
@@ -1141,9 +1367,21 @@ msgstr "Skopiuj ścieżkę węzła"
msgid "Instance:"
msgstr "Instancja:"
+msgid ""
+"This node has been instantiated from a PackedScene file:\n"
+"%s\n"
+"Click to open the original file in the Editor."
+msgstr ""
+"Ten węzeł został utworzony z pliku PackedScene:\n"
+"%s\n"
+"Kliknij aby otworzyć oryginalny plik w edytorze."
+
msgid "Toggle Visibility"
msgstr "Przełącz widoczność"
+msgid "ms"
+msgstr "ms"
+
msgid "Monitors"
msgstr "Monitory"
@@ -1213,6 +1451,21 @@ msgstr "Czas"
msgid "Calls"
msgstr "Wywołania"
+msgid "Fit to Frame"
+msgstr "Dopasuj do klatki"
+
+msgid "Linked"
+msgstr "Połączone"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "GPU"
+msgstr "procesor graficzny"
+
+msgid "Execution resumed."
+msgstr "Wykonywanie wznowione."
+
msgid "Bytes:"
msgstr "Bajty:"
@@ -1225,9 +1478,39 @@ msgstr "BÅ‚Ä…d:"
msgid "%s Error"
msgstr "BÅ‚Ä…d %s"
+msgid "%s Error:"
+msgstr "BÅ‚Ä…d %s:"
+
+msgid "%s Source"
+msgstr "Źródło %s"
+
+msgid "%s Source:"
+msgstr "Źródło %s:"
+
msgid "Stack Trace"
msgstr "Åšlad stosu"
+msgid "Stack Trace:"
+msgstr "Åšlad stosu:"
+
+msgid "Debug session started."
+msgstr "Sesja debugowania rozpoczęta."
+
+msgid "Debug session closed."
+msgstr "Sesja debugowania zamknięta."
+
+msgid "Line %d"
+msgstr "Wiersz %d"
+
+msgid "Delete Breakpoint"
+msgstr "Usuń punkt wstrzymania"
+
+msgid "Delete All Breakpoints in:"
+msgstr "Usuń wszystkie punkty wstrzymania w:"
+
+msgid "Delete All Breakpoints"
+msgstr "Usuń wszystkie punkty wstrzymania"
+
msgid "Copy Error"
msgstr "Kopiuj błąd"
@@ -1258,6 +1541,9 @@ msgstr "Kontynuuj"
msgid "Stack Frames"
msgstr "Ramki stosu"
+msgid "Filter Stack Variables"
+msgstr "Filtruj zmienne stosu"
+
msgid "Breakpoints"
msgstr "Punkty wstrzymania"
@@ -1270,6 +1556,9 @@ msgstr "Zwiń wszystko"
msgid "Profiler"
msgstr "Profiler"
+msgid "Visual Profiler"
+msgstr "Profiler wizualny"
+
msgid "List of Video Memory Usage by Resource:"
msgstr "Zużycie pamięci wideo według zasobów:"
@@ -1359,6 +1648,12 @@ msgstr "Otwórz sceny"
msgid "Owners of: %s (Total: %d)"
msgstr "Właściciele: %s (Suma: %d)"
+msgid "Localization remap"
+msgstr "Przemapowanie lokalizacji"
+
+msgid "Localization remap for path '%s' and locale '%s'."
+msgstr "Transformacja lokalizacji dla ścieżki %s i języka %s."
+
msgid ""
"Remove the selected files from the project? (Cannot be undone.)\n"
"Depending on your filesystem configuration, the files will either be moved "
@@ -1576,6 +1871,12 @@ msgstr "Omiń"
msgid "Bus Options"
msgstr "Opcje magistrali"
+msgid "Duplicate Bus"
+msgstr "Duplikuj magistralÄ™"
+
+msgid "Delete Bus"
+msgstr "Usuń magistralę"
+
msgid "Reset Volume"
msgstr "Zresetuj głośność"
@@ -1663,18 +1964,27 @@ msgstr "Dopuszczalne znaki:"
msgid "Must not collide with an existing engine class name."
msgstr "Nie może kolidować z nazwą istniejącej klasy silnika."
+msgid "Must not collide with an existing global script class name."
+msgstr "Nie może kolidować z nazwą istniejącej globalnej klasy skryptowej."
+
msgid "Must not collide with an existing built-in type name."
msgstr "Nie może kolidować z nazwą istniejącego wbudowanego typu."
msgid "Must not collide with an existing global constant name."
msgstr "Nie może kolidować z nazwą istniejącej globalnej stałej."
+msgid "Keyword cannot be used as an Autoload name."
+msgstr "Słowo kluczowe nie może zostać użyte jako nazwa autoładowania."
+
msgid "Autoload '%s' already exists!"
msgstr "Autoładowanie \"%s\" już istnieje!"
msgid "Rename Autoload"
msgstr "Zmień nazwę Autoload"
+msgid "Toggle Autoload Globals"
+msgstr "Przełącz globalne autoładowanie"
+
msgid "Move Autoload"
msgstr "Przemieść Autoload"
@@ -1687,27 +1997,151 @@ msgstr "WÅ‚Ä…cz"
msgid "Rearrange Autoloads"
msgstr "Przestaw Autoloady"
+msgid "Can't add Autoload:"
+msgstr "Nie można dodać autoładowania:"
+
msgid "%s is an invalid path. File does not exist."
msgstr "Ścieżka %s jest nieprawidłowa. Plik nie istnieje."
msgid "%s is an invalid path. Not in resource path (res://)."
msgstr "%s jest nieprawidłową ścieżką. Nie jest ścieżką zasobu (res://)."
+msgid "Add Autoload"
+msgstr "Dodaj autoładowanie"
+
msgid "Path:"
msgstr "Ścieżka:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "Wybierz ścieżkę lub naciśnij \"%s\" aby utworzyć skrypt."
+
msgid "Node Name:"
msgstr "Nazwa węzła:"
msgid "Global Variable"
msgstr "Zmienna globalna"
+msgid "3D Engine"
+msgstr "Silnik 3D"
+
+msgid "2D Physics"
+msgstr "Fizyka 2D"
+
+msgid "3D Physics"
+msgstr "Fizyka 3D"
+
msgid "Navigation"
msgstr "Nawigacja"
+msgid "XR"
+msgstr "XR"
+
+msgid "RenderingDevice"
+msgstr "RenderingDevice"
+
msgid "OpenGL"
msgstr "OpenGL"
+msgid "Vulkan"
+msgstr "Vulkan"
+
+msgid "Text Server: Fallback"
+msgstr "Serwer tekstu: rezerwowy"
+
+msgid "Text Server: Advanced"
+msgstr "Serwer tekstu: zaawansowany"
+
+msgid "TTF, OTF, Type 1, WOFF1 Fonts"
+msgstr "fonty TTF, OTF, Type 1, WOOF1"
+
+msgid "WOFF2 Fonts"
+msgstr "Czcionki WOFF2"
+
+msgid "SIL Graphite Fonts"
+msgstr "Czcionki SIL Graphite"
+
+msgid "Multi-channel Signed Distance Field Font Rendering"
+msgstr "Renderowanie czcionek wielokanałowym znakowanym polem odległości"
+
+msgid "3D Nodes as well as RenderingServer access to 3D features."
+msgstr "Węzły 3D oraz dostęp RenderingServer do funkcjonalności 3D."
+
+msgid "2D Physics nodes and PhysicsServer2D."
+msgstr "Węzły fizyczne 2D i PhysicsServer2D."
+
+msgid "3D Physics nodes and PhysicsServer3D."
+msgstr "Węzły fizyczne 3D i PhysicsServer3D."
+
+msgid "Navigation, both 2D and 3D."
+msgstr "Nawigacja, zarówno 2D i 3D."
+
+msgid "XR (AR and VR)."
+msgstr "XR (AR i VR)."
+
+msgid ""
+"RenderingDevice based rendering (if disabled, the OpenGL back-end is "
+"required)."
+msgstr ""
+"Renderowanie bazowane na RenderingDevice (jeśli wyłączone, back-end OpenGL "
+"jest wymagany)."
+
+msgid ""
+"OpenGL back-end (if disabled, the RenderingDevice back-end is required)."
+msgstr ""
+"Back-end OpenGL (jak wyłączone, back-end RenderingDevice jest wymagany)."
+
+msgid "Vulkan back-end of RenderingDevice."
+msgstr "Back-end Vulkan dla RenderingDevice."
+
+msgid ""
+"Fallback implementation of Text Server\n"
+"Supports basic text layouts."
+msgstr ""
+"Implementacja rezerw serwera tekstu.\n"
+"Obsługuje podstawowe układy tekstu."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Implementacja serwera tekstu wspomagana przez biblioteki ICU i HarfBuzz.\n"
+"Wspiera złożone układy tekstu, BiDi i kontekstowe funkcjonalności czcionek "
+"OpenType."
+
+msgid ""
+"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
+"library (if disabled, WOFF2 support is also disabled)."
+msgstr ""
+"Obsługa formatów czcionek TrueType, OpenType, Type 1 i WOFF1 używając "
+"biblioteki FreeType (jeśli wyłączone, obsługa WOFF2 jest również wyłączona)."
+
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr "Obsługa formatu czcionek WOFF2 używając bibliotek FreeType i Brotli."
+
+msgid ""
+"SIL Graphite smart font technology support (supported by Advanced Text "
+"Server only)."
+msgstr ""
+"Wsparcie technologii inteligentnych czcionek SIL Graphite (wspierane tylko "
+"przez zaawansowany serwer tekstu)."
+
+msgid ""
+"Multi-channel signed distance field font rendering support using msdfgen "
+"library (pre-rendered MSDF fonts can be used even if this option disabled)."
+msgstr ""
+"Wsparcie renderowania czcionek wielokanałowym znakowanym polem odległości z "
+"użyciem biblioteki msdfgen (pre-renderowane czcionki MSDF mogą być używane "
+"nawet jeśli ta opcja jest wyłączona)."
+
+msgid "General Features:"
+msgstr "Ogólne funkcjonalności:"
+
+msgid "Text Rendering and Font Options:"
+msgstr "Opcje renderowania tekstu i czcionek:"
+
+msgid "File saving failed."
+msgstr "Zapis pliku nieudany."
+
msgid "Nodes and Classes:"
msgstr "Węzły i klasy:"
@@ -1723,12 +2157,42 @@ msgstr "Nowy"
msgid "Save"
msgstr "Zapisz"
+msgid "Profile:"
+msgstr "Profil:"
+
msgid "Reset to Defaults"
msgstr "Resetuj do domyślnych"
+msgid "Detect from Project"
+msgstr "Wykryj z projektu"
+
+msgid "Actions:"
+msgstr "Akcje:"
+
+msgid "Configure Engine Build Profile:"
+msgstr "Konfiguruj profil budowania silnika:"
+
+msgid "Please Confirm:"
+msgstr "Proszę potwierdzić:"
+
+msgid "Engine Build Profile"
+msgstr "Profil budowania silnika"
+
+msgid "Load Profile"
+msgstr "Wczytaj profil"
+
msgid "Export Profile"
msgstr "Eksportuj profil"
+msgid "Forced classes on detect:"
+msgstr "Wymuszone klasy po wykryciu:"
+
+msgid "Edit Build Configuration Profile"
+msgstr "Edytuj profil konfiguracji budowania"
+
+msgid "Filter Commands"
+msgstr "Filtruj komendy"
+
msgid "Paste Params"
msgstr "Wklej parametry"
@@ -1750,6 +2214,9 @@ msgstr "[niezapisany]"
msgid "Please select a base directory first."
msgstr "Najpierw wybierz katalog podstawowy."
+msgid "Could not create folder. File with that name already exists."
+msgstr "Nie można utworzyć folderu. Istnieje już plik o tej nazwie."
+
msgid "Choose a Directory"
msgstr "Wybierz katalog"
@@ -1786,6 +2253,9 @@ msgstr "System plików"
msgid "Import Dock"
msgstr "Dok importowania"
+msgid "History Dock"
+msgstr "Dok historii"
+
msgid "Allows to view and edit 3D scenes."
msgstr "Pozwala wyświetlać i edytować sceny 3D."
@@ -1814,6 +2284,9 @@ msgstr ""
"Pozwala konfigurować ustawienia importu dla indywidualnych zasobów. Wymaga "
"doku systemu plików do funkcjonowania."
+msgid "Provides an overview of the editor's and each scene's undo history."
+msgstr "Zapewnia przegląd historii cofania edytora i każdej ze scen."
+
msgid "(current)"
msgstr "(bieżący)"
@@ -1911,9 +2384,6 @@ msgstr "Otwórz"
msgid "Select Current Folder"
msgstr "Wybierz bieżący katalog"
-msgid "File exists, overwrite?"
-msgstr "Plik istnieje, nadpisać?"
-
msgid "Select This Folder"
msgstr "Wybierz ten folder"
@@ -1950,6 +2420,9 @@ msgstr "Otwórz plik lub katalog"
msgid "Save a File"
msgstr "Zapisz plik"
+msgid "Favorited folder does not exist anymore and will be removed."
+msgstr "Ulubiony folder już nie istnieje i zostanie usunięty."
+
msgid "Go Back"
msgstr "Wróć"
@@ -2010,6 +2483,22 @@ msgstr "PodglÄ…d:"
msgid "File:"
msgstr "Plik:"
+msgid ""
+"Remove the selected files? For safety only files and empty directories can "
+"be deleted from here. (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
+msgstr ""
+"Usunąć wybrane pliki z projektu? Dla bezpieczeństwa, tylko pliki i puste "
+"katalogi mogą być stąd usunięte. (Nie można cofnąć.)\n"
+"W zależności od konfiguracji systemu plików, te pliki zostaną przeniesione "
+"do systemowego kosza albo usunięte na stałe."
+
+msgid "Some extensions need the editor to restart to take effect."
+msgstr ""
+"Niektóre rozszerzenia wymagają, by edytor został zrestartowany, żeby "
+"działały."
+
msgid "Restart"
msgstr "Uruchom ponownie"
@@ -2027,6 +2516,55 @@ msgstr "Istnieje wiele importerów różnych typów dla pliku %s, import przerwa
msgid "(Re)Importing Assets"
msgstr "(Ponowne) importowanie zasobów"
+msgid "Import resources of type: %s"
+msgstr "Zaimportuj zasoby typu: %s"
+
+msgid "No return value."
+msgstr "Brak zwracanego typu."
+
+msgid "Deprecated"
+msgstr "Przestarzałe"
+
+msgid "Experimental"
+msgstr "Eksperymentalne"
+
+msgid "This method supports a variable number of arguments."
+msgstr "Ta metoda wspiera zmienną liczbę argumentów."
+
+msgid ""
+"This method is called by the engine.\n"
+"It can be overridden to customize built-in behavior."
+msgstr ""
+"Ta metoda jest wołana przez silnik.\n"
+"Może być nadpisana, by dostosować wbudowane działanie."
+
+msgid ""
+"This method has no side effects.\n"
+"It does not modify the object in any way."
+msgstr ""
+"Ta metoda nie ma skutków ubocznych.\n"
+"Nie modyfikuje obiektu w żaden sposób."
+
+msgid ""
+"This method does not need an instance to be called.\n"
+"It can be called directly using the class name."
+msgstr ""
+"Ta metoda nie wymaga instancji, by zostać wywołana.\n"
+"Może być wywołana bezpośrednio na nazwie klasy."
+
+msgid "Error codes returned:"
+msgstr "Zwrócone kody błędu:"
+
+msgid "There is currently no description for this %s."
+msgstr "Aktualnie nie ma opisu dla tego %s."
+
+msgid ""
+"There is currently no description for this %s. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Obecnie nie ma opisu dla tej %s. Proszę pomóż nam [color=$color]"
+"[url=$url]wysyłając go[/url][/color]!"
+
msgid "Top"
msgstr "Góra"
@@ -2039,9 +2577,33 @@ msgstr "Dziedziczy:"
msgid "Inherited by:"
msgstr "Dziedziczone przez:"
+msgid ""
+"This class is marked as deprecated. It will be removed in future versions."
+msgstr ""
+"Ta klasa jest oznaczona jako przestarzała. Zostanie usunięta w przyszłych "
+"wersjach."
+
+msgid ""
+"This class is marked as experimental. It is subject to likely change or "
+"possible removal in future versions. Use at your own discretion."
+msgstr ""
+"Ta klasa jest oznaczona jako eksperymentalna. Może ulec prawdopodobnym "
+"zmianom lub zostać usunięta w przyszłych wersjach. Używaj według własnego "
+"uznania."
+
msgid "Description"
msgstr "Opis"
+msgid "There is currently no description for this class."
+msgstr "Aktualnie nie ma opisu dla tej klasy."
+
+msgid ""
+"There is currently no description for this class. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Obecnie nie ma opisu dla tej klasy. Proszę pomóż nam [color=$color]"
+"[url=$url]wysyłając go[/url][/color]!"
+
msgid "Online Tutorials"
msgstr "Poradniki online"
@@ -2054,6 +2616,9 @@ msgstr "nadpisuje %s:"
msgid "default:"
msgstr "domyślne:"
+msgid "property:"
+msgstr "właściwość:"
+
msgid "Constructors"
msgstr "Konstruktory"
@@ -2072,6 +2637,9 @@ msgstr "Stałe"
msgid "Fonts"
msgstr "Fonty"
+msgid "Font Sizes"
+msgstr "Rozmiary czcionki"
+
msgid "Icons"
msgstr "Ikony"
@@ -2081,18 +2649,34 @@ msgstr "Style"
msgid "Enumerations"
msgstr "Wyliczenia"
+msgid "Annotations"
+msgstr "Adnotacje"
+
+msgid "There is currently no description for this annotation."
+msgstr "Aktualnie nie ma opisu dla tej adnotacji."
+
+msgid ""
+"There is currently no description for this annotation. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Obecnie nie ma opisu dla tej adnotacji. Proszę pomóż nam [color=$color]"
+"[url=$url]wysyłając go[/url][/color]!"
+
msgid "Property Descriptions"
msgstr "Opisy właściwości"
msgid "(value)"
msgstr "(wartość)"
+msgid "There is currently no description for this property."
+msgstr "Obecnie nie ma opisu dla tej właściwości."
+
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
msgstr ""
"Obecnie nie ma opisu dla tej właściwości. Pomóż nam, [color=$color]"
-"[url=$url]wysyłając ją[/url][/color]!"
+"[url=$url]wysyłając go[/url][/color]!"
msgid "Constructor Descriptions"
msgstr "Opisy konstruktorów"
@@ -2124,12 +2708,21 @@ msgstr "Pokaż wszystko"
msgid "Classes Only"
msgstr "Tylko klasy"
+msgid "Constructors Only"
+msgstr "Tylko konstruktory"
+
msgid "Methods Only"
msgstr "Tylko metody"
+msgid "Operators Only"
+msgstr "Tylko operatory"
+
msgid "Signals Only"
msgstr "Tylko sygnały"
+msgid "Annotations Only"
+msgstr "Tylko adnotacje"
+
msgid "Constants Only"
msgstr "Tylko stałe"
@@ -2142,6 +2735,9 @@ msgstr "Tylko właściwości motywu"
msgid "Member Type"
msgstr "Typ członka"
+msgid "(constructors)"
+msgstr "(konstruktory)"
+
msgid "Class"
msgstr "Klasa"
@@ -2151,6 +2747,9 @@ msgstr "Metoda"
msgid "Signal"
msgstr "Sygnał"
+msgid "Annotation"
+msgstr "Adnotacja"
+
msgid "Constant"
msgstr "Stała"
@@ -2160,9 +2759,21 @@ msgstr "Właściwość"
msgid "Theme Property"
msgstr "Właściwość motywu"
+msgid "This member is marked as deprecated."
+msgstr "Ten członek jest oznaczony jako przestarzały."
+
+msgid "This member is marked as experimental."
+msgstr "Ten członek jest oznaczony jako eksperymentalny."
+
msgid "Property:"
msgstr "Właściwość:"
+msgid "Pin Value"
+msgstr "Przypnij wartość"
+
+msgid "Pin Value [Disabled because '%s' is editor-only]"
+msgstr "Przypnij wartość [Niedostępne, ponieważ \"%s\" jest tylko dla edytora]"
+
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
@@ -2171,33 +2782,108 @@ msgstr ""
msgid "Open Documentation"
msgstr "Otwórz dokumentację"
+msgid "Element %d: %s%d*"
+msgstr "Element %d: %s%d*"
+
msgid "Move Up"
msgstr "Przesuń w górę"
msgid "Move Down"
msgstr "Przesuń w dół"
+msgid "Insert New Before"
+msgstr "Wstaw nowy przed"
+
+msgid "Insert New After"
+msgstr "Wstaw nowy po"
+
+msgid "Clear Array"
+msgstr "Wyczyść tablicę"
+
+msgid "Resize Array..."
+msgstr "Zmień rozmiar tablicy..."
+
+msgid "Add Element"
+msgstr "Dodaj element"
+
msgid "Resize Array"
msgstr "Zmień rozmiar Tablicy"
+msgid "New Size:"
+msgstr "Nowy rozmiar:"
+
+msgid "Element %s"
+msgstr "Element %s"
+
+msgid "Add Metadata"
+msgstr "Dodaj metadane"
+
msgid "Set %s"
msgstr "Ustaw %s"
msgid "Set Multiple:"
msgstr "Ustaw wiele:"
+msgid "Remove metadata %s"
+msgstr "Usuń metadaną %s"
+
msgid "Pinned %s"
msgstr "Przypięto %s"
msgid "Unpinned %s"
msgstr "Odpięto %s"
+msgid "Add metadata %s"
+msgstr "Dodaj metadanÄ… %s"
+
+msgid "Metadata name can't be empty."
+msgstr "Nazwa metadanej nie może być pusta."
+
+msgid "Metadata name must be a valid identifier."
+msgstr "Nazwa metadanej musi być prawidłowym identyfikatorem."
+
+msgid "Metadata with name \"%s\" already exists."
+msgstr "Metadana o nazwie \"%s\" już istnieje."
+
+msgid "Names starting with _ are reserved for editor-only metadata."
+msgstr "Nazwy zaczynajÄ…ce siÄ™ od _ sÄ… zarezerwowane dla metadanych edytora."
+
+msgid "Metadata name is valid."
+msgstr "Nazwa metadanej jest nieprawidłowa."
+
+msgid "Add Metadata Property for \"%s\""
+msgstr "Dodaj właściwość metadanych dla \"%s\""
+
+msgid "Copy Value"
+msgstr "Skopiuj wartość"
+
+msgid "Paste Value"
+msgstr "Wklej wartość"
+
msgid "Copy Property Path"
msgstr "Skopiuj ścieżkę właściwości"
+msgid "Select existing layout:"
+msgstr "Wybierz istniejący układ:"
+
+msgid "Changed Locale Language Filter"
+msgstr "Zmieniono filtr lokalizacji języka"
+
+msgid "Changed Locale Script Filter"
+msgstr "Zmieniono filtr lokalizacji pisma"
+
+msgid "Changed Locale Country Filter"
+msgstr "Zmieniono filtr lokalizacji kraju"
+
msgid "Changed Locale Filter Mode"
msgstr "Zmień tryb filtrowania ustawień lokalizacji"
+msgid "[Default]"
+msgstr "[Domyślny]"
+
+msgid "Select a Locale"
+msgstr "Wybierz lokalizacjÄ™"
+
msgid "Show All Locales"
msgstr "Pokaż wszystkie języki"
@@ -2210,12 +2896,59 @@ msgstr "Edytuj filtry"
msgid "Language:"
msgstr "Język:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "Pismo:"
+
+msgid "Country:"
+msgstr "Kraj:"
+
+msgid "Language"
+msgstr "Język"
+
+msgctxt "Locale"
+msgid "Script"
+msgstr "Pismo"
+
+msgid "Country"
+msgstr "Kraj"
+
+msgid "Variant"
+msgstr "Wariant"
+
+msgid "Filter Messages"
+msgstr "Filtruj wiadomości"
+
msgid "Clear Output"
msgstr "Wyczyść wyjście"
msgid "Copy Selection"
msgstr "Kopiuj zaznaczenie"
+msgid ""
+"Collapse duplicate messages into one log entry. Shows number of occurrences."
+msgstr ""
+"Zwiń zduplikowane wiadomości w jeden wpis dziennika. Pokazuje liczbę "
+"wystąpień."
+
+msgid "Focus Search/Filter Bar"
+msgstr "Pasek wyszukiwania/filtrowania"
+
+msgid "Toggle visibility of standard output messages."
+msgstr "Przełącz widoczność wiadomości standardowego wyjścia."
+
+msgid "Toggle visibility of errors."
+msgstr "Przełącz widoczność błędów."
+
+msgid "Toggle visibility of warnings."
+msgstr "Przełącz widoczność ostrzeżeń."
+
+msgid "Toggle visibility of editor messages."
+msgstr "Przełącz widoczność wiadomości edytora."
+
+msgid "Native Shader Source Inspector"
+msgstr "Inspektor źródła natywnego szadera"
+
msgid "New Window"
msgstr "Nowe okno"
@@ -2250,6 +2983,13 @@ msgstr ""
"Ten zasób nie może zostać zapisany, ponieważ nie należy do edytowanej sceny. "
"Uczyń go najpierw unikalnym."
+msgid ""
+"This resource can't be saved because it was imported from another file. Make "
+"it unique first."
+msgstr ""
+"Ten zasób nie może zostać zapisany, ponieważ został zaimportowany z innego "
+"pliku. Uczyń go najpierw unikalnym."
+
msgid "Save Resource As..."
msgstr "Zapisz zasób jako..."
@@ -2262,6 +3002,22 @@ msgstr "Nieznany format pliku:"
msgid "Error while saving."
msgstr "BÅ‚Ä…d podczas zapisywania."
+msgid "Can't open file '%s'. The file could have been moved or deleted."
+msgstr ""
+"Nie można otworzyć pliku \"%s\". Plik mógł zostać przeniesiony lub usunięty."
+
+msgid "Error while parsing file '%s'."
+msgstr "BÅ‚Ä…d podczas analizy pliku \"%s\"."
+
+msgid "Scene file '%s' appears to be invalid/corrupt."
+msgstr "Plik sceny \"%s\" wydaje się być nieprawidłowy/uszkodzony."
+
+msgid "Missing file '%s' or one its dependencies."
+msgstr "Brakuje pliku \"%s\" lub jednej z jego zależności."
+
+msgid "Error while loading file '%s'."
+msgstr "BÅ‚Ä…d podczas wczytywania pliku \"%s\"."
+
msgid "Saving Scene"
msgstr "Zapisywanie sceny"
@@ -2275,6 +3031,14 @@ msgid "This operation can't be done without a tree root."
msgstr "Ta operacja nie może zostać wykonana bez sceny."
msgid ""
+"This scene can't be saved because there is a cyclic instance inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Ta scena nie może zostać zapisana, ponieważ istnieje cykliczne zawarcie "
+"instancji.\n"
+"Rozwiąż to i spróbuj zapisać ponownie."
+
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2318,6 +3082,10 @@ msgstr "Nie znaleziono nazwy układu!"
msgid "Restored the Default layout to its base settings."
msgstr "Przywrócono Domyślny układ do ustawień bazowych."
+msgid "This object is marked as read-only, so it's not editable."
+msgstr ""
+"Ten obiekt jest oznaczony jako tylko do odczytu, więc nie można go edytować."
+
msgid ""
"This resource belongs to a scene that was imported, so it's not editable.\n"
"Please read the documentation relevant to importing scenes to better "
@@ -2329,26 +3097,75 @@ msgstr ""
"zrozumieć ten proces."
msgid ""
+"This resource belongs to a scene that was instantiated or inherited.\n"
+"Changes to it must be made inside the original scene."
+msgstr ""
+"Ten zasób należy do sceny, która została zainstancjonowana lub "
+"odziedziczona.\n"
+"Zmiany w nim muszą być wykonane na oryginalnej scenie."
+
+msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
"Ten zasób został zaimportowany, więc nie jest edytowalny. Zmień jego "
"ustawienia w panelu importów, po czym zaimportuj go ponownie."
+msgid ""
+"This scene was imported, so changes to it won't be kept.\n"
+"Instantiating or inheriting it will allow you to make changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Ta scena została zaimportowana, więc zmiany w niej nie będą zachowane.\n"
+"Instancjonowanie lub dziedziczenie jej pozwoli ci na prowadzenie zmian.\n"
+"Proszę zapoznać się z dokumentacją dotyczącą importowania scen, by lepiej "
+"zrozumieć ten proces."
+
msgid "Changes may be lost!"
msgstr "Zmiany mogą zostać utracone!"
+msgid "This object is read-only."
+msgstr "Ten obiekt jest tylko do odczytu."
+
+msgid ""
+"Movie Maker mode is enabled, but no movie file path has been specified.\n"
+"A default movie file path can be specified in the project settings under the "
+"Editor > Movie Writer category.\n"
+"Alternatively, for running single scenes, a `movie_file` string metadata can "
+"be added to the root node,\n"
+"specifying the path to a movie file that will be used when recording that "
+"scene."
+msgstr ""
+"Tryb Twórcy Filmów jest włączony, ale nie ustawiono ścieżki pliku "
+"filmowego.\n"
+"Domyślna ścieżka pliku filmu może być określona w ustawieniach projektu pod "
+"kategoriÄ… Editor -> Movie Writer.\n"
+"Alternatywnie, przed uruchamianiem pojedynczych scen, metadana tekstowa "
+"\"movie_file\" może być dodana do korzenia sceny,\n"
+"określając ścieżkę do pliku filmowego, który będzie użyty przy nagrywaniu "
+"tej sceny."
+
msgid "There is no defined scene to run."
msgstr "Nie ma zdefiniowanej sceny do uruchomienia."
msgid "Save scene before running..."
msgstr "Zapisz scenÄ™ przed uruchomieniem..."
+msgid "Could not start subprocess(es)!"
+msgstr "Nie udało się uruchomić podprocesu(ów)!"
+
+msgid "Reload the played scene."
+msgstr "Przeładuj odtwarzaną scenę."
+
msgid "Play the project."
msgstr "Uruchom projekt."
msgid "Play the edited scene."
-msgstr "Uruchom aktualnie edytowanÄ… scenÄ™."
+msgstr "Uruchom edytowanÄ… scenÄ™."
+
+msgid "Play a custom scene."
+msgstr "Uruchom własną scenę."
msgid "Open Base Scene"
msgstr "Otwórz scenę bazową"
@@ -2365,9 +3182,15 @@ msgstr "Szybkie otwieranie skryptu..."
msgid "Save & Reload"
msgstr "Zapisz i przeładuj"
+msgid "Save modified resources before reloading?"
+msgstr "Zapisać zmodyfikowane zasoby przed zrestartowaniem?"
+
msgid "Save & Quit"
msgstr "Zapisz i wyjdź"
+msgid "Save modified resources before closing?"
+msgstr "Zapisać zmodyfikowane zasoby przed zamknięciem?"
+
msgid "Save changes to '%s' before reloading?"
msgstr "Zapisać zmiany w \"%s\" przed przeładowaniem?"
@@ -2403,12 +3226,30 @@ msgstr "Nie można cofnąć akcji kiedy przyciski myszy są wciśnięte."
msgid "Nothing to undo."
msgstr "Nie ma nic do cofnięcia."
+msgid "Global Undo: %s"
+msgstr "Cofnij globalnie: %s"
+
+msgid "Remote Undo: %s"
+msgstr "Cofnij zdalnie: %s"
+
+msgid "Scene Undo: %s"
+msgstr "Cofnij na scenie: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "Nie można ponowić kiedy przyciski myszy są wciśnięte."
msgid "Nothing to redo."
msgstr "Nie ma nic do ponowienia."
+msgid "Global Redo: %s"
+msgstr "Ponów globalnie: %s"
+
+msgid "Remote Redo: %s"
+msgstr "Ponów zdalnie: %s"
+
+msgid "Scene Redo: %s"
+msgstr "Ponów na scenie: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "Nie można przeładować sceny która nie została zapisana."
@@ -2581,6 +3422,9 @@ msgstr "Przesuń widok"
msgid "Dock Position"
msgstr "Pozycja doku"
+msgid "Make Floating"
+msgstr "Zrób ruchomy"
+
msgid "Add a new scene."
msgstr "Dodaj nowÄ… scenÄ™."
@@ -2602,6 +3446,18 @@ msgstr "Wróć do poprzednio otwartej sceny."
msgid "Copy Text"
msgstr "Skopiuj tekst"
+msgid "Next Scene Tab"
+msgstr "Następna karta sceny"
+
+msgid "Previous Scene Tab"
+msgstr "Poprzednia karta sceny"
+
+msgid "Focus FileSystem Filter"
+msgstr "Zaznacz filtr Systemu Plików"
+
+msgid "Command Palette"
+msgstr "Paleta poleceń"
+
msgid "New Scene"
msgstr "Nowa scena"
@@ -2620,6 +3476,9 @@ msgstr "Ostatnio otwierane"
msgid "Save Scene"
msgstr "Zapisz scenÄ™"
+msgid "Export As..."
+msgstr "Eksportuj jako..."
+
msgid "MeshLibrary..."
msgstr "Biblioteka Meshów..."
@@ -2635,9 +3494,18 @@ msgstr "Projekt"
msgid "Project Settings..."
msgstr "Ustawienia projektu..."
+msgid "Project Settings"
+msgstr "Ustawienia projektu"
+
msgid "Version Control"
msgstr "Kontrola wersji"
+msgid "Create Version Control Metadata"
+msgstr "Utwórz metadane kontroli wersji"
+
+msgid "Version Control Settings"
+msgstr "Ustawienia kontroli wersji"
+
msgid "Export..."
msgstr "Eksport..."
@@ -2647,6 +3515,9 @@ msgstr "Zainstaluj szablon eksportu dla Androida..."
msgid "Open User Data Folder"
msgstr "Otwórz folder danych użytkownika"
+msgid "Customize Engine Build Configuration..."
+msgstr "Dostosuj konfiguracjÄ™ budowania silnika..."
+
msgid "Tools"
msgstr "Narzędzia"
@@ -2665,6 +3536,9 @@ msgstr "Edytor"
msgid "Editor Settings..."
msgstr "Ustawienia edytora..."
+msgid "Command Palette..."
+msgstr "Paleta poleceń..."
+
msgid "Editor Layout"
msgstr "Układ edytora"
@@ -2692,6 +3566,9 @@ msgstr "Zarządzaj funkcjonalnościami edytora..."
msgid "Manage Export Templates..."
msgstr "ZarzÄ…dzaj szablonami eksportu..."
+msgid "Configure FBX Importer..."
+msgstr "Konfiguruj importer FBX..."
+
msgid "Help"
msgstr "Pomoc"
@@ -2719,14 +3596,62 @@ msgstr "O Godocie"
msgid "Support Godot Development"
msgstr "Wesprzyj rozwój Godota"
+msgid "Run the project's default scene."
+msgstr "Uruchom domyślną scenę projektu."
+
msgid "Run Project"
msgstr "Uruchom projekt"
+msgid "Pause the running project's execution for debugging."
+msgstr "Zapauzuj wykonywanie uruchomionego projektu, żeby debugować."
+
+msgid "Pause Running Project"
+msgstr "Zapauzuj uruchomiony projekt"
+
+msgid "Stop the currently running project."
+msgstr "Zatrzymaj obecnie uruchomiony projekt."
+
+msgid "Stop Running Project"
+msgstr "Zatrzymaj uruchomiony projekt"
+
+msgid "Run the currently edited scene."
+msgstr "Uruchom obecnie edytowanÄ… scenÄ™."
+
+msgid "Run Current Scene"
+msgstr "Uruchom obecnÄ… scenÄ™"
+
+msgid "Run a specific scene."
+msgstr "Uruchom konkretnÄ… scenÄ™."
+
+msgid "Run Specific Scene"
+msgstr "Uruchom konkretnÄ… scenÄ™"
+
+msgid ""
+"Enable Movie Maker mode.\n"
+"The project will run at stable FPS and the visual and audio output will be "
+"recorded to a video file."
+msgstr ""
+"Uruchom tryb Twórcy Filmów.\n"
+"Projekt będzie działał ze stabilnym FPS i wyjście wizualne oraz audio będą "
+"nagrane do pliku wideo."
+
+msgid "Choose a renderer."
+msgstr "Wybierz renderer."
+
+msgid "Mobile"
+msgstr "Mobilny"
+
msgid "Compatibility"
-msgstr "Kompatybilność"
+msgstr "Kompatybilny"
+
+msgid "Changing the renderer requires restarting the editor."
+msgstr "Zmiana renderera wymaga restartu edytora."
msgid "Update Continuously"
-msgstr "Stale Aktualizuj"
+msgstr "Stale aktualizuj"
+
+msgid "Update When Changed"
+msgstr "Aktualizuj przy zmianie"
msgid "Hide Update Spinner"
msgstr "Ukryj wiatraczek aktualizacji"
@@ -3662,7 +4587,7 @@ msgid "Import As:"
msgstr "Importuj jako:"
msgid "Preset"
-msgstr "Profil"
+msgstr "Ustawienia wstępne"
msgid "Save Scenes, Re-Import, and Restart"
msgstr "Zapisz sceny, reimportuj i uruchom ponownie"
@@ -6687,6 +7612,9 @@ msgstr "Nadpisz wszystkie domyślne elementy typu."
msgid "Base Type"
msgstr "Typ bazowy"
+msgid "Select the variation base type from a list of available types."
+msgstr "Wybierz typ podstawy wariacji z listy dostępnych typów."
+
msgid "Theme:"
msgstr "Motyw:"
@@ -7725,9 +8653,6 @@ msgstr "Zmień martwą strefę akcji"
msgid "Erase Input Action"
msgstr "Wyczyść akcję wejścia"
-msgid "Rename Input Action Event"
-msgstr "Zmień nazwę zdarzenia akcji wejścia"
-
msgid "Project Settings (project.godot)"
msgstr "Ustawienia projektu (project.godot)"
@@ -8068,6 +8993,15 @@ msgstr "(Å‚Ä…czony teraz)"
msgid "Node configuration warning:"
msgstr "Ostrzeżenie konfiguracji węzła:"
+msgid ""
+"This node can be accessed from within anywhere in the scene by preceding it "
+"with the '%s' prefix in a node path.\n"
+"Click to disable this."
+msgstr ""
+"Ten node może być dostępny z dowolnego miejsca sceny poprzez poprzedzenie go "
+"prefiksem '%s' w ścieżce node.\n"
+"Kliknij, aby to wyłączyć."
+
msgid "Open Script:"
msgstr "Otwórz skrypt:"
@@ -8353,6 +9287,9 @@ msgstr "Rozmiar"
msgid "Network Profiler"
msgstr "Profiler sieci"
+msgid "Delete Property?"
+msgstr "Usunąć właściwość?"
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
"Zasób typu NavigationMesh musi być ustawiony w odpowiednim polu, aby ten "
@@ -9046,9 +9983,6 @@ msgstr ""
"LPM: Ustaw ten kolor\n"
"PPM: Usuń próbkę"
-msgid "Pick a color from the editor window."
-msgstr "Pobierz kolor z okna edytora."
-
msgid "Switch between hexadecimal and code values."
msgstr "Przełącz między szesnastkowymi i kodowymi wartościami."
@@ -9077,9 +10011,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Proszę potwierdzić..."
-msgid "Must use a valid extension."
-msgstr "Rozszerzenie musi być poprawne."
-
msgid "Enable grid minimap."
msgstr "WÅ‚Ä…cz minimapÄ™ siatki."
diff --git a/editor/translations/editor/pt.po b/editor/translations/editor/pt.po
index b9cf75e6c7..3808826d52 100644
--- a/editor/translations/editor/pt.po
+++ b/editor/translations/editor/pt.po
@@ -32,13 +32,15 @@
# Thuany <thutymsoares@gmail.com>, 2022.
# Isaque Mendes <isaquemendes405@gmail.com>, 2022.
# Alex Bruno Boiniak <aboiniak@gmail.com>, 2022.
+# Breno Alves Sampaio <chibifoxdiscord@gmail.com>, 2023.
+# SamuelPatrickMeneses <samuelmeneses800@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-01-11 19:51+0000\n"
-"Last-Translator: ssantos <ssantos@web.de>\n"
+"PO-Revision-Date: 2023-02-16 05:26+0000\n"
+"Last-Translator: SamuelPatrickMeneses <samuelmeneses800@gmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/"
"godot/pt/>\n"
"Language: pt\n"
@@ -46,11 +48,26 @@ 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.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
msgid "Physical"
msgstr "Físico"
+msgid "Left Mouse Button"
+msgstr "Botão Esquerdo do Mouse"
+
+msgid "Right Mouse Button"
+msgstr "Botão Direito do Mouse"
+
+msgid "Middle Mouse Button"
+msgstr "Botão do meio"
+
+msgid "Mouse Wheel Up"
+msgstr "Roda do mouse para cima."
+
+msgid "Mouse Wheel Down"
+msgstr "Roda do mouse para baixo."
+
msgid "Button"
msgstr "Botão"
@@ -493,12 +510,6 @@ msgstr "Usar Curvas Bezier"
msgid "Create RESET Track(s)"
msgstr "Criar Pista(s) RESET"
-msgid "Anim. Optimizer"
-msgstr "Otimizador de Anim"
-
-msgid "Max. Angular Error:"
-msgstr "Máximo de Erros Angulares:"
-
msgid "Optimize"
msgstr "Otimizar"
@@ -1501,9 +1512,6 @@ msgstr "Abrir"
msgid "Select Current Folder"
msgstr "Selecionar pasta atual"
-msgid "File exists, overwrite?"
-msgstr "O ficheiro existe, sobrescrever?"
-
msgid "Select This Folder"
msgstr "Selecionar esta Pasta"
@@ -1667,21 +1675,40 @@ msgstr "Estilos"
msgid "Enumerations"
msgstr "Enumerações"
+msgid "There is currently no description for this annotation."
+msgstr "Atualmente não há descrição para esta anotação."
+
+msgid ""
+"There is currently no description for this annotation. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Atualmente não existe descrição para este Método. Por favor nos ajude "
+"[color=$color][url=$url]contribuindo com uma[/url][/color]!"
+
msgid "Property Descriptions"
msgstr "Descrições da Propriedade"
msgid "(value)"
msgstr "(valor)"
+msgid "There is currently no description for this property."
+msgstr "Atualmente não há descrição para esta propriedade."
+
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
msgstr ""
-"Atualmente não existe descrição para esta Propriedade. Por favor ajude-nos "
-"[color=$color][url=$url]a contribuir com uma[/url][/color]!"
+"Atualmente não existe descrição para esta Propriedade. Por favor nos ajude "
+"[color=$color][url=$url]contribuindo com uma[/url][/color]!"
+
+msgid "Constructor Descriptions"
+msgstr "Descrições do Construtor"
msgid "Method Descriptions"
-msgstr "Descrições do Método"
+msgstr "Descrições de Método"
+
+msgid "Operator Descriptions"
+msgstr "Descrições de Operadores"
msgid "%d match."
msgstr "%d correspondência."
@@ -1690,10 +1717,10 @@ msgid "%d matches."
msgstr "%d correspondências."
msgid "Search Help"
-msgstr "Procurar em Ajuda"
+msgstr "Procure em Ajuda"
msgid "Case Sensitive"
-msgstr "Sensível a maiúsculas"
+msgstr "Com distinção entre maiúsculas e minúsculas"
msgid "Show Hierarchy"
msgstr "Mostrar Hierarquia"
@@ -1704,12 +1731,21 @@ msgstr "Mostrar Tudo"
msgid "Classes Only"
msgstr "Apenas Classes"
+msgid "Constructors Only"
+msgstr "Apenas Construtores"
+
msgid "Methods Only"
msgstr "Apenas Métodos"
+msgid "Operators Only"
+msgstr "Apenas Operadores"
+
msgid "Signals Only"
msgstr "Apenas Sinais"
+msgid "Annotations Only"
+msgstr "Apenas Anotações"
+
msgid "Constants Only"
msgstr "Apenas Constantes"
@@ -1722,6 +1758,9 @@ msgstr "Apenas Propriedades do Tema"
msgid "Member Type"
msgstr "Tipo do Membro"
+msgid "(constructors)"
+msgstr "(Construtores)"
+
msgid "Class"
msgstr "Classe"
@@ -1731,6 +1770,9 @@ msgstr "Método"
msgid "Signal"
msgstr "Sinal"
+msgid "Annotation"
+msgstr "Anotações"
+
msgid "Constant"
msgstr "Constante"
@@ -1740,13 +1782,25 @@ msgstr "Propriedade"
msgid "Theme Property"
msgstr "Propriedade do Tema"
+msgid "This member is marked as deprecated."
+msgstr "Este membro esta marcado como obsoleto."
+
+msgid "This member is marked as experimental."
+msgstr "Este membro está marcado como experimental."
+
msgid "Property:"
msgstr "Propriedade:"
+msgid "Pin Value"
+msgstr "Fixar valor"
+
+msgid "Pin Value [Disabled because '%s' is editor-only]"
+msgstr "Fixar Valor [Desativado porque '%s' é restrito(a) ao editor]"
+
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
-"Fixar um valor força-o a ser guardado mesmo que seja igual à predefinição."
+"Fixar um valor força que ele seja salvo mesmo que ele seja igual ao padrão."
msgid "Open Documentation"
msgstr "Abrir documentação"
@@ -7386,9 +7440,6 @@ msgstr "Mudar a zona morta da Ação"
msgid "Erase Input Action"
msgstr "Apagar Ação de Entrada"
-msgid "Rename Input Action Event"
-msgstr "Renomear evento ação de entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configurações do Projeto (project.godot)"
@@ -8799,9 +8850,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "O nó raiz de AnimationPlayer não é um nó válido."
-msgid "Pick a color from the editor window."
-msgstr "Escolha uma cor através do editor."
-
msgid "Switch between hexadecimal and code values."
msgstr "Alternar valores entre hexadecimal e código."
@@ -8831,9 +8879,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirme por favor..."
-msgid "Must use a valid extension."
-msgstr "Deve usar uma extensão válida."
-
msgid "Enable grid minimap."
msgstr "Ativar grelha do minimapa."
diff --git a/editor/translations/editor/pt_BR.po b/editor/translations/editor/pt_BR.po
index 8c0eb9e29b..d9d5fe4aca 100644
--- a/editor/translations/editor/pt_BR.po
+++ b/editor/translations/editor/pt_BR.po
@@ -158,13 +158,14 @@
# Zer0-Zer0 <dankmemerson@tutanota.com>, 2022.
# Levi Ferreira <leviferreiramorais@gmail.com>, 2023.
# Leonardo <leotada523@gmail.com>, 2023.
+# Elizandro Baldin <ejbaldin@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2023-02-08 18:01+0000\n"
-"Last-Translator: Leonardo <leotada523@gmail.com>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: Elizandro Baldin <ejbaldin@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -174,6 +175,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.16-dev\n"
+msgid "Unset"
+msgstr "Desativar"
+
msgid "Physical"
msgstr "Físico"
@@ -183,8 +187,26 @@ msgstr "Botão Esquerdo do Mouse"
msgid "Right Mouse Button"
msgstr "Botão Direito do Mouse"
+msgid "Middle Mouse Button"
+msgstr "Botão do Meio do Mouse"
+
+msgid "Mouse Wheel Up"
+msgstr "Roda do Mouse para Cima"
+
msgid "Mouse Wheel Down"
-msgstr "Roda do mouse para baixo"
+msgstr "Roda do Mouse para Baixo"
+
+msgid "Mouse Wheel Left"
+msgstr "Roda do Mouse para Esquerda"
+
+msgid "Mouse Wheel Right"
+msgstr "Roda do Mouse para Direita"
+
+msgid "Mouse Thumb Button 1"
+msgstr "Botão do Polegar do Mouse 1"
+
+msgid "Mouse Thumb Button 2"
+msgstr "Botão do Polegar do Mouse 2"
msgid "Button"
msgstr "Botão"
@@ -195,12 +217,152 @@ msgstr "Clique Duplo"
msgid "Mouse motion at position (%s) with velocity (%s)"
msgstr "Movimento do mouse na posição (%s) com velocidade (%s)"
+msgid "Left Stick X-Axis, Joystick 0 X-Axis"
+msgstr "Eixo-X Alavanca Esquerda, Eixo-X Joystick 0"
+
+msgid "Left Stick Y-Axis, Joystick 0 Y-Axis"
+msgstr "Eixo-Y Alavanca Esquerda, Eixo-Y Joystick 0"
+
+msgid "Right Stick X-Axis, Joystick 1 X-Axis"
+msgstr "Eixo-X Alavanca Direita, Eixo-X Joystick 1"
+
+msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
+msgstr "Eixo-Y Alavanca Direita, Eixo-Y Joystick 1"
+
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "Eixo-X Joystick 2, Gatilho Esquerdo, Sony L2, Xbox LT"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "Eixo-Y Joystick 2, Gatilho Direito, Sony R2, Xbox RT"
+
+msgid "Joystick 3 X-Axis"
+msgstr "Eixo-X Joystick 3"
+
+msgid "Joystick 3 Y-Axis"
+msgstr "Eixo-Y Joystick 3"
+
+msgid "Joystick 4 X-Axis"
+msgstr "Eixo-X Joystick 4"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "Eixo-Y Joystick 4"
+
+msgid "Unknown Joypad Axis"
+msgstr "Eixo Desconhecido do Joypad"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "Movimento do joypad no eixo %d (%s) com valor %.2f"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "Botão de Ação, Sony Cross, Xbox A, Nintendo B"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Botão de Ação Direito, Sony Circle, Xbox B, Nintendo A"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "Botão de Ação Esquerdo, Sony Circle, Xbox B, Nintendo A"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "Botão de Ação Acima, Sony Triangle, Xbox Y, Nintendo X"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Voltar, Sony Select, Xbox Back, Nintendo -"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "Menu, Sony PS, Xbox Home"
+
+msgid "Start, Nintendo +"
+msgstr "Iniciar, Nintendo +"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "Alavanca Esquerda, Sony L3, Xbox L/LS"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "Alavanca Direita, Sony R3, Xbox R/RS"
+
+msgid "Left Shoulder, Sony L1, Xbox LB"
+msgstr "Ombro Esquerdo, Sony L1, Xbox LB"
+
+msgid "Right Shoulder, Sony R1, Xbox RB"
+msgstr "Ombro Direito, Sony R1, Xbox RB"
+
+msgid "D-pad Up"
+msgstr "D-pad Acima"
+
+msgid "D-pad Down"
+msgstr "D-pad Abaixo"
+
+msgid "D-pad Left"
+msgstr "D-pad Esquerdo"
+
+msgid "D-pad Right"
+msgstr "D-pad Direito"
+
+msgid "Xbox Share, PS5 Microphone, Nintendo Capture"
+msgstr "Xbox Share, PS5 Microfone, Nintendo Capture"
+
+msgid "Xbox Paddle 1"
+msgstr "Controle Xbox 1"
+
+msgid "Xbox Paddle 2"
+msgstr "Controle Xbox 2"
+
+msgid "Xbox Paddle 3"
+msgstr "Controle Xbox 3"
+
+msgid "Xbox Paddle 4"
+msgstr "Controle Xbox 4"
+
+msgid "PS4/5 Touchpad"
+msgstr "Touchpad PS4/5"
+
+msgid "Joypad Button %d"
+msgstr "Botão do Joypad %d"
+
+msgid "Pressure:"
+msgstr "Toque:"
+
+msgid "touched"
+msgstr "tocado"
+
+msgid "released"
+msgstr "solto"
+
+msgid "Screen %s at (%s) with %s touch points"
+msgstr "Tela %s em (%s) com %s pontos de toque"
+
+msgid ""
+"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
+msgstr ""
+"Tela arrastada com %s pontos de toque na posição (%s) com velocidade de (%s)"
+
+msgid "Magnify Gesture at (%s) with factor %s"
+msgstr "Gesto de Ampliar em (%s) com fator %s"
+
+msgid "Pan Gesture at (%s) with delta (%s)"
+msgstr "Gesto Panorâmico em (%s) com delta (%s)"
+
+msgid "MIDI Input on Channel=%s Message=%s"
+msgstr "Entrada MIDI no Canal=%s Mensagem=%s"
+
+msgid "Input Event with Shortcut=%s"
+msgstr "Evento de Antrada com Atalho=%s"
+
+msgid "Accept"
+msgstr "Aceitar"
+
msgid "Select"
msgstr "Selecionar"
msgid "Cancel"
msgstr "Cancelar"
+msgid "Focus Next"
+msgstr "Focar Próximo"
+
+msgid "Focus Prev"
+msgstr "Focar Anterior"
+
msgid "Left"
msgstr "Esquerda"
@@ -213,6 +375,15 @@ msgstr "Acima"
msgid "Down"
msgstr "Abaixo"
+msgid "Page Up"
+msgstr "Subir Página"
+
+msgid "Page Down"
+msgstr "Baixar Página"
+
+msgid "Home"
+msgstr "Início"
+
msgid "End"
msgstr "Fim"
@@ -231,24 +402,123 @@ msgstr "Desfazer"
msgid "Redo"
msgstr "Refazer"
+msgid "Completion Query"
+msgstr "Autocompletar"
+
+msgid "New Line"
+msgstr "Nova Linha"
+
+msgid "New Blank Line"
+msgstr "Nova Linha em Branco"
+
+msgid "New Line Above"
+msgstr "Nova Linha Acima"
+
msgid "Indent"
msgstr "Indentar"
+msgid "Dedent"
+msgstr "Desindentar"
+
+msgid "Backspace"
+msgstr "Retroceder"
+
+msgid "Backspace Word"
+msgstr "Retroceder Palavra"
+
+msgid "Backspace all to Left"
+msgstr "Retroceder tudo a Esquerda"
+
msgid "Delete"
msgstr "Excluir"
+msgid "Delete Word"
+msgstr "Excluir Palavra"
+
+msgid "Delete all to Right"
+msgstr "Excluir tudo a Direita"
+
+msgid "Caret Left"
+msgstr "Cursor para Esquerda"
+
+msgid "Caret Word Left"
+msgstr "Cursor uma Palavra a Esquerda"
+
+msgid "Caret Right"
+msgstr "Cursor para Direita"
+
+msgid "Caret Word Right"
+msgstr "Cursor uma palavra a Direita"
+
+msgid "Caret Up"
+msgstr "Cursor para Cima"
+
+msgid "Caret Down"
+msgstr "Cursor para Baixo"
+
+msgid "Caret Line Start"
+msgstr "Cursor no Início da Linha"
+
+msgid "Caret Line End"
+msgstr "Cursor no Final da Linha"
+
+msgid "Caret Page Up"
+msgstr "Cursor uma Página Acima"
+
+msgid "Caret Page Down"
+msgstr "Cursor uma Página Abaixo"
+
+msgid "Caret Document Start"
+msgstr "Cursor no Início da Documentação"
+
+msgid "Caret Document End"
+msgstr "Cursor no Final da Documentação"
+
+msgid "Caret Add Below"
+msgstr "Adicionar Cursor Abaixo"
+
+msgid "Caret Add Above"
+msgstr "Adicionar Cursor Acima"
+
+msgid "Scroll Up"
+msgstr "Rolar Acima"
+
+msgid "Scroll Down"
+msgstr "Rolar Abaixo"
+
msgid "Select All"
msgstr "Selecionar tudo"
+msgid "Select Word Under Caret"
+msgstr "Selecionar Palavra sob Cursor"
+
+msgid "Add Selection for Next Occurrence"
+msgstr "Adicionar Seleção para a Próxima Ocorrência"
+
+msgid "Clear Carets and Selection"
+msgstr "Limpar Cursores e Seleção"
+
+msgid "Toggle Insert Mode"
+msgstr "Alternar Modo de Inserção"
+
msgid "Duplicate Nodes"
-msgstr "Duplicar Nó(s)"
+msgstr "Duplicar Nós"
msgid "Delete Nodes"
msgstr "Excluir Nós"
+msgid "Go Up One Level"
+msgstr "Subir Um Nível"
+
msgid "Refresh"
msgstr "Atualizar"
+msgid "Show Hidden"
+msgstr "Mostrar Arquivos Ocultos"
+
+msgid "Swap Input Direction"
+msgstr "Trocar Direção da Entrada"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %d (não passada) na expressão"
@@ -270,6 +540,12 @@ msgstr "Argumentos inválidos para o construto '%s'"
msgid "On call to '%s':"
msgstr "Na chamada para '%s':"
+msgid "Built-in script"
+msgstr "Script Embutido"
+
+msgid "Built-in"
+msgstr "Embutido"
+
msgid "B"
msgstr "B"
@@ -291,6 +567,14 @@ msgstr "PiB"
msgid "EiB"
msgstr "EiB"
+msgid "Example: %s"
+msgstr "Exemplo: %s"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d item"
+msgstr[1] "%d itens"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -301,17 +585,47 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Já existe uma ação com o nome '%s'."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "Não é possível reverter - A ação é mesma que a inicial"
+
+msgid "Revert Action"
+msgstr "Reverter Ação"
+
msgid "Add Event"
-msgstr "Adicionar VEvento"
+msgstr "Adicionar Evento"
+
+msgid "Remove Action"
+msgstr "Remover Ação"
+
+msgid "Cannot Remove Action"
+msgstr "Não foi Possível Remover a Ação"
+
+msgid "Edit Event"
+msgstr "Editar Evento"
+
+msgid "Remove Event"
+msgstr "Remover Evento"
+
+msgid "Filter by name..."
+msgstr "Filtrar por nome..."
+
+msgid "Clear All"
+msgstr "Limpar Tudo"
+
+msgid "Add New Action"
+msgstr "Adicionar Nova Ação"
msgid "Add"
msgstr "Adicionar"
+msgid "Show Built-in Actions"
+msgstr "Mostrar Ações Incorporadas"
+
msgid "Action"
msgstr "Ação"
msgid "Deadzone"
-msgstr "Zona morta"
+msgstr "Zona Morta"
msgid "Time:"
msgstr "Tempo:"
@@ -319,6 +633,9 @@ msgstr "Tempo:"
msgid "Value:"
msgstr "Valor:"
+msgid "Update Selected Key Handles"
+msgstr "Atualizar Manipuladores de Chaves Selecionados"
+
msgid "Insert Key Here"
msgstr "Inserir Chave Aqui"
@@ -328,11 +645,68 @@ msgstr "Duplicar Chave(s) Selecionada(s)"
msgid "Delete Selected Key(s)"
msgstr "Excluir Chave(s) Selecionada(s)"
+msgid "Make Handles Free"
+msgstr "Liberar Manipuladores"
+
+msgid "Make Handles Linear"
+msgstr "Tornar Linear os manipuladores"
+
+msgid "Make Handles Balanced"
+msgstr "Balancear Manipuladores"
+
+msgid "Make Handles Mirrored"
+msgstr "Espelhar os Manipuladores"
+
+msgid "Make Handles Balanced (Auto Tangent)"
+msgstr "Tornar Manipuladores Balanceados (Tangente Automática)"
+
+msgid "Make Handles Mirrored (Auto Tangent)"
+msgstr "Espelhar Manipuladores (Tangente Automática)"
+
msgid "Add Bezier Point"
msgstr "Adicionar um Ponto Bezier"
msgid "Move Bezier Points"
-msgstr "Mover pontos Bezier"
+msgstr "Mover Pontos Bezier"
+
+msgid "Animation Duplicate Keys"
+msgstr "Duplicar Chaves na Animação"
+
+msgid "Animation Delete Keys"
+msgstr "Excluir Chaves da Animação"
+
+msgid "Focus"
+msgstr "Foco"
+
+msgid "Select All Keys"
+msgstr "Selecionar Todas as Chaves"
+
+msgid "Deselect All Keys"
+msgstr "Desmarcar Todas as Chaves"
+
+msgid "Animation Change Transition"
+msgstr "Alterar Transição da Animação"
+
+msgid "Animation Change %s"
+msgstr "Mudança na Animação %s"
+
+msgid "Animation Change Keyframe Value"
+msgstr "Alterar Valor de Keyframe da Animação"
+
+msgid "Animation Change Call"
+msgstr "Alterar Chamada da Animação"
+
+msgid "Animation Multi Change Transition"
+msgstr "Transição de Mudança Múltipla de Animação"
+
+msgid "Animation Multi Change %s"
+msgstr "Mudanças na Animação Múltipla %s"
+
+msgid "Animation Multi Change Keyframe Value"
+msgstr "Mudanças no Valor Keyframe da Animação Múltipla"
+
+msgid "Animation Multi Change Call"
+msgstr "Mudanças na Chamada da Animação Múltipla"
msgid "Change Animation Length"
msgstr "Alterar Duração da Animação"
@@ -340,14 +714,36 @@ msgstr "Alterar Duração da Animação"
msgid "Change Animation Loop"
msgstr "Alterar Repetição da Animação"
+msgid "Can't change loop mode on animation instanced from imported scene."
+msgstr ""
+"Não é possível alterar o modo de repetição na animação instanciada da cena "
+"importada."
+
+msgid "Can't change loop mode on animation embedded in another scene."
+msgstr ""
+"Não é possível alterar o modo de repetição na animação incorporada em outra "
+"cena."
+
msgid "Property Track"
-msgstr "Trilha de Propriedade"
+msgstr "Faixa de Propriedades"
+
+msgid "3D Position Track"
+msgstr "Faixa de Posição 3D"
+
+msgid "3D Rotation Track"
+msgstr "Faixa de Rotação 3D"
+
+msgid "3D Scale Track"
+msgstr "Faixa de Escala 3D"
+
+msgid "Blend Shape Track"
+msgstr "Faixa de Transformação"
msgid "Call Method Track"
-msgstr "Trilha de método de chamada"
+msgstr "Faixa de Método de Chamada"
msgid "Bezier Curve Track"
-msgstr "Caminho da Curva de Bezier"
+msgstr "Faixa de Curva de Bezier"
msgid "Audio Playback Track"
msgstr "Faixa de Reprodução de Ãudio"
@@ -365,7 +761,7 @@ msgid "Add Track"
msgstr "Adicionar Faixa"
msgid "Animation Looping"
-msgstr "Loop da Animação"
+msgstr "Repetir Animação"
msgid "Functions:"
msgstr "Funções:"
@@ -373,12 +769,18 @@ msgstr "Funções:"
msgid "Audio Clips:"
msgstr "Clipes de Ãudio:"
+msgid "Animation Clips:"
+msgstr "Clipes de Animação:"
+
msgid "Change Track Path"
-msgstr "Alterar Valor do Trajeto"
+msgstr "Alterar Caminho da Faixa"
msgid "Toggle this track on/off."
msgstr "Ligar/desligar esta faixa."
+msgid "Use Blend"
+msgstr "Usar Transformação"
+
msgid "Update Mode (How this property is set)"
msgstr "Modo de Atualização (Como esta propriedade é setada)"
@@ -386,7 +788,7 @@ msgid "Interpolation Mode"
msgstr "Modo de Interpolação"
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr "Modo Loop Enrolado (Interpolar fim com início no loop)"
+msgstr "Modo Repetir Infinito (Interpolar final com o início na repetição)"
msgid "Remove this track."
msgstr "Remover esta faixa."
@@ -403,6 +805,9 @@ msgstr "Rotação:"
msgid "Scale:"
msgstr "Escala:"
+msgid "Blend Shape:"
+msgstr "Transformação:"
+
msgid "Type:"
msgstr "Tipo:"
@@ -410,7 +815,7 @@ msgid "(Invalid, expected type: %s)"
msgstr "(Inválido, tipo esperado: %s)"
msgid "Easing:"
-msgstr "Suavizar:"
+msgstr "Suavização:"
msgid "In-Handle:"
msgstr "Manipulador de Entrada:"
@@ -418,8 +823,20 @@ msgstr "Manipulador de Entrada:"
msgid "Out-Handle:"
msgstr "Manipulador de Saída:"
+msgid "Handle mode: Free\n"
+msgstr "Modo manipular: livre\n"
+
+msgid "Handle mode: Linear\n"
+msgstr "Modo manipular: Linear\n"
+
+msgid "Handle mode: Balanced\n"
+msgstr "Modo manipular: Equilibrado\n"
+
+msgid "Handle mode: Mirrored\n"
+msgstr "Modo manipular: Espelhado\n"
+
msgid "Stream:"
-msgstr "Transmissão:"
+msgstr "Fluxo:"
msgid "Start (s):"
msgstr "Início (s):"
@@ -428,10 +845,13 @@ msgid "End (s):"
msgstr "Final (is):"
msgid "Animation Clip:"
-msgstr "Animações:"
+msgstr "Clipe de Animação:"
msgid "Toggle Track Enabled"
-msgstr "Habilitar Faixa"
+msgstr "Habilitar/Desabilitar Faixa"
+
+msgid "Don't Use Blend"
+msgstr "Não Use Transformação"
msgid "Continuous"
msgstr "Contínuo"
@@ -443,7 +863,7 @@ msgid "Capture"
msgstr "Capturar"
msgid "Nearest"
-msgstr "Mais próximo"
+msgstr "Aproximado"
msgid "Linear"
msgstr "Linear"
@@ -451,11 +871,17 @@ msgstr "Linear"
msgid "Cubic"
msgstr "Cúbico"
+msgid "Linear Angle"
+msgstr "Ângulo Linear"
+
+msgid "Cubic Angle"
+msgstr "Ângulo Cúbico"
+
msgid "Clamp Loop Interp"
-msgstr "Mudar Interpolação do Loop da Animação"
+msgstr "Mudar Interpolação da Repetição"
msgid "Wrap Loop Interp"
-msgstr "Amarrar Interpolação de Loop"
+msgstr "Fixar Repetição da Interpolação"
msgid "Insert Key"
msgstr "Inserir Chave"
@@ -476,14 +902,33 @@ msgid "Change Animation Interpolation Mode"
msgstr "Alterar Modo de Interpolação da Animação"
msgid "Change Animation Loop Mode"
-msgstr "Alterar Modo Repetição da Animação"
+msgstr "Alterar Modo de Repetição da Animação"
+
+msgid "Change Animation Use Blend"
+msgstr "Alterar Uso de Transformação na Animação"
+
+msgid ""
+"Compressed tracks can't be edited or removed. Re-import the animation with "
+"compression disabled in order to edit."
+msgstr ""
+"Faixas compactadas não podem ser editadas ou removidas. Reimporte a animação "
+"com a compactação desativada para editá-la."
msgid "Remove Anim Track"
-msgstr "Remover Trilha da Anim"
+msgstr "Remover Faixa de Animação"
+
+msgid "Create new track for %s and insert key?"
+msgstr "Criar NOVA faixa para %s e inserir chave?"
+
+msgid "Create %d new tracks and insert keys?"
+msgstr "Criar %d NOVAS faixas e inserir chaves?"
msgid "Create"
msgstr "Criar"
+msgid "Animation Insert Key"
+msgstr "Inserir Chave na Animação"
+
msgid "node '%s'"
msgstr "nó '%s'"
@@ -502,6 +947,14 @@ msgstr "Alterar FPS da Animação"
msgid "Rearrange Tracks"
msgstr "Reordenar Faixas"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr "As faixas de Transformação aplicam-se apenas a nós MeshInstance3D."
+
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"As faixas 3D de Posição/Rotação/Escala se aplicam apenas a nós baseados em "
+"3D."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -517,23 +970,37 @@ msgid "Animation tracks can only point to AnimationPlayer nodes."
msgstr "Faixas de animação só podem apontar para nós AnimationPlayer."
msgid "Not possible to add a new track without a root"
-msgstr "Não é possível adicionar uma nova trilha sem uma raiz"
+msgstr "Não é possível adicionar uma nova faixa sem uma raiz"
msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr "Trilha inválida para Bézier (sem sub-propriedades adequadas)"
+msgstr "Faixa inválida para Bézier (sem sub-propriedades adequadas)"
msgid "Add Bezier Track"
-msgstr "Adicionar Trilha Bezier"
+msgstr "Adicionar Faixa Bezier"
msgid "Track path is invalid, so can't add a key."
-msgstr "Caminho da trilha é inválido, então não pode adicionar uma chave."
+msgstr ""
+"O caminho da faixa é inválido, então não é possível adicionar uma chave."
+
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "A faixa não é do tipo Node3D, não é possível inserir a chave"
+
+msgid "Add Position Key"
+msgstr "Adicionar Chave de Posição"
+
+msgid "Add Rotation Key"
+msgstr "Adicionar Chave de Rotação"
+
+msgid "Add Scale Key"
+msgstr "Adicionar Chave de Escala"
msgid "Add Track Key"
-msgstr "Adicionar Trilha Chave"
+msgstr "Adicionar Faixa Chave"
msgid "Track path is invalid, so can't add a method key."
msgstr ""
-"Caminho da trilha é inválido, então não pode adicionar uma chave de método."
+"O caminho da faixa é inválido, então não foi possível adicionar uma chave de "
+"método."
msgid "Add Method Track Key"
msgstr "Adicionar Chave de Trilha de Método"
@@ -541,6 +1008,9 @@ msgstr "Adicionar Chave de Trilha de Método"
msgid "Method not found in object:"
msgstr "Método não encontrado no objeto:"
+msgid "Animation Move Keys"
+msgstr "Mover Chaves da Animação"
+
msgid "Position"
msgstr "Posição"
@@ -550,6 +1020,9 @@ msgstr "Rotação"
msgid "Scale"
msgstr "Escala"
+msgid "BlendShape"
+msgstr "BlendShape"
+
msgid "Methods"
msgstr "Métodos"
@@ -563,13 +1036,43 @@ msgid "Clipboard is empty!"
msgstr "Ãrea de transferência vazia!"
msgid "Paste Tracks"
-msgstr "Colar Trilhas"
+msgstr "Colar Faixas"
+
+msgid "Animation Scale Keys"
+msgstr "Chaves de Escala da Animação"
+
+msgid "Make Easing Keys"
+msgstr "Gerar Chaves de Suavização"
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
msgstr ""
-"Essa opção não funciona para edição por Bézier, pois é apenas uma trilha "
-"única."
+"Esta opção não funciona para edição de Bezier, pois é apenas uma única faixa."
+
+msgid "Animation Add RESET Keys"
+msgstr "Adicionar chaves RESET na Animação"
+
+msgid "Bake Animation as Linear keys."
+msgstr "Pré-calcular Animação como chaves Lineares."
+
+msgid ""
+"This animation belongs to an imported scene, so changes to imported tracks "
+"will not be saved.\n"
+"\n"
+"To modify this animation, navigate to the scene's Advanced Import settings "
+"and select the animation.\n"
+"Some options, including looping, are available here. To add custom tracks, "
+"enable \"Save To File\" and\n"
+"\"Keep Custom Tracks\"."
+msgstr ""
+"Esta animação pertence a uma cena importada, portanto as alterações nas "
+"faixas importadas não serão salvas.\n"
+"\n"
+"Para modificar esta animação, navegue até as configurações avançadas de "
+"importação da cena e selecione a animação.\n"
+"Algumas opções, incluindo repetição, estão disponíveis aqui. Para adicionar "
+"faixas personalizadas, ative \"Salvar em Arquivo\" e\n"
+"\"Manter faixas personalizadas\"."
msgid "Warning: Editing imported animation"
msgstr "Aviso: Editando animação importada"
@@ -577,14 +1080,20 @@ msgstr "Aviso: Editando animação importada"
msgid "Select an AnimationPlayer node to create and edit animations."
msgstr "Selecione um nó do tipo AnimationPlayer para criar e editar animações."
+msgid "Imported Scene"
+msgstr "Cena Importada"
+
+msgid "Toggle between the bezier curve editor and track editor."
+msgstr "Alterne entre o editor de curvas de Bezier e o editor de faixas."
+
msgid "Only show tracks from nodes selected in tree."
-msgstr "Apenas mostrar trilhas de nós selecionados na árvore."
+msgstr "Mostra apenas as faixas dos nós selecionados na árvore."
msgid "Group tracks by node or display them as plain list."
-msgstr "Agrupe as trilhas pelo nó ou exiba-as como lista simples."
+msgstr "Agrupe as faixas pelo nó ou exiba-as como lista simples."
msgid "Snap:"
-msgstr "Gancho:"
+msgstr "Ajuste:"
msgid "Animation step value."
msgstr "Valor do passo de animação."
@@ -599,16 +1108,19 @@ msgid "Edit"
msgstr "Editar"
msgid "Animation properties."
-msgstr "Propriedades de animação."
+msgstr "Propriedades da animação."
msgid "Copy Tracks"
-msgstr "Copiar Trilhas"
+msgstr "Copiar Faixas"
msgid "Scale Selection"
msgstr "Selecionar Escala"
msgid "Scale From Cursor"
-msgstr "Escalar a partir do Cursor"
+msgstr "Escalar a Partir do Cursor"
+
+msgid "Make Easing Selection"
+msgstr "Escolher Tipo de Suavização"
msgid "Duplicate Selection"
msgstr "Duplicar Seleção"
@@ -628,17 +1140,23 @@ msgstr "Ir ao Passo Anterior"
msgid "Apply Reset"
msgstr "Redefinir"
+msgid "Bake Animation"
+msgstr "Gerar Animação"
+
+msgid "Optimize Animation (no undo)"
+msgstr "Otimizar Animação (irreversível)"
+
+msgid "Clean-Up Animation (no undo)"
+msgstr "Limpar Animação (irreversível)"
+
+msgid "Pick a node to animate:"
+msgstr "Escolha um nó para animar:"
+
msgid "Use Bezier Curves"
msgstr "Usar Curvas de Bezier"
msgid "Create RESET Track(s)"
-msgstr "Criar RESET Track(s)"
-
-msgid "Anim. Optimizer"
-msgstr "Otimizador de Animação"
-
-msgid "Max. Angular Error:"
-msgstr "Erro Angular Max.:"
+msgstr "Criar Faixa(s) de RESET"
msgid "Optimize"
msgstr "Otimizar"
@@ -647,13 +1165,13 @@ msgid "Remove invalid keys"
msgstr "Remover chaves inválidas"
msgid "Remove unresolved and empty tracks"
-msgstr "Remover trilhas vazias e não resolvidas"
+msgstr "Remover faixas vazias e não resolvidas"
msgid "Clean-up all animations"
msgstr "Limpar todas as animações"
msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr "Limpar Animação(ões) (IRREVERSÃVEL!)"
+msgstr "Limpar Animação (IRREVERSÃVEL!)"
msgid "Clean-Up"
msgstr "Limpar"
@@ -661,11 +1179,14 @@ msgstr "Limpar"
msgid "Scale Ratio:"
msgstr "Razão de Escala:"
+msgid "Select Transition and Easing"
+msgstr "Selecione a Transição e Suavização"
+
msgid "Select Tracks to Copy"
-msgstr "Selecionar Trilhas para Copiar"
+msgstr "Selecione as Faixas para Copiar"
msgid "Select All/None"
-msgstr "Selecionar Todos/Nenhum"
+msgstr "Selecionar Todas/Nenhuma"
msgid "Add Audio Track Clip"
msgstr "Adicionar Clipe de Trilha de Ãudio"
@@ -685,6 +1206,16 @@ msgstr "Número da Linha:"
msgid "%d replaced."
msgstr "%d substituído."
+msgid "%d match"
+msgid_plural "%d matches"
+msgstr[0] "%d correspondência"
+msgstr[1] "%d correspondências"
+
+msgid "%d of %d match"
+msgid_plural "%d of %d matches"
+msgstr[0] "%d de %d correspondência"
+msgstr[1] "%d de %d correspondências"
+
msgid "Match Case"
msgstr "Diferenciar Maiúsculas e Minúsculas"
@@ -743,12 +1274,21 @@ msgstr "Conectar ao Script:"
msgid "From Signal:"
msgstr "Sinal Origem:"
+msgid "Filter Nodes"
+msgstr "Filtrar Nós"
+
msgid "Scene does not contain any script."
msgstr "A cena não contém nenhum script."
msgid "Select Method"
msgstr "Selecionar Mtéodo"
+msgid "Filter Methods"
+msgstr "Métodos de Filtro"
+
+msgid "No method found matching given filters."
+msgstr "Nenhum método encontrado correspondente aos filtros aplicados."
+
msgid "Remove"
msgstr "Remover"
@@ -811,6 +1351,9 @@ msgstr "Tem certeza que quer remover todas as conexões do sinal \"%s\"?"
msgid "Signals"
msgstr "Sinais"
+msgid "Filter Signals"
+msgstr "Filtrar Sinais"
+
msgid "Are you sure you want to remove all connections from this signal?"
msgstr "Tem certeza que quer remover todas conexões desse sinal?"
@@ -839,7 +1382,7 @@ msgid "Favorites:"
msgstr "Favoritos:"
msgid "Recent:"
-msgstr "Recente:"
+msgstr "Recentes:"
msgid "Search:"
msgstr "Pesquisar:"
@@ -985,6 +1528,9 @@ msgstr "Continuar"
msgid "Stack Frames"
msgstr "Pilha de Quadros"
+msgid "Filter Stack Variables"
+msgstr "Filtrar Variáveis de Pilha"
+
msgid "Breakpoints"
msgstr "Pontos de Quebra"
@@ -1019,7 +1565,7 @@ msgid "Usage"
msgstr "Uso"
msgid "Misc"
-msgstr "Misc"
+msgstr "Diversos"
msgid "Clicked Control:"
msgstr "Controle Clicado:"
@@ -1209,9 +1755,9 @@ msgid ""
"respective copyright statements and license terms."
msgstr ""
"Godot Engine depende de várias bibliotecas de código aberto e gratuitas de "
-"terceiros, todas compatíveis com os termos de sua licença MIT. A lista "
-"seguinte é uma lista completa de todos esses componentes de terceiros com "
-"suas respectivas declarações de direitos autorais e termos de licença."
+"terceiros, todas compatíveis com os termos de sua licença MIT. Veja abaixo a "
+"lista completa de todos esses componentes de terceiros com suas respectivas "
+"declarações de direitos autorais e termos de licença."
msgid "All Components"
msgstr "Todos Componentes"
@@ -1261,7 +1807,7 @@ msgid "Speakers"
msgstr "Caixas de Som"
msgid "Add Effect"
-msgstr "Adicionar Efeito"
+msgstr "Ad. Efeito"
msgid "Rename Audio Bus"
msgstr "Renomear Canal de Ãudio"
@@ -1294,7 +1840,7 @@ msgid "Drag & drop to rearrange."
msgstr "Arrastar e soltar para reorganizar."
msgid "Solo"
-msgstr "Solo"
+msgstr "Só"
msgid "Mute"
msgstr "Silenciar"
@@ -1458,6 +2004,9 @@ msgstr "Redefinir para o padrão"
msgid "Export Profile"
msgstr "Exportar Perfil"
+msgid "Filter Commands"
+msgstr "Comandos de Filtro"
+
msgid "Paste Params"
msgstr "Colar Parâmetros"
@@ -1642,9 +2191,6 @@ msgstr "Abrir"
msgid "Select Current Folder"
msgstr "Selecionar a Pasta Atual"
-msgid "File exists, overwrite?"
-msgstr "O arquivo já existe. Sobrescrever?"
-
msgid "Select This Folder"
msgstr "Selecionar esta Pasta"
@@ -1790,6 +2336,9 @@ msgstr "padrão:"
msgid "Constructors"
msgstr "Construtores"
+msgid "Operators"
+msgstr "Operadores"
+
msgid "Theme Properties"
msgstr "Propriedades do Tema"
@@ -1918,24 +2467,59 @@ msgstr "%s não fixado"
msgid "Copy Property Path"
msgstr "Copiar Caminho da Propriedade"
+msgid "Changed Locale Language Filter"
+msgstr "Filtro de Dialeto de Idioma Alterado"
+
+msgid "Changed Locale Script Filter"
+msgstr "Filtro de Script de Dialeto Alterado"
+
+msgid "Changed Locale Country Filter"
+msgstr "Filtro de Dialeto por País Alterado"
+
msgid "Changed Locale Filter Mode"
-msgstr "Modo do Filtro de Idiomas Alterado"
+msgstr "Modo do Filtro de Dialeto Alterado"
+
+msgid "[Default]"
+msgstr "[Padrão]"
+
+msgid "Select a Locale"
+msgstr "Selecione um Dialeto"
msgid "Show All Locales"
-msgstr "Mostrar todos os Locales"
+msgstr "Mostrar Todos os Dialetos"
msgid "Show Selected Locales Only"
-msgstr "Mostrar apenas os Locales selecionados"
+msgstr "Mostrar Apenas os Dialetos Selecionados"
msgid "Edit Filters"
msgstr "Editar Filtros"
msgid "Language:"
-msgstr "Idioma:"
+msgstr "Dialeto:"
+
+msgctxt "Locale"
+msgid "Script:"
+msgstr "Script:"
+
+msgid "Country:"
+msgstr "País:"
+
+msgid "Language"
+msgstr "Dialeto"
+
+msgctxt "Locale"
+msgid "Script"
+msgstr "Script"
+
+msgid "Country"
+msgstr "País"
msgid "Variant"
msgstr "Variante"
+msgid "Filter Messages"
+msgstr "Filtrar Mensagens"
+
msgid "Clear Output"
msgstr "Limpar Saída"
@@ -2313,6 +2897,9 @@ msgstr "Deslocar Visão"
msgid "Dock Position"
msgstr "Pos. do Painel"
+msgid "Make Floating"
+msgstr "Tornar Flutuante"
+
msgid "Add a new scene."
msgstr "Adicionar nova cena."
@@ -2334,6 +2921,9 @@ msgstr "Ir para cena aberta anteriormente."
msgid "Copy Text"
msgstr "Copiar Texto"
+msgid "Focus FileSystem Filter"
+msgstr "Focar Filtro de Arquivos"
+
msgid "New Scene"
msgstr "Nova Cena"
@@ -2352,6 +2942,9 @@ msgstr "Abrir Recente"
msgid "Save Scene"
msgstr "Salvar Cena"
+msgid "Export As..."
+msgstr "Exportar Como…"
+
msgid "MeshLibrary..."
msgstr "MeshLibrary..."
@@ -2451,17 +3044,68 @@ msgstr "Sobre o Godot"
msgid "Support Godot Development"
msgstr "Apoie o Desenvolvimento do Godot"
+msgid "Run the project's default scene."
+msgstr "Execute a cena padrão do projeto."
+
msgid "Run Project"
msgstr "Executar Projeto"
+msgid "Pause the running project's execution for debugging."
+msgstr "Pausar a execução do projeto para depuração."
+
+msgid "Pause Running Project"
+msgstr "Pausar Projeto em Execução"
+
+msgid "Stop the currently running project."
+msgstr "Para o projeto atualmente em execução."
+
+msgid "Stop Running Project"
+msgstr "Parar de Executar o Projeto"
+
+msgid "Run the currently edited scene."
+msgstr "Execute a cena atual editada."
+
+msgid "Run Current Scene"
+msgstr "Executar Cena Atual"
+
+msgid "Run a specific scene."
+msgstr "Execute uma cena específica."
+
+msgid "Run Specific Scene"
+msgstr "Executar Cena Específica"
+
+msgid ""
+"Enable Movie Maker mode.\n"
+"The project will run at stable FPS and the visual and audio output will be "
+"recorded to a video file."
+msgstr ""
+"Ativar o modo Movie Maker.\n"
+"O projeto será executado em FPS estável e a saída visual e de áudio será "
+"gravada em um arquivo de vídeo."
+
+msgid "Choose a renderer."
+msgstr "Escolha um renderizador."
+
+msgid "Forward+"
+msgstr "Avançado+"
+
+msgid "Mobile"
+msgstr "Mobile"
+
msgid "Compatibility"
msgstr "Compatibilidade"
+msgid "Changing the renderer requires restarting the editor."
+msgstr "A alteração do renderizador requer a reinicialização do editor."
+
msgid "Update Continuously"
msgstr "Atualizar Continuamente"
+msgid "Update When Changed"
+msgstr "Atualizar Quando Alterado"
+
msgid "Hide Update Spinner"
-msgstr "Ocultar Spinner de Atualização"
+msgstr "Ocultar Ãcone de Atualização"
msgid "FileSystem"
msgstr "Arquivos"
@@ -2472,6 +3116,9 @@ msgstr "Inspetor"
msgid "Node"
msgstr "Nó"
+msgid "History"
+msgstr "Histórico"
+
msgid "Expand Bottom Panel"
msgstr "Expandir Painel Inferior"
@@ -2487,11 +3134,31 @@ msgstr ""
"modelos relevantes."
msgid "Manage Templates"
-msgstr "Gerenciar Templates"
+msgstr "Gerenciar Modelos"
msgid "Install from file"
msgstr "Instalar do arquivo"
+msgid "Select Android sources file"
+msgstr "Selecione os arquivos fonte do Android"
+
+msgid ""
+"This will set up your project for gradle Android builds by installing the "
+"source template to \"res://android/build\".\n"
+"You can then apply modifications and build your own custom APK on export "
+"(adding modules, changing the AndroidManifest.xml, etc.).\n"
+"Note that in order to make gradle builds instead of using pre-built APKs, "
+"the \"Use Gradle Build\" option should be enabled in the Android export "
+"preset."
+msgstr ""
+"Isso configurará seu projeto para compilações gradle do Android instalando o "
+"modelo de origem em \"res://android/build\".\n"
+"Você pode aplicar modificações e criar seu próprio APK personalizado na "
+"exportação (adicionar módulos, alterar o AndroidManifest.xml, etc.).\n"
+"Observe que, para criar gradle builds em vez de usar APKs pré-criados, a "
+"opção \"Use Gradle Build\" deve ser habilitada na predefinição de exportação "
+"do Android."
+
msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
@@ -2642,6 +3309,12 @@ msgstr "Escolha uma Viewport"
msgid "Selected node is not a Viewport!"
msgstr "O nó selecionado não é uma Viewport!"
+msgid "(Nil) %s"
+msgstr "(Nil) %s"
+
+msgid "%s (size %s)"
+msgstr "%s (quantidade: %s)"
+
msgid "Size:"
msgstr "Tamanho:"
@@ -2657,6 +3330,15 @@ msgstr "Novo Valor:"
msgid "Add Key/Value Pair"
msgstr "Adicionar Par de Chave/Valor"
+msgid "Localizable String (Nil)"
+msgstr "Traduções da String"
+
+msgid "Localizable String (size %d)"
+msgstr "Traduções do Título (para %d dialetos)"
+
+msgid "Add Translation"
+msgstr "Adicionar Tradução"
+
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
@@ -2719,6 +3401,22 @@ msgstr "Atalhos"
msgid "Binding"
msgstr "VInculamento"
+msgid ""
+"Hold %s to round to integers.\n"
+"Hold Shift for more precise changes."
+msgstr ""
+"Segure %s para arredondar para números inteiros.\n"
+"Segure Shift para mudanças mais precisas."
+
+msgid "No notifications."
+msgstr "Nenhuma notificação."
+
+msgid "Show notifications."
+msgstr "Mostrar notificações."
+
+msgid "Silence the notifications."
+msgstr "Silenciar as notificações."
+
msgid "All Devices"
msgstr "Todos os dispositivos"
@@ -2841,7 +3539,7 @@ msgid ""
"Templates installation failed.\n"
"The problematic templates archives can be found at '%s'."
msgstr ""
-"Falha na instalação de modelos. \n"
+"Falha na instalação dos modelos.\n"
"Os arquivos de modelos problemáticos podem ser encontrados em '%s'."
msgid "Error getting the list of mirrors."
@@ -2894,7 +3592,7 @@ msgstr "Não foi possível abrir o arquivo de modelos de exportação."
msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
-"Formato de version.txt inválido dentro do arquivo de modelos de exportação: "
+"Formato do version.txt inválido dentro do arquivo de modelos de exportação: "
"%s."
msgid "No version.txt found inside the export templates file."
@@ -2912,7 +3610,7 @@ msgid "Importing:"
msgstr "Importando:"
msgid "Remove templates for the version '%s'?"
-msgstr "Remover modelo para a versão '%s'?"
+msgstr "Remover modelos para a versão '%s'?"
msgid "Uncompressing Android Build Sources"
msgstr "Descompactando Fontes de Compilação do Android"
@@ -2929,14 +3627,13 @@ msgstr ""
"arquivo."
msgid "Export templates are installed and ready to be used."
-msgstr ""
-"As exportações de modelos estão instaladas e prontas para serem usadas."
+msgstr "Os modelos de exportação estão instalados e prontos para serem usados."
msgid "Open Folder"
msgstr "Abrir Pasta"
msgid "Open the folder containing installed templates for the current version."
-msgstr "Abre a pasta contendo modelos instalados para a versão atual."
+msgstr "Abre a pasta que contém os modelos instalados para a versão atual."
msgid "Uninstall"
msgstr "Desinstalar"
@@ -2965,7 +3662,7 @@ msgstr ""
msgid "Official export templates aren't available for development builds."
msgstr ""
-"Modelos de exportação oficiais não estão disponíveis para compilações de "
+"Os modelos de exportação oficiais não estão disponíveis para compilações de "
"desenvolvimento."
msgid "Install from File"
@@ -3065,14 +3762,14 @@ msgid ""
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
"Filtros para exportar arquivos/pastas que não sejam recursos\n"
-"(separados por vírgula, e.g.: *.json, *.txt)"
+"(separados por vírgula, ex.: *.json, *.txt, docs/*)"
msgid ""
"Filters to exclude files/folders from project\n"
"(comma-separated, e.g: *.json, *.txt, docs/*)"
msgstr ""
"Filtros para excluir arquivos/pastas do projeto\n"
-"(separados por vírgula, ex.: *.json, *.txt)"
+"(separados por vírgula, ex.: *.json, *.txt, docs/*)"
msgid "Features"
msgstr "Funcionalidades"
@@ -3083,6 +3780,20 @@ msgstr "Personalizado (separado por vírgula):"
msgid "Feature List:"
msgstr "Lista de Funcionalidades:"
+msgid ""
+"Filters to include files/folders\n"
+"(comma-separated, e.g: *.tscn, *.tres, scenes/*)"
+msgstr ""
+"Filtros para excluir arquivos/pastas do projeto\n"
+"(separados por vírgula, ex.: *.tscn, *.tres, scenes/*)"
+
+msgid ""
+"Filters to exclude files/folders\n"
+"(comma-separated, e.g: *.ctex, *.import, music/*)"
+msgstr ""
+"Filtros para excluir arquivos/pastas do projeto\n"
+"(separados por vírgula, ex.: *.ctex, *.import, music/*)"
+
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
"Chave de Criptografia Inválida (deve conter 64 caracteres hexadecimais)"
@@ -3091,8 +3802,8 @@ msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
msgstr ""
-"Nota: Chaves de encriptação têm que ser salvas com o binário,\n"
-"você precisa compilar os modelos de exportação à partir do código fonte."
+"Nota: a chave de criptografia precisa ser armazenada no binário,\n"
+"você precisa construir os modelos de exportação da fonte."
msgid "More Info..."
msgstr "Mais Informações..."
@@ -3116,7 +3827,9 @@ msgid "Godot Project Pack"
msgstr "Pacote do Projeto Godot"
msgid "Export templates for this platform are missing:"
-msgstr "Modelos de exportação para esta plataforma não foram encontrados:"
+msgstr ""
+"Os seguintes modelos de exportação para esta plataforma não foram "
+"encontrados:"
msgid "Project Export"
msgstr "Exportar Projeto"
@@ -3264,6 +3977,9 @@ msgstr "Re-escanear Sistema de Arquivos"
msgid "Toggle Split Mode"
msgstr "Alternar Modo Split"
+msgid "Filter Files"
+msgstr "Filtrar Arquivos"
+
msgid ""
"Scanning Files,\n"
"Please Wait..."
@@ -3350,6 +4066,9 @@ msgstr "Editor de Grupos"
msgid "Manage Groups"
msgstr "Gerenciar Grupos"
+msgid "The Beginning"
+msgstr "O Início"
+
msgid "Reimport"
msgstr "Reimportar"
@@ -3529,7 +4248,7 @@ msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Remapeamento de Recurso de Tradução: Adicionados %d Remapeamento(s)"
msgid "Change Resource Remap Language"
-msgstr "Alterar Idioma de Remapeamento de Recuso"
+msgstr "Alterar Linguagem de Remapeamento de Recurso"
msgid "Remove Resource Remap"
msgstr "Remover Remapeamento de Recurso"
@@ -3555,6 +4274,9 @@ msgstr "Remapeamentos por Localidade:"
msgid "Locale"
msgstr "Localidade"
+msgid "Set %s on %d nodes"
+msgstr "Definindo %s nós como %d ativos"
+
msgid "Select a single node to edit its signals and groups."
msgstr "Selecione um nó para editar seus sinais e grupos."
@@ -4114,6 +4836,12 @@ msgstr "Último"
msgid "All"
msgstr "Todos"
+msgid "Search Templates, Projects, and Demos"
+msgstr "Pesquisar Modelos, Projetos, e Demonstrações"
+
+msgid "Search Assets (Excluding Templates, Projects, and Demos)"
+msgstr "Pesquisar Recursos (Excluindo Modelos, Projetos e Demonstrações)"
+
msgid "Import..."
msgstr "Importar..."
@@ -4672,12 +5400,12 @@ msgid ""
"On Android, deploying will use the USB cable for faster performance. This "
"option speeds up testing for projects with large assets."
msgstr ""
-"Quando esta opção está ativada, o uso de implantação com um clique para o "
+"Quando esta opção estiver habilitada, usar a implantação com um clique para "
"Android exportará apenas um executável sem os dados do projeto.\n"
-"O sistema de arquivos será fornecido a partir do projeto pelo editor na "
+"O sistema de arquivos será fornecido a partir do projeto pelo editor pela "
"rede.\n"
-"No Android, a implantação usará o cabo USB para desempenho mais rápido. Esta "
-"opção acelera o teste de projetos com grandes ativos."
+"No Android, a implantação usará o cabo USB para um desempenho mais rápido. "
+"Essa opção acelera o teste de projetos com grandes ativos."
msgid "Visible Collision Shapes"
msgstr "Formas de Colisão Visíveis"
@@ -4727,6 +5455,14 @@ msgstr ""
"Quando usado remotamente em um dispositivo, isso é mais eficiente quando a "
"opção de sistema de arquivos via rede está ativada."
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "Executando %d Instância"
+msgstr[1] "Executando %d Instâncias"
+
+msgid " - Variation"
+msgstr " - Variação"
+
msgid "Convert to CPUParticles2D"
msgstr "Converter para CPUParticles2D"
@@ -5143,6 +5879,9 @@ msgstr "Chaveamento está desativado (nenhuma chave inserida)."
msgid "Animation Key Inserted."
msgstr "Chave de Animação Inserida."
+msgid "Objects: %d\n"
+msgstr "Objetos: %d\n"
+
msgid "Top View."
msgstr "Visão Superior."
@@ -5248,6 +5987,9 @@ msgstr "Modificador de velocidade da Visão Livre"
msgid "Freelook Slow Modifier"
msgstr "Modificador de velocidade lenta da Visão Livre"
+msgid "Cancel Transformation"
+msgstr "Cancelar Transformação"
+
msgid "Toggle Camera Preview"
msgstr "Alternar pré-visualização da câmera"
@@ -6004,6 +6746,12 @@ msgstr "Vá para o próximo ponto de interrupção"
msgid "Go to Previous Breakpoint"
msgstr "Ir para ponto de interrupção anterior"
+msgid "Load Shader File"
+msgstr "Carregar Arquivo Shader"
+
+msgid "Shader Editor"
+msgstr "Editor Shader"
+
msgid "This skeleton has no bones, create some children Bone2D nodes."
msgstr "Este esqueleto não tem ossos, crie alguns nós filhos Bone2D."
@@ -6128,6 +6876,9 @@ msgstr "(vazio)"
msgid "Animations:"
msgstr "Animações:"
+msgid "Delete Animation"
+msgstr "Excluir Animação"
+
msgid "Animation Frames:"
msgstr "Frames da Animação:"
@@ -6179,21 +6930,59 @@ msgstr "Passo:"
msgid "Styleboxes"
msgstr "Styleboxes"
+msgid "1 color"
+msgid_plural "{num} colors"
+msgstr[0] "1 cor"
+msgstr[1] "{num} cores"
+
msgid "No colors found."
msgstr "Nenhuma cor encontrada."
+msgid "1 constant"
+msgid_plural "{num} constants"
+msgstr[0] "1 constante"
+msgstr[1] "{num} constantes"
+
msgid "No constants found."
msgstr "Nenhuma constante encontrada."
+msgid "1 font"
+msgid_plural "{num} fonts"
+msgstr[0] "1 fonte"
+msgstr[1] "{num} fontes"
+
msgid "No fonts found."
msgstr "Fontes não encontradas."
+msgid "1 font size"
+msgid_plural "{num} font sizes"
+msgstr[0] "1 tamanho de fonte"
+msgstr[1] "{num} tamanhos de fonte"
+
+msgid "No font sizes found."
+msgstr "Nenhum tamanho de fonte encontrado."
+
+msgid "1 icon"
+msgid_plural "{num} icons"
+msgstr[0] "1 ícone"
+msgstr[1] "{num} ícones"
+
msgid "No icons found."
msgstr "Ãcones não encontrados."
+msgid "1 stylebox"
+msgid_plural "{num} styleboxes"
+msgstr[0] "1 caixa de estilo"
+msgstr[1] "{num} caixas de estilo"
+
msgid "No styleboxes found."
msgstr "Nenhuma caixa de estilo encontrada."
+msgid "{num} currently selected"
+msgid_plural "{num} currently selected"
+msgstr[0] "{num} atualmente selecionado"
+msgstr[1] "{num} atualmente selecionados"
+
msgid "Nothing was selected for the import."
msgstr "Nada foi selecionado para a importação."
@@ -7342,6 +8131,12 @@ msgstr "Por favor, escolha um arquivo 'project.godot' ou arquivo '.zip'."
msgid "This directory already contains a Godot project."
msgstr "O diretório já contém um projeto Godot."
+msgid ""
+"The selected path is not empty. Choosing an empty folder is highly "
+"recommended."
+msgstr ""
+"O caminho selecionado não está vazio. É recomendado escolher uma pasta vazia."
+
msgid "New Game Project"
msgstr "Novo Projeto de Jogo"
@@ -7355,11 +8150,53 @@ msgid "Couldn't create folder."
msgstr "Impossível criar a pasta."
msgid "There is already a folder in this path with the specified name."
-msgstr "Já há uma pasta neste caminho com o nome especificado."
+msgstr "Já existe uma pasta neste caminho com o nome especificado."
msgid "It would be a good idea to name your project."
msgstr "Seria uma boa ideia nomear o seu projeto."
+msgid "Supports desktop platforms only."
+msgstr "Suporta apenas plataformas de desktop."
+
+msgid "Advanced 3D graphics available."
+msgstr "Gráficos 3D avançados disponíveis."
+
+msgid "Can scale to large complex scenes."
+msgstr "Pode escalar para cenas grandes e complexas."
+
+msgid "Uses RenderingDevice backend."
+msgstr "Suporta dispositivo de renderização atuais."
+
+msgid "Slower rendering of simple scenes."
+msgstr "Renderização mais lenta de cenas simples."
+
+msgid "Supports desktop + mobile platforms."
+msgstr "Suporta desktop + plataformas mobile."
+
+msgid "Less advanced 3D graphics."
+msgstr "Gráficos 3D menos avançados."
+
+msgid "Less scalable for complex scenes."
+msgstr "Menos escalável para cenas complexas."
+
+msgid "Fast rendering of simple scenes."
+msgstr "Renderização rápida de cenas simples."
+
+msgid "Supports desktop, mobile + web platforms."
+msgstr "Suporta desktop, plataformas mobile + web."
+
+msgid "Least advanced 3D graphics (currently work-in-progress)."
+msgstr "Gráficos 3D menos avançados (em desenvolvimento)."
+
+msgid "Intended for low-end/older devices."
+msgstr "Destinado a dispositivos modestos/antigos."
+
+msgid "Uses OpenGL 3 backend (OpenGL 3.3/ES 3.0/WebGL2)."
+msgstr "Usa renderizador OpenGL 3 (OpenGL 3.3/ES 3.0/WebGL2)."
+
+msgid "Fastest rendering of simple scenes."
+msgstr "Renderização mais rápida de cenas simples."
+
msgid "Invalid project path (changed anything?)."
msgstr "Caminho de projeto inválido (mudou alguma coisa?)."
@@ -7372,11 +8209,28 @@ msgstr ""
msgid "Couldn't save project at '%s' (error %d)."
msgstr "Não foi possível salvar o projeto em '%s' (erro %d)."
+msgid "Warning: This folder is not empty"
+msgstr "Aviso: Esta pasta não está vazia"
+
+msgid ""
+"You are about to create a Godot project in a non-empty folder.\n"
+"The entire contents of this folder will be imported as project resources!\n"
+"\n"
+"Are you sure you wish to continue?"
+msgstr ""
+"Você está prestes a criar um projeto Godot em uma pasta não vazia.\n"
+"Todo o conteúdo desta pasta será importado como recursos do projeto!\n"
+"\n"
+"Tem certeza que deseja continuar?"
+
msgid "Couldn't create project.godot in project path."
msgstr "Não foi possível criar project.godot no caminho do projeto."
+msgid "Couldn't create icon.svg in project path."
+msgstr "Não foi possível criar icon.svg no caminho do projeto."
+
msgid "Error opening package file, not in ZIP format."
-msgstr "Erro ao abrir arquivo compactado, não está no formato ZIP."
+msgstr "Erro ao abrir o arquivo compactado, não está no formato ZIP."
msgid "The following files failed extraction from package:"
msgstr "Os arquivos a seguir falharam ao serem extraídos do pacote:"
@@ -7412,13 +8266,24 @@ msgid "Project Path:"
msgstr "Caminho do Projeto:"
msgid "Project Installation Path:"
-msgstr "Caminho do Projeto:"
+msgstr "Caminho de Instalação do Projeto:"
msgid "Renderer:"
msgstr "Renderizador:"
+msgid "The renderer can be changed later, but scenes may need to be adjusted."
+msgstr ""
+"O renderizador pode ser alterado posteriormente, mas as cenas podem precisar "
+"de ajustes."
+
+msgid "Version Control Metadata:"
+msgstr "Controle de Versão:"
+
+msgid "Git"
+msgstr "Git"
+
msgid "Missing Project"
-msgstr "Projeto ausente"
+msgstr "Projeto Ausente"
msgid "Error: Project is missing on the filesystem."
msgstr "Erro: Projeto não encontrado no sistema de arquivos."
@@ -7436,11 +8301,159 @@ msgid "Can't open project at '%s'."
msgstr "Não é possível abrir o projeto em '%s'."
msgid ""
+"You requested to open %d projects in parallel. Do you confirm?\n"
+"Note that usual checks for engine version compatibility will be bypassed."
+msgstr ""
+"Você solicitou a abertura de %d projetos em paralelo. Você confirma?\n"
+"Observe que as verificações usuais de compatibilidade da versão da engine "
+"serão ignoradas."
+
+msgid ""
+"The selected project \"%s\" does not specify its supported Godot version in "
+"its configuration file (\"project.godot\").\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"If you proceed with opening it, it will be converted to Godot's current "
+"configuration file format.\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"O projeto selecionado \"%s\" não especifica sua versão Godot suportada em "
+"seu arquivo de configuração (\"project.godot\").\n"
+"\n"
+"Caminho do projeto: %s\n"
+"\n"
+"Se você prosseguir com a abertura, ele será convertido para o formato de "
+"arquivo de configuração atual do Godot.\n"
+"\n"
+"Aviso: você não poderá mais abrir o projeto com versões anteriores da engine."
+
+msgid ""
+"The selected project \"%s\" was generated by Godot 3.x, and needs to be "
+"converted for Godot 4.x.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"You have three options:\n"
+"- Convert only the configuration file (\"project.godot\"). Use this to open "
+"the project without attempting to convert its scenes, resources and "
+"scripts.\n"
+"- Convert the entire project including its scenes, resources and scripts "
+"(recommended if you are upgrading).\n"
+"- Do nothing and go back.\n"
+"\n"
+"Warning: If you select a conversion option, you won't be able to open the "
+"project with previous versions of the engine anymore."
+msgstr ""
+"O projeto selecionado \"%s\" foi gerado pelo Godot 3.x e precisa ser "
+"convertido para o Godot 4.x.\n"
+"\n"
+"Caminho do projeto: %s\n"
+"\n"
+"Você tem três opções:\n"
+"- Converter apenas o arquivo de configuração (\"project.godot\"). Use isso "
+"para abrir o projeto sem tentar converter suas cenas, recursos e scripts.\n"
+"- Converter todo o projeto incluindo suas cenas, recursos e scripts "
+"(recomendado se você estiver atualizando).\n"
+"- Não fazer nada e voltar.\n"
+"\n"
+"Aviso: Se você selecionar uma opção de conversão, não poderá mais abrir o "
+"projeto com versões anteriores da engine."
+
+msgid "Convert project.godot Only"
+msgstr "Converter Somente project.godot"
+
+msgid ""
+"The selected project \"%s\" was generated by an older engine version, and "
+"needs to be converted for this version.\n"
+"\n"
+"Project path: %s\n"
+"\n"
+"Do you want to convert it?\n"
+"\n"
+"Warning: You won't be able to open the project with previous versions of the "
+"engine anymore."
+msgstr ""
+"O projeto selecionado \"%s\" foi gerado por uma versão mais antiga da engine "
+"e precisa ser convertido para esta versão.\n"
+"\n"
+"Caminho do projeto: %s\n"
+"\n"
+"Você quer convertê-lo?\n"
+"\n"
+"Aviso: você não poderá mais abrir o projeto com versões anteriores da engine."
+
+msgid "Convert project.godot"
+msgstr "Converter(project.godot)"
+
+msgid ""
+"Can't open project \"%s\" at the following path:\n"
+"\n"
+"%s\n"
+"\n"
+"The project settings were created by a newer engine version, whose settings "
+"are not compatible with this version."
+msgstr ""
+"Não é possível abrir o projeto \"%s\" no seguinte caminho:\n"
+"\n"
+"%s\n"
+"\n"
+"As configurações do projeto foram criadas por uma versão mais recente da "
+"engine, cujas configurações não são compatíveis com esta versão."
+
+msgid ""
+"Warning: This project uses double precision floats, but this version of\n"
+"Godot uses single precision floats. Opening this project may cause data "
+"loss.\n"
+"\n"
+msgstr ""
+"Aviso: Este projeto usa double precision floats, mas esta versão do\n"
+"Godot usa single precision floats. Abrir este projeto pode causar perda de "
+"dados.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses C#, but this build of Godot does not have\n"
+"the Mono module. If you proceed you will not be able to use any C# scripts.\n"
+"\n"
+msgstr ""
+"Aviso: Este projeto usa C#, mas esta compilação do Godot não possui\n"
+"o módulo mono. Se você continuar, não poderá usar nenhum script C#.\n"
+"\n"
+
+msgid ""
+"Warning: This project was built in Godot %s.\n"
+"Opening will upgrade or downgrade the project to Godot %s.\n"
+"\n"
+msgstr ""
+"Aviso: Este projeto foi construído em Godot %s.\n"
+"A abertura atualizará ou rebaixará o projeto para Godot %s.\n"
+"\n"
+
+msgid ""
+"Warning: This project uses the following features not supported by this "
+"build of Godot:\n"
+"\n"
+"%s\n"
+"\n"
+msgstr ""
+"Aviso: Este projeto usa os seguintes recursos não suportados por esta versão "
+"do Godot:\n"
+"\n"
+"%s\n"
+"\n"
+
+msgid "Open anyway? Project will be modified."
+msgstr "Abrir assim mesmo? Projeto será modificado."
+
+msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in the Project Settings under "
"the \"Application\" category."
msgstr ""
-"Não é possível executar o projeto: nenhuma cena principal definida.\n"
+"Não é possível executar o projeto: nenhuma cena definida como principal.\n"
"Por favor, edite o projeto e defina a cena principal nas Configurações do "
"Projeto na categoria \"Aplicativo\"."
@@ -7479,7 +8492,7 @@ msgid ""
"Are you sure to scan %s folders for existing Godot projects?\n"
"This could take a while."
msgstr ""
-"Tem certeza que quer escanear %s pastam em busca de projetos Godot "
+"Tem certeza que deseja escanear %s pastas buscando projetos Godot "
"existentes?\n"
"Isso pode levar algum tempo."
@@ -7487,6 +8500,9 @@ msgctxt "Application"
msgid "Project Manager"
msgstr "Gerenciador de Projetos"
+msgid "Filter Projects"
+msgstr "Filtrar Projetos"
+
msgid ""
"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
@@ -7499,6 +8515,9 @@ msgstr ""
msgid "Loading, please wait..."
msgstr "Carregando, por favor aguarde."
+msgid "Last Edited"
+msgstr "Ultima Modificação"
+
msgid "New Project"
msgstr "Novo Projeto"
@@ -7533,7 +8552,7 @@ msgid "Remove All"
msgstr "Remover Tudo"
msgid "Also delete project contents (no undo!)"
-msgstr "Também deletar os conteúdos do projeto (não se pode desfazer!)"
+msgstr "Também deletar os conteúdos do projeto (não pode ser desfeito!)"
msgid "Can't run project"
msgstr "Não é possível executar o projeto"
@@ -7543,11 +8562,14 @@ msgid ""
"Would you like to explore official example projects in the Asset Library?"
msgstr ""
"Você não tem nenhum projeto no momento.\n"
-"Gostaria de explorar projetos de exemplo oficiais na Asset Library?"
+"Gostaria de explorar projetos de exemplo oficiais na Biblioteca de Recursos?"
msgid "Delete Item"
msgstr "Excluir Item"
+msgid "(All)"
+msgstr "(Todos)"
+
msgid "Add Input Action"
msgstr "Adicionar Ação de Entrada"
@@ -7557,9 +8579,6 @@ msgstr "Alterar zona morta de ação"
msgid "Erase Input Action"
msgstr "Apagar Ação de Entrada"
-msgid "Rename Input Action Event"
-msgstr "Renomear Evento de Ação de Entrada"
-
msgid "Project Settings (project.godot)"
msgstr "Configurações do Projeto (project.godot)"
@@ -7923,6 +8942,19 @@ msgstr ""
"'%s' em um node path.\n"
"Clique para desabilitar esta funcionalidade."
+msgid "Node has one connection."
+msgid_plural "Node has {num} connections."
+msgstr[0] "O nó tem uma conexão."
+msgstr[1] "O nó tem {num} conexões."
+
+msgid "Node is in this group:"
+msgid_plural "Node is in the following groups:"
+msgstr[0] "O nó está no grupo:"
+msgstr[1] "O nó está nos seguintes grupos:"
+
+msgid "Click to show signals dock."
+msgstr "Clique para mostrar o painel de sinais."
+
msgid "Open Script:"
msgstr "Abrir Script:"
@@ -8053,6 +9085,11 @@ msgstr "Caminho base inválido."
msgid "Wrong extension chosen."
msgstr "Extensão errada escolhida."
+msgid "Note: Built-in shaders can't be edited using an external editor."
+msgstr ""
+"Observação: Shaders integrados não podem ser editados usando um editor "
+"externo."
+
msgid "Change Cylinder Radius"
msgstr "Alterar Raio do Cilindro"
@@ -8094,6 +9131,23 @@ msgstr "Formato de dicionário de instância inválido (script inválido em @pat
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Dicionário de instância inválido (subclasses inválidas)"
+msgid ""
+"Blender 3.0+ is required to import '.blend' files.\n"
+"Please provide a valid path to a Blender installation:"
+msgstr ""
+"O Blender 3.0+ é necessário para importar arquivos '.blend'.\n"
+"Forneça um caminho válido para uma instalação do Blender:"
+
+msgid ""
+"Disables Blender '.blend' files import for this project. Can be re-enabled "
+"in Project Settings."
+msgstr ""
+"Desativa a importação de arquivos '.blend' do Blender para este projeto. "
+"Pode ser reativado nas configurações do projeto."
+
+msgid "Disabling '.blend' file import requires restarting the editor."
+msgstr "Desativar a importação de arquivo '.blend' requer reiniciar o editor."
+
msgid "Next Plane"
msgstr "Próximo Plano"
@@ -8214,6 +9268,9 @@ msgstr "Tamanho"
msgid "Network Profiler"
msgstr "Perfis de rede"
+msgid "Delete Property?"
+msgstr "Excluir Propriedade?"
+
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
"Um recurso do tipo NavigationMesh deve ser definido ou criado para que este "
@@ -8431,6 +9488,13 @@ msgstr "Não foi possível iniciar o executável apksigner."
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' retornou com o erro #%d"
+msgid ""
+"output: \n"
+"%s"
+msgstr ""
+"saída:\n"
+"%s"
+
msgid "Verifying %s..."
msgstr "Verificando %s..."
@@ -8468,7 +9532,8 @@ msgstr ""
"do projeto."
msgid "Could not export project files to gradle project."
-msgstr "Não foi possível exportar os arquivos do projeto ao projeto do gradle"
+msgstr ""
+"Não foi possível exportar os arquivos do projeto para o projeto Gradle."
msgid "Could not write expansion package file!"
msgstr "Não foi possível escrever o arquivo do pacote de expansão!"
@@ -8529,7 +9594,7 @@ msgid "Export Icons"
msgstr "Exportar Ãcones"
msgid "Prepare Templates"
-msgstr "Preparar Templates"
+msgstr "Preparando Modelos"
msgid "Export template not found."
msgstr "Template exportado não encontrado."
@@ -8896,6 +9961,28 @@ msgstr ""
"Este osso não possui uma pose REST adequada. Vá para o nó Skeleton2D e "
"defina um."
+msgid ""
+"CollisionPolygon3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionPolygon3D serve apenas para fornecer uma forma de colisão para um "
+"nó derivado de CollisionObject3D.\n"
+"Use-o apenas como filho de Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc... para dar-lhes uma forma."
+
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape2D apenas serve para fornecer a forma de colisão para um nó "
+"derivado de CollisionObject2D.\n"
+"Por favor use-o apenas como filho de Area2D, StaticBody2D, RigidBody2D, "
+"KinematicBody2D, etc. para dá-los forma."
+
msgid "Nothing is visible because no mesh has been assigned."
msgstr "Nada é visível porque nenhuma malha foi atribuída."
@@ -8950,8 +10037,12 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "O nó raiz do AnimationPlayer não é um nó válido."
-msgid "Pick a color from the editor window."
-msgstr "Escolha uma cor da janela do editor."
+msgid ""
+"Color: #%s\n"
+"LMB: Apply color"
+msgstr ""
+"Cor: #%s\n"
+"LMB: Aplicar cor"
msgid "Switch between hexadecimal and code values."
msgstr "Alterne entre valores haxadecimais e de código."
@@ -8980,10 +10071,7 @@ msgid "Alert!"
msgstr "Alerta!"
msgid "Please Confirm..."
-msgstr "Confirme Por Favor..."
-
-msgid "Must use a valid extension."
-msgstr "Deve usar uma extensão válida."
+msgstr "Confirme, Por Favor..."
msgid "Enable grid minimap."
msgstr "Ativar o minimapa de grade."
@@ -9031,6 +10119,13 @@ msgstr ""
"dimensões para renderizar algo."
msgid ""
+"Shader keywords cannot be used as parameter names.\n"
+"Choose another name."
+msgstr ""
+"As palavras-chave do shader não podem ser usadas como nomes de parâmetros.\n"
+"Escolha outro nome."
+
+msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
msgstr ""
@@ -9066,3 +10161,6 @@ msgstr "Atribuição à uniforme."
msgid "Constants cannot be modified."
msgstr "Constantes não podem serem modificadas."
+
+msgid "Expected '%s' at the beginning of shader. Valid types are: %s."
+msgstr "Esperado '%s' no início do shader. Os tipos válidos são: %s."
diff --git a/editor/translations/editor/ro.po b/editor/translations/editor/ro.po
index a39d4983a7..098c7f6b54 100644
--- a/editor/translations/editor/ro.po
+++ b/editor/translations/editor/ro.po
@@ -404,12 +404,6 @@ msgstr "Folosește curbe Bezier"
msgid "Create RESET Track(s)"
msgstr "Creați o pista RESET"
-msgid "Anim. Optimizer"
-msgstr "Optimizator de animație"
-
-msgid "Max. Angular Error:"
-msgstr "Eroare Angulară Max:"
-
msgid "Optimize"
msgstr "Optimizați"
@@ -1217,9 +1211,6 @@ msgstr "Deschide"
msgid "Select Current Folder"
msgstr "Selectaţi directorul curent"
-msgid "File exists, overwrite?"
-msgstr "Fișierul există, înlocuiți?"
-
msgid "Select This Folder"
msgstr "Selectaţi directorul curent"
@@ -3735,9 +3726,6 @@ msgstr "Animație nevalidă: '%s'."
msgid "Nothing connected to input '%s' of node '%s'."
msgstr "Nimic conectat la intrarea '%s' a nodului '%s'."
-msgid "Must use a valid extension."
-msgstr "Trebuie să utilizaţi o extensie valida."
-
msgid "Enable grid minimap."
msgstr "Activează minimapa in format grilă."
diff --git a/editor/translations/editor/ru.po b/editor/translations/editor/ru.po
index ab221f26a4..8d4c60e25c 100644
--- a/editor/translations/editor/ru.po
+++ b/editor/translations/editor/ru.po
@@ -135,7 +135,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
+"PO-Revision-Date: 2023-02-16 02:37+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -237,6 +237,9 @@ msgstr "Левое дейÑтвие, Sony Square, Xbox X, Nintendo Y"
msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
msgstr "Верхнее дейÑтвие, Sony Triangle, Xbox Y, Nintendo X"
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Ðазад, Sony Select, Xbox Back, Nintendo -"
+
msgid "D-pad Up"
msgstr "D-pad Вверх"
@@ -252,6 +255,12 @@ msgstr "D-pad Вправо"
msgid "PS4/5 Touchpad"
msgstr "PS4/5 Тачпад"
+msgid "Joypad Button %d"
+msgstr "Кнопка джойÑтика %d"
+
+msgid "Pressure:"
+msgstr "Сила нажатиÑ:"
+
msgid "touched"
msgstr "коÑнулÑÑ"
@@ -318,6 +327,9 @@ msgstr "Отменить"
msgid "Redo"
msgstr "Повторить"
+msgid "Completion Query"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ"
+
msgid "New Line"
msgstr "ÐÐ¾Ð²Ð°Ñ Ñтрока"
@@ -331,7 +343,7 @@ msgid "Indent"
msgstr "ОтÑтуп"
msgid "Dedent"
-msgstr "Ð’Ñ‹Ñтуп"
+msgstr "Уменьшить отÑтуп"
msgid "Backspace"
msgstr "Стереть"
@@ -363,6 +375,36 @@ msgstr "КурÑор вправо"
msgid "Caret Word Right"
msgstr "КурÑор вправо на Ñлово"
+msgid "Caret Up"
+msgstr "Каретка вверх"
+
+msgid "Caret Down"
+msgstr "Каретка вниз"
+
+msgid "Caret Line Start"
+msgstr "Каретка в начало Ñтроки"
+
+msgid "Caret Line End"
+msgstr "Каретка в конец Ñтроки"
+
+msgid "Caret Page Up"
+msgstr "Каретка на Ñтраницу вверх"
+
+msgid "Caret Page Down"
+msgstr "Каретка на Ñтраницу вниз"
+
+msgid "Caret Document Start"
+msgstr "Каретка к началу документа"
+
+msgid "Caret Document End"
+msgstr "Каретка к концу документа"
+
+msgid "Caret Add Below"
+msgstr "Каретка добавить ниже"
+
+msgid "Caret Add Above"
+msgstr "Каретка добавить выше"
+
msgid "Scroll Up"
msgstr "Прокрутка вверх"
@@ -375,6 +417,9 @@ msgstr "Выделить вÑÑ‘"
msgid "Select Word Under Caret"
msgstr "Выделить Ñлово под курÑором"
+msgid "Clear Carets and Selection"
+msgstr "ОчиÑтить каретки и выделение"
+
msgid "Toggle Insert Mode"
msgstr "Переключить режим вÑтавки"
@@ -390,6 +435,9 @@ msgstr "Обновить"
msgid "Show Hidden"
msgstr "Показывать Ñкрытые"
+msgid "Swap Input Direction"
+msgstr "Сменить направление ввода"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "Ðекорректный ввод %d (не подходит) в выражении"
@@ -458,6 +506,9 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "ДейÑтвие Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «%s» уже ÑущеÑтвует."
+msgid "Revert Action"
+msgstr "Откатить дейÑтвие"
+
msgid "Add Event"
msgstr "Добавить Ñобытие"
@@ -465,7 +516,7 @@ msgid "Remove Action"
msgstr "Удалить Ñобытие"
msgid "Cannot Remove Action"
-msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð£Ð´Ð°Ð»Ð¸Ñ‚ÑŒ ДейÑтвие"
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ дейÑтвие"
msgid "Edit Event"
msgstr "Изменить Ñобытие"
@@ -479,6 +530,9 @@ msgstr "Фильтр по имени..."
msgid "Clear All"
msgstr "ОчиÑтить"
+msgid "Add New Action"
+msgstr "Добавить новое дейÑтвие"
+
msgid "Add"
msgstr "Добавить"
@@ -509,12 +563,21 @@ msgstr "Дублировать выделенные ключи"
msgid "Delete Selected Key(s)"
msgstr "Удалить выделенные ключи"
+msgid "Make Handles Free"
+msgstr "Сделать ручки Ñвободными"
+
msgid "Add Bezier Point"
msgstr "Добавить точку Безье"
msgid "Move Bezier Points"
msgstr "Передвинуть точки Безье"
+msgid "Animation Duplicate Keys"
+msgstr "Дублировать ключи анимации"
+
+msgid "Animation Delete Keys"
+msgstr "Удалить ключи анимации"
+
msgid "Focus"
msgstr "ФокуÑ"
@@ -524,12 +587,30 @@ msgstr "Выделить вÑе ключи"
msgid "Deselect All Keys"
msgstr "СнÑÑ‚ÑŒ выделение Ñ ÐºÐ»ÑŽÑ‡ÐµÐ¹"
+msgid "Animation Change Transition"
+msgstr "Изменить переход анимации"
+
msgid "Animation Change %s"
msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s"
msgid "Animation Change Keyframe Value"
msgstr "Изменить значение ключевого кадра"
+msgid "Animation Change Call"
+msgstr "Изменить вызов анимации"
+
+msgid "Animation Multi Change Transition"
+msgstr "МножеÑтвенное изменение перехода анимации"
+
+msgid "Animation Multi Change %s"
+msgstr "МножеÑтвенное изменение анимации %s"
+
+msgid "Animation Multi Change Keyframe Value"
+msgstr "МножеÑтвенное изменение Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡ÐµÐ²Ð¾Ð³Ð¾ кадра анимации"
+
+msgid "Animation Multi Change Call"
+msgstr "МножеÑтвенное изменение вызова анимации"
+
msgid "Change Animation Length"
msgstr "Изменить длину анимации"
@@ -537,19 +618,28 @@ msgid "Change Animation Loop"
msgstr "Изменить цикл анимации"
msgid "Property Track"
-msgstr "Трек параметра"
+msgstr "Дорожка параметра"
+
+msgid "3D Position Track"
+msgstr "Дорожка Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ 3D"
+
+msgid "3D Rotation Track"
+msgstr "Дорожка Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ 3D"
+
+msgid "3D Scale Track"
+msgstr "Дорожка маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ 3D"
msgid "Call Method Track"
-msgstr "Трек вызова метода"
+msgstr "Дорожка вызова метода"
msgid "Bezier Curve Track"
-msgstr "Трек кривой Безье"
+msgstr "Дорожка кривой Безье"
msgid "Audio Playback Track"
-msgstr "Трек аудио дорожки"
+msgstr "Дорожка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°ÑƒÐ´Ð¸Ð¾"
msgid "Animation Playback Track"
-msgstr "Трек воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸"
+msgstr "Дорожка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸"
msgid "Animation length (frames)"
msgstr "Длина анимации (в кадрах)"
@@ -558,7 +648,7 @@ msgid "Animation length (seconds)"
msgstr "ПродолжительноÑÑ‚ÑŒ анимации (в Ñекундах)"
msgid "Add Track"
-msgstr "Добавить трек"
+msgstr "Добавить дорожку"
msgid "Animation Looping"
msgstr "Зацикливание анимации"
@@ -569,11 +659,17 @@ msgstr "Функции:"
msgid "Audio Clips:"
msgstr "Ðудиодорожки:"
+msgid "Animation Clips:"
+msgstr "Клипы анимации:"
+
msgid "Change Track Path"
-msgstr "Изменить путь трека"
+msgstr "Изменить путь дорожки"
msgid "Toggle this track on/off."
-msgstr "Включить/выключить Ñтот трек."
+msgstr "Включить/выключить Ñту дорожку."
+
+msgid "Use Blend"
+msgstr "ИÑпользовать Ñмешивание"
msgid "Update Mode (How this property is set)"
msgstr "Режим Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (как Ñто ÑвойÑтво уÑтанавливаетÑÑ)"
@@ -599,6 +695,9 @@ msgstr "Поворот:"
msgid "Scale:"
msgstr "МаÑштаб:"
+msgid "Blend Shape:"
+msgstr "Форма ÑмешиваниÑ:"
+
msgid "Type:"
msgstr "Тип:"
@@ -609,10 +708,10 @@ msgid "Easing:"
msgstr "Переход В-ИЗ:"
msgid "In-Handle:"
-msgstr "Обработчик Ввода:"
+msgstr "Ручка В:"
msgid "Out-Handle:"
-msgstr "Обработчик Вывода:"
+msgstr "Ручка ИЗ:"
msgid "Stream:"
msgstr "Поток:"
@@ -647,6 +746,12 @@ msgstr "Линейный"
msgid "Cubic"
msgstr "КубичеÑкий"
+msgid "Linear Angle"
+msgstr "Линейный угол"
+
+msgid "Cubic Angle"
+msgstr "КубичеÑкий угол"
+
msgid "Clamp Loop Interp"
msgstr "Обрезание Перехода ЗацикливаниÑ"
@@ -660,7 +765,7 @@ msgid "Duplicate Key(s)"
msgstr "Дублировать ключ(и)"
msgid "Add RESET Value(s)"
-msgstr "Добавить значение(Ñ) СБРОСа"
+msgstr "Добавить RESET-значение(Ñ)"
msgid "Delete Key(s)"
msgstr "Удалить ключ(и)"
@@ -674,18 +779,24 @@ msgstr "Изменить ÑпоÑоб интерполÑции анимации"
msgid "Change Animation Loop Mode"
msgstr "Изменить режим цикла анимации"
+msgid "Change Animation Use Blend"
+msgstr "Изменить иÑпользование ÑÐ¼ÐµÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸"
+
msgid "Remove Anim Track"
-msgstr "Удалить дорожку"
+msgstr "Удалить дорожку анимации"
msgid "Create new track for %s and insert key?"
-msgstr "Создать новый трек Ð´Ð»Ñ %s и вÑтавить ключ?"
+msgstr "Создать новую дорожку Ð´Ð»Ñ %s и вÑтавить ключ?"
msgid "Create %d new tracks and insert keys?"
-msgstr "Создать %d новые треки и вÑтавить ключи?"
+msgstr "Создать %d новых дорожек и вÑтавить ключи?"
msgid "Create"
msgstr "Создать"
+msgid "Animation Insert Key"
+msgstr "Ð’Ñтавить ключ анимации"
+
msgid "node '%s'"
msgstr "узел «%s»"
@@ -704,6 +815,13 @@ msgstr "Изменить шаг анимации"
msgid "Rearrange Tracks"
msgstr "ПереÑтавить дорожки"
+msgid "Blend Shape tracks only apply to MeshInstance3D nodes."
+msgstr "Дорожки формы ÑÐ¼ÐµÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к узлам MeshInstance3D."
+
+msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes."
+msgstr ""
+"Дорожки 3D положениÑ/вращениÑ/маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к 3D-узлам."
+
msgid ""
"Audio tracks can only point to nodes of type:\n"
"-AudioStreamPlayer\n"
@@ -730,6 +848,18 @@ msgstr "Добавить дорожку Безье"
msgid "Track path is invalid, so can't add a key."
msgstr "Путь к дорожке некорректен, потому Ð½ÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ ключ."
+msgid "Track is not of type Node3D, can't insert key"
+msgstr "Дорожка не отноÑитÑÑ Ðº типу Node3D, невозможно вÑтавить ключ"
+
+msgid "Add Position Key"
+msgstr "Добавить ключ позиции"
+
+msgid "Add Rotation Key"
+msgstr "Добавить ключ вращениÑ"
+
+msgid "Add Scale Key"
+msgstr "Добавить ключ маÑштабированиÑ"
+
msgid "Add Track Key"
msgstr "Добавить ключ дорожки"
@@ -742,6 +872,9 @@ msgstr "Добавить ключ дорожки Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°"
msgid "Method not found in object:"
msgstr "В объекте нет такого метода:"
+msgid "Animation Move Keys"
+msgstr "ПеремеÑтить ключи анимации"
+
msgid "Position"
msgstr "ПозициÑ"
@@ -751,6 +884,9 @@ msgstr "Поворот"
msgid "Scale"
msgstr "МаÑштабировать"
+msgid "BlendShape"
+msgstr "Форма ÑмешиваниÑ"
+
msgid "Methods"
msgstr "Методы"
@@ -764,7 +900,13 @@ msgid "Clipboard is empty!"
msgstr "Буфер обмена пуÑÑ‚!"
msgid "Paste Tracks"
-msgstr "Ð’Ñтавить треки"
+msgstr "Ð’Ñтавить дорожки"
+
+msgid "Animation Scale Keys"
+msgstr "МаÑштабировать ключи анимации"
+
+msgid "Make Easing Keys"
+msgstr "Создать ключи плавного перехода"
msgid ""
"This option does not work for Bezier editing, as it's only a single track."
@@ -772,12 +914,21 @@ msgstr ""
"Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ðµ работает Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÑ€Ð¸Ð²Ñ‹Ð¼Ð¸ Безье, так как Ñто только "
"одна дорожка."
+msgid "Animation Add RESET Keys"
+msgstr "Добавить RESET-ключи анимации"
+
+msgid "Bake Animation as Linear keys."
+msgstr "Запечь анимацию как линейные ключи."
+
msgid "Warning: Editing imported animation"
msgstr "Предупреждение: Редактирование импортированной анимации"
msgid "Select an AnimationPlayer node to create and edit animations."
msgstr "Выберите узел AnimationPlayer Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¹."
+msgid "Imported Scene"
+msgstr "Ð˜Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñцена"
+
msgid "Only show tracks from nodes selected in tree."
msgstr "Показывать дорожки только выделенных в дереве узлов."
@@ -832,17 +983,20 @@ msgstr "Применить ÑброÑ"
msgid "Bake Animation"
msgstr "Запечь анимацию"
+msgid "Optimize Animation (no undo)"
+msgstr "Оптимизировать анимацию (Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)"
+
+msgid "Clean-Up Animation (no undo)"
+msgstr "ПодчиÑтить анимацию (Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)"
+
+msgid "Pick a node to animate:"
+msgstr "Выберите узел Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸:"
+
msgid "Use Bezier Curves"
msgstr "ИÑпользовать кривые Безье"
msgid "Create RESET Track(s)"
-msgstr "Создать дорожку(и) СБРОСÐ"
-
-msgid "Anim. Optimizer"
-msgstr "Оптимизатор анимации"
-
-msgid "Max. Angular Error:"
-msgstr "МакÑ. Угловые погрешноÑти:"
+msgstr "Создать RESET-дорожку(и)"
msgid "Optimize"
msgstr "Оптимизировать"
@@ -866,11 +1020,14 @@ msgid "Scale Ratio:"
msgstr "КоÑффициент маÑштабированиÑ:"
msgid "Select Tracks to Copy"
-msgstr "Выбрать треки Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
+msgstr "Выбрать дорожки Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
msgid "Select All/None"
msgstr "Выбрать вÑÑ‘/СброÑить"
+msgid "Animation Change Keyframe Time"
+msgstr "Изменить Ð²Ñ€ÐµÐ¼Ñ ÐºÐ»ÑŽÑ‡ÐµÐ²Ð¾Ð³Ð¾ кадра анимации"
+
msgid "Add Audio Track Clip"
msgstr "Добавить звуковую дорожку"
@@ -950,6 +1107,9 @@ msgstr ""
"Целевой метод не найден. Укажите правильный метод или прикрепите Ñкрипт на "
"целевой узел."
+msgid "Attached Script"
+msgstr "Прикреплённый Ñкрипт"
+
msgid "Connect to Node:"
msgstr "ПриÑоединить к узлу:"
@@ -962,12 +1122,24 @@ msgstr "От Ñигнала:"
msgid "Filter Nodes"
msgstr "Фильтр узлов"
+msgid "Go to Source"
+msgstr "Перейти к иÑточнику"
+
msgid "Scene does not contain any script."
msgstr "Сцена не Ñодержит каких-либо Ñкриптов."
msgid "Select Method"
msgstr "Выбрать метод"
+msgid "Filter Methods"
+msgstr "Фильтр методов"
+
+msgid "Script Methods Only"
+msgstr "Только методы Ñкрипта"
+
+msgid "Compatible Methods Only"
+msgstr "Только ÑовмеÑтимые методы"
+
msgid "Remove"
msgstr "Удалить"
@@ -1037,6 +1209,9 @@ msgstr "ОтÑоединить"
msgid "Connect a Signal to a Method"
msgstr "ПриÑоединить Ñигнал к методу"
+msgid "Edit Connection: '%s'"
+msgstr "Редактировать Ñоединение: «%s»"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñигнала «%s»?"
@@ -1052,12 +1227,18 @@ msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе ÑоедÐ
msgid "Disconnect All"
msgstr "ОтÑоединить вÑе"
+msgid "Copy Name"
+msgstr "Копировать имÑ"
+
msgid "Edit..."
msgstr "Редактировать..."
msgid "Go to Method"
msgstr "Перейти к методу"
+msgid "Change Type of \"%s\""
+msgstr "Изменить тип «%s»"
+
msgid "Change"
msgstr "Изменить"
@@ -1197,6 +1378,18 @@ msgstr "ВремÑ"
msgid "Calls"
msgstr "Вызовы"
+msgid "Linked"
+msgstr "СвÑзаны"
+
+msgid "CPU"
+msgstr "CPU"
+
+msgid "GPU"
+msgstr "GPU"
+
+msgid "Execution resumed."
+msgstr "Выполнение продолжено."
+
msgid "Bytes:"
msgstr "Байты:"
@@ -1209,6 +1402,15 @@ msgstr "Ошибка:"
msgid "%s Error"
msgstr "Ошибка %s"
+msgid "%s Error:"
+msgstr "Ошибка %s:"
+
+msgid "%s Source"
+msgstr "ИÑходный код %s"
+
+msgid "%s Source:"
+msgstr "ИÑходный код %s:"
+
msgid "Stack Trace"
msgstr "ТраÑÑировка Ñтека"
@@ -1263,6 +1465,9 @@ msgstr "Продолжить"
msgid "Stack Frames"
msgstr "Стек"
+msgid "Filter Stack Variables"
+msgstr "Фильтр переменных Ñтека"
+
msgid "Breakpoints"
msgstr "Точки оÑтанова"
@@ -1275,6 +1480,9 @@ msgstr "Свернуть вÑе"
msgid "Profiler"
msgstr "Профайлер"
+msgid "Visual Profiler"
+msgstr "Визуальный профайлер"
+
msgid "List of Video Memory Usage by Resource:"
msgstr "СпиÑок иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾Ð¿Ð°Ð¼Ñти реÑурÑами:"
@@ -1364,6 +1572,12 @@ msgstr "Открыть Ñцены"
msgid "Owners of: %s (Total: %d)"
msgstr "Владельцы: %s (Ð’Ñего: %d)"
+msgid "Localization remap"
+msgstr "Переназначение локализации"
+
+msgid "Localization remap for path '%s' and locale '%s'."
+msgstr "Переназначение локализации Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ «%s» и локали «%s»."
+
msgid ""
"Remove the selected files from the project? (Cannot be undone.)\n"
"Depending on your filesystem configuration, the files will either be moved "
@@ -1580,6 +1794,12 @@ msgstr "Обход"
msgid "Bus Options"
msgstr "Параметры шины"
+msgid "Duplicate Bus"
+msgstr "Дублировать шину"
+
+msgid "Delete Bus"
+msgstr "Удалить шину"
+
msgid "Reset Volume"
msgstr "СброÑить громкоÑÑ‚ÑŒ"
@@ -1667,12 +1887,18 @@ msgstr "ДопуÑтимые Ñимволы:"
msgid "Must not collide with an existing engine class name."
msgstr "Ðе должно конфликтовать Ñ ÑущеÑтвующим именем клаÑÑа движка."
+msgid "Must not collide with an existing global script class name."
+msgstr "Ðе должно конфликтовать Ñ ÑущеÑтвующим глобальным именем клаÑÑа."
+
msgid "Must not collide with an existing built-in type name."
msgstr "Ðе должно конфликтовать Ñ ÑущеÑтвующим вÑтроенным именем типа."
msgid "Must not collide with an existing global constant name."
msgstr "Ðе должно конфликтовать Ñ ÑущеÑтвующим глобальным именем конÑтанты."
+msgid "Keyword cannot be used as an Autoload name."
+msgstr "Ключевое Ñлово Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в качеÑтве имени автозагрузки."
+
msgid "Autoload '%s' already exists!"
msgstr "Ðвтозагрузка «%s» уже ÑущеÑтвует!"
@@ -1700,15 +1926,24 @@ msgstr "Ðеверный путь «%s». Файл не ÑущеÑтвует."
msgid "%s is an invalid path. Not in resource path (res://)."
msgstr "%s — недопуÑтимый путь. Ðужен реÑурÑный путь (res://)."
+msgid "Add Autoload"
+msgstr "Добавить автозагрузку"
+
msgid "Path:"
msgstr "Путь:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "Задайте путь или нажмите «%s», чтобы Ñоздать Ñкрипт."
+
msgid "Node Name:"
msgstr "Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð°:"
msgid "Global Variable"
msgstr "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ"
+msgid "3D Engine"
+msgstr "3D-движок"
+
msgid "2D Physics"
msgstr "2D Физика"
@@ -1718,21 +1953,77 @@ msgstr "3D Физика"
msgid "Navigation"
msgstr "ÐавигациÑ"
+msgid "XR"
+msgstr "XR"
+
+msgid "RenderingDevice"
+msgstr "RenderingDevice"
+
msgid "OpenGL"
msgstr "OpenGL"
msgid "Vulkan"
msgstr "Vulkan"
+msgid "Text Server: Fallback"
+msgstr "ТекÑтовый Ñервер: Резервный"
+
+msgid "Text Server: Advanced"
+msgstr "ТекÑтовый Ñервер: РаÑширенный"
+
msgid "TTF, OTF, Type 1, WOFF1 Fonts"
msgstr "Шрифты TTF, OTF, Type 1, WOFF1"
msgid "WOFF2 Fonts"
msgstr "Шрифты WOFF2"
+msgid "SIL Graphite Fonts"
+msgstr "Шрифты SIL Graphite"
+
+msgid "3D Nodes as well as RenderingServer access to 3D features."
+msgstr "3D-узлы, а также доÑтуп RenderingServer к 3D-функциÑм."
+
+msgid "2D Physics nodes and PhysicsServer2D."
+msgstr "Узлы 2D-физики и PhysicsServer2D."
+
+msgid "3D Physics nodes and PhysicsServer3D."
+msgstr "Узлы 3D-физики и PhysicsServer3D."
+
msgid "Navigation, both 2D and 3D."
msgstr "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ (2D и 3D)."
+msgid "XR (AR and VR)."
+msgstr "XR (AR и VR)."
+
+msgid ""
+"RenderingDevice based rendering (if disabled, the OpenGL back-end is "
+"required)."
+msgstr ""
+"Рендеринг на оÑнове RenderingDevice (еÑли отключен, бÑкенд OpenGL "
+"обÑзателен)."
+
+msgid ""
+"OpenGL back-end (if disabled, the RenderingDevice back-end is required)."
+msgstr "БÑкенд OpenGL (еÑли отключен, требуетÑÑ Ð±Ñкенд RenderingDevice)."
+
+msgid "Vulkan back-end of RenderingDevice."
+msgstr "БÑкенд Vulkan RenderingDevice."
+
+msgid ""
+"Fallback implementation of Text Server\n"
+"Supports basic text layouts."
+msgstr ""
+"Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового Ñервера\n"
+"Поддерживает базовые макеты текÑта."
+
+msgid ""
+"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
+"Supports complex text layouts, BiDi, and contextual OpenType font features."
+msgstr ""
+"Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового Ñервера на базе библиотек ICU и HarfBuzz.\n"
+"Поддерживает Ñложные макеты текÑта, BiDi, и контекÑтные оÑобенноÑти шрифтов "
+"OpenType."
+
msgid ""
"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
"library (if disabled, WOFF2 support is also disabled)."
@@ -1740,6 +2031,23 @@ msgstr ""
"Поддержка форматов шрифтов TrueType, OpenType, Type 1 и WOFF1 иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ "
"библиотеку FreeType (еÑли отключено, поддержка WOFF2 тоже будет отключена)."
+msgid "WOFF2 font format support using FreeType and Brotli libraries."
+msgstr ""
+"Поддержка формата шрифтов WOFF2 Ñ Ð¸Ñпользованием библиотек FreeType и Brotli."
+
+msgid ""
+"SIL Graphite smart font technology support (supported by Advanced Text "
+"Server only)."
+msgstr ""
+"Поддержка технологии Ñмарт-шрифтов SIL Graphite (поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ "
+"РаÑширенный текÑтовый Ñервер)."
+
+msgid "General Features:"
+msgstr "ОÑновные возможноÑти:"
+
+msgid "Text Rendering and Font Options:"
+msgstr "Рендеринг текÑта и параметры шрифта:"
+
msgid "File saving failed."
msgstr "Ðе удалоÑÑŒ Ñохранить файл."
@@ -1764,15 +2072,33 @@ msgstr "Профиль:"
msgid "Reset to Defaults"
msgstr "СброÑить наÑтройки"
+msgid "Detect from Project"
+msgstr "Ðа оÑнове проекта"
+
+msgid "Actions:"
+msgstr "ДейÑтвиÑ:"
+
+msgid "Configure Engine Build Profile:"
+msgstr "ÐаÑтроить профиль Ñборки движка:"
+
msgid "Please Confirm:"
msgstr "Подтвердите:"
+msgid "Engine Build Profile"
+msgstr "Профиль Ñборки движка"
+
+msgid "Load Profile"
+msgstr "Загрузить профиль"
+
msgid "Export Profile"
msgstr "ЭкÑпортировать профиль"
msgid "Edit Build Configuration Profile"
msgstr "Изменить профиль конфигурации Ñборки"
+msgid "Filter Commands"
+msgstr "Фильтр команд"
+
msgid "Paste Params"
msgstr "Ð’Ñтавить параметры"
@@ -1794,6 +2120,9 @@ msgstr "[не Ñохранено]"
msgid "Please select a base directory first."
msgstr "ПожалуйÑта, выберите базовый каталог."
+msgid "Could not create folder. File with that name already exists."
+msgstr "Ðе удалоÑÑŒ Ñоздать папку. Файл Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует."
+
msgid "Choose a Directory"
msgstr "Выбрать каталог"
@@ -1830,6 +2159,9 @@ msgstr "Панель Â«Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема»"
msgid "Import Dock"
msgstr "Панель «Импорт»"
+msgid "History Dock"
+msgstr "Панель иÑтории"
+
msgid "Allows to view and edit 3D scenes."
msgstr "ПозволÑет проÑматривать и редактировать 3D-Ñцены."
@@ -1963,9 +2295,6 @@ msgstr "Открыть"
msgid "Select Current Folder"
msgstr "Выбрать текущую папку"
-msgid "File exists, overwrite?"
-msgstr "Файл ÑущеÑтвует, перезапиÑать?"
-
msgid "Select This Folder"
msgstr "Выбрать Ñту папку"
@@ -2002,6 +2331,9 @@ msgstr "Открыть каталог или файл"
msgid "Save a File"
msgstr "Сохранить файл"
+msgid "Favorited folder does not exist anymore and will be removed."
+msgstr "Папка избранного больше не ÑущеÑтвует и будет удалена."
+
msgid "Go Back"
msgstr "Ðазад"
@@ -2062,6 +2394,22 @@ msgstr "ПредпроÑмотр:"
msgid "File:"
msgstr "Файл:"
+msgid ""
+"Remove the selected files? For safety only files and empty directories can "
+"be deleted from here. (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
+msgstr ""
+"Удалить выбранные файлы? Ð’ целÑÑ… безопаÑноÑти здеÑÑŒ можно удалÑÑ‚ÑŒ только "
+"файлы и пуÑтые каталоги. (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ.)\n"
+"Ð’ завиÑимоÑти от конфигурации вашей файловой ÑиÑтемы файлы будут перемещены "
+"в ÑиÑтемную корзину или удалены навÑегда."
+
+msgid "Some extensions need the editor to restart to take effect."
+msgstr ""
+"Ðекоторые раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ перезапуÑка редактора, чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñтупили "
+"в Ñилу."
+
msgid "Restart"
msgstr "ПерезапуÑтить"
@@ -2444,6 +2792,9 @@ msgstr "Изменён фильтр локали по Ñтранам"
msgid "Changed Locale Filter Mode"
msgstr "Изменён режим фильтра локали"
+msgid "[Default]"
+msgstr "[По умолчанию]"
+
msgid "Select a Locale"
msgstr "Выбрать локаль"
@@ -2459,12 +2810,20 @@ msgstr "Редактировать фильтры"
msgid "Language:"
msgstr "Язык:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "ПиÑьменноÑÑ‚ÑŒ:"
+
msgid "Country:"
msgstr "Страна:"
msgid "Language"
msgstr "Язык"
+msgctxt "Locale"
+msgid "Script"
+msgstr "ПиÑьменноÑÑ‚ÑŒ"
+
msgid "Country"
msgstr "Страна"
@@ -2486,6 +2845,9 @@ msgstr ""
"Свернуть повторÑющиеÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² одну запиÑÑŒ журнала. КоличеÑтво "
"повторений отображаетÑÑ."
+msgid "Focus Search/Filter Bar"
+msgstr "Перейти к Ñтроке поиÑка/фильтра"
+
msgid "Toggle visibility of standard output messages."
msgstr "Переключить видимоÑÑ‚ÑŒ Ñтандартных Ñообщений вывода."
@@ -2532,6 +2894,13 @@ msgstr ""
"Данный реÑÑƒÑ€Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить, потому что он не ÑвлÑетÑÑ Ñ‡Ð°Ñтью изменённой "
"Ñцены. Сначала нужно Ñделать его уникальным."
+msgid ""
+"This resource can't be saved because it was imported from another file. Make "
+"it unique first."
+msgstr ""
+"Этот реÑÑƒÑ€Ñ Ð½Ðµ может быть Ñохранен, так как он был импортирован из другого "
+"файла. Сначала Ñделайте его уникальным."
+
msgid "Save Resource As..."
msgstr "Сохранить реÑÑƒÑ€Ñ ÐºÐ°Ðº..."
@@ -2544,9 +2913,21 @@ msgstr "ÐеизвеÑтный формат запрашиваемого файÐ
msgid "Error while saving."
msgstr "Ошибка при Ñохранении."
+msgid "Can't open file '%s'. The file could have been moved or deleted."
+msgstr "Ðе удалоÑÑŒ открыть файл «%s». Файл мог быть перемещён или удалён."
+
+msgid "Error while parsing file '%s'."
+msgstr "Ошибка при разборе файла «%s»."
+
msgid "Scene file '%s' appears to be invalid/corrupt."
msgstr "Файл Ñцены «%s» ÑвлÑетÑÑ Ð½ÐµÐ´ÐµÐ¹Ñтвительным/повреждённым."
+msgid "Missing file '%s' or one its dependencies."
+msgstr "ОтÑутÑтвует файл «%s» или одна из его завиÑимоÑтей."
+
+msgid "Error while loading file '%s'."
+msgstr "Ошибка при загрузке файла «%s»."
+
msgid "Saving Scene"
msgstr "Сохранение Ñцены"
@@ -2560,6 +2941,14 @@ msgid "This operation can't be done without a tree root."
msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без ÐºÐ¾Ñ€Ð½Ñ Ð´ÐµÑ€ÐµÐ²Ð°."
msgid ""
+"This scene can't be saved because there is a cyclic instance inclusion.\n"
+"Please resolve it and then attempt to save again."
+msgstr ""
+"Эта Ñцена не может быть Ñохранена, потому что обнаружено цикличеÑкое "
+"инÑтанцирование.\n"
+"ПожалуйÑта, решите Ñту проблему, а затем повторите попытку ÑохранениÑ."
+
+msgid ""
"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
"be satisfied."
msgstr ""
@@ -2618,12 +3007,31 @@ msgstr ""
"чтобы лучше понÑÑ‚ÑŒ Ñтот процеÑÑ."
msgid ""
+"This resource belongs to a scene that was instantiated or inherited.\n"
+"Changes to it must be made inside the original scene."
+msgstr ""
+"Этот реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ Ñцене, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ñ‹Ð»Ð° инÑтанцирована или "
+"унаÑледована.\n"
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² нём должны быть Ñделаны внутри иÑходной Ñцены."
+
+msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
"Этот реÑÑƒÑ€Ñ Ð±Ñ‹Ð» импортирован, поÑтому он не редактируетÑÑ. Измените "
"наÑтройки в панеле импорта, а затем повторно импортируйте."
+msgid ""
+"This scene was imported, so changes to it won't be kept.\n"
+"Instantiating or inheriting it will allow you to make changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Эта Ñцена была импортирована, поÑтому Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ней не будут Ñохранены.\n"
+"ИнÑтанцирование или наÑледование позволит внеÑти в неё изменениÑ.\n"
+"ПожалуйÑта, прочтите документацию об импортировании Ñцен, чтобы лучше понÑÑ‚ÑŒ "
+"Ñтот процеÑÑ."
+
msgid "Changes may be lost!"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть потерÑны!"
@@ -2653,6 +3061,9 @@ msgstr "Ðет открытой Ñцены Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка."
msgid "Save scene before running..."
msgstr "Сохранение Ñцены перед запуÑком..."
+msgid "Could not start subprocess(es)!"
+msgstr "Ðе удалоÑÑŒ запуÑтить подпроцеÑÑ(Ñ‹)!"
+
msgid "Reload the played scene."
msgstr "ПерезапуÑтить воÑпроизводимую Ñцену."
@@ -2680,9 +3091,15 @@ msgstr "БыÑтро открыть Ñкрипт..."
msgid "Save & Reload"
msgstr "Сохранить & Перезагрузить"
+msgid "Save modified resources before reloading?"
+msgstr "Сохранить изменённые реÑурÑÑ‹ перед перезагрузкой?"
+
msgid "Save & Quit"
msgstr "Сохранить и выйти"
+msgid "Save modified resources before closing?"
+msgstr "Сохранить изменённые реÑурÑÑ‹ перед закрытием?"
+
msgid "Save changes to '%s' before reloading?"
msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² '%s' перед перезагрузкой?"
@@ -2719,18 +3136,30 @@ msgstr "Ðевозможно отменить пока кнопки мыши нÐ
msgid "Nothing to undo."
msgstr "Ðечего отменить."
+msgid "Global Undo: %s"
+msgstr "Отменить глобально: %s"
+
msgid "Remote Undo: %s"
msgstr "Отменить удалённо: %s"
+msgid "Scene Undo: %s"
+msgstr "Отменить в Ñцене: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "Ðевозможно повторить пока кнопки мыши нажаты."
msgid "Nothing to redo."
msgstr "Ðечего повторить."
+msgid "Global Redo: %s"
+msgstr "Повторить глобально: %s"
+
msgid "Remote Redo: %s"
msgstr "Повторить удалённо: %s"
+msgid "Scene Redo: %s"
+msgstr "Повторить в Ñцене: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "Ðе возможно загрузить Ñцену, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ была Ñохранена."
@@ -2904,6 +3333,9 @@ msgstr "Панорамировать вид"
msgid "Dock Position"
msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸"
+msgid "Make Floating"
+msgstr "Сделать плавающим"
+
msgid "Add a new scene."
msgstr "Добавить новую Ñцену."
@@ -2925,6 +3357,15 @@ msgstr "Перейти к предыдущей открытой Ñцене."
msgid "Copy Text"
msgstr "Копировать текÑÑ‚"
+msgid "Next Scene Tab"
+msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° Ñцены"
+
+msgid "Previous Scene Tab"
+msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° Ñцены"
+
+msgid "Command Palette"
+msgstr "Палитра команд"
+
msgid "New Scene"
msgstr "ÐÐ¾Ð²Ð°Ñ Ñцена"
@@ -2943,6 +3384,9 @@ msgstr "Открыть недавнее"
msgid "Save Scene"
msgstr "Сохранить Ñцену"
+msgid "Export As..."
+msgstr "ЭкÑпортировать как..."
+
msgid "MeshLibrary..."
msgstr "Библиотека полиÑеток..."
@@ -2964,6 +3408,12 @@ msgstr "ÐаÑтройки проекта"
msgid "Version Control"
msgstr "Контроль верÑий"
+msgid "Create Version Control Metadata"
+msgstr "Создание метаданных ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий"
+
+msgid "Version Control Settings"
+msgstr "ÐаÑтройки ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий"
+
msgid "Export..."
msgstr "ЭкÑпортировать..."
@@ -2973,6 +3423,9 @@ msgstr "УÑтановить шаблон Ñборки Android..."
msgid "Open User Data Folder"
msgstr "Открыть папку данных пользователÑ"
+msgid "Customize Engine Build Configuration..."
+msgstr "ÐаÑтроить конфигурацию Ñборки движка..."
+
msgid "Tools"
msgstr "ИнÑтрументы"
@@ -3021,6 +3474,9 @@ msgstr "Управление возможноÑÑ‚Ñми редактора..."
msgid "Manage Export Templates..."
msgstr "Управление шаблонами ÑкÑпорта..."
+msgid "Configure FBX Importer..."
+msgstr "ÐаÑтроить импортёр FBX..."
+
msgid "Help"
msgstr "Справка"
@@ -3120,6 +3576,9 @@ msgstr "ИнÑпектор"
msgid "Node"
msgstr "Узел"
+msgid "History"
+msgstr "ИÑториÑ"
+
msgid "Expand Bottom Panel"
msgstr "Развернуть нижнюю панель"
@@ -3140,6 +3599,9 @@ msgstr "Управление шаблонами"
msgid "Install from file"
msgstr "УÑтановить из файла"
+msgid "Select Android sources file"
+msgstr "Выберите файл иÑходников Android"
+
msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
@@ -3235,6 +3697,9 @@ msgstr "Редактировать плагин"
msgid "Installed Plugins:"
msgstr "УÑтановленные плагины:"
+msgid "Create New Plugin"
+msgstr "Создать новый плагин"
+
msgid "Version"
msgstr "ВерÑиÑ"
@@ -3250,6 +3715,9 @@ msgstr "Редактировать текÑÑ‚:"
msgid "On"
msgstr "Вкл"
+msgid "Renaming layer %d:"
+msgstr "Переименовать Ñлой %d:"
+
msgid "No name provided."
msgstr "Ðе предоÑтавлено имÑ."
@@ -3262,6 +3730,21 @@ msgstr "Бит %d, значение %d"
msgid "Rename"
msgstr "Переименовать"
+msgid "Rename layer"
+msgstr "Переименовать Ñлой"
+
+msgid "Layer %d"
+msgstr "Слой %d"
+
+msgid "No Named Layers"
+msgstr "Ðет именованных Ñлоев"
+
+msgid "Edit Layer Names"
+msgstr "Редактировать имена Ñлоев"
+
+msgid "<empty>"
+msgstr "<пуÑто>"
+
msgid "Assign..."
msgstr "УÑтанавливать.."
@@ -3307,6 +3790,9 @@ msgstr "Размер:"
msgid "Remove Item"
msgstr "Удалить Ñлемент"
+msgid "Dictionary (Nil)"
+msgstr "Словарь (Nil)"
+
msgid "Dictionary (size %d)"
msgstr "Словарь (размер %d)"
@@ -3319,6 +3805,15 @@ msgstr "Ðовое значение:"
msgid "Add Key/Value Pair"
msgstr "Добавить пару: Ключ/Значение"
+msgid "Localizable String (Nil)"
+msgstr "Ð›Ð¾ÐºÐ°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñтрока (Nil)"
+
+msgid "Localizable String (size %d)"
+msgstr "Ð›Ð¾ÐºÐ°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñтрока (размер %d)"
+
+msgid "Add Translation"
+msgstr "Добавить перевод"
+
msgid ""
"The selected resource (%s) does not match any type expected for this "
"property (%s)."
@@ -3329,9 +3824,15 @@ msgstr ""
msgid "Quick Load"
msgstr "БыÑтро загрузить"
+msgid "Inspect"
+msgstr "ПроÑмотр"
+
msgid "Make Unique"
msgstr "Сделать уникальным"
+msgid "Make Unique (Recursive)"
+msgstr "Сделать уникальным (рекурÑивно)"
+
msgid "Convert to %s"
msgstr "Преобразовать в %s"
@@ -3344,9 +3845,15 @@ msgstr "Ðовый Ñкрипт"
msgid "Extend Script"
msgstr "РаÑширить Ñкрипт"
+msgid "New Shader"
+msgstr "Ðовый шейдер"
+
msgid "No Remote Debug export presets configured."
msgstr "Ðет наÑтроенных преÑетов ÑкÑпорта Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð¹ отладки."
+msgid "Remote Debug"
+msgstr "Ð£Ð´Ð°Ð»Ñ‘Ð½Ð½Ð°Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ°"
+
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the Export menu or define an existing preset "
@@ -3365,6 +3872,11 @@ msgstr "Пишите ваш код в методе _run()."
msgid "There is an edited scene already."
msgstr "Уже ÑущеÑтвует Ð¾Ñ‚Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñцена."
+msgid ""
+"Couldn't run editor script, did you forget to override the '_run' method?"
+msgstr ""
+"Ðе удалоÑÑŒ запуÑтить Ñкрипт редактора, вы забыли переопределить метод «_run»?"
+
msgid "Edit Built-in Action"
msgstr "Изменить вÑтроенное дейÑтвие"
@@ -3377,6 +3889,9 @@ msgstr "ÐаÑтройки редактора"
msgid "General"
msgstr "ОÑновное"
+msgid "Filter Settings"
+msgstr "Фильтр наÑтроек"
+
msgid "The editor must be restarted for changes to take effect."
msgstr "Чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñтупили в Ñилу, необходимо перезапуÑтить редактор."
@@ -3414,6 +3929,9 @@ msgstr "Левый Ñтик вверх, Стик 0 вверх"
msgid "Left Stick Down, Joystick 0 Down"
msgstr "Левый Ñтик вниз, Стик 0 вниз"
+msgid "Joypad Axis %d %s (%s)"
+msgstr "ОÑÑŒ %d джойÑтика %s (%s)"
+
msgid "All Devices"
msgstr "Ð’Ñе уÑтройÑтва"
@@ -3423,6 +3941,23 @@ msgstr "УÑтройÑтво"
msgid "Listening for input..."
msgstr "Ожидание ввода..."
+msgid "Filter by event..."
+msgstr "Фильтр по Ñобытию..."
+
+msgid ""
+"Target platform requires 'ETC2/ASTC' texture compression. Enable 'Import "
+"ETC2 ASTC' in Project Settings."
+msgstr ""
+"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур «ETC2/ASTC». Включите "
+"«Импортировать ETC2 ASTC» в ÐаÑтройках проекта."
+
+msgid ""
+"Target platform requires 'S3TC/BPTC' texture compression. Enable 'Import "
+"S3TC BPTC' in Project Settings."
+msgstr ""
+"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур «S3TC/BPTC». Включите "
+"«Импортировать S3TC BPTC» в ÐаÑтройках проекта."
+
msgid "Project export for platform:"
msgstr "ЭкÑпорт проекта Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹:"
@@ -3459,18 +3994,15 @@ msgstr "Ðевозможно Ñоздать файл \"%s\"."
msgid "Failed to export project files."
msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта."
-msgid "Can't open file to read from path \"%s\"."
-msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· пути \"%s\"."
-
-msgid "Can't open executable file from path \"%s\"."
-msgstr "Ðе удалоÑÑŒ открыть иÑполнÑемый файл по пути «%s»."
-
msgid "Can't create encrypted file."
msgstr "Ðе удалоÑÑŒ Ñоздать зашифрованный файл."
msgid "Can't open encrypted file to write."
msgstr "Ðе удалоÑÑŒ открыть зашифрованный файл Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· пути \"%s\"."
+
msgid "Save ZIP"
msgstr "Сохранить ZIP"
@@ -3596,6 +4128,9 @@ msgstr "Загрузка"
msgid "Connection Error"
msgstr "Ошибка подключениÑ"
+msgid "TLS Handshake Error"
+msgstr "Ошибка Ñ€ÑƒÐºÐ¾Ð¿Ð¾Ð¶Ð°Ñ‚Ð¸Ñ TLS"
+
msgid "Can't open the export templates file."
msgstr "Ðе удалоÑÑŒ открыть архив шаблонов ÑкÑпорта."
@@ -3709,11 +4244,14 @@ msgstr ""
msgid "Delete preset '%s'?"
msgstr "Удалить преÑет «%s»?"
+msgid "%s Export"
+msgstr "ЭкÑпорт Ð´Ð»Ñ %s"
+
msgid "Release"
msgstr "Релиз"
msgid "Exporting All"
-msgstr "ЭкÑпорт вÑех"
+msgstr "ЭкÑпортировать вÑÑ‘"
msgid "Presets"
msgstr "ПредуÑтановки"
@@ -3750,6 +4288,9 @@ msgstr "ЭкÑпортировать выбранные Ñцены (включа
msgid "Export selected resources (and dependencies)"
msgstr "ЭкÑпортировать выбранные реÑурÑÑ‹ (Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑти)"
+msgid "Export all resources in the project except resources checked below"
+msgstr "ЭкÑпортировать вÑе реÑурÑÑ‹ в проекте, кроме отмеченных ниже"
+
msgid "Export as dedicated server"
msgstr "Экпортировать как выделенный Ñервер"
@@ -3792,13 +4333,36 @@ msgstr "ПользовательÑкие (через запÑтую):"
msgid "Feature List:"
msgstr "СпиÑок ÑвойÑтв:"
+msgid "Encryption"
+msgstr "Шифрование"
+
msgid "Encrypt Exported PCK"
msgstr "Шифровать Ñкпортированный PCK"
+msgid "Encrypt Index (File Names and Info)"
+msgstr "Шифровать Ð¸Ð½Ð´ÐµÐºÑ (имена файлов и информацию)"
+
+msgid ""
+"Filters to include files/folders\n"
+"(comma-separated, e.g: *.tscn, *.tres, scenes/*)"
+msgstr ""
+"Фильтры Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²/папок\n"
+"(через запÑтую, например: *.tscn, *.tres, scenes/*)"
+
+msgid ""
+"Filters to exclude files/folders\n"
+"(comma-separated, e.g: *.ctex, *.import, music/*)"
+msgstr ""
+"Фильтры Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²/папок\n"
+"(через запÑтую, например: *.ctex, *.import, music/*)"
+
msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
"Ðеверный ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (должен ÑоÑтоÑÑ‚ÑŒ из 64 шеÑтнадцатеричных Ñимволов)"
+msgid "Encryption Key (256-bits as hexadecimal):"
+msgstr "Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (256 бит, в шеÑтнадцатеричном виде):"
+
msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
@@ -3809,6 +4373,9 @@ msgstr ""
msgid "More Info..."
msgstr "Подробнее..."
+msgid "Export PCK/ZIP..."
+msgstr "ЭкÑпортировать PCK/ZIP..."
+
msgid "Export Project..."
msgstr "ЭкÑпортировать проект..."
@@ -3848,6 +4415,12 @@ msgstr "Путь к иÑполнÑемому файлу FBX2glTF недейÑÑ‚Ð
msgid "Error executing this file (wrong version or architecture)."
msgstr "Ошибка при запуÑке данного файла (Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð»Ð¸ архитектура)."
+msgid "FBX2glTF executable is valid."
+msgstr "ИÑполнÑемый файл FBX2glTF дейÑтвителен."
+
+msgid "Configure FBX Importer"
+msgstr "ÐаÑтроить импортёр FBX"
+
msgid ""
"FBX2glTF is required for importing FBX files.\n"
"Please download it and provide a valid path to the binary:"
@@ -3861,6 +4434,9 @@ msgstr "Ðажмите на Ñту ÑÑылку Ð´Ð»Ñ ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ FBX2
msgid "Browse"
msgstr "Обзор"
+msgid "Confirm Path"
+msgstr "Подтвердить путь"
+
msgid "Favorites"
msgstr "Избранное"
@@ -3947,6 +4523,9 @@ msgstr "ÐÐ¾Ð²Ð°Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ñцена"
msgid "Set As Main Scene"
msgstr "Сделать главной Ñценой"
+msgid "Instantiate"
+msgstr "ИнÑтанцировать"
+
msgid "Add to Favorites"
msgstr "Добавить в избранное"
@@ -3962,6 +4541,21 @@ msgstr "ПроÑмотреть владельцев..."
msgid "Move To..."
msgstr "ПеремеÑтить в..."
+msgid "Folder..."
+msgstr "Папка..."
+
+msgid "Scene..."
+msgstr "Сцена..."
+
+msgid "Script..."
+msgstr "Скрипт..."
+
+msgid "Resource..."
+msgstr "РеÑурÑ..."
+
+msgid "TextFile..."
+msgstr "ТекÑтовый файл..."
+
msgid "New Scene..."
msgstr "ÐÐ¾Ð²Ð°Ñ Ñцена..."
@@ -3971,6 +4565,12 @@ msgstr "Ðовый Ñкрипт..."
msgid "New Resource..."
msgstr "Ðовый реÑурÑ..."
+msgid "New TextFile..."
+msgstr "Ðовый текÑтовый файл..."
+
+msgid "Sort Files"
+msgstr "Сортировать файлы"
+
msgid "Sort by Name (Ascending)"
msgstr "Сортировать по имени (по возраÑтанию)"
@@ -3989,18 +4589,33 @@ msgstr "Сортировать по поÑледнему изменению"
msgid "Sort by First Modified"
msgstr "Сортировать по первому изменению"
+msgid "Copy UID"
+msgstr "Копировать UID"
+
msgid "Duplicate..."
msgstr "Дублировать..."
msgid "Rename..."
msgstr "Переименовать..."
+msgid "Open in External Program"
+msgstr "Открыть во внешней программе"
+
+msgid "Go to previous selected folder/file."
+msgstr "Перейти к предыдущей выбранной папке/файлу."
+
+msgid "Go to next selected folder/file."
+msgstr "Перейти к Ñледующей выбранной папке/файлу."
+
msgid "Re-Scan Filesystem"
msgstr "ПереÑканировать файловую ÑиÑтему"
msgid "Toggle Split Mode"
msgstr "Переключить режим разделениÑ"
+msgid "Filter Files"
+msgstr "Фильтр файлов"
+
msgid ""
"Scanning Files,\n"
"Please Wait..."
@@ -4102,6 +4717,9 @@ msgstr "Управление группами"
msgid "The Beginning"
msgstr "Ðачало"
+msgid "Global"
+msgstr "Глобально"
+
msgid "Audio Stream Importer: %s"
msgstr "Импортер потока аудио: %s"
@@ -4167,6 +4785,16 @@ msgstr "ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ"
msgid "Remove Variation"
msgstr "Удалить вариант"
+msgid "Preloaded glyphs: %d"
+msgstr "Предзагруженные глифы: %d"
+
+msgid ""
+"Warning: There are no configurations specified, no glyphs will be pre-"
+"rendered."
+msgstr ""
+"Предупреждение: Конфигурации не указаны, глифы не будут предварительно "
+"отриÑованы."
+
msgid ""
"Warning: Multiple configurations have identical settings. Duplicates will be "
"ignored."
@@ -4181,6 +4809,13 @@ msgstr ""
"Примечание: ЕÑли Ñглаживание ÑубпикÑелей LCD выбрано, каждый глиф будет "
"предварительно отрендерен Ð´Ð»Ñ Ð²Ñех поддерживаемых Ñлоев ÑубпикÑелей (5x)."
+msgid ""
+"Note: Subpixel positioning is selected, each of the glyphs might be pre-"
+"rendered for multiple subpixel offsets (up to 4x)."
+msgstr ""
+"Примечание: Выбрано ÑубпикÑельное позиционирование, каждый из глифов может "
+"быть предварительно отриÑован Ð´Ð»Ñ Ð½ÐµÑкольких ÑубпикÑельных Ñмещений (до 4x)."
+
msgid "Advanced Import Settings for '%s'"
msgstr "РаÑширенные наÑтройки импорта Ð´Ð»Ñ '%s'"
@@ -4206,6 +4841,20 @@ msgstr "КонфигурациÑ:"
msgid "Add configuration"
msgstr "Добавить конфигурацию"
+msgid "Clear Glyph List"
+msgstr "ОчиÑтить ÑпиÑок глифов"
+
+msgid "Glyphs from the Translations"
+msgstr "Глифы из переводов"
+
+msgid "Select translations to add all required glyphs to pre-render list:"
+msgstr ""
+"Выберите переводы, чтобы добавить вÑе необходимые глифы в ÑпиÑок "
+"предварительного рендеринга:"
+
+msgid "Glyphs from the Text"
+msgstr "Глифы из текÑта"
+
msgid "Dynamically rendered TrueType/OpenType font"
msgstr "ДинамичеÑки отображаемый шрифт TrueType/OpenType"
@@ -4215,6 +4864,12 @@ msgstr "Ðе удаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ текÑтуру шрифта:"
msgid "Image margin too big."
msgstr "ÐŸÐ¾Ð»Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñлишком большие."
+msgid "Character margin too bit."
+msgstr "ОтÑтуп Ñимвола Ñлишком маленький."
+
+msgid "Pre-Import Scene"
+msgstr "Предварительно импортировать Ñцену"
+
msgid "Importing Scene..."
msgstr "Импортирование Ñцены..."
@@ -4233,6 +4888,9 @@ msgstr "Повреждённый/Ñломанный Ñкрипт Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚
msgid "Error running post-import script:"
msgstr "Ошибка запуÑка поÑÑ‚-импорт Ñкрипта:"
+msgid "Did you return a Node-derived object in the `_post_import()` method?"
+msgstr "Ð’Ñ‹ вернули объект, унаÑледованный от Node, в методе `_post_import()`?"
+
msgid "Saving..."
msgstr "Сохранение..."
@@ -4281,6 +4939,9 @@ msgstr "Выбрать папку Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¾
msgid "Extract Materials to Resource Files"
msgstr "Извлечь материалы в файлы реÑурÑов"
+msgid "Set Paths"
+msgstr "Задать пути"
+
msgid "Set paths to save animations as resource files on Reimport"
msgstr ""
"Задать пути Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¹ в виде файлов реÑурÑов при повторном "
@@ -4292,6 +4953,9 @@ msgstr "ДейÑтвиÑ..."
msgid "Extract Materials"
msgstr "Извлечь материалы"
+msgid "Set Animation Save Paths"
+msgstr "Задать пути ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸"
+
msgid "Meshes"
msgstr "Сетка"
@@ -4301,6 +4965,18 @@ msgstr "Материалы"
msgid "Save Extension:"
msgstr "РаÑширение:"
+msgid "Text: *.tres"
+msgstr "ТекÑÑ‚: *.tres"
+
+msgid "Binary: *.res"
+msgstr "Двоичный: *.res"
+
+msgid "Text Resource"
+msgstr "ТекÑтовый реÑурÑ"
+
+msgid "Binary Resource"
+msgstr "Двоичный реÑурÑ"
+
msgid "Select Importer"
msgstr "Выберите импортёр"
@@ -4465,12 +5141,21 @@ msgstr "Копировать параметры"
msgid "Make Resource Built-In"
msgstr "Сделать реÑÑƒÑ€Ñ Ð²Ñтроенным"
+msgid "Go to previous edited object in history."
+msgstr "Перейти к предыдущему редактируемому объекту в иÑтории."
+
+msgid "Go to next edited object in history."
+msgstr "Перейти к Ñледующему редактируемому объекту в иÑтории."
+
msgid "History of recently edited objects."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ отредактированных объектов."
msgid "Open documentation for this object."
msgstr "Открыть документацию Ð´Ð»Ñ Ñтого объекта."
+msgid "Filter Properties"
+msgstr "Фильтр ÑвойÑтв"
+
msgid "Manage object properties."
msgstr "Управление ÑвойÑтвами объекта."
@@ -4495,6 +5180,9 @@ msgstr "Удалить реÑÑƒÑ€Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ"
msgid "Remove Resource Remap Option"
msgstr "Удалить параметр Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ€ÐµÑурÑа"
+msgid "Removed"
+msgstr "Удалён"
+
msgid "Translations"
msgstr "Переводы"
@@ -4613,9 +5301,16 @@ msgstr "Загрузка..."
msgid "Move Node Point"
msgstr "Передвинуть точку узла"
+msgid "Change BlendSpace1D Config"
+msgstr "Изменить наÑтройки BlendSpace1D"
+
msgid "Change BlendSpace1D Labels"
msgstr "Изменить метки BlendSpace1D"
+msgid "This type of node can't be used. Only animation nodes are allowed."
+msgstr ""
+"Этот тип узла не может быть иÑпользован. Разрешены только узлы анимации."
+
msgid "This type of node can't be used. Only root nodes are allowed."
msgstr ""
"Этот тип узла не может быть иÑпользован. Разрешены только корневые узлы."
@@ -4670,6 +5365,9 @@ msgstr "Треугольник уже ÑущеÑтвует."
msgid "Add Triangle"
msgstr "Добавить треугольник"
+msgid "Change BlendSpace2D Config"
+msgstr "Изменить наÑтройки BlendSpace2D"
+
msgid "Change BlendSpace2D Labels"
msgstr "Изменить метки BlendSpace2D"
@@ -4700,6 +5398,9 @@ msgstr "Создать ÑмеÑÑŒ треугольники автоматичеÑ
msgid "Parameter Changed:"
msgstr "Параметр изменён:"
+msgid "Inspect Filters"
+msgstr "ПроÑмотреть фильтры"
+
msgid "Output node can't be added to the blend tree."
msgstr "Узел вывода не может быть добавлен в дерево ÑмешиваниÑ."
@@ -4756,6 +5457,9 @@ msgstr "Ðудиоклипы"
msgid "Functions"
msgstr "Функции"
+msgid "Inspect Filtered Tracks:"
+msgstr "ПроÑмотреть отфильтрованные дорожки:"
+
msgid "Edit Filtered Tracks:"
msgstr "Редактировать фильтры:"
@@ -4774,39 +5478,142 @@ msgstr "Ð˜Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸:"
msgid "Animation name can't be empty."
msgstr "Ð˜Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ не может быть пуÑтым."
+msgid "Animation name contains invalid characters: '/', ':', ',' or '['."
+msgstr "Ð˜Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ Ñодержит недопуÑтимые Ñимволы: «/», «:», «,» или «[»."
+
+msgid "Animation with the same name already exists."
+msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует."
+
+msgid "Library name contains invalid characters: '/', ':', ',' or '['."
+msgstr "Ð˜Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñодержит недопуÑтимые Ñимволы: «/», «:», «,» или «[»."
+
+msgid "Library with the same name already exists."
+msgstr "Библиотека Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует."
+
+msgid "Animation name is valid."
+msgstr "Ð˜Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸ допуÑтимо."
+
+msgid "Library name is valid."
+msgstr "Ð˜Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ допуÑтимо."
+
+msgid "Add Animation to Library: %s"
+msgstr "Добавить анимацию в библиотеку: %s"
+
+msgid "Add Animation Library: %s"
+msgstr "Добавить библиотеку анимаций: %s"
+
msgid "Load Animation"
msgstr "Загрузить анимацию"
+msgid ""
+"This animation library can't be saved because it does not belong to the "
+"edited scene. Make it unique first."
+msgstr ""
+"Эту библиотеку анимаций Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить, так как она не принадлежит "
+"редактируемой Ñцене. Сначала Ñделайте её уникальной."
+
+msgid ""
+"This animation library can't be saved because it was imported from another "
+"file. Make it unique first."
+msgstr ""
+"Эту библиотеку анимаций Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить, так как она была импортирована из "
+"другого файла. Сначала Ñделайте её уникальной."
+
+msgid "Save Library"
+msgstr "Сохранить библиотеку"
+
+msgid ""
+"This animation can't be saved because it does not belong to the edited "
+"scene. Make it unique first."
+msgstr ""
+"Эту анимацию Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить, так как она не принадлежит редактируемой "
+"Ñцене. Сначала Ñделайте её уникальной."
+
+msgid ""
+"This animation can't be saved because it was imported from another file. "
+"Make it unique first."
+msgstr ""
+"Эту анимацию Ð½ÐµÐ»ÑŒÐ·Ñ Ñохранить, так как она была импортирована из другого "
+"файла. Сначала Ñделайте её уникальной."
+
+msgid "Save Animation"
+msgstr "Сохранить анимацию"
+
+msgid "Make Animation Unique: %s"
+msgstr "Сделать анимацию уникальной: %s"
+
msgid "Invalid AnimationLibrary file."
msgstr "ÐедопуÑтимый файл AnimationLibrary."
msgid "Invalid Animation file."
msgstr "ÐедопуÑтимый файл анимации."
+msgid "Load Animation into Library: %s"
+msgstr "Загрузить анимацию в библиотеку: %s"
+
+msgid "Save Animation to File: %s"
+msgstr "Сохранить анимацию в файл: %s"
+
+msgid "Rename Animation Library: %s"
+msgstr "Переименовать библиотеку анимаций: %s"
+
+msgid "[Global]"
+msgstr "[ГлобальнаÑ]"
+
+msgid "Rename Animation: %s"
+msgstr "Переименовать анимацию: %s"
+
msgid "Animation Name:"
msgstr "Ðазвание анимации:"
+msgid "No animation resource in clipboard!"
+msgstr "Ðет реÑурÑа анимации в буфере обмена!"
+
msgid "Pasted Animation"
msgstr "Ð’ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ"
msgid "Open in Inspector"
msgstr "Открыть в инÑпекторе"
+msgid "Remove Animation Library: %s"
+msgstr "Удалить библиотеку анимаций: %s"
+
+msgid "Remove Animation from Library: %s"
+msgstr "Удалить анимацию из библиотеки: %s"
+
+msgid "[imported]"
+msgstr "[импортировано]"
+
+msgid "Add Animation to Library"
+msgstr "Добавить анимацию в библиотеку"
+
msgid "Paste Animation to Library from clipboard"
msgstr "Ð’Ñтавить анимацию в библиотеку из буфера обмена"
msgid "Save animation library to resource on disk"
msgstr "Сохранить библиотеку анимаций в реÑÑƒÑ€Ñ Ð½Ð° диÑке"
+msgid "Remove animation library"
+msgstr "Удалить библиотеку анимаций"
+
msgid "Copy animation to clipboard"
msgstr "Копировать анимацию в буфер обмена"
msgid "Save animation to resource on disk"
msgstr "Сохранить анимацию в реÑÑƒÑ€Ñ Ð½Ð° диÑке"
+msgid "Remove animation from Library"
+msgstr "Удалить анимацию из библиотеки"
+
msgid "Edit Animation Libraries"
msgstr "Редактировать библиотеки анимаций"
+msgid "Add Library"
+msgstr "Добавить библиотеку"
+
+msgid "Load Library"
+msgstr "Загрузить библиотеку"
+
msgid "Storage"
msgstr "Хранилище"
@@ -4825,12 +5632,18 @@ msgstr "Переименовать анимацию"
msgid "Change Animation Name:"
msgstr "Изменить Ð¸Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸:"
+msgid "Delete Animation '%s'?"
+msgstr "Удалить анимацию «%s»?"
+
msgid "Remove Animation"
msgstr "Удалить анимацию"
msgid "Invalid animation name!"
msgstr "ÐедопуÑтимое название анимации!"
+msgid "Animation '%s' already exists!"
+msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Â«%s» уже ÑущеÑтвует!"
+
msgid "Duplicate Animation"
msgstr "Дублировать анимацию"
@@ -4840,6 +5653,9 @@ msgstr "Изменена поÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ"
msgid "Change Blend Time"
msgstr "Изменить Ð²Ñ€ÐµÐ¼Ñ ÑмешиваниÑ"
+msgid "[Global] (create)"
+msgstr "[ГлобальнаÑ] (Ñоздать)"
+
msgid "Duplicated Animation Name:"
msgstr "ПовторÑющееÑÑ Ð¸Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸:"
@@ -4852,6 +5668,9 @@ msgid "Play selected animation backwards from end. (Shift+A)"
msgstr ""
"ВоÑпроизвеÑти выбранную анимацию в обратном направлении Ñ ÐºÐ¾Ð½Ñ†Ð°. (Shift+A)"
+msgid "Pause/stop animation playback. (S)"
+msgstr "Пауза/оÑтановка воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸. (S)"
+
msgid "Play selected animation from start. (Shift+D)"
msgstr "ВоÑпроизвеÑти выбранную анимацию Ñначала. (Shift+D)"
@@ -4942,6 +5761,9 @@ msgstr "Переход ÑущеÑтвует!"
msgid "To"
msgstr "До"
+msgid "Add Node and Transition"
+msgstr "Добавить узел и переход"
+
msgid "Add Transition"
msgstr "Добавить переход"
@@ -4978,6 +5800,9 @@ msgstr "Соединить узлы."
msgid "Group Selected Node(s)"
msgstr "Сгруппировать выбранный узел(узлы)"
+msgid "Ungroup Selected Node"
+msgstr "Разгруппировать выбранный узел"
+
msgid "Remove selected node or transition."
msgstr "Удалить выделенный узел или переход."
@@ -4990,6 +5815,9 @@ msgstr "Режим воÑпроизведениÑ:"
msgid "Delete Selected"
msgstr "Удалить выделенное"
+msgid "Delete All"
+msgstr "Удалить вÑÑ‘"
+
msgid "AnimationTree"
msgstr "Дерево анимации"
@@ -5135,6 +5963,15 @@ msgstr "ПоÑледнÑÑ"
msgid "All"
msgstr "Ð’Ñе"
+msgid "No results for \"%s\" for support level(s): %s."
+msgstr "Ðет результатов Ð´Ð»Ñ Â«%s» Ð´Ð»Ñ ÑƒÑ€Ð¾Ð²Ð½ÐµÐ¹ поддержки: %s."
+
+msgid "Search Templates, Projects, and Demos"
+msgstr "ИÑкать шаблоны, проекты и демо"
+
+msgid "Search Assets (Excluding Templates, Projects, and Demos)"
+msgstr "ИÑкать реÑурÑÑ‹ (иÑÐºÐ»ÑŽÑ‡Ð°Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ‹, проекты и демо)"
+
msgid "Import..."
msgstr "Импорт..."
@@ -5162,6 +5999,9 @@ msgstr "ZIP файл набора"
msgid "Audio Preview Play/Pause"
msgstr "Ðудио пред проÑлушивание Старт/Пауза"
+msgid "Bone Picker:"
+msgstr "Выбор коÑти:"
+
msgid "Preview"
msgstr "ПредпроÑмотр"
@@ -5189,6 +6029,9 @@ msgstr "Шаг поворота:"
msgid "Scale Step:"
msgstr "Шаг шкалы:"
+msgid "Move Node(s) to Position"
+msgstr "ПеремеÑтить узел (узлы) в позицию"
+
msgid "Move Vertical Guide"
msgstr "Перемещать вертикальную направлÑющую"
@@ -5307,6 +6150,9 @@ msgstr "Ð’Ñтавить позу"
msgid "Clear Guides"
msgstr "ОчиÑтить направлÑющие"
+msgid "Create Custom Bone2D(s) from Node(s)"
+msgstr "Создать пользовательÑкие Bone2D из узла(ов)"
+
msgid "Zoom to 3.125%"
msgstr "МаÑштаб 3,125%"
@@ -5372,6 +6218,9 @@ msgstr "Режим маÑштабированиÑ"
msgid "Shift: Scale proportionally."
msgstr "Shift: МаÑштабировать пропорционально."
+msgid "Show list of selectable nodes at position clicked."
+msgstr "Показать ÑпиÑок выделÑемых узлов в позиции клика."
+
msgid "Click to change object's rotation pivot."
msgstr "При клике изменÑет точку Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°."
@@ -5435,9 +6284,18 @@ msgstr "ПривÑзка к направлÑющим"
msgid "Lock Selected Node(s)"
msgstr "Заблокировать выбранный узел(узлы)"
+msgid "Unlock selected node, allowing selection and movement."
+msgstr "Разблокировать выбранный узел (разрешить его выделение и перемещение)."
+
msgid "Unlock Selected Node(s)"
msgstr "Разблокировать выбранный узел(узлы)"
+msgid "Make selected node's children not selectable."
+msgstr "Сделать детей выбранного узла невыделÑемыми."
+
+msgid "Make selected node's children selectable."
+msgstr "Сделать дочерние узлы выбранного узла выделÑемыми."
+
msgid "Ungroup Selected Node(s)"
msgstr "Разгруппировать выбранный узел(узлы)"
@@ -5483,6 +6341,9 @@ msgstr "Показать окно проÑмотра"
msgid "Show Group And Lock Icons"
msgstr "Показать группу и заблокировать иконки"
+msgid "Show Transformation Gizmos"
+msgstr "Показать гизмо транÑформации"
+
msgid "Center Selection"
msgstr "Центрировать выбранное"
@@ -5540,21 +6401,41 @@ msgstr "Разделить шаг Ñетки на 2"
msgid "Adding %s..."
msgstr "Добавление %s..."
+msgid "Hold Ctrl when dropping to add as child of selected node."
+msgstr ""
+"Удерживайте Ctrl при перетаÑкивании, чтобы добавить в качеÑтве ребёнка "
+"выбранного узла."
+
msgid "Cannot instantiate multiple nodes without root."
msgstr "Ðе удаетÑÑ Ñоздать неÑколько узлов без корнÑ."
msgid "Create Node"
msgstr "Создать узел"
+msgid "Error instantiating scene from %s"
+msgstr "Ошибка при инÑтанцировании Ñцены из %s"
+
msgid "Change Default Type"
msgstr "Изменить тип по умолчанию"
msgid "Set Handle"
msgstr "Задать обработчик"
+msgid "Container Default"
+msgstr "Контейнер по умолчанию"
+
msgid "Fill"
msgstr "ЗаполнÑÑ‚ÑŒ"
+msgid "Shrink Begin"
+msgstr "Прижать к началу"
+
+msgid "Shrink Center"
+msgstr "Прижать к центру"
+
+msgid "Shrink End"
+msgstr "Прижать к концу"
+
msgid "Custom"
msgstr "ПользовательÑкий"
@@ -5609,9 +6490,40 @@ msgstr "Справа по вÑей выÑоте"
msgid "Full Rect"
msgstr "Полный прÑмоугольник"
+msgid "Change Vertical Size Flags"
+msgstr "Изменить флаги размера по вертикали"
+
+msgid "Change Horizontal Size Flags"
+msgstr "Изменить флаги размера по горизонтали"
+
+msgid "Presets for the anchor and offset values of a Control node."
+msgstr "ПреÑеты значений Ð´Ð»Ñ Ñкорей и отÑтупов узла Control."
+
+msgid "Anchor preset"
+msgstr "ПреÑет Ñкорей"
+
+msgid "Set to Current Ratio"
+msgstr "Задать к текущему Ñоотношению"
+
+msgid ""
+"When active, moving Control nodes changes their anchors instead of their "
+"offsets."
+msgstr ""
+"Когда активно, при перемещении узлов Control будут изменÑÑ‚ÑŒÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
+"Ñкорей вмеÑто отÑтупов."
+
+msgid "Horizontal alignment"
+msgstr "Горизонтальное выравнивание"
+
+msgid "Vertical alignment"
+msgstr "Вертикальное выравнивание"
+
msgid "Load Emission Mask"
msgstr "МаÑка выброÑа загружена"
+msgid "CPUParticles2D"
+msgstr "CPUParticles2D"
+
msgid "Generated Point Count:"
msgstr "КоличеÑтво Ñоздаваемых точек:"
@@ -5633,6 +6545,9 @@ msgstr "Из пикÑелÑ"
msgid "Emission Colors"
msgstr "Цвета излучениÑ"
+msgid "CPUParticles3D"
+msgstr "CPUParticles3D"
+
msgid "Create Emission Points From Node"
msgstr "Создать излучатель из узла"
@@ -5735,6 +6650,16 @@ msgstr ""
"Когда Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, формы Ñтолкновений и узлы Raycast (2D и 3D) будут "
"видны в запущенном проекте."
+msgid "Visible Paths"
+msgstr "Видимые пути"
+
+msgid ""
+"When this option is enabled, curve resources used by path nodes will be "
+"visible in the running project."
+msgstr ""
+"Когда Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, в запущенном проекте будут отображатьÑÑ Ñ€ÐµÑурÑÑ‹ "
+"кривых, иÑпользуемые узлами пути."
+
msgid "Visible Navigation"
msgstr "Ð’Ð¸Ð´Ð¸Ð¼Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ"
@@ -5773,6 +6698,34 @@ msgstr ""
"При удалённом иÑпользовании на уÑтройÑтве, Ñто работает Ñффективнее еÑли "
"ÑÐµÑ‚ÐµÐ²Ð°Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема включена."
+msgid "Keep Debug Server Open"
+msgstr "Держать Ñервер отладки открытым"
+
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "ЗапуÑтить %d ÑкземплÑÑ€"
+msgstr[1] "ЗапуÑтить %d ÑкземплÑра"
+msgstr[2] "ЗапуÑтить %d ÑкземплÑров"
+
+msgid "Overrides (%d)"
+msgstr "ÐŸÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ (%d)"
+
+msgctxt "Locale"
+msgid "Add Script"
+msgstr "Добавить пиÑьменноÑÑ‚ÑŒ"
+
+msgid "Add Locale"
+msgstr "Добавить локаль"
+
+msgid "Variation Coordinates (%d)"
+msgstr "Координаты вариации (%d)"
+
+msgid "No supported features"
+msgstr "Ðет поддерживаемых оÑобенноÑтей"
+
+msgid "Add Feature"
+msgstr "Добавить оÑобенноÑÑ‚ÑŒ"
+
msgid " - Variation"
msgstr " - ВариациÑ"
@@ -9082,9 +10035,6 @@ msgstr "Изменить мёртвую зону дейÑтвиÑ"
msgid "Erase Input Action"
msgstr "Удалить дейÑтвие ввода"
-msgid "Rename Input Action Event"
-msgstr "Переименовать дейÑтвие ввода"
-
msgid "Update Input Action Order"
msgstr "Обновить порÑдок дейÑтвий ввода"
@@ -9109,6 +10059,9 @@ msgstr "ЛокализациÑ"
msgid "Autoload"
msgstr "Ðвтозагрузка"
+msgid "Shader Globals"
+msgstr "Параметры шейдеров"
+
msgid "Plugins"
msgstr "Плагины"
@@ -10158,6 +11111,9 @@ msgstr "ОтÑутÑтвует определитель."
msgid "The character '%s' is not allowed in Identifier."
msgstr "Символ «%s» в идентификаторе не допуÑкаетÑÑ."
+msgid "Debug Script Export"
+msgstr "ЭкÑпорт Ñкрипта отладки"
+
msgid "Failed to open executable file \"%s\"."
msgstr "Ðе удалоÑÑŒ открыть иÑполнÑемый файл \"%s\"."
@@ -10651,8 +11607,19 @@ msgid ""
"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
"CharacterBody3D, etc. to give them a shape."
msgstr ""
-"CollisionPolygon3D Ñлужит формой ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ узлам унаÑледованным от "
-"CollisionObject3D.\n"
+"CollisionPolygon3D Ñлужит Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ñ‹ ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ ÑƒÐ·Ð»Ð°Ð¼ "
+"унаÑледованным от CollisionObject3D.\n"
+"ПожалуйÑта иÑпользуйте его только в качеÑтве дочернего Ð´Ð»Ñ Area3D, "
+"StaticBody3D, RigidBody3D, CharacterBody3D и др. чтобы придать им форму."
+
+msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D Ñлужит Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ñ‹ ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ ÑƒÐ·Ð»Ð°Ð¼ "
+"унаÑледованным от CollisionObject3D.\n"
"ПожалуйÑта иÑпользуйте его только в качеÑтве дочернего Ð´Ð»Ñ Area3D, "
"StaticBody3D, RigidBody3D, CharacterBody3D и др. чтобы придать им форму."
@@ -10663,6 +11630,12 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr "Ðичего не видно, потому что полиÑетки не были назначены на отриÑовку."
+msgid "Creating probes"
+msgstr "Создание проб"
+
+msgid "Generating Probe Volumes"
+msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÑ‘Ð¼Ð¾Ð² проб"
+
msgid "This body will be ignored until you set a mesh."
msgstr "Это тело будет игнорироватьÑÑ, пока вы не уÑтановите Ñетку."
@@ -10722,8 +11695,11 @@ msgstr ""
"Цвет: #%s\n"
"ЛКМ: Применить цвет"
-msgid "Pick a color from the editor window."
-msgstr "Выберите цвет в Ñкране редактора."
+msgid "Select a picker shape."
+msgstr "Выберите форму виджета."
+
+msgid "Select a picker mode."
+msgstr "Выберите режим виджета."
msgid "Switch between hexadecimal and code values."
msgstr "Переключение между шеÑтнадцатеричными и кодовыми значениÑми."
@@ -10755,9 +11731,6 @@ msgstr "Внимание!"
msgid "Please Confirm..."
msgstr "Подтверждение..."
-msgid "Must use a valid extension."
-msgstr "Ðужно иÑпользовать доÑтупное раÑширение."
-
msgid "Enable grid minimap."
msgstr "Включить миникарту Ñетки."
@@ -10844,6 +11817,9 @@ msgstr "ÐедопуÑтимые аргументы Ð´Ð»Ñ Ð²Ñтроенной
msgid "Invalid assignment of '%s' to '%s'."
msgstr "ÐедопуÑтимое приÑвоение «%s» в «%s»."
+msgid "Expected constant expression."
+msgstr "ОжидалоÑÑŒ конÑтантное выражение."
+
msgid "Varying may not be assigned in the '%s' function."
msgstr "Varying не может быть задано в функции «%s»."
@@ -10862,6 +11838,9 @@ msgstr "Ðевозможно преобразовать «%s» в «%s»."
msgid "Expected ')' in expression."
msgstr "ОжидаетÑÑ Â«)» в выражении."
+msgid "Void value not allowed in expression."
+msgstr "Void значение не разрешено в выражении."
+
msgid "No matching constructor found for: '%s'."
msgstr "Ðе найден подходÑщий конÑтруктор длÑ: «%s»."
@@ -10877,12 +11856,21 @@ msgstr "ÐедопуÑтимый аргумент Ð´Ð»Ñ Ñ‚ÐµÑ€Ð½Ð°Ñ€Ð½Ð¾Ð³Ð¾ о
msgid "Invalid arguments to operator '%s': '%s'."
msgstr "ÐедопуÑтимые аргументы Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° «%s»: «%s»."
+msgid "Invalid variable type (samplers are not allowed)."
+msgstr "ÐедопуÑтимый тип переменной (ÑÑмплеры не разрешены)."
+
+msgid "Duplicated case label: %d."
+msgstr "ДублируетÑÑ Ð¼ÐµÑ‚ÐºÐ° варианта: %d."
+
msgid "Invalid shader type. Valid types are: %s"
msgstr "Ðеверный тип шейдера. ДопуÑтимые типы: %s"
msgid "Expected an identifier for render mode."
msgstr "ОжидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ режима рендеринга."
+msgid "Duplicated render mode: '%s'."
+msgstr "ДублируетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ рендеринга: «%s»."
+
msgid "Nested structs are not allowed."
msgstr "Вложенные Ñтруктуры не допуÑкаютÑÑ."
@@ -10901,6 +11889,27 @@ msgstr "Тип данных '%s' не поддерживаетÑÑ ÑƒÐ½Ð¸Ñ„Ð¾Ñ€Ð
msgid "Duplicated hint: '%s'."
msgstr "ДублируетÑÑ Ð¿Ð¾Ð´Ñказка: «%s»."
+msgid "Duplicated filter mode: '%s'."
+msgstr "ДублируетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ фильтра: «%s»."
+
+msgid "Duplicated repeat mode: '%s'."
+msgstr "ДублируетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ повтора «%s»."
+
+msgid "Invalid constant type (samplers are not allowed)."
+msgstr "ÐедопуÑтимый тип конÑтанты (ÑÑмплеры не разрешены)."
+
+msgid "Invalid function type (samplers are not allowed)."
+msgstr "ÐедопуÑтимый тип функции (ÑÑмплеры не разрешены)."
+
+msgid "Expected a '%s'."
+msgstr "ОжидалÑÑ Â«%s»."
+
+msgid "Expected a '%s' or '%s'."
+msgstr "ОжидалÑÑ Â«%s» или «%s»."
+
+msgid "Redefinition of '%s'."
+msgstr "Переопределение «%s»."
+
msgid "Invalid argument name."
msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°."
@@ -10910,6 +11919,9 @@ msgstr "Пропущено уÑловие."
msgid "Condition evaluation error."
msgstr "Ошибка вычиÑÐ»ÐµÐ½Ð¸Ñ ÑƒÑловиÑ."
+msgid "Invalid macro argument count."
+msgstr "ÐедопуÑтимое количеÑтво аргументов макроÑа."
+
msgid "The const '%s' is declared but never used."
msgstr "КонÑтанта '%s' объÑвлена, но не иÑпользуетÑÑ."
diff --git a/editor/translations/editor/sk.po b/editor/translations/editor/sk.po
index 5d70b699e1..ac6732e54f 100644
--- a/editor/translations/editor/sk.po
+++ b/editor/translations/editor/sk.po
@@ -353,12 +353,6 @@ msgstr "Prejsť na predchádzajúci krok"
msgid "Use Bezier Curves"
msgstr "Použiť Bezier Curves"
-msgid "Anim. Optimizer"
-msgstr "Optimalizér Animácií"
-
-msgid "Max. Angular Error:"
-msgstr "Max. Angular Error:"
-
msgid "Optimize"
msgstr "Optimalizácia"
@@ -3475,9 +3469,6 @@ msgstr ""
"Okluzorový polygón musí byť nastavený (alebo vykreslený) aby sa okluzor "
"prejavil."
-msgid "Must use a valid extension."
-msgstr "Musíte použiť platné rozšírenie."
-
msgid "Invalid source for preview."
msgstr "Neplatný zdroj pre predzobrazenie."
diff --git a/editor/translations/editor/sv.po b/editor/translations/editor/sv.po
index bb8c623dec..01d2558a8d 100644
--- a/editor/translations/editor/sv.po
+++ b/editor/translations/editor/sv.po
@@ -334,9 +334,6 @@ msgstr "Lägg till Val för Nästa Förekomst"
msgid "Toggle Insert Mode"
msgstr "Växla Läge Infoga"
-msgid "Text Submitted"
-msgstr "Text Skickad"
-
msgid "Duplicate Nodes"
msgstr "Dubblerade Noder"
@@ -816,18 +813,6 @@ msgstr "Uppstädning av Animation (inget att ångra)"
msgid "Use Bezier Curves"
msgstr "Använd Bezier-kurvor"
-msgid "Anim. Optimizer"
-msgstr "Anim. Optimerare"
-
-msgid "Max. Velocity Error:"
-msgstr "Max. Hastighetsfel:"
-
-msgid "Max. Angular Error:"
-msgstr "Max. Vinkel-fel:"
-
-msgid "Max. Precision Error:"
-msgstr "Max. Precisionsfel:"
-
msgid "Optimize"
msgstr "Optimera"
@@ -852,9 +837,6 @@ msgstr "Skalnings förhållande:"
msgid "Select Transition and Easing"
msgstr "Välj Övergång och Lättnad"
-msgid "Anim. Baker"
-msgstr "Anim. Bakare"
-
msgid "Select Tracks to Copy"
msgstr "Välj Spår att Kopiera"
@@ -3647,9 +3629,6 @@ msgstr "Varning!"
msgid "Please Confirm..."
msgstr "Vänligen Bekräfta..."
-msgid "Must use a valid extension."
-msgstr "Måste använda en giltigt filändelse."
-
msgid "(Other)"
msgstr "(Annat)"
diff --git a/editor/translations/editor/th.po b/editor/translations/editor/th.po
index b93243806a..2def27d878 100644
--- a/editor/translations/editor/th.po
+++ b/editor/translations/editor/th.po
@@ -14,13 +14,14 @@
# SysError_ <ictsanook@hotmail.com>, 2021.
# Kanda Ninthfish <akkhaporn@gmail.com>, 2022.
# Absurdnoobman <jakkalin91@gmail.com>, 2022.
+# Nuttapong Nut <nuttapong.510123@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-11-26 14:36+0000\n"
-"Last-Translator: Absurdnoobman <jakkalin91@gmail.com>\n"
+"PO-Revision-Date: 2023-02-18 07:45+0000\n"
+"Last-Translator: Nuttapong Nut <nuttapong.510123@gmail.com>\n"
"Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/"
"th/>\n"
"Language: th\n"
@@ -28,7 +29,13 @@ 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.15-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
+
+msgid "Unset"
+msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า"
+
+msgid "Physical"
+msgstr "ทางà¸à¸²à¸¢à¸ à¸²à¸ž"
msgid "Button"
msgstr "ปุ่ม"
@@ -389,12 +396,6 @@ msgstr "ใช้เส้นโค้งเบซิเยร์"
msgid "Create RESET Track(s)"
msgstr "สร้างà¹à¸—ร็à¸à¸£à¸µà¹€à¸‹à¹‡à¸—"
-msgid "Anim. Optimizer"
-msgstr "ตัวเพิ่มประสิทธิภาพà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
-
-msgid "Max. Angular Error:"
-msgstr "คลาดเคลื่อนเชิงมุมมาà¸à¸—ี่สุด:"
-
msgid "Optimize"
msgstr "เพิ่มประสิทธิภาพ"
@@ -5700,9 +5701,6 @@ msgstr "เปลี่ยน Action deadzone"
msgid "Erase Input Action"
msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-msgid "Rename Input Action Event"
-msgstr "เปลี่ยนชื่อà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-
msgid "Project Settings (project.godot)"
msgstr "ตัวเลือà¸à¹‚ปรเจà¸à¸•à¹Œ (project.godot)"
@@ -6604,9 +6602,6 @@ msgstr "ที่อยู่สำหรับ AnimationPlayer ไม่ไดà
msgid "The AnimationPlayer root node is not a valid node."
msgstr "โหนดà¹à¸¡à¹ˆ AnimationPlayer ไม่ใช่โหนดที่ถูà¸à¸•à¹‰à¸­à¸‡"
-msgid "Pick a color from the editor window."
-msgstr "เลือà¸à¸ªà¸µà¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¸•à¹ˆà¸²à¸‡à¸•à¸±à¸§à¹à¸à¹‰à¹„ข"
-
msgid "Switch between hexadecimal and code values."
msgstr "สลับระหว่างค่าà¸à¸²à¸™à¸ªà¸´à¸šà¸«à¸à¹à¸¥à¸°à¹‚ค้ด"
@@ -6634,9 +6629,6 @@ msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•à¸·à¸­à¸™!"
msgid "Please Confirm..."
msgstr "à¸à¸£à¸¸à¸“ายืนยัน..."
-msgid "Must use a valid extension."
-msgstr "นามสà¸à¸¸à¸¥à¹„ฟล์ไม่ถูà¸à¸•à¹‰à¸­à¸‡"
-
msgid "Enable grid minimap."
msgstr "เปิดเส้นà¸à¸£à¸´à¸”มินิà¹à¸¡à¸ž"
diff --git a/editor/translations/editor/tr.po b/editor/translations/editor/tr.po
index 8710f48c5b..90c4f69b54 100644
--- a/editor/translations/editor/tr.po
+++ b/editor/translations/editor/tr.po
@@ -90,13 +90,16 @@
# alpdenthedev <ekrem_ekrem_45@hotmail.com>, 2022.
# Muhammed Said Gülberk <msgulberk@gmail.com>, 2022.
# Cave Johnson <aperturelabs123@proton.me>, 2023.
+# Atilla YiÄŸit ÅžimÅŸekoÄŸlu <yigitsimsekoglu@gmail.com>, 2023.
+# Muhammed Mustafa Özbay <muhammed.ozby@outlook.com>, 2023.
+# Tolunay Mutlu <tlnymtlu@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-09 09:37+0000\n"
-"Last-Translator: Cave Johnson <aperturelabs123@proton.me>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: Tolunay Mutlu <tlnymtlu@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
@@ -125,7 +128,7 @@ msgid "Mouse Wheel Up"
msgstr "Fare Tekerleği Yukarı"
msgid "Mouse Wheel Down"
-msgstr "Fare Tekerleği Aşağı."
+msgstr "Fare Tekerleği Aşağı"
msgid "Mouse Wheel Left"
msgstr "Sol Fare Tekerlek Düğmesi"
@@ -133,9 +136,54 @@ msgstr "Sol Fare Tekerlek Düğmesi"
msgid "Mouse Wheel Right"
msgstr "Sağ Fare Tekerlek Düğmesi"
+msgid "Mouse Thumb Button 1"
+msgstr "Yan Fare Düğmesi 1"
+
+msgid "Mouse Thumb Button 2"
+msgstr "Yan Fare Düğmesi 2"
+
msgid "Button"
msgstr "Düğme"
+msgid "Double Click"
+msgstr "Çift Tıklama"
+
+msgid "Mouse motion at position (%s) with velocity (%s)"
+msgstr "Fare hareketi (%s) hızıyla (%s) pozisyonunda"
+
+msgid "Left Stick X-Axis, Joystick 0 X-Axis"
+msgstr "Sol Çubuk X-Ekseni, Oyun Çubuğu 0 X-Ekseni"
+
+msgid "Left Stick Y-Axis, Joystick 0 Y-Axis"
+msgstr "Sol Çubuk Y-Ekseni, Oyun Çubuğu 0 Y-Ekseni"
+
+msgid "Right Stick X-Axis, Joystick 1 X-Axis"
+msgstr "Sağ Çubuk X-Ekseni, Oyun Çubuğu 1 X-Ekseni"
+
+msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
+msgstr "Sağ Çubuk Y-Ekseni, Oyun Çubuğu 1 Y-Ekseni"
+
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "Oyun Çubuğu 2 X-Ekseni, Sol Tetik, Sony L2, Xbox LT"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "Oyun Çubuğu 2 Y-Ekseni, Sağ Tetik, Sony R2, Xbox RT"
+
+msgid "Joystick 3 X-Axis"
+msgstr "Oyun Çubuğu 3 X-Ekseni"
+
+msgid "Joystick 3 Y-Axis"
+msgstr "Oyun Çubuğu 3 Y-Ekseni"
+
+msgid "Joystick 4 X-Axis"
+msgstr "Oyun Çubuğu 4 X-Ekseni"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "Oyun Çubuğu 4 Y-Ekseni"
+
+msgid "Unknown Joypad Axis"
+msgstr "Bilinmeyen Oyun Kolu Ekseni"
+
msgid "Select"
msgstr "Seç"
@@ -568,12 +616,6 @@ msgstr "Bezier EÄŸrileri Kullan"
msgid "Create RESET Track(s)"
msgstr "RESET Ä°z(ler)i oluÅŸturun"
-msgid "Anim. Optimizer"
-msgstr "Anim. EniyileÅŸtirici"
-
-msgid "Max. Angular Error:"
-msgstr "Maks. Açısal Hata:"
-
msgid "Optimize"
msgstr "En Ä°yileÅŸtir"
@@ -1370,6 +1412,9 @@ msgstr "3B Fizik"
msgid "Navigation"
msgstr "Gezinim"
+msgid "OpenGL"
+msgstr "OpenGL"
+
msgid "Nodes and Classes:"
msgstr "Düğümler ve Sınıflar:"
@@ -1577,9 +1622,6 @@ msgstr "Aç"
msgid "Select Current Folder"
msgstr "Geçerli Klasörü Seç"
-msgid "File exists, overwrite?"
-msgstr "Dosya var. Üzerine Yazılsın mı?"
-
msgid "Select This Folder"
msgstr "Bu Klasörü Seç"
@@ -1722,6 +1764,9 @@ msgstr "%s'yi geçersiz kılar:"
msgid "default:"
msgstr "varsayılan:"
+msgid "Operators"
+msgstr "Operatörler"
+
msgid "Theme Properties"
msgstr "Tema Özellikleri"
@@ -1756,6 +1801,9 @@ msgstr ""
"Bu özellik için henüz bir açıklama yok. Bize [color=$color][url=$url]katkıda "
"bulunarak[/url][/color] yardım edebilirsiniz!"
+msgid "Constructor Descriptions"
+msgstr "Yapıcı metot açıklaması"
+
msgid "Method Descriptions"
msgstr "Yöntem Açıklamaları"
@@ -2608,6 +2656,9 @@ msgstr "Yeni Betik"
msgid "Extend Script"
msgstr "Betik Aç"
+msgid "Remote Debug"
+msgstr "Uzaktan Hata Ayıklama"
+
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the Export menu or define an existing preset "
@@ -2618,7 +2669,7 @@ msgstr ""
"bir ön ayarı çalıştırılabilir olarak tanımlayın."
msgid "Project Run"
-msgstr "Proje KoÅŸusu"
+msgstr "Projeyi Çalıştır"
msgid "Write your logic in the _run() method."
msgstr "Mantığınızı _run() metoduna yazın."
@@ -7344,9 +7395,6 @@ msgstr "Eylem Değiştir ölübölgesi"
msgid "Erase Input Action"
msgstr "Girdi Eylemini Sil"
-msgid "Rename Input Action Event"
-msgstr "Girdi Eylem Olayını Yeniden Adlandır"
-
msgid "Project Settings (project.godot)"
msgstr "Proje Ayarları (proje.godot)"
@@ -8519,9 +8567,6 @@ msgstr ""
msgid "The AnimationPlayer root node is not a valid node."
msgstr "AnimationOynatıcı kök düğümü geçerli bir düğüm değil."
-msgid "Pick a color from the editor window."
-msgstr "Düzenleme penceresinden renk seç."
-
msgid "Switch between hexadecimal and code values."
msgstr "Hex ve kod değerleri arasında geçiş yap."
@@ -8552,9 +8597,6 @@ msgstr "Uyarı!"
msgid "Please Confirm..."
msgstr "Lütfen Doğrulayın..."
-msgid "Must use a valid extension."
-msgstr "Geçerli bir uzantı kullanılmalı."
-
msgid "Enable grid minimap."
msgstr "Izgara haritasını etkinleştir."
diff --git a/editor/translations/editor/uk.po b/editor/translations/editor/uk.po
index 9c1363c20f..52cf7aeb71 100644
--- a/editor/translations/editor/uk.po
+++ b/editor/translations/editor/uk.po
@@ -20,20 +20,21 @@
# KazanskiyMaks <kazanskiy.maks@gmail.com>, 2022, 2023.
# МироÑлав <hlopukmyroslav@gmail.com>, 2022.
# Ostap <ostapbataj79@gmail.com>, 2022.
-# Wald Sin <naaveranos@gmail.com>, 2022.
+# Wald Sin <naaveranos@gmail.com>, 2022, 2023.
# Гліб Соколов <ramithes@i.ua>, 2022.
# Max Donchenko <maxx.donchenko@gmail.com>, 2022.
# Artem <artem@molotov.work>, 2022.
# Teashrock <kajitsu22@gmail.com>, 2022, 2023.
# kirill7606 <k7606irill@gmail.com>, 2022.
# Alex <anna.loban@yahoo.com>, 2023.
+# Ivan Nosatlev <maxonyt2@gmail.com>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-01-08 09:47+0000\n"
-"Last-Translator: KazanskiyMaks <kazanskiy.maks@gmail.com>\n"
+"PO-Revision-Date: 2023-02-14 23:41+0000\n"
+"Last-Translator: Wald Sin <naaveranos@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
"Language: uk\n"
@@ -42,14 +43,108 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.1-dev\n"
+"X-Generator: Weblate 4.16-dev\n"
+
+msgid "Unset"
+msgstr "ЗнÑти"
msgid "Physical"
msgstr "Фізичний"
+msgid "Left Mouse Button"
+msgstr "Ліва Кнопка Миші"
+
+msgid "Right Mouse Button"
+msgstr "Права Кнопка миші"
+
+msgid "Middle Mouse Button"
+msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐšÐ½Ð¾Ð¿ÐºÐ° Миши"
+
+msgid "Mouse Wheel Up"
+msgstr "Коліщатко вгору"
+
+msgid "Mouse Wheel Down"
+msgstr "Коліщатко вниз"
+
msgid "Button"
msgstr "Кнопка"
+msgid "Mouse motion at position (%s) with velocity (%s)"
+msgstr "Рух миші в положенні (%s) зі швидкіÑÑ‚ÑŽ (%s)"
+
+msgid "Left Stick X-Axis, Joystick 0 X-Axis"
+msgstr "Лівий Ñтік X-оÑÑ–, ДжойÑтик 0 X-оÑÑ–"
+
+msgid "Left Stick Y-Axis, Joystick 0 Y-Axis"
+msgstr "Лівий Ñтіл Y-оÑÑ–, ДжойÑтик 0 Y-оÑÑ–"
+
+msgid "Right Stick X-Axis, Joystick 1 X-Axis"
+msgstr "Правий Ñтік X-оÑÑ–, ДжойÑтик 1 X-оÑÑ–"
+
+msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
+msgstr "Правий Ñтік Y-оÑÑ–, ДжойÑтик 1 Y-оÑÑ–"
+
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "ДжойÑтик 2 X-оÑÑ–, Лівий Тригер, Sony L2, Xbox LT"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "ДжойÑтик 2 Y-оÑÑ–, Правий Тригер, Sony R2, Xbox RT"
+
+msgid "Unknown Joypad Axis"
+msgstr "Ðевідома віÑÑŒ джойÑтика"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "Рух джойпада по оÑÑ– %d (%s) зі значеннÑм %.2f"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "ÐÐ¸Ð¶Ð½Ñ Ð´Ñ–Ñ, Sony Cross, Xbox A, Nintendo B"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "Права діÑ, Sony Circle, Xbox B, Nintendo A"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "Ліва діÑ, Sony Square, Xbox X, Nintendo Y"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "Ð’ÐµÑ€Ñ…Ð½Ñ Ð´Ñ–Ñ, Sony Triangle, Xbox Y, Nintendo X"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "Ðазад, Sony Select, Xbox Back, Nintendo -"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "ПоÑібник, Sony PS, Xbox Home"
+
+msgid "Start, Nintendo +"
+msgstr "Старт, Nintendo +"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "Лівий Ñтік, Sony L3, Xbox L/LS"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "Правий Ñтік, Sony R3, Xbox R/RS"
+
+msgid "D-pad Up"
+msgstr "D-pad Вгору"
+
+msgid "D-pad Down"
+msgstr "D-pad Вниз"
+
+msgid "PS4/5 Touchpad"
+msgstr "PS4/5 Тачпад"
+
+msgid "touched"
+msgstr "торкнувÑÑ"
+
+msgid "Screen %s at (%s) with %s touch points"
+msgstr "Екран %s в (%s) з ÑенÑорними точками %s"
+
+msgid ""
+"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
+msgstr "Екран перетÑгнуто з %s точок дотику на позицію (%s) зі швидкіÑÑ‚ÑŽ (%s)"
+
+msgid "MIDI Input on Channel=%s Message=%s"
+msgstr "MIDI Вхід на каналі=%s ПовідомленнÑ=%s"
+
msgid "Select"
msgstr "Виділити"
@@ -86,21 +181,36 @@ msgstr "СкаÑувати"
msgid "Redo"
msgstr "Повернути"
+msgid "New Blank Line"
+msgstr "Ðовий порожній Ñ€Ñдок"
+
msgid "Indent"
msgstr "ВідÑтуп"
+msgid "Backspace Word"
+msgstr "Стерти Ñлово"
+
+msgid "Backspace all to Left"
+msgstr "Стерти вÑе вліво"
+
msgid "Delete"
msgstr "Вилучити"
msgid "Select All"
msgstr "Виділити вÑе"
+msgid "Select Word Under Caret"
+msgstr "Виділити Ñлово під вказівником"
+
msgid "Duplicate Nodes"
msgstr "Дублювати вузли"
msgid "Delete Nodes"
msgstr "Вилучити вузли"
+msgid "Go Up One Level"
+msgstr "ПіднімітьÑÑ Ð½Ð° рівень вище"
+
msgid "Refresh"
msgstr "Оновити"
@@ -148,6 +258,15 @@ msgstr "ПіБ"
msgid "EiB"
msgstr "ЕіБ"
+msgid "Example: %s"
+msgstr "Приклад: %s"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d елемент"
+msgstr[1] "%d елемента"
+msgstr[2] "%d елементів"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -158,12 +277,18 @@ msgstr ""
msgid "An action with the name '%s' already exists."
msgstr "Ð”Ñ–Ñ Ñ–Ð· назвою «%s» вже Ñ–Ñнує."
+msgid "Cannot Revert - Action is same as initial"
+msgstr "Ðеможливо повернути - Ð´Ñ–Ñ Ñ‚Ð°ÐºÐ° ж, Ñк Ñ– початкова"
+
msgid "Add Event"
msgstr "Додати подію"
msgid "Add"
msgstr "Додати"
+msgid "Show Built-in Actions"
+msgstr "Показати вбудовані дії"
+
msgid "Action"
msgstr "ДіÑ"
@@ -200,6 +325,12 @@ msgstr "Змінити триваліÑÑ‚ÑŒ анімації"
msgid "Change Animation Loop"
msgstr "Змінити цикл анімації"
+msgid "Can't change loop mode on animation instanced from imported scene."
+msgstr "Ðеможливо змінити режим циклу Ð´Ð»Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ— з імпортованої Ñцени."
+
+msgid "Can't change loop mode on animation embedded in another scene."
+msgstr "Ðеможливо змінити режим циклу Ð´Ð»Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—, вбудованої в іншу Ñцену."
+
msgid "Property Track"
msgstr "Доріжка влаÑтивоÑтей"
@@ -496,12 +627,6 @@ msgstr "ВикориÑтовувати криві Безьє"
msgid "Create RESET Track(s)"
msgstr "Створити доріжки RESET"
-msgid "Anim. Optimizer"
-msgstr "Оптимізатор Ðнімації"
-
-msgid "Max. Angular Error:"
-msgstr "МакÑ. кутова похибка:"
-
msgid "Optimize"
msgstr "Оптимізувати"
@@ -1518,9 +1643,6 @@ msgstr "Відкрити"
msgid "Select Current Folder"
msgstr "Вибрати поточну теку"
-msgid "File exists, overwrite?"
-msgstr "Файл вже Ñ–Ñнує. ПерезапиÑати?"
-
msgid "Select This Folder"
msgstr "Вибрати цю теку"
@@ -7437,9 +7559,6 @@ msgstr "Змінити «мертву» зону дії"
msgid "Erase Input Action"
msgstr "Витерти Ð·Ð°Ð¿Ð¸Ñ Ð´Ñ–Ñ—"
-msgid "Rename Input Action Event"
-msgstr "Перейменувати подію за вхідною дією"
-
msgid "Project Settings (project.godot)"
msgstr "Параметри проєкту (project.godot)"
@@ -8849,9 +8968,6 @@ msgstr ""
"Ліва кнопка: заÑтоÑувати колір\n"
"Права кнопка: вилучити взірець"
-msgid "Pick a color from the editor window."
-msgstr "Вибрати колір з вікна редактора."
-
msgid "Switch between hexadecimal and code values."
msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ñ–Ð¶ шіÑтнадцÑтковими значеннÑми Ñ– кодами."
@@ -8885,9 +9001,6 @@ msgstr "Увага!"
msgid "Please Confirm..."
msgstr "Будь лаÑка, підтвердьте..."
-msgid "Must use a valid extension."
-msgstr "Ðеобхідно викориÑтовувати допуÑтиме розширеннÑ."
-
msgid "Enable grid minimap."
msgstr "Увімкнути мінікарту ґратки."
diff --git a/editor/translations/editor/vi.po b/editor/translations/editor/vi.po
index 481d9bad69..6d995bafe6 100644
--- a/editor/translations/editor/vi.po
+++ b/editor/translations/editor/vi.po
@@ -416,12 +416,6 @@ msgstr "Ãp dụng đặt lại"
msgid "Use Bezier Curves"
msgstr "Sá»­ dụng Ä‘Æ°á»ng cong Bezier"
-msgid "Anim. Optimizer"
-msgstr "Bộ tối ưu hóa hoạt hình"
-
-msgid "Max. Angular Error:"
-msgstr "Sai lệch góc lớn nhất:"
-
msgid "Optimize"
msgstr "Tối ưu"
@@ -1249,9 +1243,6 @@ msgstr "Mở"
msgid "Select Current Folder"
msgstr "Chá»n thÆ° mục hiện tại"
-msgid "File exists, overwrite?"
-msgstr "Tệp đã tồn tại, ghi đè chứ?"
-
msgid "Select This Folder"
msgstr "Chá»n thÆ° mục này"
@@ -5789,18 +5780,12 @@ msgstr "Animation vô hiệu: '%s'."
msgid "Nothing connected to input '%s' of node '%s'."
msgstr "Không có kết nối đến input '%s' của node '%s'."
-msgid "Pick a color from the editor window."
-msgstr "Chá»n má»™t màu từ cá»­a sổ biên tập."
-
msgid "Alert!"
msgstr "Cảnh báo!"
msgid "Please Confirm..."
msgstr "Xin hãy xác nhận..."
-msgid "Must use a valid extension."
-msgstr "Sử dụng phần mở rộng hợp lệ."
-
msgid "(Other)"
msgstr "(Khác)"
diff --git a/editor/translations/editor/zh_CN.po b/editor/translations/editor/zh_CN.po
index 918935ec61..1bef0557ed 100644
--- a/editor/translations/editor/zh_CN.po
+++ b/editor/translations/editor/zh_CN.po
@@ -95,8 +95,8 @@ 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: 2023-02-10 06:54+0000\n"
-"Last-Translator: 风é’å±± <idleman@yeah.net>\n"
+"PO-Revision-Date: 2023-02-17 10:49+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"
"Language: zh_CN\n"
@@ -247,6 +247,12 @@ msgstr "Xbox 拨片 4"
msgid "PS4/5 Touchpad"
msgstr "PS4/5 触控æ¿"
+msgid "Joypad Button %d"
+msgstr "手柄按钮 %d"
+
+msgid "Pressure:"
+msgstr "压力:"
+
msgid "touched"
msgstr "按下"
@@ -425,9 +431,6 @@ msgstr "清除光标和选区"
msgid "Toggle Insert Mode"
msgstr "开关æ’入模å¼"
-msgid "Text Submitted"
-msgstr "æ交文本"
-
msgid "Duplicate Nodes"
msgstr "å¤åˆ¶èŠ‚点"
@@ -509,6 +512,12 @@ msgstr "无效的动作å称。动作åä¸èƒ½ä¸ºç©ºï¼Œä¹Ÿä¸èƒ½åŒ…å«â€œ/â€ã€
msgid "An action with the name '%s' already exists."
msgstr "å为“%sâ€çš„动作已存在。"
+msgid "Cannot Revert - Action is same as initial"
+msgstr "无法还原—动作与åˆå§‹åŠ¨ä½œç›¸åŒ"
+
+msgid "Revert Action"
+msgstr "还原动作"
+
msgid "Add Event"
msgstr "添加事件"
@@ -692,6 +701,9 @@ msgstr "修改轨é“路径"
msgid "Toggle this track on/off."
msgstr "切æ¢è¯¥è½¨é“的开关。"
+msgid "Use Blend"
+msgstr "使用混åˆ"
+
msgid "Update Mode (How this property is set)"
msgstr "更新模å¼ï¼ˆè®¾ç½®è¯¥å±žæ€§çš„æ–¹å¼ï¼‰"
@@ -761,6 +773,9 @@ msgstr "动画剪辑:"
msgid "Toggle Track Enabled"
msgstr "å¯ç”¨/ç¦ç”¨è½¨é“"
+msgid "Don't Use Blend"
+msgstr "ç¦ç”¨æ··åˆ"
+
msgid "Continuous"
msgstr "è¿žç»­"
@@ -812,6 +827,9 @@ msgstr "修改动画æ’值模å¼"
msgid "Change Animation Loop Mode"
msgstr "修改动画循环模å¼"
+msgid "Change Animation Use Blend"
+msgstr "修改动画使用混åˆ"
+
msgid ""
"Compressed tracks can't be edited or removed. Re-import the animation with "
"compression disabled in order to edit."
@@ -1052,18 +1070,6 @@ msgstr "使用è´å¡žå°”曲线"
msgid "Create RESET Track(s)"
msgstr "创建 RESET 轨é“"
-msgid "Anim. Optimizer"
-msgstr "动画优化器"
-
-msgid "Max. Velocity Error:"
-msgstr "最大速度误差:"
-
-msgid "Max. Angular Error:"
-msgstr "最大角度误差:"
-
-msgid "Max. Precision Error:"
-msgstr "最大精度误差:"
-
msgid "Optimize"
msgstr "优化"
@@ -1088,9 +1094,6 @@ msgstr "缩放比率:"
msgid "Select Transition and Easing"
msgstr "选择过渡和缓动"
-msgid "Anim. Baker"
-msgstr "动画烘焙器"
-
msgid "Select Tracks to Copy"
msgstr "选择è¦å¤åˆ¶çš„轨é“"
@@ -1173,6 +1176,9 @@ msgid ""
"target node."
msgstr "找ä¸åˆ°ç›®æ ‡æ–¹æ³•ã€‚请指定一个有效的方法或把脚本附加到目标节点。"
+msgid "Attached Script"
+msgstr "附加脚本"
+
msgid "Connect to Node:"
msgstr "连接到节点:"
@@ -1185,6 +1191,9 @@ msgstr "æ¥è‡ªä¿¡å·ï¼š"
msgid "Filter Nodes"
msgstr "筛选节点"
+msgid "Go to Source"
+msgstr "跳转到æº"
+
msgid "Scene does not contain any script."
msgstr "场景ä¸åŒ…å«è„šæœ¬ã€‚"
@@ -1194,6 +1203,15 @@ msgstr "选择方法"
msgid "Filter Methods"
msgstr "筛选方法"
+msgid "No method found matching given filters."
+msgstr "没有找到匹é…给定过滤器的方法。"
+
+msgid "Script Methods Only"
+msgstr "仅脚本方法"
+
+msgid "Compatible Methods Only"
+msgstr "仅兼容方法"
+
msgid "Remove"
msgstr "移除"
@@ -1261,6 +1279,9 @@ msgstr "断开连接"
msgid "Connect a Signal to a Method"
msgstr "连接信å·åˆ°æ–¹æ³•"
+msgid "Edit Connection: '%s'"
+msgstr "编辑连接:“%sâ€"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "确定è¦ä»Žä¿¡å· “%s†中移除所有连接å—?"
@@ -1452,6 +1473,15 @@ msgstr "错误:"
msgid "%s Error"
msgstr "%s 错误"
+msgid "%s Error:"
+msgstr "%s 错误:"
+
+msgid "%s Source"
+msgstr "%s æºæ–‡ä»¶"
+
+msgid "%s Source:"
+msgstr "%s æºæ–‡ä»¶ï¼š"
+
msgid "Stack Trace"
msgstr "栈追踪"
@@ -1465,7 +1495,7 @@ msgid "Debug session closed."
msgstr "调试会è¯ç»“æŸã€‚"
msgid "Line %d"
-msgstr "行 %d"
+msgstr "第 %d 行"
msgid "Delete Breakpoint"
msgstr "移除断点"
@@ -1519,7 +1549,7 @@ msgid "Collapse All"
msgstr "全部折å "
msgid "Profiler"
-msgstr "性能分æžå™¨"
+msgstr "分æžå™¨"
msgid "Visual Profiler"
msgstr "å¯è§†åˆ†æžå™¨"
@@ -1972,6 +2002,9 @@ msgstr "添加自动加载"
msgid "Path:"
msgstr "路径:"
+msgid "Set path or press \"%s\" to create a script."
+msgstr "设置路径或按“%sâ€åˆ›å»ºè„šæœ¬ã€‚"
+
msgid "Node Name:"
msgstr "节点å称:"
@@ -2052,14 +2085,14 @@ msgid ""
"Supports basic text layouts."
msgstr ""
"文本æœåŠ¡å™¨çš„åŽå¤‡å®žçŽ°\n"
-"支æŒåŸºæœ¬çš„文本布局。"
+"支æŒåŸºç¡€æŽ’版。"
msgid ""
"Text Server implementation powered by ICU and HarfBuzz libraries.\n"
"Supports complex text layouts, BiDi, and contextual OpenType font features."
msgstr ""
"ç”± ICU å’Œ HarfBuzz 库æ供支æŒçš„文本æœåŠ¡å™¨å®žçŽ°ã€‚\n"
-"支æŒå¤æ‚的文本布局ã€BiDi 和上下文 OpenType 字体功能。"
+"支æŒå¤æ‚排版ã€BiDi 和上下文 OpenType 字体特性。"
msgid ""
"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType "
@@ -2099,7 +2132,7 @@ msgid "File '%s' format is invalid, import aborted."
msgstr "文件 “%s†的格å¼æ— æ•ˆï¼Œå¯¼å…¥ä¸­æ­¢ã€‚"
msgid "Error saving profile to path: '%s'."
-msgstr "å°†é…置文件ä¿å­˜åˆ°è·¯å¾„ “%s†时出错。"
+msgstr "å°†é…ç½®ä¿å­˜åˆ°è·¯å¾„ “%s†时出错。"
msgid "New"
msgstr "新建"
@@ -2108,7 +2141,7 @@ msgid "Save"
msgstr "ä¿å­˜"
msgid "Profile:"
-msgstr "é…置文件:"
+msgstr "é…置:"
msgid "Reset to Defaults"
msgstr "é‡ç½®ä¸ºé»˜è®¤å€¼"
@@ -2120,25 +2153,25 @@ msgid "Actions:"
msgstr "动作:"
msgid "Configure Engine Build Profile:"
-msgstr "é…置引擎构建é…置文件:"
+msgstr "é…置引擎构建é…置:"
msgid "Please Confirm:"
msgstr "请确认:"
msgid "Engine Build Profile"
-msgstr "引擎构建é…置文件"
+msgstr "引擎构建é…ç½®"
msgid "Load Profile"
-msgstr "加载é…置文件"
+msgstr "加载é…ç½®"
msgid "Export Profile"
-msgstr "导出é…置文件"
+msgstr "导出é…ç½®"
msgid "Forced classes on detect:"
msgstr "强制检测类:"
msgid "Edit Build Configuration Profile"
-msgstr "编辑构建é…置文件"
+msgstr "编辑构建é…ç½®"
msgid "Filter Commands"
msgstr "筛选命令"
@@ -2241,13 +2274,13 @@ msgid "(none)"
msgstr "(无)"
msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr "è¦ç§»é™¤å½“å‰æ‰€é€‰çš„é…置文件“%sâ€å—?无法撤销。"
+msgstr "è¦ç§»é™¤å½“å‰æ‰€é€‰çš„é…置“%sâ€å—?无法撤销。"
msgid "Profile must be a valid filename and must not contain '.'"
-msgstr "é…置文件必须是有效的文件å,并且ä¸èƒ½åŒ…å« â€œ.â€"
+msgstr "é…置必须是有效的文件å,并且ä¸èƒ½åŒ…å« â€œ.â€"
msgid "Profile with this name already exists."
-msgstr "åŒåçš„é…置文件已ç»å­˜åœ¨ã€‚"
+msgstr "åŒåçš„é…置已ç»å­˜åœ¨ã€‚"
msgid "(Editor Disabled, Properties Disabled)"
msgstr "(编辑器已ç¦ç”¨ï¼Œå±žæ€§å·²ç¦ç”¨ï¼‰"
@@ -2273,22 +2306,22 @@ msgstr "主è¦ç‰¹æ€§ï¼š"
msgid ""
"Profile '%s' already exists. Remove it first before importing, import "
"aborted."
-msgstr "é…置文件“%sâ€å·²å­˜åœ¨ã€‚请在导入之å‰å…ˆç§»é™¤è¯¥é…置文件,导入已中止。"
+msgstr "é…置“%sâ€å·²å­˜åœ¨ã€‚请在导入之å‰å…ˆç§»é™¤è¯¥é…置,导入已中止。"
msgid "Reset to Default"
msgstr "é‡ç½®ä¸ºé»˜è®¤å€¼"
msgid "Current Profile:"
-msgstr "当å‰é…置文件:"
+msgstr "当å‰é…置:"
msgid "Create Profile"
-msgstr "创建é…置文件"
+msgstr "创建é…ç½®"
msgid "Remove Profile"
-msgstr "移除é…置文件"
+msgstr "移除é…ç½®"
msgid "Available Profiles:"
-msgstr "å¯ç”¨é…置文件:"
+msgstr "å¯ç”¨é…置:"
msgid "Make Current"
msgstr "设为当å‰"
@@ -2300,25 +2333,25 @@ msgid "Export"
msgstr "导出"
msgid "Configure Selected Profile:"
-msgstr "é…置所选é…置文件:"
+msgstr "é…置所选é…置:"
msgid "Extra Options:"
msgstr "更多选项:"
msgid "Create or import a profile to edit available classes and properties."
-msgstr "创建或导入é…置文件以编辑å¯ç”¨çš„类和属性。"
+msgstr "创建或导入é…置以编辑å¯ç”¨çš„类和属性。"
msgid "New profile name:"
-msgstr "æ–°çš„é…置文件å称:"
+msgstr "æ–°çš„é…ç½®å称:"
msgid "Godot Feature Profile"
-msgstr "Godot 功能é…置文件"
+msgstr "Godot 功能é…ç½®"
msgid "Import Profile(s)"
-msgstr "导入é…置文件"
+msgstr "导入é…ç½®"
msgid "Manage Editor Feature Profiles"
-msgstr "管ç†ç¼–辑器功能é…置文件"
+msgstr "管ç†ç¼–辑器功能é…ç½®"
msgid "Network"
msgstr "网络"
@@ -2329,9 +2362,6 @@ msgstr "打开"
msgid "Select Current Folder"
msgstr "选择当å‰æ–‡ä»¶å¤¹"
-msgid "File exists, overwrite?"
-msgstr "文件已存在,是å¦è¦†ç›–?"
-
msgid "Select This Folder"
msgstr "选择此文件夹"
@@ -2511,7 +2541,7 @@ msgstr ""
"color]ï¼"
msgid "Top"
-msgstr "顶部"
+msgstr "顶"
msgid "Class:"
msgstr "类:"
@@ -2819,6 +2849,9 @@ msgstr "修改区域设置地区筛选"
msgid "Changed Locale Filter Mode"
msgstr "修改区域设置筛选模å¼"
+msgid "[Default]"
+msgstr "[默认]"
+
msgid "Select a Locale"
msgstr "选择区域"
@@ -2834,12 +2867,20 @@ msgstr "编辑筛选器"
msgid "Language:"
msgstr "语言:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "文字:"
+
msgid "Country:"
msgstr "地区:"
msgid "Language"
msgstr "语言"
+msgctxt "Locale"
+msgid "Script"
+msgstr "文字"
+
msgid "Country"
msgstr "地区"
@@ -3001,14 +3042,14 @@ msgid "Restored the Default layout to its base settings."
msgstr "已将默认布局æ¢å¤ä¸ºåŽŸå§‹å†…容。"
msgid "This object is marked as read-only, so it's not editable."
-msgstr "这个对象被标记为åªè¯»ï¼Œæ‰€ä»¥å®ƒæ˜¯ä¸å¯ç¼–辑的。"
+msgstr "这个对象被标记为åªè¯»ï¼Œæ‰€ä»¥æ— æ³•ç¼–辑。"
msgid ""
"This resource belongs to a scene that was imported, so it's not editable.\n"
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"这个资æºå±žäºŽå·²å¯¼å…¥çš„场景,ä¸å¯ç¼–辑。\n"
+"这个资æºå±žäºŽå·²å¯¼å…¥çš„场景,所以无法编辑。\n"
"请阅读与导入场景相关的文档,以更佳ç†è§£æ­¤å·¥ä½œæµã€‚"
msgid ""
@@ -3021,7 +3062,7 @@ msgstr ""
msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
-msgstr "此资æºå·²å¯¼å…¥ï¼Œå› æ­¤æ— æ³•ç¼–辑。在导入é¢æ¿ä¸­æ›´æ”¹è®¾ç½®å¹¶é‡æ–°å¯¼å…¥ã€‚"
+msgstr "这是导入的资æºï¼Œå› æ­¤æ— æ³•ç¼–辑。请在导入é¢æ¿ä¸­æ›´æ”¹è®¾ç½®å¹¶é‡æ–°å¯¼å…¥ã€‚"
msgid ""
"This scene was imported, so changes to it won't be kept.\n"
@@ -3029,8 +3070,8 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"此场景是导入的,因此ä¸ä¼šä¿ç•™å¯¹å…¶æ‰€åšçš„更改。\n"
-"实例化或继承它将å…许您对其进行更改。\n"
+"这是导入的场景,因此ä¸ä¼šä¿ç•™å¯¹å…¶æ‰€åšçš„更改。\n"
+"ä½ å¯ä»¥é€šè¿‡å®žä¾‹åŒ–或继承对其进行更改。\n"
"请阅读与导入场景相关的文档以更好地ç†è§£æ­¤å·¥ä½œæµç¨‹ã€‚"
msgid "Changes may be lost!"
@@ -3582,6 +3623,22 @@ msgid "Select Android sources file"
msgstr "选择 Android æºæ–‡ä»¶"
msgid ""
+"This will set up your project for gradle Android builds by installing the "
+"source template to \"res://android/build\".\n"
+"You can then apply modifications and build your own custom APK on export "
+"(adding modules, changing the AndroidManifest.xml, etc.).\n"
+"Note that in order to make gradle builds instead of using pre-built APKs, "
+"the \"Use Gradle Build\" option should be enabled in the Android export "
+"preset."
+msgstr ""
+"å³å°†ä¸ºä½ çš„项目设置自定义 Android 构建,æºç æ¨¡æ¿ä¼šè¢«å®‰è£…到“res://android/"
+"buildâ€ã€‚\n"
+"ä½ å¯ä»¥å¯¹å…¶è¿›è¡Œä¿®æ”¹ï¼Œåœ¨å¯¼å‡ºæ—¶æž„建自定义的 APK(添加模å—ã€æ›´æ”¹ AndroidManifest."
+"xml 等)。\n"
+"请注æ„,è¦ä½¿ç”¨è‡ªå®šä¹‰æž„建替代预先构建的 APK,应该在 Android 导出预设中å¯ç”¨â€œä½¿"
+"用 Gradle 构建â€é€‰é¡¹ã€‚"
+
+msgid ""
"The Android build template is already installed in this project and it won't "
"be overwritten.\n"
"Remove the \"res://android/build\" directory manually before attempting this "
@@ -3966,6 +4023,9 @@ msgstr "æŽ§åˆ¶æ† 4 å‘上"
msgid "Joystick 4 Down"
msgstr "æŽ§åˆ¶æ† 4 å‘下"
+msgid "Joypad Axis %d %s (%s)"
+msgstr "游æˆæ‰‹æŸ„è½´ %d %s (%s)"
+
msgid "All Devices"
msgstr "所有设备"
@@ -3978,6 +4038,16 @@ msgstr "正在监å¬è¾“å…¥..."
msgid "Filter by event..."
msgstr "按事件筛选..."
+msgid ""
+"Target platform requires 'ETC2/ASTC' texture compression. Enable 'Import "
+"ETC2 ASTC' in Project Settings."
+msgstr "目标平å°éœ€è¦â€œETC2/ASTCâ€çº¹ç†åŽ‹ç¼©ã€‚请在项目设置中å¯ç”¨â€œå¯¼å…¥ ETC2 ASTCâ€ã€‚"
+
+msgid ""
+"Target platform requires 'S3TC/BPTC' texture compression. Enable 'Import "
+"S3TC BPTC' in Project Settings."
+msgstr "目标平å°éœ€è¦â€œS3TC/BPTCâ€çº¹ç†åŽ‹ç¼©ã€‚请在项目设置中å¯ç”¨â€œå¯¼å…¥ S3TC BPTCâ€ã€‚"
+
msgid "Project export for platform:"
msgstr "针对平å°å¯¼å‡ºé¡¹ç›®ï¼š"
@@ -4014,18 +4084,15 @@ msgstr "无法创建文件“%sâ€ã€‚"
msgid "Failed to export project files."
msgstr "导出项目文件失败。"
-msgid "Can't open file to read from path \"%s\"."
-msgstr "无法打开ä½äºŽâ€œ%sâ€çš„文件用于读å–。"
-
-msgid "Can't open executable file from path \"%s\"."
-msgstr "无法打开ä½äºŽâ€œ%sâ€çš„å¯æ‰§è¡Œæ–‡ä»¶ã€‚"
-
msgid "Can't create encrypted file."
msgstr "无法创建加密文件。"
msgid "Can't open encrypted file to write."
msgstr "无法打开加密文件进行写æ“作。"
+msgid "Can't open file to read from path \"%s\"."
+msgstr "无法打开ä½äºŽâ€œ%sâ€çš„文件用于读å–。"
+
msgid "Save ZIP"
msgstr "ä¿å­˜ ZIP"
@@ -4781,6 +4848,9 @@ msgstr "新建é…ç½®"
msgid "Remove Variation"
msgstr "移除å˜ä½“"
+msgid "Preloaded glyphs: %d"
+msgstr "预加载字形:%d"
+
msgid ""
"Warning: There are no configurations specified, no glyphs will be pre-"
"rendered."
@@ -4846,7 +4916,7 @@ msgid ""
"Enter a text and select OpenType features to shape and add all required "
"glyphs to pre-render list:"
msgstr ""
-"输入文本并选择 OpenType 功能æ¥å¡‘形,并将所有必需的字形添加到预渲染列表中:"
+"输入文本并选择 OpenType 特性æ¥å¡‘形,并将所有必需的字形添加到预渲染列表中:"
msgid "Shape Text and Add Glyphs"
msgstr "塑形文本并添加字形"
@@ -5149,6 +5219,15 @@ msgid ""
"current platform."
msgstr "æ ¹æ®å½“å‰å¹³å°ï¼Œåœ¨â€œMetaâ€ï¼ˆâ€œCommandâ€ï¼‰å’Œâ€œCtrlâ€ä¹‹é—´è‡ªåŠ¨é‡æ˜ å°„。"
+msgid "Keycode (Latin Equivalent)"
+msgstr "é”®ç ï¼ˆç­‰ä»·æ‹‰ä¸å­—符)"
+
+msgid "Physical Keycode (Position on US QWERTY Keyboard)"
+msgstr "物ç†é”®ç ï¼ˆç¾Žå¼ QWERTY 键盘上的ä½ç½®ï¼‰"
+
+msgid "Key Label (Unicode, Case-Insensitive)"
+msgstr "键标签(Unicode,ä¸åŒºåˆ†å¤§å°å†™ï¼‰"
+
msgid ""
"The following resources will be duplicated and embedded within this resource/"
"object."
@@ -5762,6 +5841,9 @@ msgstr "从当å‰ä½ç½®å€’放选中动画(A)"
msgid "Play selected animation backwards from end. (Shift+A)"
msgstr "从结æŸæ—¶é—´å€’放选中动画(Shift+A)"
+msgid "Pause/stop animation playback. (S)"
+msgstr "æš‚åœ/åœæ­¢åŠ¨ç”»æ’­æ”¾ã€‚ (S)"
+
msgid "Play selected animation from start. (Shift+D)"
msgstr "从头播放选中动画(Shift+D)"
@@ -6552,9 +6634,6 @@ msgstr "从 %s 实例化场景时出错"
msgid "Change Default Type"
msgstr "修改默认类型"
-msgid "Set target_position"
-msgstr "设置 target_position"
-
msgid "Set Handle"
msgstr "设置处ç†ç¨‹åº"
@@ -6657,14 +6736,14 @@ msgid ""
"Enable to also set the Expand flag.\n"
"Disable to only set Shrink/Fill flags."
msgstr ""
-"å¯ç”¨ï¼ŒåŒæ—¶è®¾ç½®æ‰©å±•æ ‡å¿—。\n"
-"ç¦ç”¨ï¼Œåªè®¾ç½®æ”¶ç¼©/填充标志。"
+"å¯ç”¨æ—¶è¿˜ä¼šè®¾ç½® Expand 标志。\n"
+"ç¦ç”¨æ—¶åªè®¾ç½® Shrink/Fill 标志。"
msgid "Some parents of the selected nodes do not support the Expand flag."
msgstr "所选节点的æŸäº›çˆ¶èŠ‚点ä¸æ”¯æŒæ‰©å±•æ ‡å¿—。"
msgid "Align with Expand"
-msgstr "对é½å±•å¼€"
+msgstr "对é½å¹¶æ‰©å±•"
msgid "Change Anchors, Offsets, Grow Direction"
msgstr "更改锚点ã€å移ã€å¢žé•¿æ–¹å‘"
@@ -6884,9 +6963,17 @@ msgstr ""
msgid "Run Multiple Instances"
msgstr "è¿è¡Œå¤šä¸ªå®žä¾‹"
+msgid "Run %d Instance"
+msgid_plural "Run %d Instances"
+msgstr[0] "è¿è¡Œ %d 个实例"
+
msgid "Overrides (%d)"
msgstr "覆盖(%d)"
+msgctxt "Locale"
+msgid "Add Script"
+msgstr "添加文字"
+
msgid "Add Locale"
msgstr "添加区域"
@@ -6897,7 +6984,7 @@ msgid "No supported features"
msgstr "ä¸æ”¯æŒçš„特性"
msgid "Features (%d of %d set)"
-msgstr "功能(%d / %d)"
+msgstr "特性(%d/%d)"
msgid "Add Feature"
msgstr "添加特性"
@@ -7345,6 +7432,12 @@ msgstr "æ•°é‡ï¼š"
msgid "Populate"
msgstr "å¡«å……"
+msgid "Set start_position"
+msgstr "设置 start_position"
+
+msgid "Set end_position"
+msgstr "设置 end_position"
+
msgid "Create Navigation Polygon"
msgstr "创建导航多边形"
@@ -7378,6 +7471,12 @@ msgstr "ä¿®æ”¹ç²’å­ AABB"
msgid "Change Radius"
msgstr "修改åŠå¾„"
+msgid "Change Probe Size"
+msgstr "修改探针大å°"
+
+msgid "Change Decal Size"
+msgstr "修改贴花大å°"
+
msgid "Change Capsule Shape Radius"
msgstr "修改胶囊体åŠå¾„"
@@ -7399,6 +7498,15 @@ msgstr "开始ä½ç½®"
msgid "End Location"
msgstr "结æŸä½ç½®"
+msgid "Change Start Position"
+msgstr "修改开始ä½ç½®"
+
+msgid "Change End Position"
+msgstr "修改结æŸä½ç½®"
+
+msgid "Change Fog Volume Size"
+msgstr "修改雾体积大å°"
+
msgid "Transform Aborted."
msgstr "å˜æ¢ä¸­æ­¢ã€‚"
@@ -7929,10 +8037,10 @@ msgid "Perspective FOV (deg.):"
msgstr "é€è§†è§†è§’(角度):"
msgid "View Z-Near:"
-msgstr "视图 Z-Near:"
+msgstr "è§†å›¾è¿‘å¹³é¢ Z:"
msgid "View Z-Far:"
-msgstr "视图 Z-Far:"
+msgstr "è§†å›¾è¿œå¹³é¢ Z:"
msgid "Transform Change"
msgstr "修改å˜æ¢"
@@ -8592,7 +8700,7 @@ msgid "Evaluate Selection"
msgstr "所选内容求值"
msgid "Trim Trailing Whitespace"
-msgstr "移除尾部空格"
+msgstr "移除行尾空格"
msgid "Convert Indent to Spaces"
msgstr "将缩进转为空格"
@@ -8716,7 +8824,7 @@ msgid "Cannot export a SkeletonProfile for a Skeleton3D node with no bones."
msgstr "无法为没有骨骼的 Skeleton3D 节点导出 SkeletonProfile。"
msgid "Export Skeleton Profile As..."
-msgstr "将骨架é…置文件导出为..."
+msgstr "将骨架é…置导出为..."
msgid "Set Bone Parentage"
msgstr "设置骨骼父å­å…³ç³»"
@@ -8740,7 +8848,7 @@ msgid "Create Physical Skeleton"
msgstr "创建物ç†éª¨æž¶"
msgid "Export Skeleton Profile"
-msgstr "导出骨架é…置文件"
+msgstr "导出骨架é…ç½®"
msgid ""
"Edit Mode\n"
@@ -8881,6 +8989,9 @@ msgstr "(空)"
msgid "Animations:"
msgstr "动画:"
+msgid "Animation Speed"
+msgstr "动画速度"
+
msgid "Filter Animations"
msgstr "筛选动画"
@@ -9667,6 +9778,9 @@ msgstr "绘制图å—"
msgid "Paste tiles"
msgstr "粘贴图å—"
+msgid "Paint"
+msgstr "绘制"
+
msgid "Shift: Draw line."
msgstr "Shift:画直线。"
@@ -9685,11 +9799,6 @@ msgstr "è¿žç»­"
msgid "Place Random Tile"
msgstr "放置éšæœºå›¾å—"
-msgid ""
-"Defines the probability of painting nothing instead of a randomly selected "
-"tile."
-msgstr "定义ä¸ç»˜åˆ¶ä»»ä½•å†…容而ä¸æ˜¯ç»˜åˆ¶éšæœºé€‰æ‹©çš„图å—的概率。"
-
msgid "Scattering:"
msgstr "散布:"
@@ -9889,9 +9998,6 @@ msgstr "图集设置。图å—添加/移除工具(Shift 键创建大图å—ã€Ct
msgid "Select tiles."
msgstr "选择图å—。"
-msgid "Paint"
-msgstr "绘制"
-
msgid "Paint properties."
msgstr "绘制属性。"
@@ -10212,6 +10318,11 @@ msgstr "采样器"
msgid "[default]"
msgstr "[默认]"
+msgid ""
+"The 2D preview cannot correctly show the result retrieved from instance "
+"parameter."
+msgstr "2D 预览无法正确显示从实例å‚数中检索到的结果。"
+
msgid "Add Input Port"
msgstr "添加输入端å£"
@@ -11419,6 +11530,9 @@ msgstr "渲染器å¯ä»¥ç¨åŽæ›´æ”¹ï¼Œä½†å¯èƒ½éœ€è¦è°ƒæ•´åœºæ™¯ã€‚"
msgid "Version Control Metadata:"
msgstr "版本控制元数æ®ï¼š"
+msgid "Git"
+msgstr "Git"
+
msgid "Missing Project"
msgstr "缺失项目"
@@ -11722,12 +11836,12 @@ msgstr "添加输入动作"
msgid "Change Action deadzone"
msgstr "修改动作死区"
+msgid "Change Input Action Event(s)"
+msgstr "修改输入动作事件"
+
msgid "Erase Input Action"
msgstr "擦除输入动作"
-msgid "Rename Input Action Event"
-msgstr "é‡å‘½å输入动作事件"
-
msgid "Update Input Action Order"
msgstr "更新输入动作顺åº"
@@ -12716,6 +12830,14 @@ msgstr "%d(%s)"
msgid "%s/s"
msgstr "%s/秒"
+msgctxt "Network"
+msgid "Down"
+msgstr "下载"
+
+msgctxt "Network"
+msgid "Up"
+msgstr "上传"
+
msgid "Incoming RPC"
msgstr "ä¼ å…¥ RPC"
@@ -12888,7 +13010,7 @@ msgid "Remove action set"
msgstr "移除动作集"
msgid "Add interaction profile"
-msgstr "添加交互é…置文件"
+msgstr "添加交互é…ç½®"
msgid "Error saving file %s: %s"
msgstr "ä¿å­˜æ–‡ä»¶ %s 时出错:%s"
@@ -12900,7 +13022,7 @@ msgid "OpenXR Action map:"
msgstr "OpenXR 动作映射:"
msgid "Remove interaction profile"
-msgstr "移除交互é…置文件"
+msgstr "移除交互é…ç½®"
msgid "Action Map"
msgstr "动作映射"
@@ -12912,10 +13034,10 @@ msgid "Add an action set."
msgstr "添加一个动作集。"
msgid "Add profile"
-msgstr "添加é…置文件"
+msgstr "添加é…ç½®"
msgid "Add an interaction profile."
-msgstr "添加一个交互é…置文件。"
+msgstr "添加一个交互é…置。"
msgid "Save this OpenXR action map."
msgstr "ä¿å­˜è¿™ä¸ª OpenXR 动作映射。"
@@ -13060,12 +13182,25 @@ msgstr "APK 扩展的公钥无效。"
msgid "Invalid package name:"
msgstr "无效的包å称:"
+msgid "\"Use Gradle Build\" must be enabled to use the plugins."
+msgstr "å¿…é¡»å¯ç”¨â€œä½¿ç”¨ Gradle 构建â€æ‰èƒ½ä½¿ç”¨æ’件。"
+
+msgid "OpenXR requires \"Use Gradle Build\" to be enabled"
+msgstr "OpenXR 需è¦å¯ç”¨â€œä½¿ç”¨ Gradle 构建â€"
+
msgid "\"Hand Tracking\" is only valid when \"XR Mode\" is \"OpenXR\"."
msgstr "“手部跟踪â€åªæœ‰åœ¨å½““XR Modeâ€æ˜¯â€œOpenXRâ€æ—¶æ‰æœ‰æ•ˆã€‚"
msgid "\"Passthrough\" is only valid when \"XR Mode\" is \"OpenXR\"."
msgstr "“穿é€â€åªæœ‰åœ¨å½““XR Modeâ€æ˜¯â€œOpenXRâ€æ—¶æ‰æœ‰æ•ˆã€‚"
+msgid "\"Export AAB\" is only valid when \"Use Gradle Build\" is enabled."
+msgstr "“导出 AABâ€åªæœ‰åœ¨å¯ç”¨â€œä½¿ç”¨ Gradle 构建â€æ—¶æ‰æœ‰æ•ˆã€‚"
+
+msgid ""
+"\"Min SDK\" can only be overridden when \"Use Gradle Build\" is enabled."
+msgstr "â€œæœ€å° SDKâ€åªæœ‰åœ¨å¯ç”¨â€œä½¿ç”¨ Gradle 构建â€æ—¶æ‰èƒ½è¦†ç›–。"
+
msgid "\"Min SDK\" should be a valid integer, but got \"%s\" which is invalid."
msgstr "â€œæœ€å° SDKâ€åº”当为有效的整数,但获得了无效的“%sâ€ã€‚"
@@ -13075,6 +13210,10 @@ msgid ""
msgstr "â€œæœ€å° SDKâ€ä¸èƒ½ä½ŽäºŽ %d,这是 Godot 库所需è¦çš„版本。"
msgid ""
+"\"Target SDK\" can only be overridden when \"Use Gradle Build\" is enabled."
+msgstr "“目标 SDKâ€åªæœ‰åœ¨å¯ç”¨â€œä½¿ç”¨ Gradle 构建â€æ—¶æ‰èƒ½è¦†ç›–。"
+
+msgid ""
"\"Target SDK\" should be a valid integer, but got \"%s\" which is invalid."
msgstr "“目标 SDKâ€åº”当为有效的整数,但获得了无效的“%sâ€ã€‚"
@@ -13088,6 +13227,14 @@ msgstr ""
msgid "\"Target SDK\" version must be greater or equal to \"Min SDK\" version."
msgstr "“目标 SDKâ€ç‰ˆæœ¬å¿…é¡»å¤§äºŽç­‰äºŽâ€œæœ€å° SDKâ€ç‰ˆæœ¬ã€‚"
+msgid ""
+"The \"%s\" renderer is designed for Desktop devices, and is not suitable for "
+"Android devices."
+msgstr "“%sâ€æ¸²æŸ“器专为桌é¢è®¾å¤‡è®¾è®¡ï¼Œä¸é€‚用于 Android 设备。"
+
+msgid "\"Min SDK\" should be greater or equal to %d for the \"%s\" renderer."
+msgstr "â€œæœ€å° SDKâ€å¿…须大于等于 %d,æ‰å¯ä½¿ç”¨â€œ%sâ€æ¸²æŸ“器。"
+
msgid "Code Signing"
msgstr "代ç ç­¾å"
@@ -13150,6 +13297,13 @@ msgid "Unsupported export format!"
msgstr "ä¸æ”¯æŒçš„导出格å¼ï¼"
msgid ""
+"Trying to build from a gradle built template, but no version info for it "
+"exists. Please reinstall from the 'Project' menu."
+msgstr ""
+"å°è¯•ä»Žè‡ªå®šä¹‰æž„建模æ¿æž„建,但是它所使用的版本信æ¯ä¸å­˜åœ¨ã€‚请从“项目â€èœå•ä¸­é‡æ–°"
+"安装。"
+
+msgid ""
"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
@@ -13916,6 +14070,11 @@ msgid ""
msgstr "NavigationAgent2D åªèƒ½åœ¨ç»§æ‰¿ Node2D 的父节点下使用。"
msgid ""
+"NavigationLink2D start position should be different than the end position to "
+"be useful."
+msgstr "NavigationLink2D 的开始ä½ç½®åº”该与结æŸä½ç½®ä¸åŒï¼Œæ‰èƒ½å‘挥作用。"
+
+msgid ""
"The NavigationObstacle2D only serves to provide collision avoidance to a "
"Node2D object."
msgstr "NavigationObstacle2D åªèƒ½ç”¨äºŽä¸º Node2D 对象é¿å…碰撞。"
@@ -13992,11 +14151,16 @@ msgstr ""
"的图å—一起进行 Y 排åºã€‚"
msgid ""
+"A TileMap layer is set as Y-sorted, but Y-sort is not enabled on the TileMap "
+"node itself."
+msgstr "TileMap 图层设置为 Y 排åºï¼Œä½† TileMap 节点本身未å¯ç”¨ Y 排åºã€‚"
+
+msgid ""
"Isometric TileSet will likely not look as intended without Y-sort enabled "
"for the TileMap and all of its layers."
msgstr ""
-"如果ä¸å¯¹ TileMap 和它的所有层å¯ç”¨ Y-sort,Isometric TileSet å¯èƒ½çœ‹èµ·æ¥ä¸åƒé¢„"
-"期的那样。"
+"如果ä¸å¯¹ TileMap 和它的所有层å¯ç”¨ Y-sort,等轴 TileSet å¯èƒ½çœ‹èµ·æ¥ä¸åƒé¢„期的那"
+"样。"
msgid ""
"External Skeleton3D node not set! Please set a path to an external "
@@ -14056,6 +14220,16 @@ msgstr ""
"请统一其缩放(å³å„è½´å‡ç›¸åŒï¼‰ï¼Œä¿®æ”¹å¤šè¾¹å½¢çš„顶点。"
msgid ""
+"CollisionShape3D only serves to provide a collision shape to a "
+"CollisionObject3D derived node.\n"
+"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, "
+"CharacterBody3D, etc. to give them a shape."
+msgstr ""
+"CollisionShape3D 节点åªèƒ½ä¸º CollisionObject3D 的派生节点æ供碰撞形状。\n"
+"请将其用作 Area3Dã€StaticBody3Dã€RigidBody3Dã€CharacterBody3D çš„å­èŠ‚点以æä¾›"
+"形状。"
+
+msgid ""
"A shape must be provided for CollisionShape3D to function. Please create a "
"shape resource for it."
msgstr "CollisionShape3D 必须有形状æ‰èƒ½å·¥ä½œã€‚请先为其创建形状资æºã€‚"
@@ -14202,6 +14376,11 @@ msgid ""
msgstr "NavigationAgent3D åªèƒ½åœ¨ç»§æ‰¿ Node3D 的父节点下使用。"
msgid ""
+"NavigationLink3D start position should be different than the end position to "
+"be useful."
+msgstr "NavigationLink3D 的开始ä½ç½®åº”该与结æŸä½ç½®ä¸åŒï¼Œæ‰èƒ½å‘挥作用。"
+
+msgid ""
"The NavigationObstacle3D only serves to provide collision avoidance to a "
"Node3D inheriting parent object."
msgstr "NavigationObstacle3D åªèƒ½ç”¨äºŽä¸ºç»§æ‰¿è‡ª Node3D 的父级对象é¿å…碰撞。"
@@ -14439,9 +14618,6 @@ msgstr ""
"颜色:#%s\n"
"鼠标左键:应用颜色"
-msgid "Pick a color from the editor window."
-msgstr "从编辑器窗å£ä¸­é€‰æ‹©ä¸€ç§é¢œè‰²ã€‚"
-
msgid "Select a picker shape."
msgstr "选择选å–器形状。"
@@ -14489,8 +14665,13 @@ msgstr "ä½ æ— æƒè®¿é—®æ­¤æ–‡ä»¶å¤¹çš„内容。"
msgid "All Files"
msgstr "所有文件"
-msgid "Must use a valid extension."
-msgstr "必须使用有效的扩展å。"
+msgid ""
+"Please be aware that GraphEdit and GraphNode will undergo extensive "
+"refactoring in a future 4.x version involving compatibility-breaking API "
+"changes."
+msgstr ""
+"请注æ„,GraphEdit å’Œ GraphNode 将在未æ¥çš„ 4.x 版本中进行é‡æž„,会涉åŠå¤§é‡ç ´å"
+"兼容性的 API 更改。"
msgid "Enable grid minimap."
msgstr "å¯ç”¨æ …æ ¼å°åœ°å›¾ã€‚"
@@ -14522,7 +14703,7 @@ msgid "Right-to-Left Mark (RLM)"
msgstr "从å³è‡³å·¦æ ‡å¿—(RLM)"
msgid "Start of Left-to-Right Embedding (LRE)"
-msgstr "从左到å³åµŒå…¥ (LRE) 的开始"
+msgstr "开始从左至å³åµŒå…¥ï¼ˆLRE)"
msgid "Start of Right-to-Left Embedding (RLE)"
msgstr "开始从å³è‡³å·¦åµŒå…¥ï¼ˆRLE)"
@@ -14712,6 +14893,13 @@ msgstr "ç€è‰²å™¨çš„æºèµ„æºæ— æ•ˆã€‚"
msgid "Invalid operator for that type."
msgstr "è¿ç®—符对该类型无效。"
+msgid ""
+"`%s` precision mode is not available for `gl_compatibility` profile.\n"
+"Reverted to `None` precision."
+msgstr ""
+"`%s` 精度模å¼åœ¨ `gl_compatibility` é…置下ä¸å¯ç”¨ã€‚\n"
+"å·²æ¢å¤ä¸º `None` 精度。"
+
msgid "Default Color"
msgstr "默认颜色"
@@ -15100,6 +15288,9 @@ msgstr "ä¸å…许空结构体。"
msgid "Uniform instances are not yet implemented for '%s' shaders."
msgstr "“%sâ€ç€è‰²å™¨å°šæœªå®žçŽ° uniform 实例。"
+msgid "Uniform instances are not supported in gl_compatibility shaders."
+msgstr "gl_compatibility ç€è‰²å™¨å°šæœªæ”¯æŒ uniform 实例。"
+
msgid "Varyings cannot be used in '%s' shaders."
msgstr "Varying ä¸èƒ½åœ¨â€œ%sâ€ç€è‰²å™¨ä¸­ä½¿ç”¨ã€‚"
@@ -15295,7 +15486,7 @@ msgid "Expected a comma in the macro argument list."
msgstr "希望在å®å‚数列表中添加一个逗å·ã€‚"
msgid "Unmatched elif."
-msgstr "elif 未é…对。"
+msgstr "ä¸åŒ¹é…çš„ elif。"
msgid "Missing condition."
msgstr "缺少æ¡ä»¶ã€‚"
@@ -15304,10 +15495,16 @@ msgid "Condition evaluation error."
msgstr "æ¡ä»¶è¯„估错误。"
msgid "Unmatched else."
-msgstr "else 未é…对。"
+msgstr "ä¸åŒ¹é…çš„ else。"
+
+msgid "Invalid else."
+msgstr "无效的 else。"
msgid "Unmatched endif."
-msgstr "endif 未é…对。"
+msgstr "ä¸åŒ¹é…çš„ endif。"
+
+msgid "Invalid endif."
+msgstr "无效的 endif。"
msgid "Invalid ifdef."
msgstr "无效的 ifdef。"
@@ -15338,6 +15535,12 @@ msgstr "无效的 undef。"
msgid "Macro expansion limit exceeded."
msgstr "已超出å®å±•å¼€é™åˆ¶ã€‚"
+msgid "Invalid macro argument list."
+msgstr "无效的å®å‚数列表。"
+
+msgid "Invalid macro argument."
+msgstr "无效的å®å‚数。"
+
msgid "Invalid macro argument count."
msgstr "无效的å®å‚数计数。"
diff --git a/editor/translations/editor/zh_TW.po b/editor/translations/editor/zh_TW.po
index 2b54cdefcc..45a7a15afe 100644
--- a/editor/translations/editor/zh_TW.po
+++ b/editor/translations/editor/zh_TW.po
@@ -30,7 +30,7 @@
# Chia-Hsiang Cheng <cche0109@student.monash.edu>, 2021, 2022.
# 曹æ©é€¢ <nelson22768384@gmail.com>, 2022.
# Number18 <secretemail7730@gmail.com>, 2022.
-# Haoyu Qiu <timothyqiu32@gmail.com>, 2022.
+# Haoyu Qiu <timothyqiu32@gmail.com>, 2022, 2023.
# Otis Kao <momoslim@gmail.com>, 2022.
# YuChiang Chang <chiang.c.tw@gmail.com>, 2022.
# è˜è˜ <rrt467778@gmail.com>, 2022.
@@ -45,8 +45,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor interface\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 10:44+0000\n"
-"Last-Translator: abcabcc <xmmandxpp@outlook.com>\n"
+"PO-Revision-Date: 2023-02-18 17:29+0000\n"
+"Last-Translator: Eric K <eric900601@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hant/>\n"
"Language: zh_TW\n"
@@ -57,7 +57,7 @@ msgstr ""
"X-Generator: Weblate 4.16-dev\n"
msgid "Unset"
-msgstr "未設置"
+msgstr "未設定"
msgid "Physical"
msgstr "物ç†"
@@ -83,23 +83,189 @@ msgstr "滑鼠滾輪å‘å·¦"
msgid "Mouse Wheel Right"
msgstr "滑鼠滾輪å‘å³"
+msgid "Mouse Thumb Button 1"
+msgstr "滑鼠å´é¢éµ 1"
+
+msgid "Mouse Thumb Button 2"
+msgstr "滑鼠å´é¢éµ 2"
+
msgid "Button"
msgstr "按鈕"
+msgid "Double Click"
+msgstr "雙擊"
+
+msgid "Mouse motion at position (%s) with velocity (%s)"
+msgstr "滑鼠於ä½ç½® (%s) 以 (%s) 的速度移動"
+
+msgid "Left Stick X-Axis, Joystick 0 X-Axis"
+msgstr "左類比æ–æ¡¿ X軸ã€é¡žæ¯”æ–æ¡¿ 0 X軸"
+
+msgid "Left Stick Y-Axis, Joystick 0 Y-Axis"
+msgstr "左類比æ–æ¡¿ Y軸ã€é¡žæ¯”æ–æ¡¿ 0 Y軸"
+
+msgid "Right Stick X-Axis, Joystick 1 X-Axis"
+msgstr "å³é¡žæ¯”æ–æ¡¿ X軸ã€é¡žæ¯”æ–æ¡¿ 1 X軸"
+
+msgid "Right Stick Y-Axis, Joystick 1 Y-Axis"
+msgstr "å³é¡žæ¯”æ–æ¡¿ Y軸ã€é¡žæ¯”æ–æ¡¿ 1 Y軸"
+
+msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT"
+msgstr "類比æ–æ¡¿ 2 X軸ã€å·¦è‚©æ¿æ©Ÿã€Sony L2ã€Xbox LT"
+
+msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT"
+msgstr "類比æ–æ¡¿ 2 Y軸ã€å³è‚©æ¿æ©Ÿã€Sony R2ã€Xbox RT"
+
+msgid "Joystick 3 X-Axis"
+msgstr "類比æ–æ¡¿ 3 X軸"
+
+msgid "Joystick 3 Y-Axis"
+msgstr "類比æ–æ¡¿ 3 Y軸"
+
+msgid "Joystick 4 X-Axis"
+msgstr "類比æ–æ¡¿ 4 X軸"
+
+msgid "Joystick 4 Y-Axis"
+msgstr "類比æ–æ¡¿ 4 Y軸"
+
+msgid "Unknown Joypad Axis"
+msgstr "未知的æ–桿軸"
+
+msgid "Joypad Motion on Axis %d (%s) with Value %.2f"
+msgstr "æ–桿於軸 %d (%s) 進行值為 %.2f çš„é‹å‹•"
+
+msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B"
+msgstr "下方動作éµã€Sony å‰éµ (✕)ã€Xbox Aã€Nintendo B"
+
+msgid "Right Action, Sony Circle, Xbox B, Nintendo A"
+msgstr "å³æ–¹å‹•ä½œéµã€Sony 圓圈 (â—‹)ã€Xbox Bã€Nintendo A"
+
+msgid "Left Action, Sony Square, Xbox X, Nintendo Y"
+msgstr "左方動作éµã€Sony 方塊 (â–¡)ã€Xbox Xã€Nintendo Y"
+
+msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X"
+msgstr "上方動作éµã€Sony 三角 (â–³)ã€Xbox Yã€Nintendo X"
+
+msgid "Back, Sony Select, Xbox Back, Nintendo -"
+msgstr "返回ã€Sony Selectã€Xbox Backã€Nintendo -"
+
+msgid "Guide, Sony PS, Xbox Home"
+msgstr "指å—ã€Sony PSã€Xbox Home"
+
+msgid "Start, Nintendo +"
+msgstr "開始ã€Nintendo +"
+
+msgid "Left Stick, Sony L3, Xbox L/LS"
+msgstr "左類比æ–æ¡¿ã€Sony L3ã€Xbox L/LS"
+
+msgid "Right Stick, Sony R3, Xbox R/RS"
+msgstr "å³é¡žæ¯”æ–æ¡¿ã€Sony R3ã€Xbox R/RS"
+
+msgid "Left Shoulder, Sony L1, Xbox LB"
+msgstr "左肩éµã€Sony L1ã€Xbox LB"
+
+msgid "Right Shoulder, Sony R1, Xbox RB"
+msgstr "å³è‚©éµã€Sony R1ã€Xbox RB"
+
+msgid "D-pad Up"
+msgstr "æ–¹å‘éµ (D-pad) 上"
+
+msgid "D-pad Down"
+msgstr "æ–¹å‘éµ (D-pad) 下"
+
+msgid "D-pad Left"
+msgstr "æ–¹å‘éµ (D-pad) å·¦"
+
+msgid "D-pad Right"
+msgstr "æ–¹å‘éµ (D-pad) å³"
+
+msgid "Xbox Share, PS5 Microphone, Nintendo Capture"
+msgstr "Xbox Shareã€PS5 麥克風ã€Nintendo 截圖"
+
+msgid "Xbox Paddle 1"
+msgstr "Xbox 撥片 1"
+
+msgid "Xbox Paddle 2"
+msgstr "Xbox 撥片 2"
+
+msgid "Xbox Paddle 3"
+msgstr "Xbox 撥片 3"
+
+msgid "Xbox Paddle 4"
+msgstr "Xbox 撥片 4"
+
+msgid "PS4/5 Touchpad"
+msgstr "PS4/5 觸控æ¿"
+
+msgid "Joypad Button %d"
+msgstr "æ–桿按鈕 %d"
+
+msgid "Pressure:"
+msgstr "感壓:"
+
+msgid "touched"
+msgstr "按下"
+
+msgid "released"
+msgstr "放開"
+
+msgid "Screen %s at (%s) with %s touch points"
+msgstr "螢幕 %s 於 (%s) 接收到 %s 個觸控點"
+
+msgid ""
+"Screen dragged with %s touch points at position (%s) with velocity of (%s)"
+msgstr "螢幕上有 %s 個觸控點於ä½ç½® (%s) 以速率 (%s) æ‹–å‹•"
+
+msgid "Magnify Gesture at (%s) with factor %s"
+msgstr "æ–¼ä½ç½® (%s) 以å€çŽ‡ %s 使用放大手勢"
+
+msgid "Pan Gesture at (%s) with delta (%s)"
+msgstr "æ–¼ä½ç½® (%s) 以加速度 (%s) 使用平移手勢"
+
+msgid "MIDI Input on Channel=%s Message=%s"
+msgstr "輸入MIDI,頻é“=%sã€è¨Šæ¯=%s"
+
+msgid "Input Event with Shortcut=%s"
+msgstr "輸入事件,快æ·éµ=%s"
+
+msgid "Accept"
+msgstr "接å—"
+
msgid "Select"
msgstr "é¸æ“‡"
msgid "Cancel"
msgstr "å–消"
+msgid "Focus Next"
+msgstr "èšç„¦ä¸‹ä¸€å€‹"
+
+msgid "Focus Prev"
+msgstr "èšç„¦ä¸Šä¸€å€‹"
+
+msgid "Left"
+msgstr "å·¦"
+
+msgid "Right"
+msgstr "å³"
+
msgid "Up"
-msgstr "上行"
+msgstr "上"
msgid "Down"
-msgstr "下行"
+msgstr "下"
+
+msgid "Page Up"
+msgstr "ç•«é¢ä¸Šæ²"
+
+msgid "Page Down"
+msgstr "ç•«é¢ä¸‹æ²"
+
+msgid "Home"
+msgstr "é é¦–"
msgid "End"
-msgstr "çµæŸ"
+msgstr "é å°¾"
msgid "Cut"
msgstr "剪下"
@@ -114,26 +280,125 @@ msgid "Undo"
msgstr "復原"
msgid "Redo"
-msgstr "å–消復原"
+msgstr "é‡åš"
+
+msgid "Completion Query"
+msgstr "補全請求"
+
+msgid "New Line"
+msgstr "æ›è¡Œ"
+
+msgid "New Blank Line"
+msgstr "新增空行"
+
+msgid "New Line Above"
+msgstr "å‘上æ›è¡Œ"
msgid "Indent"
msgstr "縮排"
+msgid "Dedent"
+msgstr "å–消縮排"
+
+msgid "Backspace"
+msgstr "退格"
+
+msgid "Backspace Word"
+msgstr "退格一個文字"
+
+msgid "Backspace all to Left"
+msgstr "退格至最左å´"
+
msgid "Delete"
msgstr "刪除"
+msgid "Delete Word"
+msgstr "刪除文字"
+
+msgid "Delete all to Right"
+msgstr "刪除å³å´æ–‡å­—"
+
+msgid "Caret Left"
+msgstr "輸入指標左移"
+
+msgid "Caret Word Left"
+msgstr "輸入指標左移一個字"
+
+msgid "Caret Right"
+msgstr "輸入指標å³ç§»"
+
+msgid "Caret Word Right"
+msgstr "輸入指標å³ç§»ä¸€å€‹å­—"
+
+msgid "Caret Up"
+msgstr "輸入指標上移"
+
+msgid "Caret Down"
+msgstr "輸入指標下移"
+
+msgid "Caret Line Start"
+msgstr "輸入指標移至最左å´"
+
+msgid "Caret Line End"
+msgstr "輸入指標移至最å³å´"
+
+msgid "Caret Page Up"
+msgstr "輸入指標移至上é "
+
+msgid "Caret Page Down"
+msgstr "輸入指標移至下é "
+
+msgid "Caret Document Start"
+msgstr "輸入指標移至文件開頭"
+
+msgid "Caret Document End"
+msgstr "輸入指標移至文件çµå°¾"
+
+msgid "Caret Add Below"
+msgstr "鄉下添加光標"
+
+msgid "Caret Add Above"
+msgstr "鄉上添加光標"
+
+msgid "Scroll Up"
+msgstr "å‘上滾動"
+
+msgid "Scroll Down"
+msgstr "å‘下滾動"
+
msgid "Select All"
msgstr "全部é¸æ“‡"
+msgid "Select Word Under Caret"
+msgstr "é¸æ“‡å…‰æ¨™ä¸‹çš„單詞"
+
+msgid "Add Selection for Next Occurrence"
+msgstr "將下一個匹é…項添加到é¸å€"
+
+msgid "Clear Carets and Selection"
+msgstr "清除光標和é¸å€"
+
+msgid "Toggle Insert Mode"
+msgstr "é–‹é—œæ’入模å¼"
+
msgid "Duplicate Nodes"
msgstr "é‡è¤‡ç¯€é»ž"
msgid "Delete Nodes"
msgstr "刪除節點"
+msgid "Go Up One Level"
+msgstr "å‘上一級"
+
msgid "Refresh"
msgstr "é‡æ–°æ•´ç†"
+msgid "Show Hidden"
+msgstr "顯示隱è—的文件"
+
+msgid "Swap Input Direction"
+msgstr "交æ›è¼¸å…¥æ–¹å‘"
+
msgid "Invalid input %d (not passed) in expression"
msgstr "é‹ç®—å¼çš„輸入%d 無效(未傳éžï¼‰"
@@ -155,6 +420,12 @@ msgstr "用了無效的引數來建置「%sã€"
msgid "On call to '%s':"
msgstr "呼å«ã€Œ%sã€æ™‚:"
+msgid "Built-in script"
+msgstr "內建腳本"
+
+msgid "Built-in"
+msgstr "內建"
+
msgid "B"
msgstr "B"
@@ -176,6 +447,13 @@ msgstr "PiB"
msgid "EiB"
msgstr "EiB"
+msgid "Example: %s"
+msgstr "示例: %s"
+
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d 個項目"
+
msgid ""
"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
"'\"'"
@@ -184,12 +462,42 @@ msgstr "無效的æ“作å稱。å稱ä¸å¯ç•™ç©ºæˆ–åŒ…å« â€œ/â€, “:â€, â€
msgid "An action with the name '%s' already exists."
msgstr "已有å稱「%sã€çš„æ“作。"
+msgid "Cannot Revert - Action is same as initial"
+msgstr "無法還原 - 動作與åˆå§‹å‹•ä½œç›¸åŒ"
+
+msgid "Revert Action"
+msgstr "還原動作"
+
msgid "Add Event"
msgstr "新增事件"
+msgid "Remove Action"
+msgstr "移除動作"
+
+msgid "Cannot Remove Action"
+msgstr "無法移除動作"
+
+msgid "Edit Event"
+msgstr "編輯事件"
+
+msgid "Remove Event"
+msgstr "移除事件"
+
+msgid "Filter by name..."
+msgstr "按å稱篩é¸..."
+
+msgid "Clear All"
+msgstr "全部清除"
+
+msgid "Add New Action"
+msgstr "新增動作"
+
msgid "Add"
msgstr "新增"
+msgid "Show Built-in Actions"
+msgstr "顯示内置動作"
+
msgid "Action"
msgstr "æ“作"
@@ -202,6 +510,9 @@ msgstr "時間:"
msgid "Value:"
msgstr "數值:"
+msgid "Update Selected Key Handles"
+msgstr "更新所é¸æŒ‰éµæŽ§åˆ¶é»ž"
+
msgid "Insert Key Here"
msgstr "在此æ’入關éµç•«æ ¼"
@@ -211,12 +522,30 @@ msgstr "é‡è¤‡æ‰€é¸é—œéµç•«æ ¼"
msgid "Delete Selected Key(s)"
msgstr "刪除所é¸é—œéµç•«æ ¼"
+msgid "Make Handles Free"
+msgstr "改爲自由控制柄"
+
+msgid "Make Handles Linear"
+msgstr "改爲綫性控制柄"
+
+msgid "Make Handles Balanced"
+msgstr "改爲平衡控制柄"
+
+msgid "Make Handles Mirrored"
+msgstr "改爲é¡åƒæŽ§åˆ¶æŸ„"
+
+msgid "Make Handles Balanced (Auto Tangent)"
+msgstr "改爲平衡控制柄 (自動切綫)"
+
msgid "Add Bezier Point"
msgstr "新增è²èŒ²æ›²ç·šæŽ§åˆ¶é»ž"
msgid "Move Bezier Points"
msgstr "移動è²èŒ²æ›²ç·šæŽ§åˆ¶é»ž"
+msgid "Animation Change %s"
+msgstr "修改動畫 %s"
+
msgid "Change Animation Length"
msgstr "更改動畫長度"
@@ -262,6 +591,9 @@ msgstr "調整軌é“路徑"
msgid "Toggle this track on/off."
msgstr "打開ï¼é—œé–‰æ­¤è»Œé“。"
+msgid "Use Blend"
+msgstr "使用混åˆ"
+
msgid "Update Mode (How this property is set)"
msgstr "更新模å¼ï¼ˆå±¬æ€§è¨­å®šæ–¹æ³•ï¼‰"
@@ -514,12 +846,6 @@ msgstr "使用è²èŒ²æ›²ç·š"
msgid "Create RESET Track(s)"
msgstr "貼上關éµç•«æ ¼"
-msgid "Anim. Optimizer"
-msgstr "最佳化動畫工具"
-
-msgid "Max. Angular Error:"
-msgstr "最大角度誤差:"
-
msgid "Optimize"
msgstr "最佳化"
@@ -636,6 +962,9 @@ msgstr "新增é¡å¤–呼å«å¼•æ•¸ï¼š"
msgid "Extra Call Arguments:"
msgstr "é¡å¤–呼å«å¼•æ•¸ï¼š"
+msgid "Unbind Signal Arguments:"
+msgstr "解除ç¶å®šè¨Šè™Ÿå¼•æ•¸"
+
msgid "Receiver Method:"
msgstr "接收器方法:"
@@ -682,6 +1011,9 @@ msgstr "斷開訊號連接"
msgid "Connect a Signal to a Method"
msgstr "連接訊號至方法"
+msgid "Edit Connection: '%s'"
+msgstr "編輯連çµ: '%s'"
+
msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
msgstr "確定è¦åˆ é™¤æ‰€æœ‰ä¾†è‡ªè¨Šè™Ÿã€Œ%sã€çš„連接嗎?"
@@ -828,9 +1160,18 @@ msgstr "錯誤:"
msgid "%s Error"
msgstr "%s 錯誤"
+msgid "%s Error:"
+msgstr "%s 錯誤:"
+
msgid "Stack Trace"
msgstr "堆疊回溯"
+msgid "Stack Trace:"
+msgstr "堆疊追蹤:"
+
+msgid "Delete All Breakpoints in:"
+msgstr "移除所有中斷點:"
+
msgid "Copy Error"
msgstr "複製錯誤"
@@ -1321,9 +1662,15 @@ msgstr "新增"
msgid "Save"
msgstr "儲存"
+msgid "Profile:"
+msgstr "設定:"
+
msgid "Reset to Defaults"
msgstr "é‡è¨­ç‚ºé è¨­"
+msgid "Please Confirm:"
+msgstr "請確èª:"
+
msgid "Export Profile"
msgstr "匯出設定檔"
@@ -1504,9 +1851,6 @@ msgstr "é–‹å•Ÿ"
msgid "Select Current Folder"
msgstr "é¸æ“‡ç›®å‰è³‡æ–™å¤¾"
-msgid "File exists, overwrite?"
-msgstr "檔案已存在,是å¦è¦†è“‹ï¼Ÿ"
-
msgid "Select This Folder"
msgstr "é¸æ“‡æ­¤è³‡æ–™å¤¾"
@@ -1620,6 +1964,9 @@ msgstr "由於有多個匯入器å°æª”案 %s æ供了ä¸åŒçš„型別,已中æ­
msgid "(Re)Importing Assets"
msgstr "(é‡æ–°ï¼‰åŒ¯å…¥ç´ æ"
+msgid "Error codes returned:"
+msgstr "傳回錯誤碼:"
+
msgid "Top"
msgstr "頂端"
@@ -1774,9 +2121,15 @@ msgstr "已解除釘é¸%s"
msgid "Copy Property Path"
msgstr "複製屬性路徑"
+msgid "Select existing layout:"
+msgstr "é¸æ“‡æ—¢å­˜çš„ç•«é¢ä½ˆå±€:"
+
msgid "Changed Locale Filter Mode"
msgstr "更改地å€è¨­å®šç¯©é¸æ¨¡å¼"
+msgid "[Default]"
+msgstr "[é è¨­]"
+
msgid "Show All Locales"
msgstr "顯示所有地å€"
@@ -1789,6 +2142,16 @@ msgstr "編輯篩é¸æ¢ä»¶"
msgid "Language:"
msgstr "語言:"
+msgctxt "Locale"
+msgid "Script:"
+msgstr "文字:"
+
+msgid "Country:"
+msgstr "國家:"
+
+msgid "Language"
+msgstr "語言"
+
msgid "Variant"
msgstr "變體"
@@ -1971,12 +2334,18 @@ msgstr "當滑鼠按éµè¢«æŒ‰ä¸‹æ™‚無法復原。"
msgid "Nothing to undo."
msgstr "無變更以復原。"
+msgid "Remote Undo: %s"
+msgstr "é ç«¯å¾©åŽŸ: %s"
+
msgid "Can't redo while mouse buttons are pressed."
msgstr "當滑鼠按éµæŒ‰ä¸‹æ™‚無法復原。"
msgid "Nothing to redo."
msgstr "無變更以復原。"
+msgid "Remote Redo: %s"
+msgstr "é ç«¯é‡åš: %s"
+
msgid "Can't reload a scene that was never saved."
msgstr "無法é‡æ–°è¼‰å…¥å¾žæœªå„²å­˜éŽçš„場景。"
@@ -2511,6 +2880,9 @@ msgstr "在 _run() 方法中填寫é‚輯。"
msgid "There is an edited scene already."
msgstr "已有一個已編輯的場景。"
+msgid "Edit Built-in Action"
+msgstr "編輯內建動作"
+
msgid "Common"
msgstr "常見"
@@ -2529,6 +2901,9 @@ msgstr "å¿«æ·éµ"
msgid "Binding"
msgstr "ç¶å®š"
+msgid "Joypad Axis %d %s (%s)"
+msgstr "æ–桿軸 %d %s (%s)"
+
msgid "All Devices"
msgstr "所有è£ç½®"
@@ -2568,6 +2943,9 @@ msgstr "無法建立「%sã€æª”案。"
msgid "Failed to export project files."
msgstr "無法匯出專案檔。"
+msgid "Can't open encrypted file to write."
+msgstr "無法開啟加密檔案並寫入。"
+
msgid "Can't open file to read from path \"%s\"."
msgstr "無法打開ä½æ–¼ã€Œ%sã€çš„檔案用於讀å–。"
@@ -3134,6 +3512,18 @@ msgstr "é‡æ–°åŒ¯å…¥"
msgid "Offset:"
msgstr "å移:"
+msgid "Loop:"
+msgstr "循環:"
+
+msgid "Beat Count:"
+msgstr "節æ‹æ•¸:"
+
+msgid "Music Playback:"
+msgstr "音樂播放:"
+
+msgid "Configuration:"
+msgstr "設定:"
+
msgid "Importing Scene..."
msgstr "正在匯入場景..."
@@ -3168,29 +3558,65 @@ msgstr "2D"
msgid "3D"
msgstr "3D"
+msgid "Select folder to extract material resources"
+msgstr "é¸æ“‡è³‡æ–™å¤¾ä»¥æ“·å–æ質資æº"
+
+msgid "Set paths to save animations as resource files on Reimport"
+msgstr "設定路徑將動畫å¦å­˜ç‚ºå¯å°Žå…¥çš„資æºæª”案"
+
+msgid "Can't make material external to file, write error:"
+msgstr "無法å¦å­˜æ質為外部檔案,寫入錯誤:"
+
+msgid "Actions..."
+msgstr "動作..."
+
+msgid "Extract Materials"
+msgstr "æ“·å–æ質"
+
+msgid "Set Animation Save Paths"
+msgstr "設定動畫儲存路徑"
+
+msgid "Set Mesh Save Paths"
+msgstr "設定網格儲存路徑"
+
msgid "Meshes"
msgstr "網格"
msgid "Materials"
msgstr "æ質"
+msgid "Save Extension:"
+msgstr "儲存副檔å:"
+
+msgid "Text: *.tres"
+msgstr "文本: *.tres"
+
+msgid "Binary: *.res"
+msgstr "二進ä½æª”案: *.res"
+
+msgid "Text Resource"
+msgstr "文本資æº"
+
+msgid "Binary Resource"
+msgstr "二進ä½æª”案資æº"
+
msgid "Select Importer"
-msgstr "é¸æ“‡åŒ¯å…¥ç¨‹å¼"
+msgstr "é¸æ“‡åŒ¯å…¥å™¨"
msgid "Importer:"
-msgstr "匯入程å¼ï¼š"
+msgstr "匯入器:"
msgid "Keep File (No Import)"
-msgstr "ä¿ç•™æª”案(ä¸åŒ¯å…¥ï¼‰"
+msgstr "ä¿ç•™æª”案 (ä¸åŒ¯å…¥)"
msgid "%d Files"
msgstr "%d 個檔案"
msgid "Set as Default for '%s'"
-msgstr "設為「%sã€çš„é è¨­"
+msgstr "設為「%sã€çš„é è¨­å€¼"
msgid "Clear Default for '%s'"
-msgstr "清除「%sã€çš„é è¨­"
+msgstr "清除「%sã€çš„é è¨­å€¼"
msgid ""
"You have pending changes that haven't been applied yet. Click Reimport to "
@@ -3389,7 +3815,7 @@ msgid "Add Animation"
msgstr "新增動畫"
msgid "Add %s"
-msgstr "新增 %"
+msgstr "新增 %s"
msgid "Load..."
msgstr "載入..."
@@ -7195,9 +7621,6 @@ msgstr "修改æ“作盲å€"
msgid "Erase Input Action"
msgstr "清除輸入æ“作"
-msgid "Rename Input Action Event"
-msgstr "é‡æ–°å‘½å輸入æ“作事件"
-
msgid "Project Settings (project.godot)"
msgstr "專案設定 (project.godot)"
@@ -8360,9 +8783,6 @@ msgstr "連接至 AnimationPlayer 的路徑並未連接至 AnimationPlayer 節é»
msgid "The AnimationPlayer root node is not a valid node."
msgstr "AnimationPlayer 的根節點並éžæœ‰æ•ˆç¯€é»žã€‚"
-msgid "Pick a color from the editor window."
-msgstr "請自編輯器視窗é¸æ“‡ä¸€å€‹é¡è‰²ã€‚"
-
msgid "Switch between hexadecimal and code values."
msgstr "在 16 進ä½èˆ‡ä»£ç¢¼å€¼ä¹‹é–“切æ›ã€‚"
@@ -8391,9 +8811,6 @@ msgstr "警告ï¼"
msgid "Please Confirm..."
msgstr "請確èª..."
-msgid "Must use a valid extension."
-msgstr "必須使用有效的副檔å。"
-
msgid "Enable grid minimap."
msgstr "啟用網格迷你地圖。"
@@ -8465,3 +8882,171 @@ msgstr "指派至å‡å‹»ã€‚"
msgid "Constants cannot be modified."
msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
+
+msgid "Invalid constant type (samplers are not allowed)."
+msgstr "無效的常數型別 (ä¸å¯ä½¿ç”¨å–樣器)。"
+
+msgid "Invalid function type (samplers are not allowed)."
+msgstr "無效的函å¼åž‹åˆ¥ (ä¸å¯ä½¿ç”¨å–樣器)。"
+
+msgid "Expected a function name after type."
+msgstr "型別後應為函å¼å稱。"
+
+msgid ""
+"The '%s' qualifier cannot be used within a function parameter declared with "
+"'%s'."
+msgstr "修飾字「%sã€ä¸æ‡‰è¢«ç”¨ä½œå®£å‘Šç‚ºã€Œ%sã€çš„函å¼åƒæ•¸ã€‚"
+
+msgid "Expected a valid data type for argument."
+msgstr "應以具體的資料型別作為引數。"
+
+msgid "Opaque types cannot be output parameters."
+msgstr "Opaque 型別ä¸æ‡‰è¢«ç”¨ä½œè¼¸å‡ºåƒæ•¸ã€‚"
+
+msgid "Void type not allowed as argument."
+msgstr "Void 型別ä¸æ‡‰è¢«ç”¨ä½œå¼•æ•¸ã€‚"
+
+msgid "Expected an identifier for argument name."
+msgstr "應使用辨識字作為引數å稱。"
+
+msgid "Function '%s' expects no arguments."
+msgstr "函å¼ã€Œ%sã€ä¸æ‡‰è©²å­˜åœ¨å¼•æ•¸ã€‚"
+
+msgid "Function '%s' must be of '%s' return type."
+msgstr "函å¼ã€Œ%sã€çš„回傳值必須為「%sã€åž‹åˆ¥ã€‚"
+
+msgid "Expected a '{' to begin function."
+msgstr "在函å¼é–‹é ­æ‡‰æ·»åŠ ã€Œ{ã€ã€‚"
+
+msgid "Expected at least one '%s' statement in a non-void function."
+msgstr "åœ¨éž void 函å¼ä¸­æ‡‰è‡³å°‘有一個「%sã€é™³è¿°å¥ã€‚"
+
+msgid "uniform buffer"
+msgstr "uniform ç·©è¡"
+
+msgid "Expected a '%s'."
+msgstr "應添加「%sã€ã€‚"
+
+msgid "Expected a '%s' or '%s'."
+msgstr "應添加「%sã€æˆ–「%sã€ã€‚"
+
+msgid "Expected a '%s' after '%s'."
+msgstr "應添加「%sã€æ–¼ã€Œ%sã€å¾Œæ–¹ã€‚"
+
+msgid "Redefinition of '%s'."
+msgstr "é‡è¤‡å®šç¾©äº†ã€Œ%sã€ã€‚"
+
+msgid "Unknown directive."
+msgstr "未知的指令。"
+
+msgid "Invalid macro name."
+msgstr "無效的巨集å稱。"
+
+msgid "Macro redefinition."
+msgstr "巨集é‡å®šç¾©ã€‚"
+
+msgid "Invalid argument name."
+msgstr "無效的引數å稱。"
+
+msgid "Expected a comma in the macro argument list."
+msgstr "巨集引數列表中應存在一個逗號。"
+
+msgid "Unmatched elif."
+msgstr "無法é…å°çš„ elif。"
+
+msgid "Missing condition."
+msgstr "找ä¸åˆ°æ¢ä»¶ã€‚"
+
+msgid "Condition evaluation error."
+msgstr "æ¢ä»¶è©•ä¼°éŒ¯èª¤ã€‚"
+
+msgid "Unmatched else."
+msgstr "無法é…å°çš„ else。"
+
+msgid "Invalid else."
+msgstr "無效的 else。"
+
+msgid "Unmatched endif."
+msgstr "無法é…å°çš„ endif。"
+
+msgid "Invalid endif."
+msgstr "無效的 endif。"
+
+msgid "Invalid ifdef."
+msgstr "無效的 ifndef。"
+
+msgid "Invalid ifndef."
+msgstr "無效的 ifndef。"
+
+msgid ""
+"Shader include load failed. Does the shader include exist? Is there a cyclic "
+"dependency?"
+msgstr "著色器的標頭檔讀å–失敗。請檢查該標頭檔是å¦å­˜åœ¨ï¼Œæˆ–者是å¦å­˜åœ¨å¾ªç’°ä¾è³´ï¼Ÿ"
+
+msgid "Shader include resource type is wrong."
+msgstr "著色器標頭檔的資æºåž‹åˆ¥ä¸æ­£ç¢ºã€‚"
+
+msgid "Cyclic include found."
+msgstr "發ç¾äº†å¾ªç’° include。"
+
+msgid "Shader max include depth exceeded."
+msgstr "超出著色器的最大包å«æ·±åº¦ã€‚"
+
+msgid "Invalid pragma directive."
+msgstr "無效的 pragma 指令。"
+
+msgid "Invalid undef."
+msgstr "無效的 undef。"
+
+msgid "Macro expansion limit exceeded."
+msgstr "超出巨集展開的é™åˆ¶ã€‚"
+
+msgid "Invalid macro argument list."
+msgstr "無效的巨集引數列表。"
+
+msgid "Invalid macro argument."
+msgstr "無效的巨集引數。"
+
+msgid "Invalid macro argument count."
+msgstr "無效的巨集引數計數。"
+
+msgid "Can't find matching branch directive."
+msgstr "找ä¸åˆ°å°æ‡‰çš„分支指令。"
+
+msgid "Invalid symbols placed before directive."
+msgstr "指令å‰è¢«æ”¾ç½®äº†ç„¡æ•ˆçš„符號。"
+
+msgid "Unmatched conditional statement."
+msgstr "æ¢ä»¶å¼æ²’有完æˆé…å°ã€‚"
+
+msgid ""
+"Direct floating-point comparison (this may not evaluate to `true` as you "
+"expect). Instead, use `abs(a - b) < 0.0001` for an approximate but "
+"predictable comparison."
+msgstr ""
+"直接進行浮點數的比較(å¯èƒ½ä¸æœƒåƒä½ æœŸæœ›çš„得到「trueã€ï¼‰ã€‚請改用「abs(a - b) < "
+"0.0001ã€é€²è¡Œè¿‘似但å¯é æ¸¬çš„比較。"
+
+msgid "The const '%s' is declared but never used."
+msgstr "常數「%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid "The function '%s' is declared but never used."
+msgstr "函å¼ã€Œ%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid "The struct '%s' is declared but never used."
+msgstr "çµæ§‹ã€Œ%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid "The uniform '%s' is declared but never used."
+msgstr "Uniform「%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid "The varying '%s' is declared but never used."
+msgstr "Varying「%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid "The local variable '%s' is declared but never used."
+msgstr "å€åŸŸè®Šæ•¸ã€Œ%sã€å·²è¢«å®£å‘Šï¼Œä½†å¾žæœªä½¿ç”¨ã€‚"
+
+msgid ""
+"The total size of the %s for this shader on this device has been exceeded "
+"(%d/%d). The shader may not work correctly."
+msgstr ""
+"這個著色器已經超出此è£ç½®çš„ %s çš„ç¸½å¤§å° (%d/%d)。該著色器å¯èƒ½ç„¡æ³•æ­£å¸¸é‹ä½œã€‚"
diff --git a/editor/translations/properties/de.po b/editor/translations/properties/de.po
index f66608bcde..b0afd644d8 100644
--- a/editor/translations/properties/de.po
+++ b/editor/translations/properties/de.po
@@ -93,8 +93,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-09 01:12+0000\n"
-"Last-Translator: co1inco <colin.meihoefer@gmx.de>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/de/>\n"
"Language: de\n"
@@ -113,6 +113,9 @@ msgstr "Konfiguration"
msgid "Name"
msgstr "Name"
+msgid "Name Localized"
+msgstr "Name lokalisiert"
+
msgid "Description"
msgstr "Beschreibung"
@@ -149,18 +152,45 @@ msgstr "Fenster"
msgid "Size"
msgstr "Größe"
+msgid "Viewport Width"
+msgstr "Ansichtsfensterbreite"
+
+msgid "Viewport Height"
+msgstr "Ansichtsfensterhöhe"
+
msgid "Mode"
msgstr "Modus"
+msgid "Initial Position Type"
+msgstr "Art der Ausgangsposition"
+
+msgid "Initial Position"
+msgstr "Ausgangsposition"
+
+msgid "Initial Screen"
+msgstr "Anfangsbildschirm"
+
msgid "Resizable"
msgstr "Verstellbar"
msgid "Borderless"
msgstr "Rahmenlos"
+msgid "Always on Top"
+msgstr "Immer im Vordergrund"
+
msgid "Transparent"
msgstr "Transparent"
+msgid "No Focus"
+msgstr "Kein Fokus"
+
+msgid "Window Width Override"
+msgstr "Fensterbreite überschreiben"
+
+msgid "Window Height Override"
+msgstr "Fensterhöhe überschreiben"
+
msgid "Energy Saving"
msgstr "Energiesparen"
@@ -170,18 +200,48 @@ msgstr "Bildschirm an lassen"
msgid "Audio"
msgstr "Audio"
+msgid "Buses"
+msgstr "Busse"
+
+msgid "General"
+msgstr "Allgemein"
+
+msgid "2D Panning Strength"
+msgstr "Stärke der 2D-Verschiebung"
+
+msgid "3D Panning Strength"
+msgstr "Stärke der 3D-Verschiebung"
+
msgid "Editor"
msgstr "Editor"
msgid "Main Run Args"
msgstr "Laufzeitargumente für Main"
+msgid "Script"
+msgstr "Skript"
+
+msgid "Search in File Extensions"
+msgstr "In Dateierweiterungen suchen"
+
+msgid "Templates Search Path"
+msgstr "Vorlagen-Suchpfad"
+
+msgid "Naming"
+msgstr "Namensgebung"
+
+msgid "Default Signal Callback Name"
+msgstr "Standardmäßiger Name der Signalrückruffunktion"
+
msgid "Physics"
msgstr "Physik"
msgid "2D"
msgstr "2D"
+msgid "Run on Separate Thread"
+msgstr "In separatem Thread ausführen"
+
msgid "3D"
msgstr "3D"
@@ -194,6 +254,27 @@ msgstr "Einstellungen"
msgid "Compression"
msgstr "Kompression"
+msgid "Formats"
+msgstr "Formate"
+
+msgid "Zstd"
+msgstr "Zstd"
+
+msgid "Long Distance Matching"
+msgstr "Fernabgleich"
+
+msgid "Compression Level"
+msgstr "Komprimierungsgrad"
+
+msgid "Window Log Size"
+msgstr "Fensterprotokollgröße"
+
+msgid "Zlib"
+msgstr "Zlib"
+
+msgid "Gzip"
+msgstr "Gzip"
+
msgid "Crash Handler"
msgstr "Absturzbehandlung"
@@ -206,12 +287,30 @@ msgstr "Am Rendern"
msgid "Occlusion Culling"
msgstr "Occlusion-Culling"
+msgid "Memory"
+msgstr "Speicher"
+
msgid "Limits"
msgstr "Grenzen"
+msgid "Multithreaded Server"
+msgstr "Multithreading-Server"
+
+msgid "Internationalization"
+msgstr "Internationalisierung"
+
msgid "GUI"
msgstr "GUI"
+msgid "Rendering Device"
+msgstr "Rendering-Gerät"
+
+msgid "Staging Buffer"
+msgstr "Bereitstellungspuffer"
+
+msgid "Block Size (KB)"
+msgstr "Blockgröße (KB)"
+
msgid "Max Size (MB)"
msgstr "Maximale Größe (MB)"
@@ -242,6 +341,18 @@ msgstr "Kumulierte Eingabe verwenden"
msgid "Device"
msgstr "Gerät"
+msgid "Alt Pressed"
+msgstr "Alt gedrückt"
+
+msgid "Shift Pressed"
+msgstr "Umschalt gedrückt"
+
+msgid "Ctrl Pressed"
+msgstr "Strg gedrückt"
+
+msgid "Meta Pressed"
+msgstr "Meta gedrückt"
+
msgid "Pressed"
msgstr "Gedrückt"
@@ -293,6 +404,9 @@ msgstr "Achsenwert"
msgid "Index"
msgstr "Index"
+msgid "Double Tap"
+msgstr "Doppeltippen"
+
msgid "Action"
msgstr "Aktion"
@@ -320,6 +434,9 @@ msgstr "Controllerwert"
msgid "Shortcut"
msgstr "Tastenkürzel"
+msgid "Events"
+msgstr "Ereignisse"
+
msgid "Big Endian"
msgstr "Big-Endian"
@@ -327,14 +444,11 @@ msgid "Network"
msgstr "Netzwerk"
msgid "Page Size"
-msgstr "Page-Größe"
+msgstr "Seitengröße"
msgid "Blocking Mode Enabled"
msgstr "Blockierender Modus aktiviert"
-msgid "Connection"
-msgstr "Verbindung"
-
msgid "Read Chunk Size"
msgstr "Lese-Chunk-Größe"
@@ -353,9 +467,6 @@ msgstr "Maximalgröße des Eingabepuffers"
msgid "Output Buffer Max Size"
msgstr "Maximalgröße des Ausgabepuffers"
-msgid "Stream Peer"
-msgstr "Streampartner"
-
msgid "Resource"
msgstr "Ressource"
@@ -380,8 +491,8 @@ msgstr "Seed"
msgid "State"
msgstr "Status"
-msgid "Source Code"
-msgstr "Quellcode"
+msgid "Max Size (KB)"
+msgstr "Max. Größe (KB)"
msgid "Locale"
msgstr "Gebietsschema"
@@ -464,15 +575,6 @@ msgstr "Zugriff"
msgid "Display Mode"
msgstr "Darstellungsmodus"
-msgid "Current Dir"
-msgstr "Aktuelles Verzeichnis"
-
-msgid "Current File"
-msgstr "Aktuelle Datei"
-
-msgid "Current Path"
-msgstr "Aktueller Pfad"
-
msgid "Show Hidden Files"
msgstr "Versteckte Dateien anzeigen"
@@ -554,18 +656,12 @@ msgstr "Ablenkungsfreier Modus"
msgid "Base Type"
msgstr "Basistyp"
-msgid "Edited Resource"
-msgstr "Bearbeitete Ressource"
-
msgid "Editable"
msgstr "Bearbeitbar"
msgid "Toggle Mode"
msgstr "Modus umschalten"
-msgid "Script Owner"
-msgstr "Skripteigentümer"
-
msgid "Editor Language"
msgstr "Editorsprache"
@@ -609,7 +705,7 @@ msgid "Mouse Extra Buttons Navigate History"
msgstr "Extramaustasten blättern durch Verlauf"
msgid "Theme"
-msgstr "Theme"
+msgstr "Motiv, Design, oder anscheinend Thema¯\\_(ツ)_/¯"
msgid "Preset"
msgstr "Vorlage"
@@ -1232,6 +1328,9 @@ msgstr "Ãœberabtastung"
msgid "Compress"
msgstr "Komprimieren"
+msgid "Language"
+msgstr "Sprache"
+
msgid "Outline Size"
msgstr "Umrissgröße"
@@ -1265,9 +1364,6 @@ msgstr "From erstellen"
msgid "Delimiter"
msgstr "Trennzeichen"
-msgid "Preload"
-msgstr "Vorladen"
-
msgid "Columns"
msgstr "Spalten"
@@ -1449,7 +1545,7 @@ msgid "Available URLs"
msgstr "Verfügbare URLs"
msgid "Unset"
-msgstr "Deaktiviert"
+msgstr "Nicht gesetzt"
msgid "Error"
msgstr "Fehler"
@@ -1520,6 +1616,15 @@ msgstr "Warnungen"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Textur"
+
+msgid "Separation"
+msgstr "Trennung"
+
+msgid "Speed"
+msgstr "Geschwindigkeit"
+
msgid "Version Control"
msgstr "Versionsverwaltung"
@@ -1598,11 +1703,8 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Home-Anzeiger verbergen"
-msgid "Input Devices"
-msgstr "Eingabegeräte"
-
-msgid "Pointing"
-msgstr "Zeigend"
+msgid "XR"
+msgstr "XR"
msgid "Boot Splash"
msgstr "Startladebild"
@@ -1610,6 +1712,9 @@ msgstr "Startladebild"
msgid "BG Color"
msgstr "Hintergrundfarbe"
+msgid "Input Devices"
+msgstr "Eingabegeräte"
+
msgid "Environment"
msgstr "Umgebung"
@@ -1637,6 +1742,9 @@ msgstr "Puffern"
msgid "Agile Event Flushing"
msgstr "Bewegliches Ereignis-Flushing"
+msgid "Pointing"
+msgstr "Zeigend"
+
msgid "Emulate Touch From Mouse"
msgstr "Druckberührung mit Maus emulieren"
@@ -1988,9 +2096,6 @@ msgstr "Skin-Wurzel"
msgid "Joints Original"
msgstr "Gelenkoriginal"
-msgid "Inverse Binds"
-msgstr "Bindungen invertieren"
-
msgid "Non Joints"
msgstr "Nicht-Gelenke"
@@ -2855,9 +2960,6 @@ msgstr "Kopiermodus"
msgid "Anchor Mode"
msgstr "Anker Modus"
-msgid "Custom Viewport"
-msgstr "Eigenes Ansichtsfenster"
-
msgid "Left"
msgstr "Links"
@@ -2873,9 +2975,6 @@ msgstr "Unten"
msgid "Smoothed"
msgstr "Geglättet"
-msgid "Speed"
-msgstr "Geschwindigkeit"
-
msgid "Horizontal Enabled"
msgstr "Horizontal aktiviert"
@@ -2957,9 +3056,6 @@ msgstr "Lokale Koordination"
msgid "Draw Order"
msgstr "Zeichenreihenfolge"
-msgid "Texture"
-msgstr "Textur"
-
msgid "Emission Shape"
msgstr "Emissionsform"
@@ -3200,24 +3296,9 @@ msgstr "Reisekosten"
msgid "Estimate Radius"
msgstr "Radius schätzen"
-msgid "Rotation Degrees"
-msgstr "Rotationswinkel"
-
msgid "Skew"
msgstr "Neigung"
-msgid "Global Rotation"
-msgstr "Globale Rotation"
-
-msgid "Global Rotation Degrees"
-msgstr "Globaler Rotationswinkel"
-
-msgid "Global Scale"
-msgstr "Globale Skalierung"
-
-msgid "Global Transform"
-msgstr "Globales Transform"
-
msgid "Scroll"
msgstr "Rollen"
@@ -3998,6 +4079,9 @@ msgstr "Eigenes AABB"
msgid "Lightmap Scale"
msgstr "Lightmap-Skalierung"
+msgid "Visibility Range"
+msgstr "Sichtbarkeitsbereich"
+
msgid "End"
msgstr "Ende"
@@ -4070,15 +4154,6 @@ msgstr "Wurzel-Node"
msgid "Current Animation"
msgstr "Aktuelle Animation"
-msgid "Assigned Animation"
-msgstr "Zugewiesene Animation"
-
-msgid "Current Animation Length"
-msgstr "Aktuelle Animationslänge"
-
-msgid "Current Animation Position"
-msgstr "Aktuelle Animationsposition"
-
msgid "Playback Options"
msgstr "Abspieloptionen"
@@ -4142,6 +4217,9 @@ msgstr "Symbol vergrößern"
msgid "Use Top Left"
msgstr "Oben-Links verwenden"
+msgid "Indentation"
+msgstr "Einrückung"
+
msgid "Edit Alpha"
msgstr "Alpha bearbeiten"
@@ -4493,9 +4571,6 @@ msgstr "Drop-Modus-Optionen"
msgid "Audio Track"
msgstr "Audiospur"
-msgid "Volume"
-msgstr "Volumen"
-
msgid "Paused"
msgstr "Pausiert"
@@ -4505,9 +4580,6 @@ msgstr "Ausdehnen"
msgid "Buffering Msec"
msgstr "Puffer ms"
-msgid "Stream Position"
-msgstr "Streamposition"
-
msgid "Self Modulate"
msgstr "Selbst-Modulieren"
@@ -4556,12 +4628,6 @@ msgstr "Ãœbertragungsmodus"
msgid "Transfer Channel"
msgstr "Transferkanal"
-msgid "Owner"
-msgstr "Besitzer"
-
-msgid "Multiplayer"
-msgstr "Mehrspieler"
-
msgid "Editor Description"
msgstr "Editorbeschreibung"
@@ -4574,15 +4640,6 @@ msgstr "Kollisionshinweise debuggen"
msgid "Debug Navigation Hint"
msgstr "Navigationshinweise debuggen"
-msgid "Edited Scene Root"
-msgstr "bearbeitete Szenenwurzel"
-
-msgid "Current Scene"
-msgstr "Aktuelle Szene"
-
-msgid "Root"
-msgstr "Wurzel"
-
msgid "Multiplayer Poll"
msgstr "Mehrspielerrundfrage"
@@ -4625,9 +4682,6 @@ msgstr "Ansichtsfensterpfad"
msgid "Disable 3D"
msgstr "3D deaktivieren"
-msgid "World 2D"
-msgstr "Welt 2D"
-
msgid "Transparent BG"
msgstr "Transparenter Hintergrund"
@@ -4664,12 +4718,6 @@ msgstr "Quadrat 2"
msgid "Quad 3"
msgstr "Quadrat 3"
-msgid "Canvas Transform"
-msgstr "Leinwand-Transform"
-
-msgid "Global Canvas Transform"
-msgstr "Globales Leinwand-Transform"
-
msgid "Render Target"
msgstr "Renderziel"
@@ -4949,9 +4997,6 @@ msgstr "Schließen-Farbe"
msgid "Resizer Color"
msgstr "Versteller-Farbe"
-msgid "Separation"
-msgstr "Trennung"
-
msgid "Title Offset"
msgstr "Titelversatz"
@@ -5192,6 +5237,9 @@ msgstr "Lichtbeeinflussung"
msgid "AO Channel Affect"
msgstr "AO-Kanal-Beeinflussung"
+msgid "SSIL"
+msgstr "SSIL"
+
msgid "Glow"
msgstr "Leuchten"
@@ -5561,6 +5609,9 @@ msgstr "Sonne"
msgid "Panorama"
msgstr "Panorama"
+msgid "Ground Color"
+msgstr "Bodenfarbe"
+
msgid "Blend"
msgstr "Blenden"
@@ -5612,9 +5663,6 @@ msgstr "Bis"
msgid "Frames"
msgstr "Frames"
-msgid "Current Frame"
-msgstr "Aktueller Frame"
-
msgid "Pause"
msgstr "Pause"
@@ -5660,21 +5708,15 @@ msgstr "Standardwert"
msgid "Color Default"
msgstr "Standardfarbe"
-msgid "Canvas"
-msgstr "Canvas/ Leinwand"
+msgid "Use All Surfaces"
+msgstr "Nutze alle Oberflächen"
-msgid "Navigation Map"
-msgstr "Navigationskarte"
-
-msgid "Direct Space State"
-msgstr "Direkter Raum Zustand"
+msgid "Surface Index"
+msgstr "Oberflächenindex"
msgid "Fallback Environment"
msgstr "Ausweichumgebung"
-msgid "Scenario"
-msgstr "Szenario"
-
msgid "Plane"
msgstr "Ebene"
@@ -5903,6 +5945,9 @@ msgstr "Reflexionen"
msgid "Texture Array Reflections"
msgstr "Textur-Array-Reflexionen"
+msgid "GI"
+msgstr "GI"
+
msgid "Overrides"
msgstr "Ãœberschreibungen"
diff --git a/editor/translations/properties/es.po b/editor/translations/properties/es.po
index 40a4fe1441..2d6db926d3 100644
--- a/editor/translations/properties/es.po
+++ b/editor/translations/properties/es.po
@@ -97,8 +97,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Damien Monasterios <monasterio13septiembre@gmail.com>\n"
+"PO-Revision-Date: 2023-02-19 06:13+0000\n"
+"Last-Translator: andres gallegos <andresgg.prog@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/es/>\n"
"Language: es\n"
@@ -153,21 +153,42 @@ msgstr "Ventana"
msgid "Size"
msgstr "Tamaño"
+msgid "Viewport Width"
+msgstr "Ancho del Viewport"
+
+msgid "Viewport Height"
+msgstr "Altura del Viewport"
+
msgid "Mode"
msgstr "Modo"
+msgid "Initial Position Type"
+msgstr "Tipo de posición inicial"
+
+msgid "Initial Position"
+msgstr "Posición inicial"
+
+msgid "Initial Screen"
+msgstr "Pantalla inicial"
+
msgid "Resizable"
msgstr "Redimensionable"
msgid "Borderless"
msgstr "Sin bordes"
+msgid "Always on Top"
+msgstr "Siempre encima"
+
msgid "Transparent"
msgstr "Transparente"
msgid "Extend to Title"
msgstr "Extender al Título"
+msgid "No Focus"
+msgstr "Sin foco"
+
msgid "Energy Saving"
msgstr "Ahorro de Energía"
@@ -177,18 +198,42 @@ msgstr "Mantener la Pantalla Activa"
msgid "Audio"
msgstr "Audio"
+msgid "Buses"
+msgstr "Buses"
+
+msgid "General"
+msgstr "General"
+
+msgid "2D Panning Strength"
+msgstr "Fuerza de panoramización 2D"
+
+msgid "3D Panning Strength"
+msgstr "Fuerza de panoramización 3D"
+
msgid "Editor"
msgstr "Editor"
msgid "Main Run Args"
msgstr "Argumentos de la Ejecución Principal"
+msgid "Script"
+msgstr "Script"
+
+msgid "Search in File Extensions"
+msgstr "Buscar en Extensiones de Archivos"
+
+msgid "Templates Search Path"
+msgstr "Ruta de Búsqueda de Plantillas"
+
msgid "Physics"
msgstr "Física"
msgid "2D"
msgstr "2D"
+msgid "Run on Separate Thread"
+msgstr "Ejecutar en Hilo Separado"
+
msgid "3D"
msgstr "3D"
@@ -198,11 +243,26 @@ msgstr "Depurar"
msgid "Settings"
msgstr "Configuración"
+msgid "Max Functions"
+msgstr "Funciones Máximas"
+
msgid "Compression"
msgstr "Compresión"
-msgid "Crash Handler"
-msgstr "Manipulador de Colisiones"
+msgid "Formats"
+msgstr "Formatos"
+
+msgid "Zstd"
+msgstr "Zstd"
+
+msgid "Compression Level"
+msgstr "Nivel de Compresión"
+
+msgid "Zlib"
+msgstr "Zlib"
+
+msgid "Gzip"
+msgstr "Gzip"
msgid "Message"
msgstr "Mensaje"
@@ -213,12 +273,39 @@ msgstr "Renderización"
msgid "Occlusion Culling"
msgstr "Occlusion Culling"
+msgid "Memory"
+msgstr "Memoria"
+
msgid "Limits"
msgstr "Límites"
+msgid "Multithreaded Server"
+msgstr "Servidor Multihilo"
+
+msgid "Internationalization"
+msgstr "Internacionalización"
+
msgid "GUI"
msgstr "GUI"
+msgid "Timers"
+msgstr "Temporizadores"
+
+msgid "Incremental Search Max Interval Msec"
+msgstr "Intervalo Máximo de Busqueda Incremental ms"
+
+msgid "Rendering Device"
+msgstr "Dispositivo de Renderizado"
+
+msgid "Block Size (KB)"
+msgstr "Tamaño del Bloque (KB)"
+
+msgid "Max Size (MB)"
+msgstr "Tamaño Máximo (MB)"
+
+msgid "Vulkan"
+msgstr "Vulkan"
+
msgid "Low Processor Usage Mode"
msgstr "Modo de Bajo Uso del Procesador"
@@ -228,6 +315,9 @@ msgstr "Modo de Bajo Uso del Procesador en Reposo (µseg)"
msgid "Print Error Messages"
msgstr "Imprimir Mensajes de Error"
+msgid "Max FPS"
+msgstr "FPS Máximos"
+
msgid "Time Scale"
msgstr "Escala de Tiempo"
@@ -333,9 +423,6 @@ msgstr "Tamaño de Página"
msgid "Blocking Mode Enabled"
msgstr "Modo de Bloqueo Activado"
-msgid "Connection"
-msgstr "Conexión"
-
msgid "Read Chunk Size"
msgstr "Leer Tamaño del Fragmento"
@@ -354,9 +441,6 @@ msgstr "Tamaño Máximo del Buffer de Entrada"
msgid "Output Buffer Max Size"
msgstr "Tamaño Máximo del Buffer de Salida"
-msgid "Stream Peer"
-msgstr "Stream de Pares"
-
msgid "Resource"
msgstr "Recursos"
@@ -381,8 +465,8 @@ msgstr "Semilla"
msgid "State"
msgstr "Estado"
-msgid "Source Code"
-msgstr "Código Fuente"
+msgid "Use System Threads for Low Priority Tasks"
+msgstr "Usar Hilos del Sistema Para Tareas de Baja Prioridad"
msgid "Locale"
msgstr "Idioma"
@@ -393,6 +477,9 @@ msgstr "Test"
msgid "Fallback"
msgstr "Respaldo"
+msgid "Fake BiDi"
+msgstr "Falso BiDi"
+
msgid "Override"
msgstr "Anular"
@@ -465,15 +552,6 @@ msgstr "Acceso"
msgid "Display Mode"
msgstr "Modo de Visualización"
-msgid "Current Dir"
-msgstr "Dirección Actual"
-
-msgid "Current File"
-msgstr "Archivo Actual"
-
-msgid "Current Path"
-msgstr "Ruta Actual"
-
msgid "Show Hidden Files"
msgstr "Mostrar Archivos Ocultos"
@@ -555,18 +633,12 @@ msgstr "Modo Sin Distracciones"
msgid "Base Type"
msgstr "Tipo Base"
-msgid "Edited Resource"
-msgstr "Recurso Editado"
-
msgid "Editable"
msgstr "Editable"
msgid "Toggle Mode"
msgstr "Cambiar Modo"
-msgid "Script Owner"
-msgstr "Propietario del Script"
-
msgid "Editor Language"
msgstr "Idioma del Editor"
@@ -609,6 +681,9 @@ msgstr "Abrir Capturas De Pantalla Automáticamente"
msgid "Mouse Extra Buttons Navigate History"
msgstr "Botones Extra del Mouse para Navegar por el Historial"
+msgid "Show Low Level OpenType Features"
+msgstr "Mostrar Características de Bajo Nivel de OpenType"
+
msgid "Theme"
msgstr "Theme"
@@ -753,6 +828,9 @@ msgstr "Dibujar Espacios"
msgid "Line Spacing"
msgstr "Espaciado de Línea"
+msgid "Behavior"
+msgstr "Comportamiento"
+
msgid "Navigation"
msgstr "Navegación"
@@ -1269,12 +1347,12 @@ msgstr "Crear Desde"
msgid "Delimiter"
msgstr "Delimitador"
-msgid "Preload"
-msgstr "Precarga"
-
msgid "Columns"
msgstr "Columnas"
+msgid "Rows"
+msgstr "Filas"
+
msgid "Lossy Quality"
msgstr "Con Pérdidas de Calidad"
@@ -1329,6 +1407,9 @@ msgstr "Radio"
msgid "Occluder"
msgstr "Oclusor"
+msgid "Simplification Distance"
+msgstr "Distancia de Simplificación"
+
msgid "Enabled"
msgstr "Activado"
@@ -1404,6 +1485,9 @@ msgstr "Detectar 3D"
msgid "SVG"
msgstr "SVG"
+msgid "Convert Colors With Editor Theme"
+msgstr "Convertir Colores con el Tema del Editor"
+
msgid "Atlas File"
msgstr "Archivo de Atlas"
@@ -1524,6 +1608,15 @@ msgstr "Advertencias"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Textura"
+
+msgid "Separation"
+msgstr "Separación"
+
+msgid "Speed"
+msgstr "Velocidad"
+
msgid "Version Control"
msgstr "Control de Versiones"
@@ -1542,6 +1635,12 @@ msgstr "Mostrar Selección de la Raíz del Ãrbol de Escenas"
msgid "Use Favorites Root Selection"
msgstr "Usar Selección de Raíces Favoritas"
+msgid "Max Chars per Second"
+msgstr "Caracteres Máximos por Segundo"
+
+msgid "Max Warnings per Second"
+msgstr "Advertencias Máximas por Segundo"
+
msgid "File Logging"
msgstr "Registro De Archivos"
@@ -1554,6 +1653,12 @@ msgstr "Ruta del Registro"
msgid "Driver"
msgstr "Controlador"
+msgid "Renderer"
+msgstr "Renderizador"
+
+msgid "Include Text Server Data"
+msgstr "Incluir Datos del Servidor de Texto"
+
msgid "DPI"
msgstr "DPI"
@@ -1590,6 +1695,9 @@ msgstr "stdout"
msgid "Print FPS"
msgstr "Imprimir FPS"
+msgid "Print GPU Profile"
+msgstr "Imprimir el Perfil de la GPU"
+
msgid "Verbose stdout"
msgstr "Stdout Extendido"
@@ -1602,11 +1710,11 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Ocultar Indicador de Inicio"
-msgid "Input Devices"
-msgstr "Dispositivos de Entrada"
+msgid "Hide Status Bar"
+msgstr "Ocultar Barra de Estado"
-msgid "Pointing"
-msgstr "Puntero"
+msgid "View Configuration"
+msgstr "Configuración de la Vista"
msgid "Boot Splash"
msgstr "Pantalla de Splash"
@@ -1614,6 +1722,9 @@ msgstr "Pantalla de Splash"
msgid "BG Color"
msgstr "Color de Fondo"
+msgid "Input Devices"
+msgstr "Dispositivos de Entrada"
+
msgid "Environment"
msgstr "Entorno"
@@ -1635,12 +1746,21 @@ msgstr "Usar Filtro"
msgid "Icon"
msgstr "Icono"
+msgid "macOS Native Icon"
+msgstr "Ãcono Nativo de macOS"
+
+msgid "Windows Native Icon"
+msgstr "Ãcono Nativo de Windows"
+
msgid "Buffering"
msgstr "Buffering"
msgid "Agile Event Flushing"
msgstr "Evento Ãgil de Vaciado"
+msgid "Pointing"
+msgstr "Puntero"
+
msgid "Emulate Touch From Mouse"
msgstr "Emular Toque Desde El Mouse"
@@ -1893,6 +2013,12 @@ msgstr "Esqueletos"
msgid "Animations"
msgstr "Animaciones"
+msgid "Handle Binary Image"
+msgstr "Manejar Imagen Binaria"
+
+msgid "Blender 3 Path"
+msgstr "Ruta de Blender 3"
+
msgid "FBX"
msgstr "FBX"
@@ -1992,9 +2118,6 @@ msgstr "Raíz de la Skin"
msgid "Joints Original"
msgstr "Articulaciones Originales"
-msgid "Inverse Binds"
-msgstr "Enlaces Inversos"
-
msgid "Non Joints"
msgstr "Sin Articulaciones"
@@ -2703,6 +2826,9 @@ msgstr "Puerto HTTP"
msgid "Variant"
msgstr "Variante"
+msgid "Extensions Support"
+msgstr "Soporte de Extensiones"
+
msgid "VRAM Texture Compression"
msgstr "Compresión de Texturas en la VRAM"
@@ -2859,8 +2985,8 @@ msgstr "Modo de Copia"
msgid "Anchor Mode"
msgstr "Modo de Anclaje"
-msgid "Custom Viewport"
-msgstr "Viewport Personalizado"
+msgid "Ignore Rotation"
+msgstr "Ignorar Rotación"
msgid "Left"
msgstr "Izquierda"
@@ -2877,9 +3003,6 @@ msgstr "Inferior"
msgid "Smoothed"
msgstr "Suavizado"
-msgid "Speed"
-msgstr "Velocidad"
-
msgid "Horizontal Enabled"
msgstr "Horizontal Activado"
@@ -2961,9 +3084,6 @@ msgstr "Coordenadas Locales"
msgid "Draw Order"
msgstr "Orden de dibujo"
-msgid "Texture"
-msgstr "Textura"
-
msgid "Emission Shape"
msgstr "Forma de la Emisión"
@@ -3204,24 +3324,9 @@ msgstr "Costo del Viaje"
msgid "Estimate Radius"
msgstr "Estimación del Radio"
-msgid "Rotation Degrees"
-msgstr "Grados de Rotación"
-
msgid "Skew"
msgstr "Sesgo"
-msgid "Global Rotation"
-msgstr "Rotación Global"
-
-msgid "Global Rotation Degrees"
-msgstr "Grados de Rotación Global"
-
-msgid "Global Scale"
-msgstr "Escala Global"
-
-msgid "Global Transform"
-msgstr "Transformación Global"
-
msgid "Scroll"
msgstr "Scroll"
@@ -3309,6 +3414,9 @@ msgstr "Angular"
msgid "Torque"
msgstr "Torsión"
+msgid "Floor"
+msgstr "Suelo"
+
msgid "Max Angle"
msgstr "Ãngulo Máximo"
@@ -3444,6 +3552,9 @@ msgstr "Mantener aspecto"
msgid "Cull Mask"
msgstr "Cull Mask"
+msgid "Attributes"
+msgstr "Atributos"
+
msgid "Doppler Tracking"
msgstr "Seguimiento de Doppler"
@@ -3651,6 +3762,9 @@ msgstr "Alineación Vertical"
msgid "Uppercase"
msgstr "Mayúsculas"
+msgid "Temperature"
+msgstr "Temperatura"
+
msgid "Indirect Energy"
msgstr "Energía Indirecta"
@@ -4017,6 +4131,9 @@ msgstr "Pose"
msgid "World Scale"
msgstr "Escala del Mundo"
+msgid "Play Mode"
+msgstr "Modo de Reproducción"
+
msgid "Sync"
msgstr "Sincronizar"
@@ -4074,15 +4191,6 @@ msgstr "Nodo Raíz"
msgid "Current Animation"
msgstr "Animación Actual"
-msgid "Assigned Animation"
-msgstr "Animación Asignada"
-
-msgid "Current Animation Length"
-msgstr "Duración Actual de la Animación"
-
-msgid "Current Animation Position"
-msgstr "Posición Actual de la Animación"
-
msgid "Playback Options"
msgstr "Opciones de Reproducción"
@@ -4194,6 +4302,9 @@ msgstr "Envoltura Automática"
msgid "Mode Overrides Title"
msgstr "Sobreescritura"
+msgid "Root Subfolder"
+msgstr "Subcarpeta raíz"
+
msgid "Filters"
msgstr "Filtros"
@@ -4497,9 +4608,6 @@ msgstr "Indicadores del Modo de Caída"
msgid "Audio Track"
msgstr "Pista de Audio"
-msgid "Volume"
-msgstr "Volumen"
-
msgid "Paused"
msgstr "Pausado"
@@ -4509,9 +4617,6 @@ msgstr "Expandir"
msgid "Buffering Msec"
msgstr "Buffering Msec"
-msgid "Stream Position"
-msgstr "Posición del Stream"
-
msgid "Self Modulate"
msgstr "Modulación Automática"
@@ -4560,12 +4665,6 @@ msgstr "Modo de Transferencia"
msgid "Transfer Channel"
msgstr "Canal de Transferencia"
-msgid "Owner"
-msgstr "Propietario"
-
-msgid "Multiplayer"
-msgstr "Multijugador"
-
msgid "Editor Description"
msgstr "Descripción del Editor"
@@ -4578,15 +4677,6 @@ msgstr "Sugerencia de Depuración de Colisiones"
msgid "Debug Navigation Hint"
msgstr "Sugerencia de Depuración de Navegación"
-msgid "Edited Scene Root"
-msgstr "Escena Raíz Editada"
-
-msgid "Current Scene"
-msgstr "Escena Actual"
-
-msgid "Root"
-msgstr "Raíz"
-
msgid "Multiplayer Poll"
msgstr "Encuesta Multijugador"
@@ -4611,6 +4701,9 @@ msgstr "Antialias"
msgid "Use Debanding"
msgstr "Usar Debanding"
+msgid "Lights and Shadows"
+msgstr "Luces y Sombras"
+
msgid "Atlas Size"
msgstr "Tamaño de Atlas"
@@ -4629,9 +4722,6 @@ msgstr "Ruta del Viewport"
msgid "Disable 3D"
msgstr "Desactivar 3D"
-msgid "World 2D"
-msgstr "Mundo 2D"
-
msgid "Transparent BG"
msgstr "Fondo Transparente"
@@ -4641,6 +4731,9 @@ msgstr "Manejar Entradas Localmente"
msgid "Debug Draw"
msgstr "Depurar Dibujo"
+msgid "Scaling 3D"
+msgstr "Escalado 3D"
+
msgid "Audio Listener"
msgstr "Oyente de Audio"
@@ -4668,12 +4761,6 @@ msgstr "Cuadrángulo 2"
msgid "Quad 3"
msgstr "Cuadrángulo 3"
-msgid "Canvas Transform"
-msgstr "Transformación del Canvas"
-
-msgid "Global Canvas Transform"
-msgstr "Transformación Global del Canvas"
-
msgid "Render Target"
msgstr "Objetivo de Renderizado"
@@ -4953,9 +5040,6 @@ msgstr "Cerrar Color"
msgid "Resizer Color"
msgstr "Cambiar Color"
-msgid "Separation"
-msgstr "Separación"
-
msgid "Title Offset"
msgstr "Offset del Título"
@@ -5148,6 +5232,9 @@ msgstr "Actividad"
msgid "Node"
msgstr "Nodos"
+msgid "Energy Multiplier"
+msgstr "Multiplicador de Energía"
+
msgid "Canvas Max Layer"
msgstr "Max de Capas del Lienzo"
@@ -5556,6 +5643,9 @@ msgstr "Sol"
msgid "Panorama"
msgstr "Panorama"
+msgid "Ground Color"
+msgstr "Color del Suelo"
+
msgid "Blend"
msgstr "Mezcla"
@@ -5607,9 +5697,6 @@ msgstr "A"
msgid "Frames"
msgstr "Fotogramas"
-msgid "Current Frame"
-msgstr "Cuadro Actual"
-
msgid "Pause"
msgstr "Pausa"
@@ -5631,6 +5718,9 @@ msgstr "Modos"
msgid "Input Name"
msgstr "Nombre de Entrada"
+msgid "Parameter Name"
+msgstr "Nombre del Parámetro"
+
msgid "Constant"
msgstr "Constante"
@@ -5655,21 +5745,9 @@ msgstr "Valor Predeterminado"
msgid "Color Default"
msgstr "Color Predeterminado"
-msgid "Canvas"
-msgstr "Lienzo"
-
-msgid "Navigation Map"
-msgstr "Mapa de Navegación"
-
-msgid "Direct Space State"
-msgstr "Estado de Espacio Directo"
-
msgid "Fallback Environment"
msgstr "Entorno de Retorno"
-msgid "Scenario"
-msgstr "Escenario"
-
msgid "Plane"
msgstr "Plano"
@@ -5704,7 +5782,7 @@ msgid "Level dB"
msgstr "Nivel en dB"
msgid "Pan"
-msgstr "Pan"
+msgstr "Paneo"
msgid "Attack (µs)"
msgstr "Ataque (µs)"
@@ -5889,6 +5967,9 @@ msgstr "Reflexiones"
msgid "Texture Array Reflections"
msgstr "Reflejos del Array de Texturas"
+msgid "GI"
+msgstr "GI"
+
msgid "Overrides"
msgstr "Anulaciones"
diff --git a/editor/translations/properties/fr.po b/editor/translations/properties/fr.po
index 74b674aa1c..c59407213d 100644
--- a/editor/translations/properties/fr.po
+++ b/editor/translations/properties/fr.po
@@ -114,8 +114,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 14:12+0000\n"
-"Last-Translator: Helix Sir <vincentbarkmann@gmail.com>\n"
+"PO-Revision-Date: 2023-02-11 13:25+0000\n"
+"Last-Translator: Thalya Gauvrit <skar0ps.dev@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/fr/>\n"
"Language: fr\n"
@@ -428,9 +428,6 @@ msgstr "Taille de page"
msgid "Blocking Mode Enabled"
msgstr "Mode de blocage activé"
-msgid "Connection"
-msgstr "Connexion"
-
msgid "Read Chunk Size"
msgstr "Lire la taille des fragment(s)"
@@ -440,12 +437,6 @@ msgstr "Données"
msgid "Object ID"
msgstr "Identifiant de l'Objet"
-msgid "Original Class"
-msgstr "Classe originale"
-
-msgid "Recording Properties"
-msgstr "Propriétés d'enregistrement"
-
msgid "Encode Buffer Max Size"
msgstr "Taille maximale du tampon d'encodage"
@@ -455,9 +446,6 @@ msgstr "Taille maximale du tampon d'entrée"
msgid "Output Buffer Max Size"
msgstr "Taille maximale du tampon de sortie"
-msgid "Stream Peer"
-msgstr "Pair de flux"
-
msgid "Resource"
msgstr "Ressource"
@@ -497,9 +485,6 @@ msgstr "Graine"
msgid "State"
msgstr "État"
-msgid "Source Code"
-msgstr "Code Source"
-
msgid "TLS"
msgstr "TLS"
@@ -632,15 +617,6 @@ msgstr "Mode d'affichage"
msgid "File Mode"
msgstr "Mode fichier"
-msgid "Current Dir"
-msgstr "Répertoire Actuel"
-
-msgid "Current File"
-msgstr "Fichier Actuel"
-
-msgid "Current Path"
-msgstr "Chemin Actuel"
-
msgid "Show Hidden Files"
msgstr "Afficher les fichiers cachés"
@@ -746,18 +722,12 @@ msgstr "Mode Sans Distraction"
msgid "Base Type"
msgstr "Type de base"
-msgid "Edited Resource"
-msgstr "Ressource modifiée"
-
msgid "Editable"
msgstr "Modifiable"
msgid "Toggle Mode"
msgstr "Basculer le mode"
-msgid "Script Owner"
-msgstr "Propriétaire du Script"
-
msgid "Editor Language"
msgstr "Langue de l'éditeur"
@@ -1551,7 +1521,7 @@ msgid "Password"
msgstr "Mot de passe"
msgid "Hinting"
-msgstr "Optimisation de rendu (hinting)"
+msgstr "Suggestion"
msgid "Oversampling"
msgstr "Sur-échantillonnage"
@@ -1592,9 +1562,6 @@ msgstr "Créer à Partir de"
msgid "Delimiter"
msgstr "Délimiteur"
-msgid "Preload"
-msgstr "Précharger"
-
msgid "Columns"
msgstr "Colonnes"
@@ -1776,7 +1743,7 @@ msgid "Available URLs"
msgstr "URLs disponibles"
msgid "Unset"
-msgstr "Vider"
+msgstr "Non défini"
msgid "Error"
msgstr "Erreur"
@@ -1847,6 +1814,15 @@ msgstr "Avertissements"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Texture"
+
+msgid "Separation"
+msgstr "Séparation"
+
+msgid "Speed"
+msgstr "Vitesse"
+
msgid "Version Control"
msgstr "Contrôle de version"
@@ -1925,18 +1901,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Masquer l'indicateur d’accueil"
-msgid "Input Devices"
-msgstr "Périphériques d'entrée"
-
-msgid "Pointing"
-msgstr "Pointage"
-
msgid "Boot Splash"
msgstr "Écran de démarrage"
msgid "BG Color"
msgstr "Couleur d'arrière-plan"
+msgid "Input Devices"
+msgstr "Périphériques d'entrée"
+
msgid "Environment"
msgstr "Environnement"
@@ -1964,6 +1937,9 @@ msgstr "Mise en mémoire tampon"
msgid "Agile Event Flushing"
msgstr "Purge d'événement agile"
+msgid "Pointing"
+msgstr "Pointage"
+
msgid "Emulate Touch From Mouse"
msgstr "Émuler le toucher tactile avec la souris"
@@ -2315,9 +2291,6 @@ msgstr "Racine de l'enveloppe"
msgid "Joints Original"
msgstr "Jointure à l'original"
-msgid "Inverse Binds"
-msgstr "Inverser les liens"
-
msgid "Non Joints"
msgstr "Non jointures"
@@ -2394,7 +2367,7 @@ msgid "Eye Height"
msgstr "Hauteur de l’œil"
msgid "IOD"
-msgstr "Distance interoculaire"
+msgstr "DP"
msgid "Display Width"
msgstr "Afficher la largeur"
@@ -3182,9 +3155,6 @@ msgstr "Mode copie"
msgid "Anchor Mode"
msgstr "Mode ancre"
-msgid "Custom Viewport"
-msgstr "Vue personnalisée"
-
msgid "Left"
msgstr "Gauche"
@@ -3200,9 +3170,6 @@ msgstr "Bas"
msgid "Smoothed"
msgstr "Adouci"
-msgid "Speed"
-msgstr "Vitesse"
-
msgid "Horizontal Enabled"
msgstr "Horizontal Activé"
@@ -3284,9 +3251,6 @@ msgstr "Coordonnées locales"
msgid "Draw Order"
msgstr "Ordre de rendu"
-msgid "Texture"
-msgstr "Texture"
-
msgid "Emission Shape"
msgstr "Forme d'émission"
@@ -3527,24 +3491,9 @@ msgstr "Coût de déplacement"
msgid "Estimate Radius"
msgstr "Estimer le rayon"
-msgid "Rotation Degrees"
-msgstr "Degrés de Rotation"
-
msgid "Skew"
msgstr "Biseau"
-msgid "Global Rotation"
-msgstr "Rotation Globale"
-
-msgid "Global Rotation Degrees"
-msgstr "Degrés de Rotation Globale"
-
-msgid "Global Scale"
-msgstr "Échelle Globale"
-
-msgid "Global Transform"
-msgstr "Transformation Globale"
-
msgid "Scroll"
msgstr "Défilement"
@@ -4397,15 +4346,6 @@ msgstr "NÅ“ud Racine"
msgid "Current Animation"
msgstr "Animation actuelle"
-msgid "Assigned Animation"
-msgstr "Animation assignée"
-
-msgid "Current Animation Length"
-msgstr "Durée de l’animation actuelle"
-
-msgid "Current Animation Position"
-msgstr "Position dans l'animation actuelle"
-
msgid "Playback Options"
msgstr "Options de Lecture"
@@ -4820,9 +4760,6 @@ msgstr "Options du Mode Abandon"
msgid "Audio Track"
msgstr "Piste Audio"
-msgid "Volume"
-msgstr "Volume"
-
msgid "Paused"
msgstr "En Pause"
@@ -4832,9 +4769,6 @@ msgstr "Développer"
msgid "Buffering Msec"
msgstr "Mise en mémoire tampon ms"
-msgid "Stream Position"
-msgstr "Position Flux"
-
msgid "Self Modulate"
msgstr "Auto-modulation"
@@ -4883,12 +4817,6 @@ msgstr "Mode de Transfert"
msgid "Transfer Channel"
msgstr "Canal de transfert"
-msgid "Owner"
-msgstr "Propriétaire"
-
-msgid "Multiplayer"
-msgstr "Multijoueur"
-
msgid "Editor Description"
msgstr "Description de l'Editeur"
@@ -4901,15 +4829,6 @@ msgstr "Déboguer les indices de collision"
msgid "Debug Navigation Hint"
msgstr "Déboguer les indices de navigation"
-msgid "Edited Scene Root"
-msgstr "Racine de scène modifiée"
-
-msgid "Current Scene"
-msgstr "Scène actuelle"
-
-msgid "Root"
-msgstr "Racine"
-
msgid "Multiplayer Poll"
msgstr "Poll d'attente active (polling) multijoueur"
@@ -4952,9 +4871,6 @@ msgstr "Chemin de la fenêtre d'affichage"
msgid "Disable 3D"
msgstr "Désactiver 3D"
-msgid "World 2D"
-msgstr "Monde 2D"
-
msgid "Transparent BG"
msgstr "Arrière-plan transparent"
@@ -4991,12 +4907,6 @@ msgstr "Quad 2"
msgid "Quad 3"
msgstr "Quad 3"
-msgid "Canvas Transform"
-msgstr "Transformation du canevas"
-
-msgid "Global Canvas Transform"
-msgstr "Transformation du canevas global"
-
msgid "Render Target"
msgstr "Rendre la cible"
@@ -5276,9 +5186,6 @@ msgstr "Couleur du bouton Fermer"
msgid "Resizer Color"
msgstr "Couleur du redimensionneur"
-msgid "Separation"
-msgstr "Séparation"
-
msgid "Title Offset"
msgstr "Décalage du titre"
@@ -5939,9 +5846,6 @@ msgstr "À"
msgid "Frames"
msgstr "Trames"
-msgid "Current Frame"
-msgstr "Trame actuelle"
-
msgid "Pause"
msgstr "Pause"
@@ -5987,21 +5891,9 @@ msgstr "Valeur par défaut"
msgid "Color Default"
msgstr "Couleur par défaut"
-msgid "Canvas"
-msgstr "Canevas"
-
-msgid "Navigation Map"
-msgstr "Carte de navigation"
-
-msgid "Direct Space State"
-msgstr "Etat de l'espace direct"
-
msgid "Fallback Environment"
msgstr "Environnement de repli"
-msgid "Scenario"
-msgstr "Scénario"
-
msgid "Plane"
msgstr "Plan"
@@ -6048,10 +5940,10 @@ msgid "Sidechain"
msgstr "Sidechain"
msgid "Tap 1"
-msgstr "Tap 1"
+msgstr "Appuyez sur 1"
msgid "Tap 2"
-msgstr "Tap 2"
+msgstr "Appuyez sur 2"
msgid "Feedback"
msgstr "Larsen"
@@ -6081,10 +5973,10 @@ msgid "Threshold dB"
msgstr "Seuil de dB"
msgid "Soft Clip dB"
-msgstr "dB de Coupure Douce"
+msgstr "Écrêtage Doux dB"
msgid "Soft Clip Ratio"
-msgstr "Ratio de Coupure Douce"
+msgstr "Ratio Écrêtage Doux"
msgid "Range Min Hz"
msgstr "Borne inférieure de la plage (Hz)"
diff --git a/editor/translations/properties/it.po b/editor/translations/properties/it.po
index b68a503386..87b7a5fe77 100644
--- a/editor/translations/properties/it.po
+++ b/editor/translations/properties/it.po
@@ -82,8 +82,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 00:55+0000\n"
-"Last-Translator: gianmarco malandra <giamminho12@gmail.com>\n"
+"PO-Revision-Date: 2023-02-16 02:38+0000\n"
+"Last-Translator: Riteo Siuga <riteo@posteo.net>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/it/>\n"
"Language: it\n"
@@ -102,6 +102,9 @@ msgstr "Configurazione"
msgid "Name"
msgstr "Nome"
+msgid "Name Localized"
+msgstr "Nome Tradotto"
+
msgid "Description"
msgstr "Descrizione"
@@ -138,17 +141,38 @@ msgstr "Finestra"
msgid "Size"
msgstr "Dimensione"
+msgid "Viewport Width"
+msgstr "Larghezza del Viewport"
+
+msgid "Viewport Height"
+msgstr "Altezza del Viewport"
+
msgid "Mode"
msgstr "Modalità"
+msgid "Initial Position"
+msgstr "Posizione Iniziale"
+
+msgid "Initial Screen"
+msgstr "Schermata Iniziale"
+
msgid "Resizable"
msgstr "Ridimensionabile"
msgid "Borderless"
msgstr "Senza contorno"
+msgid "Transparent"
+msgstr "Trasparente"
+
+msgid "Window Width Override"
+msgstr "Sovrascrivi la Larghezza della Finestra"
+
+msgid "Window Height Override"
+msgstr "Sovrascrivi l'Altezza della Finestra"
+
msgid "Energy Saving"
-msgstr "Risparmio Energia"
+msgstr "Risparmio Energetico"
msgid "Keep Screen On"
msgstr "Mantieni lo Schermo Acceso"
@@ -162,12 +186,18 @@ msgstr "Editor"
msgid "Main Run Args"
msgstr "Parametri Principali Eseguiti"
+msgid "Script"
+msgstr "Script"
+
msgid "Physics"
msgstr "Fisica"
msgid "2D"
msgstr "2D"
+msgid "Run on Separate Thread"
+msgstr "Esegui su un Thread Separato"
+
msgid "3D"
msgstr "3D"
@@ -177,9 +207,24 @@ msgstr "Debug"
msgid "Settings"
msgstr "Impostazioni"
+msgid "Profiler"
+msgstr "Profilatore"
+
msgid "Compression"
msgstr "Compressione"
+msgid "Formats"
+msgstr "Formati"
+
+msgid "Compression Level"
+msgstr "Livello di Compressione"
+
+msgid "Zlib"
+msgstr "Zlib"
+
+msgid "Gzip"
+msgstr "Gzip"
+
msgid "Crash Handler"
msgstr "Gestore di Crash"
@@ -189,12 +234,27 @@ msgstr "Messaggio"
msgid "Rendering"
msgstr "Renderer"
+msgid "Memory"
+msgstr "Memoria"
+
msgid "Limits"
msgstr "Limiti"
+msgid "Multithreaded Server"
+msgstr "Server Multithreading"
+
+msgid "Internationalization"
+msgstr "Lingue"
+
msgid "GUI"
msgstr "Interfaccia Grafica"
+msgid "Rendering Device"
+msgstr "Dispositivo per il Rendering"
+
+msgid "Vulkan"
+msgstr "Vulkan"
+
msgid "Low Processor Usage Mode"
msgstr "Modalità Processore a Basso Consumo"
@@ -243,6 +303,9 @@ msgstr "Coefficiente"
msgid "Button Index"
msgstr "Indice Pulsante Mouse"
+msgid "Double Click"
+msgstr "Doppio click"
+
msgid "Tilt"
msgstr "Tilt"
@@ -303,9 +366,6 @@ msgstr "Dimensione Pagina"
msgid "Blocking Mode Enabled"
msgstr "Modalità Blocco Attivata"
-msgid "Connection"
-msgstr "Connessione"
-
msgid "Read Chunk Size"
msgstr "Leggi Dimensione Chunk"
@@ -324,9 +384,6 @@ msgstr "Dimensione Massima Input Buffer"
msgid "Output Buffer Max Size"
msgstr "Dimensione Massima Output Buffer"
-msgid "Stream Peer"
-msgstr "Stream Peer"
-
msgid "Resource"
msgstr "Risorsa"
@@ -351,9 +408,6 @@ msgstr "Seme"
msgid "State"
msgstr "Stato"
-msgid "Source Code"
-msgstr "Codice Sorgente"
-
msgid "Locale"
msgstr "Locale"
@@ -426,15 +480,6 @@ msgstr "Accedi"
msgid "Display Mode"
msgstr "Modalità di visualizzazione"
-msgid "Current Dir"
-msgstr "Cartella Corrente"
-
-msgid "Current File"
-msgstr "File Corrente"
-
-msgid "Current Path"
-msgstr "Percorso Corrente"
-
msgid "Show Hidden Files"
msgstr "Mostra File Nascosti"
@@ -442,7 +487,7 @@ msgid "Disable Overwrite Warning"
msgstr "Disabilita Avviso di Sovrascrittura"
msgid "Import"
-msgstr "Importare"
+msgstr "Importa"
msgid "Reimport Missing Imported Files"
msgstr "Reimporta Files Importati Mancanti"
@@ -516,18 +561,12 @@ msgstr "Modalità senza distrazioni"
msgid "Base Type"
msgstr "Tipo di Base"
-msgid "Edited Resource"
-msgstr "Risorsa Modificata"
-
msgid "Editable"
msgstr "Elemento Modificabile"
msgid "Toggle Mode"
msgstr "Commuta la modalità"
-msgid "Script Owner"
-msgstr "Autore Script"
-
msgid "Editor Language"
msgstr "Lingua dell'Editor"
@@ -1173,6 +1212,9 @@ msgstr "Password"
msgid "Compress"
msgstr "Comprimi"
+msgid "Language"
+msgstr "Lingua"
+
msgid "Transform"
msgstr "Trasformazione"
@@ -1200,9 +1242,6 @@ msgstr "Crea da"
msgid "Delimiter"
msgstr "Delimitatore"
-msgid "Preload"
-msgstr "Pre-carica"
-
msgid "Lossy Quality"
msgstr "Qualità Lossy"
@@ -1369,7 +1408,7 @@ msgid "Available URLs"
msgstr "URLs Disponibili"
msgid "Unset"
-msgstr "Non Impostato"
+msgstr "Non impostato"
msgid "Error"
msgstr "Errore"
@@ -1434,6 +1473,15 @@ msgstr "Avvisi"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Texture"
+
+msgid "Separation"
+msgstr "Separazione"
+
+msgid "Speed"
+msgstr "Velocità"
+
msgid "Version Control"
msgstr "Controllo della versione"
@@ -1512,11 +1560,8 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Nascondi Indicatore Home"
-msgid "Input Devices"
-msgstr "Dispositivi Input"
-
-msgid "Pointing"
-msgstr "Puntamento"
+msgid "XR"
+msgstr "XR"
msgid "Boot Splash"
msgstr "Sfondo Di Avvio"
@@ -1524,6 +1569,9 @@ msgstr "Sfondo Di Avvio"
msgid "BG Color"
msgstr "Colore Sfondo"
+msgid "Input Devices"
+msgstr "Dispositivi Input"
+
msgid "Environment"
msgstr "Ambiente"
@@ -1551,6 +1599,9 @@ msgstr "Buffering"
msgid "Agile Event Flushing"
msgstr "Svuotamento degli eventi usando l'algoritmo Agile"
+msgid "Pointing"
+msgstr "Puntamento"
+
msgid "Emulate Touch From Mouse"
msgstr "Emula Tocco Da Mouse"
@@ -2457,6 +2508,9 @@ msgstr "Publisher"
msgid "Landscape"
msgstr "Panorama"
+msgid "Tiles"
+msgstr "Tasselli"
+
msgid "Web"
msgstr "Web"
@@ -2520,11 +2574,14 @@ msgstr "Fotogramma"
msgid "Point"
msgstr "Punto"
+msgid "Left"
+msgstr "Sinistra"
+
msgid "Top"
msgstr "In cima"
-msgid "Speed"
-msgstr "Velocità"
+msgid "Right"
+msgstr "Destra"
msgid "Horizontal Enabled"
msgstr "Orizzontale Abilitato"
@@ -2550,9 +2607,6 @@ msgstr "FPS fisso"
msgid "Drawing"
msgstr "Disegnare"
-msgid "Texture"
-msgstr "Texture"
-
msgid "Sphere Radius"
msgstr "Raggio della Sfera"
@@ -2562,18 +2616,15 @@ msgstr "Punti"
msgid "Colors"
msgstr "Colori"
+msgid "Default Color"
+msgstr "Colore predefinito"
+
msgid "Multimesh"
msgstr "Multimesh"
msgid "Navigation Layers"
msgstr "Livelli Navigazione"
-msgid "Rotation Degrees"
-msgstr "Rotazione in Gradi"
-
-msgid "Global Rotation Degrees"
-msgstr "Rotazione Globale in Gradi"
-
msgid "Scroll"
msgstr "Scorrere"
@@ -2661,6 +2712,9 @@ msgstr "Spostamento"
msgid "End"
msgstr "Fine"
+msgid "Pose"
+msgstr "Posa"
+
msgid "Sync"
msgstr "Sincronizza"
@@ -2682,9 +2736,15 @@ msgstr "Nodo Radice"
msgid "Button Group"
msgstr "Gruppo Pulsanti"
+msgid "Indentation"
+msgstr "Indentazione"
+
msgid "Localization"
msgstr "Localizzazione"
+msgid "Focus"
+msgstr "Seleziona"
+
msgid "Next"
msgstr "Successivo"
@@ -2805,9 +2865,6 @@ msgstr "Disegno"
msgid "Radial Fill"
msgstr "Riempimento Radiale"
-msgid "Volume"
-msgstr "Volume"
-
msgid "Expand"
msgstr "Espandi"
@@ -2826,9 +2883,6 @@ msgstr "Modalità Trasferimento"
msgid "Transfer Channel"
msgstr "Canale Di Trasferimento"
-msgid "Current Scene"
-msgstr "Scena Corrente"
-
msgid "Shapes"
msgstr "Forme"
@@ -2844,6 +2898,12 @@ msgstr "Schermo Attuale"
msgid "Min Size"
msgstr "Dimensione Min"
+msgid "2D Physics"
+msgstr "Fisica 2D"
+
+msgid "3D Physics"
+msgstr "Fisica 3D"
+
msgid "Format"
msgstr "Formato"
@@ -2865,9 +2925,6 @@ msgstr "Separatore"
msgid "Submenu"
msgstr "Sottomenù"
-msgid "Separation"
-msgstr "Separazione"
-
msgid "Cursor"
msgstr "Cursore"
@@ -2883,6 +2940,15 @@ msgstr "Luce Ambientale"
msgid "Source"
msgstr "Sorgente"
+msgid "SSAO"
+msgstr "SSAO"
+
+msgid "SSIL"
+msgstr "SSIL"
+
+msgid "Glow"
+msgstr "Bagliore"
+
msgid "2"
msgstr "2"
@@ -2937,6 +3003,9 @@ msgstr "Normal Texture"
msgid "B"
msgstr "B"
+msgid "Ground Color"
+msgstr "Colore del terreno"
+
msgid "Blend"
msgstr "Fondi"
@@ -2967,6 +3036,12 @@ msgstr "Costante"
msgid "Function"
msgstr "Funzioni"
+msgid "Use All Surfaces"
+msgstr "Usa tutte le superfici"
+
+msgid "Surface Index"
+msgstr "Indice di superficie"
+
msgid "Fallback Environment"
msgstr "Ambiente di ripiego"
@@ -2979,12 +3054,21 @@ msgstr "Vertice"
msgid "Fragment"
msgstr "Frammento"
+msgid "Shadow Atlas"
+msgstr "Atlas delle ombre"
+
msgid "Reflections"
msgstr "Riflessi"
+msgid "GI"
+msgstr "GI"
+
msgid "Overrides"
msgstr "Sovrascrizioni"
+msgid "OpenGL"
+msgstr "OpenGL"
+
msgid "Shaders"
msgstr "Shaders"
diff --git a/editor/translations/properties/ja.po b/editor/translations/properties/ja.po
index 60b30d9404..a185add1a0 100644
--- a/editor/translations/properties/ja.po
+++ b/editor/translations/properties/ja.po
@@ -52,8 +52,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 00:55+0000\n"
-"Last-Translator: Saitos <purifyzombie@gmail.com>\n"
+"PO-Revision-Date: 2023-02-18 07:45+0000\n"
+"Last-Translator: ueshita <nalto32@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/ja/>\n"
"Language: ja\n"
@@ -72,6 +72,9 @@ msgstr "構æˆ"
msgid "Name"
msgstr "åå‰"
+msgid "Name Localized"
+msgstr "ローカライズã•ã‚ŒãŸåå‰"
+
msgid "Description"
msgstr "説明"
@@ -108,9 +111,24 @@ msgstr "ウィンドウ"
msgid "Size"
msgstr "サイズ"
+msgid "Viewport Width"
+msgstr "ビューãƒãƒ¼ãƒˆã®å¹…"
+
+msgid "Viewport Height"
+msgstr "ビューãƒãƒ¼ãƒˆã®é«˜ã•"
+
msgid "Mode"
msgstr "モード"
+msgid "Initial Position Type"
+msgstr "åˆæœŸä½ç½®ã‚¿ã‚¤ãƒ—"
+
+msgid "Initial Position"
+msgstr "åˆæœŸä½ç½®"
+
+msgid "Initial Screen"
+msgstr "åˆæœŸã‚¹ã‚¯ãƒªãƒ¼ãƒ³"
+
msgid "Resizable"
msgstr "サイズを変更å¯èƒ½"
@@ -294,9 +312,6 @@ msgstr "ページサイズ"
msgid "Blocking Mode Enabled"
msgstr "ブロッキングモードを有効化"
-msgid "Connection"
-msgstr "接続"
-
msgid "Read Chunk Size"
msgstr "読ã¿å–ã‚Šãƒãƒ£ãƒ³ã‚¯ã‚µã‚¤ã‚º"
@@ -315,9 +330,6 @@ msgstr "入力ãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ã‚µã‚¤ã‚º"
msgid "Output Buffer Max Size"
msgstr "出力ãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ã‚µã‚¤ã‚º"
-msgid "Stream Peer"
-msgstr "ストリーム ピア"
-
msgid "Resource"
msgstr "リソース"
@@ -342,9 +354,6 @@ msgstr "シード値"
msgid "State"
msgstr "状態"
-msgid "Source Code"
-msgstr "ソースコード"
-
msgid "TLS"
msgstr "TLS"
@@ -429,15 +438,6 @@ msgstr "アクセス"
msgid "Display Mode"
msgstr "表示モード"
-msgid "Current Dir"
-msgstr "ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
-
-msgid "Current File"
-msgstr "ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«"
-
-msgid "Current Path"
-msgstr "ç¾åœ¨ã®ãƒ‘ス"
-
msgid "Show Hidden Files"
msgstr "éš ã—ファイルを表示"
@@ -519,18 +519,12 @@ msgstr "集中モード"
msgid "Base Type"
msgstr "基底型"
-msgid "Edited Resource"
-msgstr "編集ã—ãŸãƒªã‚½ãƒ¼ã‚¹"
-
msgid "Editable"
msgstr "編集å¯èƒ½"
msgid "Toggle Mode"
msgstr "モード切り替ãˆ"
-msgid "Script Owner"
-msgstr "スクリプトã®ã‚ªãƒ¼ãƒŠãƒ¼"
-
msgid "Editor Language"
msgstr "エディターã®è¨€èªž"
@@ -1503,6 +1497,15 @@ msgstr "警告"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "テクスãƒãƒ£"
+
+msgid "Separation"
+msgstr "分離"
+
+msgid "Speed"
+msgstr "速ã•"
+
msgid "Version Control"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
@@ -1581,12 +1584,6 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "ホームインジケーターを隠ã™"
-msgid "Input Devices"
-msgstr "入力デãƒã‚¤ã‚¹"
-
-msgid "Pointing"
-msgstr "ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°"
-
msgid "XR"
msgstr "XR"
@@ -1596,6 +1593,9 @@ msgstr "ブートスプラッシュ"
msgid "BG Color"
msgstr "背景色"
+msgid "Input Devices"
+msgstr "入力デãƒã‚¤ã‚¹"
+
msgid "Environment"
msgstr "環境"
@@ -1623,6 +1623,9 @@ msgstr "ãƒãƒƒãƒ•ã‚¡ãƒªãƒ³ã‚°"
msgid "Agile Event Flushing"
msgstr "å³åº§ã«ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ãƒƒã‚·ãƒ¥"
+msgid "Pointing"
+msgstr "ãƒã‚¤ãƒ³ãƒ†ã‚£ãƒ³ã‚°"
+
msgid "Emulate Touch From Mouse"
msgstr "マウスã§ã‚¿ãƒƒãƒæ“作をエミュレート"
@@ -2304,9 +2307,6 @@ msgstr "コピーモード"
msgid "Anchor Mode"
msgstr "アンカーモード"
-msgid "Custom Viewport"
-msgstr "カスタムビューãƒãƒ¼ãƒˆ"
-
msgid "Left"
msgstr "å·¦"
@@ -2322,9 +2322,6 @@ msgstr "下"
msgid "Smoothed"
msgstr "スムージング"
-msgid "Speed"
-msgstr "速ã•"
-
msgid "Draw Screen"
msgstr "スクリーンをæç”»ã™ã‚‹"
@@ -2364,9 +2361,6 @@ msgstr "ランダム性"
msgid "Lifetime Randomness"
msgstr "生存時間ã®ãƒ©ãƒ³ãƒ€ãƒ æ€§"
-msgid "Texture"
-msgstr "テクスãƒãƒ£"
-
msgid "Points"
msgstr "点"
@@ -2436,12 +2430,6 @@ msgstr "ボーダー"
msgid "Round Precision"
msgstr "丸ã‚精度"
-msgid "Rotation Degrees"
-msgstr "回転角度"
-
-msgid "Global Rotation Degrees"
-msgstr "グローãƒãƒ«å›žè»¢è§’度"
-
msgid "Ignore Camera Zoom"
msgstr "カメラã®ã‚ºãƒ¼ãƒ ã‚’無視"
@@ -2611,7 +2599,7 @@ msgid "Use AABB Center"
msgstr "AABBセンターを使用"
msgid "End"
-msgstr "終り"
+msgstr "End"
msgid "Sync"
msgstr "åŒæœŸ"
@@ -2691,9 +2679,6 @@ msgstr "ドラッグã—ã¦å†é…ç½®å¯èƒ½"
msgid "Syntax Highlighter"
msgstr "シンタックスãƒã‚¤ãƒ©ã‚¤ãƒˆ"
-msgid "Volume"
-msgstr "ボリューム"
-
msgid "Z Index"
msgstr "Zインデックス"
@@ -2715,9 +2700,6 @@ msgstr "転é€ãƒ¢ãƒ¼ãƒ‰"
msgid "Transfer Channel"
msgstr "転é€ãƒãƒ£ãƒ³ãƒãƒ«"
-msgid "Current Scene"
-msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³"
-
msgid "Screen Space AA"
msgstr "スクリーンスペースAA"
@@ -2781,9 +2763,6 @@ msgstr "サブメニュー"
msgid "Font Separator"
msgstr "フォントセパレータ"
-msgid "Separation"
-msgstr "分離"
-
msgid "Cursor"
msgstr "カーソル"
@@ -2850,9 +2829,6 @@ msgstr "プレビュー"
msgid "Transform Format"
msgstr "変æ›å½¢å¼"
-msgid "Transform Array"
-msgstr "Transformã®é…列"
-
msgid "Parsed Geometry Type"
msgstr "解æžã•ã‚ŒãŸã‚¸ã‚ªãƒ¡ãƒˆãƒªåž‹"
diff --git a/editor/translations/properties/ko.po b/editor/translations/properties/ko.po
index 9118036e30..a309aeaaf4 100644
--- a/editor/translations/properties/ko.po
+++ b/editor/translations/properties/ko.po
@@ -268,9 +268,6 @@ msgstr "페ì´ì§€ í¬ê¸°"
msgid "Blocking Mode Enabled"
msgstr "Blocking 모드 활성화"
-msgid "Connection"
-msgstr "ì—°ê²°"
-
msgid "Read Chunk Size"
msgstr "ì²­í¬ í¬ê¸° ì½ê¸°"
@@ -289,9 +286,6 @@ msgstr "ìž…ë ¥ ë²„í¼ ìµœëŒ€ í¬ê¸°"
msgid "Output Buffer Max Size"
msgstr "출력 ë²„í¼ ìµœëŒ€ í¬ê¸°"
-msgid "Stream Peer"
-msgstr "스트림 피어"
-
msgid "Resource"
msgstr "리소스"
@@ -313,9 +307,6 @@ msgstr "시드"
msgid "State"
msgstr "ìƒíƒœ"
-msgid "Source Code"
-msgstr "소스 코드"
-
msgid "Locale"
msgstr "위치"
@@ -391,15 +382,6 @@ msgstr "액세스"
msgid "Display Mode"
msgstr "표시 모드"
-msgid "Current Dir"
-msgstr "현재 디렉토리"
-
-msgid "Current File"
-msgstr "현재 파ì¼"
-
-msgid "Current Path"
-msgstr "현재 경로"
-
msgid "Show Hidden Files"
msgstr "숨김 íŒŒì¼ í‘œì‹œ"
@@ -481,18 +463,12 @@ msgstr "집중 모드"
msgid "Base Type"
msgstr "기본 타입"
-msgid "Edited Resource"
-msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤"
-
msgid "Editable"
msgstr "편집 가능"
msgid "Toggle Mode"
msgstr "모드 토글"
-msgid "Script Owner"
-msgstr "스í¬ë¦½íŠ¸ 소유ìž"
-
msgid "Editor Language"
msgstr "ì—디터 언어"
@@ -1405,6 +1381,15 @@ msgstr "경고"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "í…스ì³"
+
+msgid "Separation"
+msgstr "분리"
+
+msgid "Speed"
+msgstr "ì†ë ¥"
+
msgid "Version Control"
msgstr "버전 컨트롤"
@@ -1483,18 +1468,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "홈 표시기 숨기기"
-msgid "Input Devices"
-msgstr "입력 장치"
-
-msgid "Pointing"
-msgstr "í¬ì¸íŒ…"
-
msgid "Boot Splash"
msgstr "부트 스플래쉬"
msgid "BG Color"
msgstr "배경색"
+msgid "Input Devices"
+msgstr "입력 장치"
+
msgid "Environment"
msgstr "환경"
@@ -1522,6 +1504,9 @@ msgstr "버í¼ë§"
msgid "Agile Event Flushing"
msgstr "ì• ìžì¼ ì´ë²¤íŠ¸ 플러싱"
+msgid "Pointing"
+msgstr "í¬ì¸íŒ…"
+
msgid "Emulate Touch From Mouse"
msgstr "마우스 터치 ì—뮬레ì´íŠ¸"
@@ -1864,9 +1849,6 @@ msgstr "스킨 루트"
msgid "Joints Original"
msgstr "관절 ì›ë³¸"
-msgid "Inverse Binds"
-msgstr "ì—­ê²°í•©"
-
msgid "Non Joints"
msgstr "비 관절"
@@ -2116,9 +2098,6 @@ msgstr "최대 거리"
msgid "Top"
msgstr "맨 위"
-msgid "Speed"
-msgstr "ì†ë ¥"
-
msgid "Input"
msgstr "ìž…ë ¥"
@@ -2128,9 +2107,6 @@ msgstr "시간"
msgid "Randomness"
msgstr "무작위성"
-msgid "Texture"
-msgstr "í…스ì³"
-
msgid "Points"
msgstr "ì "
@@ -2155,15 +2131,6 @@ msgstr "내비게ì´ì…˜ ë ˆì´ì–´"
msgid "Max Speed"
msgstr "최대 ì†ë„"
-msgid "Rotation Degrees"
-msgstr "회전 ê°ë„"
-
-msgid "Global Rotation Degrees"
-msgstr "ì „ì—­ 회전 ê°ë„"
-
-msgid "Global Scale"
-msgstr "ì „ì—­ 스케ì¼"
-
msgid "Base Offset"
msgstr "기본 오프셋"
@@ -2311,9 +2278,6 @@ msgstr "단계"
msgid "Syntax Highlighter"
msgstr "구문 강조"
-msgid "Volume"
-msgstr "볼륨"
-
msgid "Z Index"
msgstr "Z ì¸ë±ìŠ¤"
@@ -2326,9 +2290,6 @@ msgstr "전송 모드"
msgid "Transfer Channel"
msgstr "전송 채ë„"
-msgid "Current Scene"
-msgstr "현재 씬"
-
msgid "Audio Listener"
msgstr "오디오 리스너"
@@ -2365,9 +2326,6 @@ msgstr "분리 기호"
msgid "Submenu"
msgstr "하위 메뉴"
-msgid "Separation"
-msgstr "분리"
-
msgid "Cursor"
msgstr "커서"
diff --git a/editor/translations/properties/pl.po b/editor/translations/properties/pl.po
index 836a4ac81d..4b87cac56d 100644
--- a/editor/translations/properties/pl.po
+++ b/editor/translations/properties/pl.po
@@ -75,17 +75,17 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-01-20 10:19+0000\n"
-"Last-Translator: RM <synaptykq@gmail.com>\n"
+"PO-Revision-Date: 2023-02-20 10:58+0000\n"
+"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
-"godot/pl/>\n"
+"godot-properties/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.1\n"
+"X-Generator: Weblate 4.16-dev\n"
msgid "Application"
msgstr "Aplikacja"
@@ -96,9 +96,18 @@ msgstr "Konfiguracja"
msgid "Name"
msgstr "Nazwa"
+msgid "Name Localized"
+msgstr "Nazwa lokalizowana"
+
+msgid "Description"
+msgstr "Opis"
+
msgid "Run"
msgstr "Uruchom"
+msgid "Main Scene"
+msgstr "Scena główna"
+
msgid "Disable stdout"
msgstr "Wyłączenie stdout"
@@ -126,15 +135,57 @@ msgstr "Okno"
msgid "Size"
msgstr "Rozmiar"
+msgid "Viewport Width"
+msgstr "Szerokość rzutni"
+
+msgid "Viewport Height"
+msgstr "Wysokość rzutni"
+
+msgid "Mode"
+msgstr "Tryb"
+
+msgid "Initial Position Type"
+msgstr "Typ poczÄ…tkowej pozycji"
+
+msgid "Initial Position"
+msgstr "PoczÄ…tkowa pozycja"
+
+msgid "Initial Screen"
+msgstr "Ekran poczÄ…tkowy"
+
msgid "Resizable"
msgstr "Zmienny rozmiar"
msgid "Borderless"
msgstr "Bez obramowania"
+msgid "Always on Top"
+msgstr "Zawsze na wierzchu"
+
+msgid "Transparent"
+msgstr "Przeźroczyste"
+
+msgid "Extend to Title"
+msgstr "Rozszerz do tytułu"
+
+msgid "No Focus"
+msgstr "Bez skupienia"
+
+msgid "Window Width Override"
+msgstr "Nadpisanie szerokości okna"
+
+msgid "Window Height Override"
+msgstr "Nadpisanie wysokości okna"
+
+msgid "Energy Saving"
+msgstr "Oszczędzanie energii"
+
msgid "Keep Screen On"
msgstr "Zachowaj włączony ekran"
+msgid "Audio"
+msgstr "Audio"
+
msgid "Editor"
msgstr "Edytor"
@@ -156,12 +207,33 @@ msgstr "Debugowanie"
msgid "Settings"
msgstr "Ustawienia"
+msgid "Compression"
+msgstr "Kompresja"
+
msgid "Message"
msgstr "Wiadomość"
msgid "Rendering"
msgstr "Renderowanie"
+msgid "Limits"
+msgstr "Limity"
+
+msgid "Internationalization"
+msgstr "Internacjonalizacja"
+
+msgid "Rendering Device"
+msgstr "UrzÄ…dzenie renderujÄ…ce"
+
+msgid "Block Size (KB)"
+msgstr "Rozmiar bloku (KB)"
+
+msgid "Max Size (MB)"
+msgstr "Maks. rozmiar (MB)"
+
+msgid "Vulkan"
+msgstr "Vulkan"
+
msgid "Low Processor Usage Mode"
msgstr "Tryb niskiego wykorzystania procesora"
@@ -186,6 +258,9 @@ msgstr "Użyj skumulowanego wejścia"
msgid "Device"
msgstr "UrzÄ…dzenie"
+msgid "Window ID"
+msgstr "ID Okna"
+
msgid "Pressed"
msgstr "Wciśnięty"
@@ -210,6 +285,9 @@ msgstr "Czynnik"
msgid "Button Index"
msgstr "Indeks przycisków"
+msgid "Double Click"
+msgstr "Podwójne kliknięcie"
+
msgid "Tilt"
msgstr "Pochylenie"
@@ -261,12 +339,15 @@ msgstr "Wartość kontrolera"
msgid "Big Endian"
msgstr "Big endian"
+msgid "Network"
+msgstr "Sieć"
+
+msgid "Page Size"
+msgstr "Rozmiar strony"
+
msgid "Blocking Mode Enabled"
msgstr "Tryb blokowania włączony"
-msgid "Connection"
-msgstr "Połączenie"
-
msgid "Read Chunk Size"
msgstr "Odczytaj rozmiar fragmentu"
@@ -285,9 +366,6 @@ msgstr "Maks. rozmiar bufora wejściowego"
msgid "Output Buffer Max Size"
msgstr "Maksymalna wielkość bufora wyjściowego"
-msgid "Stream Peer"
-msgstr "Członek transmisji"
-
msgid "Resource"
msgstr "Zasób"
@@ -297,9 +375,6 @@ msgstr "Ścieżka"
msgid "Data Array"
msgstr "Tablica danych"
-msgid "Blocking Handshake"
-msgstr "Blokowanie uścisku dłoni"
-
msgid "Max Pending Connections"
msgstr "Maks. liczba połączeń oczekujących"
@@ -309,9 +384,6 @@ msgstr "Ziarno"
msgid "State"
msgstr "Stan"
-msgid "Source Code"
-msgstr "Kod źródłowy"
-
msgid "Locale"
msgstr "Ustawienia regionalne"
@@ -360,15 +432,6 @@ msgstr "Animacja"
msgid "Easing"
msgstr "Wygładzanie"
-msgid "Interface"
-msgstr "Interfejs"
-
-msgid "Editors"
-msgstr "Edytory"
-
-msgid "Network"
-msgstr "Sieć"
-
msgid "Remote Port"
msgstr "Zdalny port"
@@ -387,15 +450,6 @@ msgstr "Dostęp"
msgid "Display Mode"
msgstr "Tryb wyświetlania"
-msgid "Current Dir"
-msgstr "Bieżący katalog"
-
-msgid "Current File"
-msgstr "Bieżący Plik"
-
-msgid "Current Path"
-msgstr "Bieżąca ścieżka"
-
msgid "Show Hidden Files"
msgstr "Pokaż ukryte pliki"
@@ -432,14 +486,14 @@ msgstr "Sprawdzone"
msgid "Keying"
msgstr "Kluczowanie"
-msgid "Main Scene"
-msgstr "Scena główna"
+msgid "Interface"
+msgstr "Interfejs"
msgid "Show Update Spinner"
msgstr "Pokaż suwak aktualizacji"
msgid "Update Continuously"
-msgstr "Aktualizuj ciÄ…gle"
+msgstr "Stale aktualizuj"
msgid "Localize Settings"
msgstr "Lokalizuj ustawienia"
@@ -477,18 +531,12 @@ msgstr "Tryb bez rozproszeń"
msgid "Base Type"
msgstr "Typ bazowy"
-msgid "Edited Resource"
-msgstr "Edytowany zasób"
-
msgid "Editable"
msgstr "Edytowalny"
msgid "Toggle Mode"
msgstr "Przełącz tryb"
-msgid "Script Owner"
-msgstr "Właściciel skryptu"
-
msgid "Editor Language"
msgstr "Język edytora"
@@ -535,7 +583,7 @@ msgid "Theme"
msgstr "Motyw"
msgid "Preset"
-msgstr "Profil"
+msgstr "Ustawienia wstępne"
msgid "Base Color"
msgstr "Kolor podstawowy"
@@ -700,7 +748,7 @@ msgid "Sort Members Outline Alphabetically"
msgstr "Posortuj szkic członków alfabetycznie"
msgid "Completion"
-msgstr "Ukończenie"
+msgstr "Uzupełnianie"
msgid "Idle Parse Delay"
msgstr "Opóźnienie interpretacji"
@@ -735,6 +783,9 @@ msgstr "Rozmiar czcionki kodu w pomocy"
msgid "Help Title Font Size"
msgstr "Rozmiar czcionki tytułu w pomocy"
+msgid "Editors"
+msgstr "Edytory"
+
msgid "Grid Map"
msgstr "Siatka"
@@ -1131,9 +1182,21 @@ msgstr "Serwer plików"
msgid "Password"
msgstr "Hasło"
+msgid "Hinting"
+msgstr "Hinting"
+
+msgid "Oversampling"
+msgstr "Nadpróbkowanie"
+
msgid "Compress"
msgstr "Skompresuj"
+msgid "Language"
+msgstr "Język"
+
+msgid "Transform"
+msgstr "Przekształcanie"
+
msgid "Collada"
msgstr "Collada"
@@ -1158,18 +1221,9 @@ msgstr "Utwórz z"
msgid "Delimiter"
msgstr "Separator"
-msgid "Preload"
-msgstr "Åaduj przed"
-
-msgid "Mode"
-msgstr "Tryb"
-
msgid "Lossy Quality"
msgstr "Stratna jakość"
-msgid "BPTC LDR"
-msgstr "LDR BPTC"
-
msgid "Mipmaps"
msgstr "Mipmapy"
@@ -1224,12 +1278,6 @@ msgstr "Optymalizator"
msgid "Max Angular Error"
msgstr "Maks. błąd kątowy"
-msgid "Compression"
-msgstr "Kompresja"
-
-msgid "Page Size"
-msgstr "Rozmiar strony"
-
msgid "Nodes"
msgstr "Węzły"
@@ -1335,6 +1383,9 @@ msgstr "Używaj wątków"
msgid "Available URLs"
msgstr "Dostępne URL"
+msgid "Unset"
+msgstr "Wymaż"
+
msgid "Error"
msgstr "BÅ‚Ä…d"
@@ -1386,6 +1437,9 @@ msgstr "Ostrzeżenia"
msgid "ID"
msgstr "ID"
+msgid "Speed"
+msgstr "Prędkość"
+
msgid "Version Control"
msgstr "Kontrola wersji"
@@ -1398,9 +1452,6 @@ msgstr "Ścieżka do publicznego klucza SSH"
msgid "SSH Private Key Path"
msgstr "Ścieżka do prywatnego klucza SSH"
-msgid "Audio"
-msgstr "Audio"
-
msgid "Verbose stdout"
msgstr "Werbalne stdout"
@@ -1413,21 +1464,33 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Ukryj wskaźnik powitalny"
+msgid "XR"
+msgstr "XR"
+
msgid "Boot Splash"
msgstr "Ekran uruchamiania"
msgid "BG Color"
msgstr "Kolor tła"
+msgid "Defaults"
+msgstr "Domyślne"
+
msgid "Show Image"
msgstr "Pokaż obraz"
+msgid "Image"
+msgstr "Obraz"
+
msgid "Fullsize"
msgstr "Pełny rozmiar"
msgid "Use Filter"
msgstr "Użyj filtra"
+msgid "Icon"
+msgstr "Ikona"
+
msgid "Buffering"
msgstr "Buforowanie"
@@ -1452,6 +1515,12 @@ msgstr "Projekt"
msgid "Assembly Name"
msgstr "Nazwa zespołu"
+msgid "Stretch"
+msgstr "RozciÄ…gnij"
+
+msgid "Aspect"
+msgstr "Aspekt"
+
msgid "Auto Accept Quit"
msgstr "Automatyczne akceptowanie zamknięcia"
@@ -1606,7 +1675,7 @@ msgid "Eye Height"
msgstr "Wysokość oczu"
msgid "IOD"
-msgstr "IOD"
+msgstr "PD"
msgid "Display Width"
msgstr "Szerokość wyświetlacza"
@@ -1647,9 +1716,6 @@ msgstr "Nazwy"
msgid "Strings"
msgstr "CiÄ…gi tekstowe"
-msgid "Limits"
-msgstr "Limity"
-
msgid "Android"
msgstr "Android"
@@ -1662,14 +1728,11 @@ msgstr "Wersja"
msgid "Icons"
msgstr "Ikony"
-msgid "Icon"
-msgstr "Ikona"
-
msgid "Location"
msgstr "Lokalizacja"
-msgid "Description"
-msgstr "Opis"
+msgid "Variant"
+msgstr "Wariant"
msgid "Frame"
msgstr "Klatka"
@@ -1677,11 +1740,14 @@ msgstr "Klatka"
msgid "Point"
msgstr "Punkt"
+msgid "Left"
+msgstr "Lewo"
+
msgid "Top"
msgstr "Góra"
-msgid "Speed"
-msgstr "Prędkość"
+msgid "Right"
+msgstr "Prawo"
msgid "Input"
msgstr "Wejście"
@@ -1713,9 +1779,6 @@ msgstr "Prostokąt widoczności"
msgid "Navigation Layers"
msgstr "Warstwy nawigacji"
-msgid "Transform"
-msgstr "Przekształcanie"
-
msgid "Linear"
msgstr "Liniowy"
@@ -1740,6 +1803,9 @@ msgstr "Obszar"
msgid "Bitmask"
msgstr "Maska bitowa"
+msgid "Cull Mask"
+msgstr "Cull Mask"
+
msgid "Flags"
msgstr "Flagi"
@@ -1791,6 +1857,9 @@ msgstr "Grupa przycisków"
msgid "Localization"
msgstr "Lokalizacja"
+msgid "Focus"
+msgstr "Zaznacz"
+
msgid "Next"
msgstr "Dalej"
@@ -1815,15 +1884,9 @@ msgstr "Tryb ikon"
msgid "Step"
msgstr "Krok"
-msgid "Stretch"
-msgstr "RozciÄ…gnij"
-
msgid "Syntax Highlighter"
msgstr "Podświetlacz składni"
-msgid "Volume"
-msgstr "Głośność"
-
msgid "Z Index"
msgstr "Indeks Z"
@@ -1833,17 +1896,17 @@ msgstr "Powtórz"
msgid "Transfer Mode"
msgstr "Tryb transferu"
-msgid "Current Scene"
-msgstr "Aktualna scena"
-
msgid "Audio Listener"
msgstr "Słuchacz dźwięku"
msgid "Current Screen"
msgstr "Bieżący ekran"
-msgid "Aspect"
-msgstr "Aspekt"
+msgid "2D Physics"
+msgstr "Fizyka 2D"
+
+msgid "3D Physics"
+msgstr "Fizyka 3D"
msgid "Format"
msgstr "Format"
@@ -1923,9 +1986,6 @@ msgstr "Prawy dolny róg"
msgid "Bottom Left"
msgstr "Lewy dolny róg"
-msgid "Image"
-msgstr "Obraz"
-
msgid "Transpose"
msgstr "Transpozycja"
@@ -1935,6 +1995,9 @@ msgstr "Stała"
msgid "Function"
msgstr "Funkcja"
+msgid "Pan"
+msgstr "Pan"
+
msgid "Feedback"
msgstr "Informacja zwrotna"
@@ -1956,6 +2019,9 @@ msgstr "Wierzchołki"
msgid "Fragment"
msgstr "Fragmenty"
+msgid "Cull"
+msgstr "Cull"
+
msgid "Reflections"
msgstr "Odbicia"
diff --git a/editor/translations/properties/pt.po b/editor/translations/properties/pt.po
index f072375d33..7e1502e64d 100644
--- a/editor/translations/properties/pt.po
+++ b/editor/translations/properties/pt.po
@@ -261,9 +261,6 @@ msgstr "Tamanho da Página"
msgid "Blocking Mode Enabled"
msgstr "Modo de Bloqueio Ativado"
-msgid "Connection"
-msgstr "Conexão"
-
msgid "Read Chunk Size"
msgstr "Ler tamanho da parcela/pedaço"
@@ -282,9 +279,6 @@ msgstr "Tamanho máximo do Buffer de entrada"
msgid "Output Buffer Max Size"
msgstr "Tamanho Máximo do Amortecedor de OutPut"
-msgid "Stream Peer"
-msgstr "Fluxo de pares"
-
msgid "Resource"
msgstr "Recurso"
@@ -306,9 +300,6 @@ msgstr "Semente"
msgid "State"
msgstr "Estado"
-msgid "Source Code"
-msgstr "Código Fonte"
-
msgid "Locale"
msgstr "Localização"
@@ -390,15 +381,6 @@ msgstr "Acesso"
msgid "Display Mode"
msgstr "Modo de Visualização"
-msgid "Current Dir"
-msgstr "Dir Atual"
-
-msgid "Current File"
-msgstr "Ficheiro Atual"
-
-msgid "Current Path"
-msgstr "Caminho Atual"
-
msgid "Show Hidden Files"
msgstr "Mostrar arquivos ocultos"
@@ -480,18 +462,12 @@ msgstr "Modo Livre de Distrações"
msgid "Base Type"
msgstr "Mudar tipo base"
-msgid "Edited Resource"
-msgstr "Recurso Editado"
-
msgid "Editable"
msgstr "Item Editável"
msgid "Toggle Mode"
msgstr "Alternar Modo"
-msgid "Script Owner"
-msgstr "Dono do Script"
-
msgid "Editor Language"
msgstr "Linguagem do Editor"
@@ -1182,9 +1158,6 @@ msgstr "Criar à Partir de"
msgid "Delimiter"
msgstr "Delimitador"
-msgid "Preload"
-msgstr "Pré-carregar"
-
msgid "Lossy Quality"
msgstr "Qualidade com Perdas"
@@ -1428,6 +1401,15 @@ msgstr "Avisos"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Textura"
+
+msgid "Separation"
+msgstr "Separação"
+
+msgid "Speed"
+msgstr "Velocidade"
+
msgid "Version Control"
msgstr "Controle de Versões"
@@ -1506,18 +1488,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Esconder Indicador de Home"
-msgid "Input Devices"
-msgstr "Dispositivos de Entrada"
-
-msgid "Pointing"
-msgstr "Pontuação"
-
msgid "Boot Splash"
msgstr "Plano de Fundo de Inicialização"
msgid "BG Color"
msgstr "Cor de Fundo"
+msgid "Input Devices"
+msgstr "Dispositivos de Entrada"
+
msgid "Environment"
msgstr "Ambiente"
@@ -1545,6 +1524,9 @@ msgstr "Buffering"
msgid "Agile Event Flushing"
msgstr "Liberação Ãgil de Eventos"
+msgid "Pointing"
+msgstr "Pontuação"
+
msgid "Emulate Touch From Mouse"
msgstr "Emular Toque do Rato"
@@ -1887,9 +1869,6 @@ msgstr "Raiz da Skin"
msgid "Joints Original"
msgstr "Pontos Originais"
-msgid "Inverse Binds"
-msgstr "Inverter Ligações"
-
msgid "Non Joints"
msgstr "Não-Juntas"
@@ -2682,9 +2661,6 @@ msgstr "Embaixo"
msgid "Smoothed"
msgstr "Suavizado"
-msgid "Speed"
-msgstr "Velocidade"
-
msgid "Horizontal Enabled"
msgstr "Horizontal Ativado"
@@ -2733,9 +2709,6 @@ msgstr "Coordenadas Locais"
msgid "Draw Order"
msgstr "Ordem de Desenho"
-msgid "Texture"
-msgstr "Textura"
-
msgid "Emission Shape"
msgstr "Forma de Emissão"
@@ -2856,18 +2829,6 @@ msgstr "Velocidade Máxima"
msgid "Estimate Radius"
msgstr "Raio Estimado"
-msgid "Rotation Degrees"
-msgstr "Graus de Rotação"
-
-msgid "Global Rotation"
-msgstr "Rotação Global"
-
-msgid "Global Rotation Degrees"
-msgstr "Graus de Rotação Global"
-
-msgid "Global Scale"
-msgstr "Escala Global"
-
msgid "Scroll"
msgstr "Rolagem"
@@ -3432,9 +3393,6 @@ msgstr "Graus de Preenchimento"
msgid "Hide Root"
msgstr "Esconder Raiz"
-msgid "Volume"
-msgstr "Volume"
-
msgid "Paused"
msgstr "Pausado"
@@ -3465,18 +3423,6 @@ msgstr "Modo de Transferência"
msgid "Transfer Channel"
msgstr "Transferir Canal"
-msgid "Owner"
-msgstr "Dono"
-
-msgid "Multiplayer"
-msgstr "Multijogador"
-
-msgid "Current Scene"
-msgstr "Cena Atual"
-
-msgid "Root"
-msgstr "Raiz"
-
msgid "Shapes"
msgstr "Formas"
@@ -3498,9 +3444,6 @@ msgstr "Tempo de Espera"
msgid "Autostart"
msgstr "Início Automático"
-msgid "World 2D"
-msgstr "Mundo 2D"
-
msgid "Transparent BG"
msgstr "Fundo Transparente"
@@ -3576,9 +3519,6 @@ msgstr "Sub-menu"
msgid "V Separation"
msgstr "Separação Vertical"
-msgid "Separation"
-msgstr "Separação"
-
msgid "Port Offset"
msgstr "Deslocamento de Porta"
@@ -3792,9 +3732,6 @@ msgstr "Constante"
msgid "Function"
msgstr "Função"
-msgid "Canvas"
-msgstr "Tela"
-
msgid "Plane"
msgstr "Plano"
diff --git a/editor/translations/properties/pt_BR.po b/editor/translations/properties/pt_BR.po
index d971a31648..37e2a15065 100644
--- a/editor/translations/properties/pt_BR.po
+++ b/editor/translations/properties/pt_BR.po
@@ -162,8 +162,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2023-02-08 18:01+0000\n"
-"Last-Translator: Leonardo <leotada523@gmail.com>\n"
+"PO-Revision-Date: 2023-02-20 00:45+0000\n"
+"Last-Translator: Elizandro Baldin <ejbaldin@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot-properties/pt_BR/>\n"
"Language: pt_BR\n"
@@ -389,9 +389,6 @@ msgstr "Tamanho da Página"
msgid "Blocking Mode Enabled"
msgstr "Modo de bloqueio Ativado"
-msgid "Connection"
-msgstr "Conexão"
-
msgid "Read Chunk Size"
msgstr "Ler o tamanho do pedaço"
@@ -410,9 +407,6 @@ msgstr "Tamanho máximo do buffer de entrada"
msgid "Output Buffer Max Size"
msgstr "Tamanho máximo do buffer de saída"
-msgid "Stream Peer"
-msgstr "Par de stream"
-
msgid "Resource"
msgstr "Recurso"
@@ -434,9 +428,6 @@ msgstr "Semente"
msgid "State"
msgstr "Estado"
-msgid "Source Code"
-msgstr "Código fonte"
-
msgid "Locale"
msgstr "Localidade"
@@ -518,15 +509,6 @@ msgstr "Acesso"
msgid "Display Mode"
msgstr "Modo de Exibição"
-msgid "Current Dir"
-msgstr "Diretório Atual"
-
-msgid "Current File"
-msgstr "Arquivo Atual"
-
-msgid "Current Path"
-msgstr "Caminho Atual"
-
msgid "Show Hidden Files"
msgstr "Mostrar Arquivos Ocultos"
@@ -608,18 +590,12 @@ msgstr "Modo Sem Distrações"
msgid "Base Type"
msgstr "Tipo Base"
-msgid "Edited Resource"
-msgstr "Recurso Editado"
-
msgid "Editable"
msgstr "Editável"
msgid "Toggle Mode"
msgstr "Alternar Modo"
-msgid "Script Owner"
-msgstr "Proprietário do Script"
-
msgid "Editor Language"
msgstr "Linguagem do Editor"
@@ -1277,6 +1253,9 @@ msgstr "Senha"
msgid "Compress"
msgstr "Comprimir"
+msgid "Language"
+msgstr "Dialeto"
+
msgid "Outline Size"
msgstr "Tamanho do Contorno"
@@ -1310,9 +1289,6 @@ msgstr "Criar à Partir de"
msgid "Delimiter"
msgstr "Delimitador"
-msgid "Preload"
-msgstr "Pré Carregar"
-
msgid "Lossy Quality"
msgstr "Com Perda de Qualidade"
@@ -1487,6 +1463,9 @@ msgstr "Usar Threads"
msgid "Available URLs"
msgstr "URLs disponíveis"
+msgid "Unset"
+msgstr "Desativar"
+
msgid "Error"
msgstr "Erro"
@@ -1556,6 +1535,15 @@ msgstr "Avisos"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "Textura"
+
+msgid "Separation"
+msgstr "Separação"
+
+msgid "Speed"
+msgstr "Velocidade"
+
msgid "Version Control"
msgstr "Controle de Versão"
@@ -1634,18 +1622,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Esconder Indicador de Home"
-msgid "Input Devices"
-msgstr "Dispositivos de Entrada"
-
-msgid "Pointing"
-msgstr "Apontando"
-
msgid "Boot Splash"
msgstr "Imagem de Exibição ao Iniciar"
msgid "BG Color"
msgstr "Cor do Plano de Fundo"
+msgid "Input Devices"
+msgstr "Dispositivos de Entrada"
+
msgid "Environment"
msgstr "Ambiente"
@@ -1673,6 +1658,9 @@ msgstr "Buffering"
msgid "Agile Event Flushing"
msgstr "Limpeza de Eventos Agil"
+msgid "Pointing"
+msgstr "Apontando"
+
msgid "Emulate Touch From Mouse"
msgstr "Simular Toque à Partir do Mouse"
@@ -2018,9 +2006,6 @@ msgstr "Raiz da Skin"
msgid "Joints Original"
msgstr "Pontos Originais"
-msgid "Inverse Binds"
-msgstr "Designações invertidas"
-
msgid "Non Joints"
msgstr "Não-Juntas"
@@ -2723,9 +2708,6 @@ msgstr "Embaixo"
msgid "Smoothed"
msgstr "Suavizado"
-msgid "Speed"
-msgstr "Velocidade"
-
msgid "Horizontal Enabled"
msgstr "Horizontal Habilitado"
@@ -2774,9 +2756,6 @@ msgstr "Coordenadas Locais"
msgid "Draw Order"
msgstr "Ordem de Desenho"
-msgid "Texture"
-msgstr "Textura"
-
msgid "Emission Shape"
msgstr "Forma de Emissão"
@@ -2897,18 +2876,6 @@ msgstr "Velocidade Máxima"
msgid "Estimate Radius"
msgstr "Raio Estimado"
-msgid "Rotation Degrees"
-msgstr "Graus de Rotação"
-
-msgid "Global Rotation"
-msgstr "Rotação Global"
-
-msgid "Global Rotation Degrees"
-msgstr "Graus de Rotação Global"
-
-msgid "Global Scale"
-msgstr "Escala Global"
-
msgid "Scroll"
msgstr "Rolagem"
@@ -3389,6 +3356,9 @@ msgstr "Deslocamento do Pivô"
msgid "Localization"
msgstr "Localização"
+msgid "Focus"
+msgstr "Foco"
+
msgid "Next"
msgstr "Próximo"
@@ -3473,9 +3443,6 @@ msgstr "Graus de Preenchimento"
msgid "Hide Root"
msgstr "Esconder Raiz"
-msgid "Volume"
-msgstr "Volume"
-
msgid "Paused"
msgstr "Pausado"
@@ -3506,18 +3473,6 @@ msgstr "Modo de Transferência"
msgid "Transfer Channel"
msgstr "Transferir Canal"
-msgid "Owner"
-msgstr "Dono"
-
-msgid "Multiplayer"
-msgstr "Multijogador"
-
-msgid "Current Scene"
-msgstr "Cena Atual"
-
-msgid "Root"
-msgstr "Raiz"
-
msgid "Shapes"
msgstr "Formas"
@@ -3539,9 +3494,6 @@ msgstr "Tempo de Espera"
msgid "Autostart"
msgstr "Início Automático"
-msgid "World 2D"
-msgstr "Mundo 2D"
-
msgid "Transparent BG"
msgstr "Fundo Transparente"
@@ -3617,9 +3569,6 @@ msgstr "Submenu"
msgid "V Separation"
msgstr "Separação Vertical"
-msgid "Separation"
-msgstr "Separação"
-
msgid "Port Offset"
msgstr "Deslocamento de Porta"
@@ -3833,9 +3782,6 @@ msgstr "Constante"
msgid "Function"
msgstr "Função"
-msgid "Canvas"
-msgstr "Tela"
-
msgid "Plane"
msgstr "Plano"
diff --git a/editor/translations/properties/ru.po b/editor/translations/properties/ru.po
index f792cd0b43..b14a9c3feb 100644
--- a/editor/translations/properties/ru.po
+++ b/editor/translations/properties/ru.po
@@ -132,7 +132,7 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 10:44+0000\n"
+"PO-Revision-Date: 2023-02-13 07:39+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/ru/>\n"
@@ -366,9 +366,6 @@ msgstr "Размер Ñтраницы"
msgid "Blocking Mode Enabled"
msgstr "Блокирующий режим включён"
-msgid "Connection"
-msgstr "Соединение"
-
msgid "Read Chunk Size"
msgstr "Размер чанка чтениÑ"
@@ -387,9 +384,6 @@ msgstr "МакÑимальный размер входÑщего буфера"
msgid "Output Buffer Max Size"
msgstr "МакÑимальный размер иÑходÑщего буфера"
-msgid "Stream Peer"
-msgstr "Узел потоковой передачи"
-
msgid "Resource"
msgstr "РеÑурÑ"
@@ -414,9 +408,6 @@ msgstr "Зерно"
msgid "State"
msgstr "СоÑтоÑние"
-msgid "Source Code"
-msgstr "ИÑходный код"
-
msgid "Locale"
msgstr "Локаль"
@@ -495,15 +486,6 @@ msgstr "ДоÑтуп"
msgid "Display Mode"
msgstr "Режим отображениÑ"
-msgid "Current Dir"
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ"
-
-msgid "Current File"
-msgstr "Текущий файл"
-
-msgid "Current Path"
-msgstr "Текущий путь"
-
msgid "Show Hidden Files"
msgstr "Показывать Ñкрытые файлы"
@@ -585,18 +567,12 @@ msgstr "Режим без отвлечениÑ"
msgid "Base Type"
msgstr "Базовый тип"
-msgid "Edited Resource"
-msgstr "Редактируемый реÑурÑ"
-
msgid "Editable"
msgstr "Редактируемый"
msgid "Toggle Mode"
msgstr "Режим отображениÑ"
-msgid "Script Owner"
-msgstr "Владелец Ñкрипта"
-
msgid "Editor Language"
msgstr "Язык редактора"
@@ -1284,9 +1260,6 @@ msgstr "Сотворить из"
msgid "Delimiter"
msgstr "Разделитель"
-msgid "Preload"
-msgstr "Предзагрузить"
-
msgid "Columns"
msgstr "Колонки"
@@ -1533,6 +1506,15 @@ msgstr "ПредупреждениÑ"
msgid "ID"
msgstr "Идентификатор"
+msgid "Texture"
+msgstr "ТекÑтура"
+
+msgid "Separation"
+msgstr "Разделение"
+
+msgid "Speed"
+msgstr "СкороÑÑ‚ÑŒ"
+
msgid "Version Control"
msgstr "Контроль верÑий"
@@ -1611,11 +1593,8 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Скрыть индикатор «Домой»"
-msgid "Input Devices"
-msgstr "УÑтройÑтва ввода"
-
-msgid "Pointing"
-msgstr "Указывающие"
+msgid "XR"
+msgstr "XR"
msgid "Boot Splash"
msgstr "Ð—Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ñтавка"
@@ -1623,6 +1602,9 @@ msgstr "Ð—Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ñтавка"
msgid "BG Color"
msgstr "Цвет фона"
+msgid "Input Devices"
+msgstr "УÑтройÑтва ввода"
+
msgid "Environment"
msgstr "Окружение"
@@ -1650,6 +1632,9 @@ msgstr "БуферизациÑ"
msgid "Agile Event Flushing"
msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° Ñобытий"
+msgid "Pointing"
+msgstr "Указывающие"
+
msgid "Emulate Touch From Mouse"
msgstr "Эмулировать ÑенÑорный ввод мышью"
@@ -1962,9 +1947,6 @@ msgstr "Корни"
msgid "Godot Bone Node"
msgstr "Узел коÑти Godot"
-msgid "Inverse Binds"
-msgstr "Инвертировать СвÑзи"
-
msgid "Godot Skin"
msgstr "Скин Godot"
@@ -2547,9 +2529,6 @@ msgstr "Режим копированиÑ"
msgid "Anchor Mode"
msgstr "Режим Ñкорей"
-msgid "Custom Viewport"
-msgstr "ПользовательÑкое окно проÑмотра"
-
msgid "Left"
msgstr "Влево"
@@ -2562,9 +2541,6 @@ msgstr "Вправо"
msgid "Bottom"
msgstr "Внизу"
-msgid "Speed"
-msgstr "СкороÑÑ‚ÑŒ"
-
msgid "Input"
msgstr "Вход"
@@ -2607,9 +2583,6 @@ msgstr "ФикÑированный FPS"
msgid "Local Coords"
msgstr "Локальные координаты"
-msgid "Texture"
-msgstr "ТекÑтура"
-
msgid "Emission Shape"
msgstr "Форма излучениÑ"
@@ -2760,18 +2733,6 @@ msgstr "Включить уклонение"
msgid "Max Speed"
msgstr "ÐœÐ°ÐºÑ ÑкороÑÑ‚ÑŒ"
-msgid "Global Rotation"
-msgstr "Глобальный поворот"
-
-msgid "Global Rotation Degrees"
-msgstr "Глобальный поворот градуÑÑ‹"
-
-msgid "Global Scale"
-msgstr "Глобальный маÑштаб"
-
-msgid "Global Transform"
-msgstr "Глобальное преобразование"
-
msgid "Scroll"
msgstr "Прокрутка"
@@ -3291,15 +3252,6 @@ msgstr "Корневой узел"
msgid "Current Animation"
msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ"
-msgid "Assigned Animation"
-msgstr "ПривÑÐ·Ð°Ð½Ð½Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ"
-
-msgid "Current Animation Length"
-msgstr "Длина текущей анимации"
-
-msgid "Current Animation Position"
-msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ анимации"
-
msgid "Default Blend Time"
msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑÐ¼ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
@@ -3555,9 +3507,6 @@ msgstr "Скрывать корень"
msgid "Audio Track"
msgstr "Ðудиотрек"
-msgid "Volume"
-msgstr "Объём"
-
msgid "Paused"
msgstr "ОÑтановлен"
@@ -3591,12 +3540,6 @@ msgstr "Режим передачи"
msgid "Transfer Channel"
msgstr "Канал передачи"
-msgid "Owner"
-msgstr "Владелец"
-
-msgid "Multiplayer"
-msgstr "Мультиплеер"
-
msgid "Editor Description"
msgstr "Редактировать опиÑание"
@@ -3606,12 +3549,6 @@ msgstr "ОÑталоÑÑŒ времени"
msgid "Debug Navigation Hint"
msgstr "ПодÑказка режима навигации"
-msgid "Edited Scene Root"
-msgstr "Редактировать корень Ñцены"
-
-msgid "Current Scene"
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена"
-
msgid "Contact Color"
msgstr "Цвет контакта"
@@ -3639,9 +3576,6 @@ msgstr "Путь окна предпроÑмотра"
msgid "Disable 3D"
msgstr "Отключить 3D"
-msgid "World 2D"
-msgstr "Мир 2D"
-
msgid "Transparent BG"
msgstr "Прозрачный фон"
@@ -3666,12 +3600,6 @@ msgstr "Выбор объектов"
msgid "Disable Input"
msgstr "Отключить ввод"
-msgid "Canvas Transform"
-msgstr "Преобразование полотна"
-
-msgid "Global Canvas Transform"
-msgstr "Глобальное преобразование полотна"
-
msgid "Clear Mode"
msgstr "Режим очиÑтки"
@@ -3792,9 +3720,6 @@ msgstr "Разделитель шрифта"
msgid "V Separation"
msgstr "V Разделение"
-msgid "Separation"
-msgstr "Разделение"
-
msgid "Title Offset"
msgstr "Смещение заголовка"
@@ -4113,9 +4038,6 @@ msgstr "До"
msgid "Frames"
msgstr "Кадры"
-msgid "Current Frame"
-msgstr "Текущий кадр"
-
msgid "Pause"
msgstr "Пауза"
@@ -4152,12 +4074,6 @@ msgstr "Значение по умолчанию"
msgid "Color Default"
msgstr "Цвет по умолчанию"
-msgid "Canvas"
-msgstr "ХолÑÑ‚"
-
-msgid "Navigation Map"
-msgstr "Карта навигации"
-
msgid "Plane"
msgstr "ПлоÑкоÑÑ‚ÑŒ"
diff --git a/editor/translations/properties/uk.po b/editor/translations/properties/uk.po
index cce1dbb94c..3a8c69fae5 100644
--- a/editor/translations/properties/uk.po
+++ b/editor/translations/properties/uk.po
@@ -32,8 +32,8 @@ msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-09 01:12+0000\n"
-"Last-Translator: Богдан Матвіїв <bomtvv@gmail.com>\n"
+"PO-Revision-Date: 2023-02-10 17:27+0000\n"
+"Last-Translator: Ivan Nosatlev <maxonyt2@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot-properties/uk/>\n"
"Language: uk\n"
@@ -263,9 +263,6 @@ msgstr "Розмір Ñторінки"
msgid "Blocking Mode Enabled"
msgstr "Увімкнено режим блокуваннÑ"
-msgid "Connection"
-msgstr "З'єднаннÑ"
-
msgid "Read Chunk Size"
msgstr "Розмір фрагмента читаннÑ"
@@ -284,9 +281,6 @@ msgstr "МакÑ. розмір буфера введеннÑ"
msgid "Output Buffer Max Size"
msgstr "МакÑ. розмір буфера виведеннÑ"
-msgid "Stream Peer"
-msgstr "Вузол потоку даних"
-
msgid "Resource"
msgstr "РеÑурÑ"
@@ -311,9 +305,6 @@ msgstr "База"
msgid "State"
msgstr "Стан"
-msgid "Source Code"
-msgstr "Початковий код"
-
msgid "Locale"
msgstr "Мова"
@@ -395,15 +386,6 @@ msgstr "ДоÑтуп"
msgid "Display Mode"
msgstr "Режим показу"
-msgid "Current Dir"
-msgstr "Поточний каталог"
-
-msgid "Current File"
-msgstr "Поточний файл"
-
-msgid "Current Path"
-msgstr "Поточний шлÑÑ…"
-
msgid "Show Hidden Files"
msgstr "Показувати приховані файли"
@@ -485,18 +467,12 @@ msgstr "Режим без відволіканнÑ"
msgid "Base Type"
msgstr "Базовий тип"
-msgid "Edited Resource"
-msgstr "Редагований реÑурÑ"
-
msgid "Editable"
msgstr "Можна редагувати"
msgid "Toggle Mode"
msgstr "Перемкнути режим"
-msgid "Script Owner"
-msgstr "ВлаÑник Ñкрипту"
-
msgid "Editor Language"
msgstr "Мова редактора"
@@ -1195,9 +1171,6 @@ msgstr "Створити на оÑнові"
msgid "Delimiter"
msgstr "Роздільник"
-msgid "Preload"
-msgstr "Попередньо завантажити"
-
msgid "Columns"
msgstr "Стовпчики"
@@ -1378,6 +1351,9 @@ msgstr "ВикориÑтовувати потоки обробки"
msgid "Available URLs"
msgstr "ДоÑтупні адреÑи"
+msgid "Unset"
+msgstr "ЗнÑти"
+
msgid "Error"
msgstr "Помилка"
@@ -1447,6 +1423,15 @@ msgstr "ПопередженнÑ"
msgid "ID"
msgstr "Ідентифікатор"
+msgid "Texture"
+msgstr "ТекÑтура"
+
+msgid "Separation"
+msgstr "РозділеннÑ"
+
+msgid "Speed"
+msgstr "ШвидкіÑÑ‚ÑŒ"
+
msgid "Version Control"
msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
@@ -1525,18 +1510,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "Приховати індикатор домівки"
-msgid "Input Devices"
-msgstr "ПриÑтрої вводу"
-
-msgid "Pointing"
-msgstr "ФокуÑ"
-
msgid "Boot Splash"
msgstr "Ð’Ñ–Ñ‚Ð°Ð½Ð½Ñ ÑиÑтеми"
msgid "BG Color"
msgstr "Колір тла"
+msgid "Input Devices"
+msgstr "ПриÑтрої вводу"
+
msgid "Environment"
msgstr "Середовище"
@@ -1564,6 +1546,9 @@ msgstr "БуферизаціÑ"
msgid "Agile Event Flushing"
msgstr "Зріле Ð²Ð¸Ñ‚Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹"
+msgid "Pointing"
+msgstr "ФокуÑ"
+
msgid "Emulate Touch From Mouse"
msgstr "Емулювати дотик з миші"
@@ -1909,9 +1894,6 @@ msgstr "Корінь оболонки"
msgid "Joints Original"
msgstr "Початок з'єднаннÑ"
-msgid "Inverse Binds"
-msgstr "Зворотні зв'Ñзки"
-
msgid "Non Joints"
msgstr "Без з'єднань"
@@ -2632,9 +2614,6 @@ msgstr "Режим копіюваннÑ"
msgid "Anchor Mode"
msgstr "Режим піктограм"
-msgid "Custom Viewport"
-msgstr "1 панель переглÑду"
-
msgid "Left"
msgstr "Ліворуч"
@@ -2650,9 +2629,6 @@ msgstr "Внизу"
msgid "Smoothed"
msgstr "Згладжений"
-msgid "Speed"
-msgstr "ШвидкіÑÑ‚ÑŒ"
-
msgid "Horizontal Enabled"
msgstr "Увімкнено горизонтально"
@@ -2731,9 +2707,6 @@ msgstr "Локальні координати"
msgid "Draw Order"
msgstr "ПорÑдок малюваннÑ"
-msgid "Texture"
-msgstr "ТекÑтура"
-
msgid "Emission Shape"
msgstr "МаÑка випромінюваннÑ"
@@ -2941,21 +2914,6 @@ msgstr "МакÑ. швидкіÑÑ‚ÑŒ"
msgid "Estimate Radius"
msgstr "Оцінка радіуÑа"
-msgid "Rotation Degrees"
-msgstr "ГрудуÑи обертаннÑ"
-
-msgid "Global Rotation"
-msgstr "Загальна Ñтала"
-
-msgid "Global Rotation Degrees"
-msgstr "ГрадуÑи загального обертаннÑ"
-
-msgid "Global Scale"
-msgstr "Загальний маÑштаб"
-
-msgid "Global Transform"
-msgstr "Зберегти загальне перетвореннÑ"
-
msgid "Scroll"
msgstr "ГортаннÑ"
@@ -3613,15 +3571,6 @@ msgstr "Кореневий вузол"
msgid "Current Animation"
msgstr "Ð’Ñтановити анімацію"
-msgid "Assigned Animation"
-msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—"
-
-msgid "Current Animation Length"
-msgstr "Змінити триваліÑÑ‚ÑŒ анімації"
-
-msgid "Current Animation Position"
-msgstr "Додати точку анімації"
-
msgid "Playback Options"
msgstr "Параметри відтвореннÑ"
@@ -4018,9 +3967,6 @@ msgstr "Прапорці режиму ÑкиданнÑ"
msgid "Audio Track"
msgstr "Доріжка"
-msgid "Volume"
-msgstr "Об'єм"
-
msgid "Paused"
msgstr "Призупинено"
@@ -4030,9 +3976,6 @@ msgstr "Розгорнути"
msgid "Buffering Msec"
msgstr "Ð‘ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ñ–Ñ (мÑ)"
-msgid "Stream Position"
-msgstr "Ð’Ñтановити криву в позиції"
-
msgid "Self Modulate"
msgstr "СамомодулÑціÑ"
@@ -4072,12 +4015,6 @@ msgstr "Режим передаваннÑ"
msgid "Transfer Channel"
msgstr "Канал перенеÑеннÑ"
-msgid "Owner"
-msgstr "ВлаÑник"
-
-msgid "Multiplayer"
-msgstr "Декілька гравців"
-
msgid "Editor Description"
msgstr "ОпиÑ"
@@ -4090,15 +4027,6 @@ msgstr "Підказка діагноÑтики зіткнень"
msgid "Debug Navigation Hint"
msgstr "Підказка діагноÑтики навігації"
-msgid "Edited Scene Root"
-msgstr "Ðовий корінь Ñцени"
-
-msgid "Current Scene"
-msgstr "Поточна Ñцена"
-
-msgid "Root"
-msgstr "Корінь"
-
msgid "Multiplayer Poll"
msgstr "ÐžÐ¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ декількох гравців"
@@ -4162,12 +4090,6 @@ msgstr "Вибір об'єктів"
msgid "Disable Input"
msgstr "Вимкнути введеннÑ"
-msgid "Canvas Transform"
-msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ð¾Ñ‚Ð½Ð°"
-
-msgid "Global Canvas Transform"
-msgstr "Загальне Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ð¾Ñ‚Ð½Ð°"
-
msgid "Render Target"
msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸"
@@ -4372,9 +4294,6 @@ msgstr "Ð¤Ð¾ÐºÑƒÑ ÐºÐ¾Ð¼ÐµÐ½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ"
msgid "Resizer"
msgstr "ЗаÑіб зміни розміру"
-msgid "Separation"
-msgstr "РозділеннÑ"
-
msgid "Title Offset"
msgstr "ВідÑтуп заголовка"
@@ -4885,9 +4804,6 @@ msgstr "HDR"
msgid "Frames"
msgstr "Кадри"
-msgid "Current Frame"
-msgstr "Поточний кадр"
-
msgid "Pause"
msgstr "Пауза"
@@ -4924,15 +4840,9 @@ msgstr "Типове значеннÑ"
msgid "Color Default"
msgstr "Завантажити типовий"
-msgid "Canvas"
-msgstr "Полотно"
-
msgid "Fallback Environment"
msgstr "ПереглÑд Ñередовища"
-msgid "Scenario"
-msgstr "Сценарій"
-
msgid "Plane"
msgstr "Площина"
diff --git a/editor/translations/properties/zh_CN.po b/editor/translations/properties/zh_CN.po
index d623c3ba30..6a8ffd2aa1 100644
--- a/editor/translations/properties/zh_CN.po
+++ b/editor/translations/properties/zh_CN.po
@@ -92,8 +92,8 @@ 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: 2023-02-10 10:44+0000\n"
-"Last-Translator: 风é’å±± <idleman@yeah.net>\n"
+"PO-Revision-Date: 2023-02-17 10:49+0000\n"
+"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-properties/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -112,6 +112,9 @@ msgstr "é…ç½®"
msgid "Name"
msgstr "å称"
+msgid "Name Localized"
+msgstr "å称本地化"
+
msgid "Description"
msgstr "æè¿°"
@@ -148,12 +151,24 @@ msgstr "窗å£"
msgid "Size"
msgstr "大å°"
+msgid "Viewport Width"
+msgstr "视å£å®½åº¦"
+
+msgid "Viewport Height"
+msgstr "视å£é«˜åº¦"
+
msgid "Mode"
msgstr "模å¼"
+msgid "Initial Position Type"
+msgstr "åˆå§‹ä½ç½®ç±»åž‹"
+
msgid "Initial Position"
msgstr "åˆå§‹ä½ç½®"
+msgid "Initial Screen"
+msgstr "åˆå§‹å±å¹•"
+
msgid "Resizable"
msgstr "å¯è°ƒæ•´å¤§å°"
@@ -172,6 +187,12 @@ msgstr "延伸至标题"
msgid "No Focus"
msgstr "关闭èšç„¦"
+msgid "Window Width Override"
+msgstr "窗å£å®½åº¦è¦†ç›–"
+
+msgid "Window Height Override"
+msgstr "窗å£é«˜åº¦è¦†ç›–"
+
msgid "Energy Saving"
msgstr "节能"
@@ -184,12 +205,36 @@ msgstr "音频"
msgid "Buses"
msgstr "总线"
+msgid "Default Bus Layout"
+msgstr "默认总线布局"
+
+msgid "General"
+msgstr "常规"
+
+msgid "2D Panning Strength"
+msgstr "2D 平移强度"
+
+msgid "3D Panning Strength"
+msgstr "3D 平移强度"
+
msgid "Editor"
msgstr "编辑器"
msgid "Main Run Args"
msgstr "主è¿è¡Œå‚æ•°"
+msgid "Script"
+msgstr "脚本"
+
+msgid "Search in File Extensions"
+msgstr "æœç´¢æ–‡ä»¶æ‰©å±•å"
+
+msgid "Templates Search Path"
+msgstr "模æ¿æœç´¢è·¯å¾„"
+
+msgid "Naming"
+msgstr "命å"
+
msgid "Default Signal Callback Name"
msgstr "默认信å·å›žè°ƒå称"
@@ -214,9 +259,36 @@ msgstr "调试"
msgid "Settings"
msgstr "设置"
+msgid "Profiler"
+msgstr "分æžå™¨"
+
+msgid "Max Functions"
+msgstr "最大函数数"
+
msgid "Compression"
msgstr "压缩"
+msgid "Formats"
+msgstr "æ ¼å¼"
+
+msgid "Zstd"
+msgstr "Zstd"
+
+msgid "Long Distance Matching"
+msgstr "é•¿è·ç¦»åŒ¹é…"
+
+msgid "Compression Level"
+msgstr "压缩级别"
+
+msgid "Window Log Size"
+msgstr "窗å£å¯¹æ•°å¤§å°"
+
+msgid "Zlib"
+msgstr "Zlib"
+
+msgid "Gzip"
+msgstr "Gzip"
+
msgid "Crash Handler"
msgstr "崩溃处ç†å™¨"
@@ -229,9 +301,21 @@ msgstr "渲染"
msgid "Occlusion Culling"
msgstr "é®æŒ¡å‰”除"
+msgid "BVH Build Quality"
+msgstr "BVH 构建质é‡"
+
+msgid "Memory"
+msgstr "内存"
+
msgid "Limits"
msgstr "é™åˆ¶"
+msgid "Multithreaded Server"
+msgstr "多线程æœåŠ¡å™¨"
+
+msgid "RID Pool Prealloc"
+msgstr "RID 池预分é…"
+
msgid "Internationalization"
msgstr "国际化"
@@ -241,6 +325,12 @@ msgstr "强制从å³è‡³å·¦çš„布局方å‘"
msgid "GUI"
msgstr "GUI"
+msgid "Timers"
+msgstr "计时器"
+
+msgid "Incremental Search Max Interval Msec"
+msgstr "增é‡æœç´¢æœ€å¤§é—´éš”(毫秒)"
+
msgid "Rendering Device"
msgstr "渲染设备"
@@ -260,7 +350,7 @@ msgid "Vulkan"
msgstr "Vulkan"
msgid "Max Descriptors per Pool"
-msgstr "å„池最大æ述符数"
+msgstr "å•æ± æœ€å¤§æ述符数"
msgid "Low Processor Usage Mode"
msgstr "低处ç†å™¨ä½¿ç”¨æ¨¡å¼"
@@ -418,15 +508,18 @@ msgstr "大端åº"
msgid "Network"
msgstr "网络"
+msgid "Remote FS"
+msgstr "远程文件系统"
+
msgid "Page Size"
msgstr "页大å°"
+msgid "Page Read Ahead"
+msgstr "预读页数"
+
msgid "Blocking Mode Enabled"
msgstr "å¯ç”¨é˜»å¡žæ¨¡å¼"
-msgid "Connection"
-msgstr "连接"
-
msgid "Read Chunk Size"
msgstr "读å–å—大å°"
@@ -436,12 +529,6 @@ msgstr "æ•°æ®"
msgid "Object ID"
msgstr "对象 ID"
-msgid "Original Class"
-msgstr "原始类"
-
-msgid "Recording Properties"
-msgstr "记录属性"
-
msgid "Encode Buffer Max Size"
msgstr "ç¼–ç ç¼“冲区最大大å°"
@@ -451,9 +538,6 @@ msgstr "输入缓冲区最大大å°"
msgid "Output Buffer Max Size"
msgstr "输出缓冲区最大大å°"
-msgid "Stream Peer"
-msgstr "æµå¯¹ç­‰ä½“"
-
msgid "Resource"
msgstr "资æº"
@@ -493,12 +577,30 @@ msgstr "ç§å­"
msgid "State"
msgstr "状æ€"
-msgid "Source Code"
-msgstr "æºä»£ç "
+msgid "Message Queue"
+msgstr "消æ¯é˜Ÿåˆ—"
+
+msgid "Max Size (KB)"
+msgstr "最大大å°ï¼ˆKB)"
+
+msgid "TCP"
+msgstr "TCP"
+
+msgid "Connect Timeout Seconds"
+msgstr "连接超时秒数"
+
+msgid "Packet Peer Stream"
+msgstr "æ•°æ®åŒ…对等体æµ"
+
+msgid "Max Buffer (Power of 2)"
+msgstr "最大缓冲区(2 的幂)"
msgid "TLS"
msgstr "TLS"
+msgid "Certificate Bundle Override"
+msgstr "è¯ä¹¦æ†ç»‘包覆盖"
+
msgid "Threading"
msgstr "多线程"
@@ -623,7 +725,7 @@ msgid "Profiler Frame Max Functions"
msgstr "性能分æžå™¨å¸§æœ€å¤§å‡½æ•°æ•°"
msgid "Default Feature Profile"
-msgstr "默认功能é…置文件"
+msgstr "默认功能é…ç½®"
msgid "Access"
msgstr "访问"
@@ -634,15 +736,6 @@ msgstr "显示模å¼"
msgid "File Mode"
msgstr "文件模å¼"
-msgid "Current Dir"
-msgstr "当å‰ç›®å½•"
-
-msgid "Current File"
-msgstr "当å‰æ–‡ä»¶"
-
-msgid "Current Path"
-msgstr "当å‰è·¯å¾„"
-
msgid "Show Hidden Files"
msgstr "显示éšè—文件"
@@ -688,6 +781,9 @@ msgstr "制作关键帧"
msgid "Deletable"
msgstr "å¯åˆ é™¤"
+msgid "Scene Name Casing"
+msgstr "场景å称大å°å†™"
+
msgid "Interface"
msgstr "ç•Œé¢"
@@ -748,18 +844,12 @@ msgstr "专注模å¼"
msgid "Base Type"
msgstr "基础类型"
-msgid "Edited Resource"
-msgstr "编辑资æº"
-
msgid "Editable"
msgstr "å¯ç¼–辑"
msgid "Toggle Mode"
msgstr "切æ¢æ¨¡å¼"
-msgid "Script Owner"
-msgstr "脚本所有者"
-
msgid "Editor Language"
msgstr "编辑器语言"
@@ -788,7 +878,7 @@ msgid "Code Font Contextual Ligatures"
msgstr "代ç å­—体上下文连字"
msgid "Code Font Custom OpenType Features"
-msgstr "代ç å­—体自定义 OpenType 功能"
+msgstr "代ç å­—体自定义 OpenType 特性"
msgid "Code Font Custom Variations"
msgstr "代ç å­—体自定义å˜ä½“"
@@ -842,7 +932,7 @@ msgid "Max Array Dictionary Items per Page"
msgstr "æ¯é¡µæœ€å¤§æ•°ç»„å­—å…¸æ¡ç›®æ•°"
msgid "Show Low Level OpenType Features"
-msgstr "显示低级 OpenType 功能"
+msgstr "显示低阶 OpenType 特性"
msgid "Theme"
msgstr "主题"
@@ -850,6 +940,9 @@ msgstr "主题"
msgid "Preset"
msgstr "预设"
+msgid "Enable Touchscreen Touch Area"
+msgstr "å¯ç”¨è§¦æ‘¸å±è§¦æ‘¸åŒº"
+
msgid "Icon and Font Color"
msgstr "图标与字体颜色"
@@ -998,7 +1091,7 @@ msgid "Line Length Guideline Hard Column"
msgstr "行长度硬å‚考线列数"
msgid "Gutters"
-msgstr "装订线"
+msgstr "è¾¹æ "
msgid "Show Line Numbers"
msgstr "显示行å·"
@@ -1202,10 +1295,10 @@ msgid "Default FOV"
msgstr "默认 FOV"
msgid "Default Z Near"
-msgstr "默认 Z Near"
+msgstr "é»˜è®¤è¿‘å¹³é¢ Z"
msgid "Default Z Far"
-msgstr "默认 Z Far"
+msgstr "é»˜è®¤è¿œå¹³é¢ Z"
msgid "Invert X Axis"
msgstr "翻转 X 轴"
@@ -1249,6 +1342,9 @@ msgstr "环绕惯性"
msgid "Translation Inertia"
msgstr "平移惯性"
+msgid "Zoom Inertia"
+msgstr "缩放惯性"
+
msgid "Freelook"
msgstr "自由观看"
@@ -1744,9 +1840,6 @@ msgstr "创建自"
msgid "Delimiter"
msgstr "分隔符"
-msgid "Preload"
-msgstr "预加载"
-
msgid "Character Ranges"
msgstr "字符范围"
@@ -1762,6 +1855,9 @@ msgstr "图片边è·"
msgid "Character Margin"
msgstr "字符边è·"
+msgid "High Quality"
+msgstr "高质é‡"
+
msgid "Lossy Quality"
msgstr "有æŸè´¨é‡"
@@ -1831,12 +1927,45 @@ msgstr "高级"
msgid "Precision"
msgstr "精度"
+msgid "Max Concavity"
+msgstr "最大凹度"
+
msgid "Symmetry Planes Clipping Bias"
msgstr "对称平é¢è£å‰ªåç½®"
+msgid "Revolution Axes Clipping Bias"
+msgstr "旋转轴è£å‰ªåç½®"
+
+msgid "Min Volume per Convex Hull"
+msgstr "å•å‡¸åŒ…最å°ä½“积"
+
+msgid "Resolution"
+msgstr "解æžåº¦"
+
+msgid "Max Num Vertices per Convex Hull"
+msgstr "å•å‡¸åŒ…最大顶点数"
+
+msgid "Plane Downsampling"
+msgstr "å¹³é¢é™é‡‡æ ·"
+
+msgid "Convexhull Downsampling"
+msgstr "凸包é™é‡‡æ ·"
+
msgid "Normalize Mesh"
msgstr "归一化网格"
+msgid "Convexhull Approximation"
+msgstr "凸包近似"
+
+msgid "Max Convex Hulls"
+msgstr "最大凸包数"
+
+msgid "Project Hull Vertices"
+msgstr "投射包顶点"
+
+msgid "Primitive"
+msgstr "图元"
+
msgid "Height"
msgstr "高度"
@@ -1855,15 +1984,15 @@ msgstr "ä¿å­˜ä¸ºæ–‡ä»¶"
msgid "Enabled"
msgstr "å¯ç”¨"
+msgid "Make Streamable"
+msgstr "使å¯æµå¼ä¼ è¾“"
+
msgid "Shadow Meshes"
msgstr "阴影网格"
msgid "Lightmap UV"
msgstr "光照贴图 UV"
-msgid "Lods"
-msgstr "LOD"
-
msgid "Normal Split Angle"
msgstr "法线拆分角度"
@@ -1918,9 +2047,6 @@ msgstr "网格"
msgid "Ensure Tangents"
msgstr "ç¡®ä¿åˆ‡çº¿"
-msgid "Generate Lods"
-msgstr "ç”Ÿæˆ LOD"
-
msgid "Create Shadow Meshes"
msgstr "创建阴影网格"
@@ -1939,6 +2065,12 @@ msgstr "使用具å蒙皮"
msgid "FPS"
msgstr "FPS"
+msgid "Trimming"
+msgstr "修剪"
+
+msgid "Remove Immutable Tracks"
+msgstr "移除ä¸å¯ä¿®æ”¹çš„轨é“"
+
msgid "Import Script"
msgstr "导入脚本"
@@ -2000,13 +2132,13 @@ msgid "Trim Alpha Border From Region"
msgstr "从区域修剪 Alpha 边框"
msgid "Force"
-msgstr "力"
+msgstr "强制"
msgid "8 Bit"
msgstr "8 ä½"
msgid "Mono"
-msgstr "Mono"
+msgstr "å•å£°é“"
msgid "Max Rate"
msgstr "最大频率"
@@ -2038,6 +2170,18 @@ msgstr "使用线程"
msgid "Available URLs"
msgstr "å¯ç”¨ URL"
+msgid "Current Group Idx"
+msgstr "当å‰åˆ†ç»„索引"
+
+msgid "Current Bone Idx"
+msgstr "当å‰éª¨éª¼ç´¢å¼•"
+
+msgid "Bone Mapper"
+msgstr "骨骼映射器"
+
+msgid "Handle Colors"
+msgstr "手柄颜色"
+
msgid "Unset"
msgstr "未设置"
@@ -2077,6 +2221,12 @@ msgstr "贴花"
msgid "Voxel GI"
msgstr "体素 GI"
+msgid "Lightmap Lines"
+msgstr "光照贴图线"
+
+msgid "Lightprobe Lines"
+msgstr "光照探针线"
+
msgid "Joint Body A"
msgstr "关节实体 A"
@@ -2101,6 +2251,9 @@ msgstr "显示视å£å¯¼èˆªå°å·¥å…·"
msgid "Auto Reload and Parse Scripts on Save"
msgstr "ä¿å­˜æ—¶è‡ªåŠ¨é‡æ–°åŠ è½½å¹¶è§£æžè„šæœ¬"
+msgid "Open Dominant Script on Scene Change"
+msgstr "场景å˜åŒ–时打开主è¦è„šæœ¬"
+
msgid "External"
msgstr "外部"
@@ -2137,6 +2290,9 @@ msgstr "选中骨骼"
msgid "Gizmo Settings"
msgstr "å°å·¥å…·è®¾ç½®"
+msgid "Bone Axis Length"
+msgstr "骨骼轴长度"
+
msgid "Bone Shape"
msgstr "骨骼形状"
@@ -2152,6 +2308,15 @@ msgstr "将警告当作错误"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "纹ç†"
+
+msgid "Separation"
+msgstr "é—´è·"
+
+msgid "Speed"
+msgstr "速度"
+
msgid "Version Control"
msgstr "版本控制"
@@ -2170,9 +2335,6 @@ msgstr "SSH 公钥路径"
msgid "SSH Private Key Path"
msgstr "SSH ç§é’¥è·¯å¾„"
-msgid "Edited Property"
-msgstr "编辑的属性"
-
msgid "Show Scene Tree Root Selection"
msgstr "显示场景树根选择"
@@ -2185,6 +2347,18 @@ msgstr "使用收è—根选择"
msgid "Flush stdout on Print"
msgstr "打å°æ—¶æ¸…空标准输出"
+msgid "Max Chars per Second"
+msgstr "æ¯ç§’最大字符数"
+
+msgid "Max Queued Messages"
+msgstr "最大排队消æ¯æ•°"
+
+msgid "Max Errors per Second"
+msgstr "æ¯ç§’最大错误数"
+
+msgid "Max Warnings per Second"
+msgstr "æ¯ç§’最大警告数"
+
msgid "File Logging"
msgstr "文件日志"
@@ -2194,6 +2368,9 @@ msgstr "å¯ç”¨æ–‡ä»¶æ—¥å¿—"
msgid "Log Path"
msgstr "日志路径"
+msgid "Max Log Files"
+msgstr "最大日志文件数"
+
msgid "Driver"
msgstr "驱动"
@@ -2254,6 +2431,9 @@ msgstr "输出 GPU é…ç½®"
msgid "Verbose stdout"
msgstr "冗长标准输出"
+msgid "Frame Delay Msec"
+msgstr "帧延迟(毫秒)"
+
msgid "Low Processor Mode"
msgstr "低处ç†å™¨æ¨¡å¼"
@@ -2269,11 +2449,8 @@ msgstr "éšè— Home 指示æ¡"
msgid "Hide Status Bar"
msgstr "éšè—状æ€æ "
-msgid "Input Devices"
-msgstr "输入设备"
-
-msgid "Pointing"
-msgstr "指点"
+msgid "Suppress UI Gesture"
+msgstr "抑制 UI 手势"
msgid "XR"
msgstr "XR"
@@ -2281,15 +2458,33 @@ msgstr "XR"
msgid "OpenXR"
msgstr "OpenXR"
+msgid "Default Action Map"
+msgstr "默认动作映射"
+
+msgid "Form Factor"
+msgstr "æž„æˆå› ç´ "
+
+msgid "View Configuration"
+msgstr "视图é…ç½®"
+
+msgid "Reference Space"
+msgstr "å‚照空间"
+
msgid "Submit Depth Buffer"
msgstr "æ交深度缓冲区"
+msgid "In Editor"
+msgstr "在编辑器中"
+
msgid "Boot Splash"
-msgstr "å¯åŠ¨é¡µ"
+msgstr "å¯åŠ¨ç”»é¢"
msgid "BG Color"
msgstr "背景色"
+msgid "Input Devices"
+msgstr "输入设备"
+
msgid "Pen Tablet"
msgstr "æ•°ä½æ¿"
@@ -2317,12 +2512,21 @@ msgstr "使用过滤"
msgid "Icon"
msgstr "图标"
+msgid "macOS Native Icon"
+msgstr "macOS 原生图标"
+
+msgid "Windows Native Icon"
+msgstr "Windows 原生图标"
+
msgid "Buffering"
msgstr "缓冲"
msgid "Agile Event Flushing"
msgstr "æ•æ·äº‹ä»¶å¤„ç†"
+msgid "Pointing"
+msgstr "指点"
+
msgid "Emulate Touch From Mouse"
msgstr "用鼠标模拟触摸"
@@ -2335,12 +2539,18 @@ msgstr "文本驱动"
msgid "Mouse Cursor"
msgstr "鼠标光标"
+msgid "Custom Image"
+msgstr "自定义图åƒ"
+
msgid "Custom Image Hotspot"
msgstr "自定义图åƒçƒ­åŒº"
msgid "Tooltip Position Offset"
msgstr "工具æ示ä½ç½®å移"
+msgid "Minimum Display Time"
+msgstr "最短显示时间"
+
msgid "Dotnet"
msgstr ".NET"
@@ -2389,8 +2599,11 @@ msgstr "使用过采样"
msgid "Textures"
msgstr "纹ç†"
+msgid "Canvas Textures"
+msgstr "画布纹ç†"
+
msgid "Default Texture Filter"
-msgstr "默认纹ç†è¿‡æ»¤å™¨"
+msgstr "默认纹ç†è¿‡æ»¤"
msgid "Default Texture Repeat"
msgstr "默认纹ç†é‡å¤"
@@ -2515,6 +2728,9 @@ msgstr "注解颜色"
msgid "String Name Color"
msgstr "StringName 颜色"
+msgid "Max Call Stack"
+msgstr "最大调用堆栈"
+
msgid "Exclude Addons"
msgstr "排除æ’件"
@@ -2530,6 +2746,9 @@ msgstr "编辑器中显示原生符å·"
msgid "Use Thread"
msgstr "使用线程"
+msgid "Embedded Image Handling"
+msgstr "嵌入图åƒå¤„ç†"
+
msgid "Color"
msgstr "颜色"
@@ -2620,15 +2839,27 @@ msgstr "唯一动画å称"
msgid "Skeletons"
msgstr "骨架"
+msgid "Skeleton to Node"
+msgstr "骨架转节点"
+
msgid "Create Animations"
msgstr "创建动画"
msgid "Animations"
msgstr "动画"
+msgid "Handle Binary Image"
+msgstr "处ç†äºŒè¿›åˆ¶å›¾åƒ"
+
msgid "Blender"
msgstr "Blender"
+msgid "RPC Port"
+msgstr "RPC 端å£"
+
+msgid "RPC Server Uptime"
+msgstr "RPC æœåŠ¡å™¨åœ¨çº¿æ—¶é—´"
+
msgid "Blender 3 Path"
msgstr "Blender 3 路径"
@@ -2698,6 +2929,15 @@ msgstr "é€è§†"
msgid "FOV"
msgstr "FOV"
+msgid "Size Mag"
+msgstr "放大大å°"
+
+msgid "Depth Far"
+msgstr "深度远平é¢"
+
+msgid "Depth Near"
+msgstr "深度近平é¢"
+
msgid "Blend Weights"
msgstr "æ··åˆæƒé‡"
@@ -2734,9 +2974,6 @@ msgstr "蒙皮根"
msgid "Joints Original"
msgstr "原关节"
-msgid "Inverse Binds"
-msgstr "å转绑定"
-
msgid "Non Joints"
msgstr "éžå…³èŠ‚"
@@ -2750,10 +2987,16 @@ msgid "Sampler"
msgstr "采样器"
msgid "Mag Filter"
-msgstr "放大过滤器"
+msgstr "放大过滤"
msgid "Min Filter"
-msgstr "缩å°è¿‡æ»¤å™¨"
+msgstr "缩å°è¿‡æ»¤"
+
+msgid "Wrap S"
+msgstr "包裹 S"
+
+msgid "Wrap T"
+msgstr "包裹 T"
msgid "Palette Min Width"
msgstr "调色æ¿æœ€å°å®½åº¦"
@@ -2819,25 +3062,25 @@ msgid "Bake Performance"
msgstr "烘焙性能"
msgid "Max Rays per Pass"
-msgstr "æ¯ä¸ªé€šé“的最大射线数"
+msgstr "å•é€šé“最大射线数"
msgid "Region Size"
-msgstr "区å—大å°"
+msgstr "区域大å°"
msgid "Low Quality Probe Ray Count"
-msgstr "低等质é‡æŽ¢é’ˆå°„线计数"
+msgstr "低等质é‡æŽ¢é’ˆå°„线数"
msgid "Medium Quality Probe Ray Count"
-msgstr "中等质é‡æŽ¢é’ˆå°„线计数"
+msgstr "中等质é‡æŽ¢é’ˆå°„线数"
msgid "High Quality Probe Ray Count"
-msgstr "高等质é‡æŽ¢é’ˆå°„线计数"
+msgstr "高等质é‡æŽ¢é’ˆå°„线数"
msgid "Ultra Quality Probe Ray Count"
-msgstr "超高质é‡æŽ¢é’ˆå°„线计数"
+msgstr "超高质é‡æŽ¢é’ˆå°„线数"
msgid "Max Rays per Probe Pass"
-msgstr "探针æ¯ä¸ªé˜¶æ®µçš„最大射线数"
+msgstr "探针å•é˜¶æ®µæœ€å¤§å°„线数"
msgid "Primitive Meshes"
msgstr "基本网格"
@@ -2866,6 +3109,9 @@ msgstr "IOD"
msgid "Display Width"
msgstr "显示宽度"
+msgid "Display to Lens"
+msgstr "显示器至镜头"
+
msgid "Oversample"
msgstr "过采样"
@@ -2929,9 +3175,15 @@ msgstr "空隙度"
msgid "Gain"
msgstr "增益"
+msgid "Weighted Strength"
+msgstr "加æƒå¼ºåº¦"
+
msgid "Ping Pong Strength"
msgstr "乒乓强度"
+msgid "Cellular"
+msgstr "细胞"
+
msgid "Distance Function"
msgstr "è·ç¦»å‡½æ•°"
@@ -2941,18 +3193,39 @@ msgstr "抖动"
msgid "Return Type"
msgstr "返回类型"
+msgid "Domain Warp"
+msgstr "域扭曲"
+
+msgid "Amplitude"
+msgstr "振幅"
+
msgid "Fractal Type"
msgstr "分形类型"
+msgid "Fractal Octaves"
+msgstr "分形å€é¢‘"
+
+msgid "Fractal Lacunarity"
+msgstr "分形空隙"
+
+msgid "Fractal Gain"
+msgstr "分形增益"
+
msgid "Width"
msgstr "宽度"
msgid "Invert"
msgstr "翻转"
+msgid "In 3D Space"
+msgstr "在 3D 空间"
+
msgid "Seamless"
msgstr "æ— ç¼"
+msgid "Seamless Blend Skirt"
+msgstr "æ— ç¼æ··è¾¹"
+
msgid "As Normal Map"
msgstr "作为法线贴图"
@@ -2971,9 +3244,27 @@ msgstr "本地化å称"
msgid "Action Type"
msgstr "动作类型"
+msgid "Toplevel Paths"
+msgstr "顶层路径"
+
+msgid "Paths"
+msgstr "路径"
+
msgid "Interaction Profile Path"
msgstr "交互é…置路径"
+msgid "Display Refresh Rate"
+msgstr "显示刷新率"
+
+msgid "Hand"
+msgstr "手别"
+
+msgid "Motion Range"
+msgstr "è¿åŠ¨èŒƒå›´"
+
+msgid "Hand Skeleton"
+msgstr "手骨架"
+
msgid "Subject"
msgstr "对象"
@@ -3091,6 +3382,12 @@ msgstr "自适应å‰æ™¯ 432×432"
msgid "Adaptive Background 432 X 432"
msgstr "自适应背景 432×432"
+msgid "Gradle Build"
+msgstr "Gradle 构建"
+
+msgid "Use Gradle Build"
+msgstr "使用 Gradle 构建"
+
msgid "Export Format"
msgstr "导出格å¼"
@@ -3290,7 +3587,7 @@ msgid "App Store Team ID"
msgstr "App Store 团队 ID"
msgid "Provisioning Profile UUID Debug"
-msgstr "调试é…置文件 UUID"
+msgstr "调试é…ç½® UUID"
msgid "Code Sign Identity Debug"
msgstr "调试代ç ç­¾å身份"
@@ -3299,7 +3596,7 @@ msgid "Export Method Debug"
msgstr "调试导出方法"
msgid "Provisioning Profile UUID Release"
-msgstr "å‘布é…置文件 UUID"
+msgstr "å‘布é…ç½® UUID"
msgid "Code Sign Identity Release"
msgstr "å‘布代ç ç­¾å身份"
@@ -3790,6 +4087,9 @@ msgstr "文件æè¿°"
msgid "Trademarks"
msgstr "商标"
+msgid "Sprite Frames"
+msgstr "ç²¾çµå¸§"
+
msgid "Frame"
msgstr "帧å·"
@@ -3820,6 +4120,9 @@ msgstr "空间覆盖"
msgid "Point"
msgstr "点"
+msgid "Point Unit Distance"
+msgstr "点å•ä½è·ç¦»"
+
msgid "Point Center"
msgstr "点中心"
@@ -3880,9 +4183,6 @@ msgstr "锚点模å¼"
msgid "Ignore Rotation"
msgstr "忽略旋转"
-msgid "Custom Viewport"
-msgstr "自定义视å£"
-
msgid "Process Callback"
msgstr "处ç†å›žè°ƒ"
@@ -3890,13 +4190,13 @@ msgid "Left"
msgstr "å·¦"
msgid "Top"
-msgstr "顶部"
+msgstr "顶"
msgid "Right"
msgstr "å³"
msgid "Bottom"
-msgstr "底部"
+msgstr "底"
msgid "Smoothed"
msgstr "平滑"
@@ -3913,9 +4213,6 @@ msgstr "ä½ç½®å¹³æ»‘速度"
msgid "Rotation Smoothing"
msgstr "旋转平滑"
-msgid "Speed"
-msgstr "速度"
-
msgid "Drag"
msgstr "拖动"
@@ -4027,9 +4324,6 @@ msgstr "本地åæ ‡"
msgid "Draw Order"
msgstr "绘制顺åº"
-msgid "Texture"
-msgstr "纹ç†"
-
msgid "Emission Shape"
msgstr "å‘射形状"
@@ -4186,6 +4480,12 @@ msgstr "å¯è§çŸ©å½¢"
msgid "Trails"
msgstr "尾迹"
+msgid "Sections"
+msgstr "节"
+
+msgid "Section Subdivisions"
+msgstr "节细分"
+
msgid "Node A"
msgstr "节点 A"
@@ -4241,7 +4541,7 @@ msgid "Shadow"
msgstr "阴影"
msgid "Filter Smooth"
-msgstr "过滤器平滑"
+msgstr "过滤平滑"
msgid "Texture Scale"
msgstr "纹ç†ç¼©æ”¾"
@@ -4327,6 +4627,9 @@ msgstr "é¿éšœ"
msgid "Avoidance Enabled"
msgstr "å¯ç”¨é¿éšœ"
+msgid "Neighbor Distance"
+msgstr "邻接è·ç¦»"
+
msgid "Max Neighbors"
msgstr "最大相邻数"
@@ -4342,6 +4645,9 @@ msgstr "åŒå‘çš„"
msgid "Start Position"
msgstr "开始ä½ç½®"
+msgid "End Position"
+msgstr "结æŸä½ç½®"
+
msgid "Enter Cost"
msgstr "进入消耗"
@@ -4354,27 +4660,9 @@ msgstr "ä¼°ç®—åŠå¾„"
msgid "Navigation Polygon"
msgstr "导航多边形"
-msgid "Rotation Degrees"
-msgstr "旋转角度"
-
msgid "Skew"
msgstr "åæ–œ"
-msgid "Global Rotation"
-msgstr "全局旋转"
-
-msgid "Global Rotation Degrees"
-msgstr "全局旋转角度"
-
-msgid "Global Scale"
-msgstr "全局缩放"
-
-msgid "Global Skew"
-msgstr "全局倾斜"
-
-msgid "Global Transform"
-msgstr "全局å˜æ¢"
-
msgid "Scroll"
msgstr "滚动"
@@ -4573,6 +4861,9 @@ msgstr "排除父节点"
msgid "Target Position"
msgstr "目标ä½ç½®"
+msgid "Hit From Inside"
+msgstr "从内部命中"
+
msgid "Collide With"
msgstr "å‚与碰撞"
@@ -4669,6 +4960,9 @@ msgstr "ç»è¿‡ç‚¹å‡»"
msgid "Visibility Mode"
msgstr "å¯è§æ¨¡å¼"
+msgid "Enabling"
+msgstr "å¯ç”¨"
+
msgid "Node Path"
msgstr "节点路径"
@@ -4751,10 +5045,10 @@ msgid "Frustum Offset"
msgstr "视锥å移"
msgid "Near"
-msgstr "Near"
+msgstr "è¿‘å¹³é¢"
msgid "Far"
-msgstr "Far"
+msgstr "远平é¢"
msgid "Ray Pickable"
msgstr "射线å¯æ‹¾å–"
@@ -4793,7 +5087,7 @@ msgid "Albedo"
msgstr "å照率"
msgid "Normal"
-msgstr "法线"
+msgstr "正常"
msgid "Orm"
msgstr "Orm"
@@ -4819,6 +5113,12 @@ msgstr "法线淡化"
msgid "Vertical Fade"
msgstr "垂直淡化"
+msgid "Upper Fade"
+msgstr "上侧淡出"
+
+msgid "Lower Fade"
+msgstr "下侧淡出"
+
msgid "Distance Fade"
msgstr "è·ç¦»æ·¡å‡º"
@@ -4858,6 +5158,9 @@ msgstr "骨架路径"
msgid "Solver Priority"
msgstr "求解器优先级"
+msgid "Exclude Nodes From Collision"
+msgstr "从碰撞中排除节点"
+
msgid "Params"
msgstr "å‚æ•°"
@@ -4978,6 +5281,9 @@ msgstr "Alpha 切除"
msgid "Alpha Scissor Threshold"
msgstr "Alpha è£å‰ªé˜ˆå€¼"
+msgid "Alpha Hash Scale"
+msgstr "Alpha 哈希比例"
+
msgid "Alpha Antialiasing Mode"
msgstr "Alpha 抗锯齿模å¼"
@@ -4985,7 +5291,7 @@ msgid "Alpha Antialiasing Edge"
msgstr "边缘 Alpha 抗锯齿"
msgid "Texture Filter"
-msgstr "纹ç†è¿‡æ»¤å™¨"
+msgstr "纹ç†è¿‡æ»¤"
msgid "Render Priority"
msgstr "渲染优先级"
@@ -5062,6 +5368,9 @@ msgstr "法线åç½®"
msgid "Reverse Cull Face"
msgstr "å转剔除表é¢"
+msgid "Transmittance Bias"
+msgstr "é€å°„率åç½®"
+
msgid "Opacity"
msgstr "ä¸é€æ˜Žåº¦"
@@ -5137,6 +5446,9 @@ msgstr "自定义能é‡"
msgid "Camera Attributes"
msgstr "相机属性"
+msgid "Gen Probes"
+msgstr "生æˆæŽ¢é’ˆ"
+
msgid "Subdiv"
msgstr "细分"
@@ -5332,6 +5644,9 @@ msgstr "色彩能é‡"
msgid "Bones"
msgstr "骨骼"
+msgid "Motion Scale"
+msgstr "è¿åŠ¨ç¼©æ”¾"
+
msgid "Show Rest Only"
msgstr "仅显示放æ¾"
@@ -5554,6 +5869,12 @@ msgstr "淡入淡出时间"
msgid "Xfade Curve"
msgstr "淡入淡出曲线"
+msgid "Allow Transition to Self"
+msgstr "å…许自我过渡"
+
+msgid "Input Count"
+msgstr "输入数"
+
msgid "Request"
msgstr "请求"
@@ -5566,6 +5887,9 @@ msgstr "å åŠ é‡"
msgid "Blend Amount"
msgstr "æ··åˆé‡"
+msgid "Seek Request"
+msgstr "检索请求"
+
msgid "Current Index"
msgstr "当å‰ç´¢å¼•"
@@ -5593,24 +5917,18 @@ msgstr "æ¡ä»¶"
msgid "Expression"
msgstr "表达å¼"
+msgid "Libraries"
+msgstr "库"
+
msgid "Root Node"
msgstr "根节点"
msgid "Current Animation"
msgstr "当å‰åŠ¨ç”»"
-msgid "Assigned Animation"
-msgstr "分é…动画"
-
msgid "Reset on Save"
msgstr "ä¿å­˜æ—¶é‡ç½®"
-msgid "Current Animation Length"
-msgstr "当å‰åŠ¨ç”»é•¿åº¦"
-
-msgid "Current Animation Position"
-msgstr "当å‰åŠ¨ç”»ä½ç½®"
-
msgid "Playback Options"
msgstr "播放选项"
@@ -5623,6 +5941,9 @@ msgstr "默认混åˆæ—¶é—´"
msgid "Method Call Mode"
msgstr "方法调用模å¼"
+msgid "Audio Max Polyphony"
+msgstr "音频最大å¤éŸ³æ•°"
+
msgid "Movie Quit on Finish"
msgstr "结æŸæ—¶é€€å‡ºç”µå½±"
@@ -5677,12 +5998,21 @@ msgstr "å¿«æ·é”®å馈"
msgid "Shortcut in Tooltip"
msgstr "工具æ示显示快æ·é”®"
+msgid "Button Shortcut Feedback Highlight Time"
+msgstr "按钮快æ·é”®å馈高亮时间"
+
+msgid "Text Behavior"
+msgstr "文本行为"
+
msgid "Text Overrun Behavior"
msgstr "文本超é™è¡Œä¸º"
msgid "Clip Text"
msgstr "è£å‰ªæ–‡æœ¬"
+msgid "Icon Behavior"
+msgstr "图标行为"
+
msgid "Icon Alignment"
msgstr "图标对é½"
@@ -5749,6 +6079,9 @@ msgstr "自动补全大括å·"
msgid "Highlight Matching"
msgstr "高亮匹é…项"
+msgid "Pairs"
+msgstr "æˆå¯¹ç¬¦å·"
+
msgid "Edit Alpha"
msgstr "编辑 Alpha"
@@ -5822,7 +6155,7 @@ msgid "Auto Translate"
msgstr "自动翻译"
msgid "Localize Numeral System"
-msgstr "本地化数字系统"
+msgstr "本地化记数系统"
msgid "Tooltip"
msgstr "工具æ示"
@@ -6178,6 +6511,9 @@ msgstr "相对索引"
msgid "Bbcode Enabled"
msgstr "å¯ç”¨ Bbcode"
+msgid "Fit Content"
+msgstr "适é…内容"
+
msgid "Scroll Active"
msgstr "滚动激活"
@@ -6292,6 +6628,9 @@ msgstr "选项å¡"
msgid "Tabs Visible"
msgstr "选项å¡å¯è§"
+msgid "All Tabs in Front"
+msgstr "所有选项å¡å‰ç½®"
+
msgid "Use Hidden Tabs for Min Size"
msgstr "最å°å¤§å°è€ƒè™‘éšè—选项å¡"
@@ -6322,6 +6661,12 @@ msgstr "å³é”®ç‚¹å‡»æ—¶ç§»åŠ¨"
msgid "Multiple"
msgstr "多个"
+msgid "Text Edit Idle Detect (sec)"
+msgstr "TextEdit 空闲检测(秒)"
+
+msgid "Text Edit Undo Stack Max Size"
+msgstr "TextEdit 撤消栈最大大å°"
+
msgid "Hover"
msgstr "悬åœ"
@@ -6394,9 +6739,6 @@ msgstr "å¯ç”¨åž‚直滚动"
msgid "Audio Track"
msgstr "音频轨é“"
-msgid "Volume"
-msgstr "体积"
-
msgid "Paused"
msgstr "æš‚åœ"
@@ -6406,9 +6748,6 @@ msgstr "扩展"
msgid "Buffering Msec"
msgstr "缓冲毫秒"
-msgid "Stream Position"
-msgstr "æµä½ç½®"
-
msgid "Self Modulate"
msgstr "自我调制"
@@ -6472,23 +6811,17 @@ msgstr "最大跳转"
msgid "Timeout"
msgstr "超时"
-msgid "Multiplayer Peer"
-msgstr "多人对等体"
-
msgid "Transfer Mode"
msgstr "传输模å¼"
msgid "Transfer Channel"
msgstr "传输通é“"
-msgid "Scene File Path"
-msgstr "场景文件路径"
-
-msgid "Owner"
-msgstr "拥有者"
+msgid "Node Name Num Separator"
+msgstr "节点å称编å·åˆ†éš”符"
-msgid "Multiplayer"
-msgstr "多人"
+msgid "Node Name Casing"
+msgstr "节点å称大å°å†™"
msgid "Editor Description"
msgstr "编辑器æè¿°"
@@ -6505,15 +6838,6 @@ msgstr "调试路径æ示"
msgid "Debug Navigation Hint"
msgstr "调试导航æ示"
-msgid "Edited Scene Root"
-msgstr "编辑场景根"
-
-msgid "Current Scene"
-msgstr "当å‰åœºæ™¯"
-
-msgid "Root"
-msgstr "æ ¹"
-
msgid "Multiplayer Poll"
msgstr "多人轮询"
@@ -6532,6 +6856,9 @@ msgstr "几何体颜色"
msgid "Geometry Width"
msgstr "几何体宽度"
+msgid "Max Contacts Displayed"
+msgstr "最大显示接触数"
+
msgid "Draw 2D Outlines"
msgstr "绘制 2D 轮廓"
@@ -6562,12 +6889,24 @@ msgstr "使用去æ¡å¸¦"
msgid "Use Occlusion Culling"
msgstr "使用é®æŒ¡å‰”除"
+msgid "Mesh LOD"
+msgstr "网格 LOD"
+
+msgid "LOD Change"
+msgstr "LOD 更改"
+
+msgid "Threshold Pixels"
+msgstr "阈值åƒç´ "
+
msgid "Snap 2D Transforms to Pixel"
msgstr "å°† 2D å˜æ¢æ•æ‰åˆ°åƒç´ "
msgid "Snap 2D Vertices to Pixel"
msgstr "å°† 2D 顶点å¸é™„到åƒç´ "
+msgid "VRS"
+msgstr "VRS"
+
msgid "Lights and Shadows"
msgstr "ç¯å…‰ä¸Žé˜´å½±"
@@ -6578,7 +6917,19 @@ msgid "Atlas Size"
msgstr "图集大å°"
msgid "Atlas 16 Bits"
-msgstr "图集 16 ä½"
+msgstr "16 ä½å›¾é›†"
+
+msgid "Atlas Quadrant 0 Subdiv"
+msgstr "å›¾é›†è±¡é™ 0 细分"
+
+msgid "Atlas Quadrant 1 Subdiv"
+msgstr "å›¾é›†è±¡é™ 1 细分"
+
+msgid "Atlas Quadrant 2 Subdiv"
+msgstr "å›¾é›†è±¡é™ 2 细分"
+
+msgid "Atlas Quadrant 3 Subdiv"
+msgstr "å›¾é›†è±¡é™ 3 细分"
msgid "SDF"
msgstr "SDF"
@@ -6586,6 +6937,9 @@ msgstr "SDF"
msgid "Oversize"
msgstr "显示缩放"
+msgid "Default Environment"
+msgstr "默认环境"
+
msgid "Enable Object Picking"
msgstr "å¯ç”¨å¯¹è±¡æ‹¾å–"
@@ -6610,9 +6964,6 @@ msgstr "自有 3D 世界"
msgid "World 3D"
msgstr "3D 世界"
-msgid "World 2D"
-msgstr "2D 世界"
-
msgid "Transparent BG"
msgstr "é€æ˜ŽèƒŒæ™¯"
@@ -6655,6 +7006,9 @@ msgstr "å¯ç”¨ 3D"
msgid "Object Picking"
msgstr "对象拾å–"
+msgid "Object Picking Sort"
+msgstr "对象拾å–排åº"
+
msgid "Disable Input"
msgstr "ç¦ç”¨è¾“å…¥"
@@ -6676,15 +7030,12 @@ msgstr "四方形 2"
msgid "Quad 3"
msgstr "四方形 3"
-msgid "Canvas Transform"
-msgstr "画布å˜æ¢"
-
-msgid "Global Canvas Transform"
-msgstr "全局画布å˜æ¢"
-
msgid "Canvas Cull Mask"
msgstr "画布剔除é®ç½©"
+msgid "Tooltip Delay (sec)"
+msgstr "工具æ示延迟(毫秒)"
+
msgid "Size 2D Override"
msgstr "2D 大å°è¦†ç›–"
@@ -6770,7 +7121,7 @@ msgid "Stereo"
msgstr "立体声"
msgid "Profile"
-msgstr "é…置文件"
+msgstr "é…ç½®"
msgid "Bonemap"
msgstr "骨骼映射"
@@ -6782,7 +7133,7 @@ msgid "Sensitivity"
msgstr "çµæ•åº¦"
msgid "Multiplier"
-msgstr "乘数"
+msgstr "å€æ•°"
msgid "Auto Exposure"
msgstr "自动æ›å…‰"
@@ -7231,9 +7582,6 @@ msgstr "关闭颜色"
msgid "Resizer Color"
msgstr "大å°è°ƒæ•´å™¨é¢œè‰²"
-msgid "Separation"
-msgstr "é—´è·"
-
msgid "Title Offset"
msgstr "标题å移"
@@ -7550,7 +7898,7 @@ msgid "Node"
msgstr "节点"
msgid "Energy Multiplier"
-msgstr "能é‡å€å¢žå™¨"
+msgstr "能é‡å€æ•°"
msgid "Canvas Max Layer"
msgstr "画布最大层"
@@ -7601,7 +7949,7 @@ msgid "SSAO"
msgstr "SSAO"
msgid "Power"
-msgstr "力é‡"
+msgstr "力度"
msgid "Detail"
msgstr "细节"
@@ -7610,7 +7958,7 @@ msgid "Horizon"
msgstr "地平线"
msgid "Sharpness"
-msgstr "边缘é”度"
+msgstr "é”度"
msgid "Light Affect"
msgstr "光照影å“"
@@ -7738,6 +8086,9 @@ msgstr "细节传播"
msgid "Ambient Inject"
msgstr "环境光注入"
+msgid "Temporal Reprojection"
+msgstr "时间é‡æŠ•å½±"
+
msgid "Adjustments"
msgstr "调整"
@@ -7759,24 +8110,6 @@ msgstr "边缘淡化"
msgid "Density Texture"
msgstr "密度纹ç†"
-msgid "Font Name"
-msgstr "字体å称"
-
-msgid "Style Name"
-msgstr "æ ·å¼å称"
-
-msgid "Font Style"
-msgstr "字体样å¼"
-
-msgid "Font Weight"
-msgstr "å­—é‡"
-
-msgid "Font Stretch"
-msgstr "字体拉伸"
-
-msgid "OpenType Feature Overrides"
-msgstr "OpenType 功能覆盖"
-
msgid "Base Font"
msgstr "基础字体"
@@ -7795,6 +8128,12 @@ msgstr "字体å称"
msgid "Font Italic"
msgstr "字体斜体"
+msgid "Font Weight"
+msgstr "å­—é‡"
+
+msgid "Font Stretch"
+msgstr "字体拉伸"
+
msgid "Interpolation Mode"
msgstr "æ’值模å¼"
@@ -7900,6 +8239,15 @@ msgstr "翻转纹ç†"
msgid "Subsurface Scattering"
msgstr "次表é¢æ•£å°„"
+msgid "Skin Mode"
+msgstr "皮肤模å¼"
+
+msgid "Transmittance"
+msgstr "é€å°„率"
+
+msgid "Boost"
+msgstr "增强"
+
msgid "Back Lighting"
msgstr "背部照明"
@@ -7933,6 +8281,15 @@ msgstr "采样"
msgid "Shadows"
msgstr "阴影"
+msgid "Disable Receive Shadows"
+msgstr "ç¦ç”¨æŽ¥æ”¶é˜´å½±"
+
+msgid "Shadow to Opacity"
+msgstr "阴影到ä¸é€æ˜Žåº¦"
+
+msgid "Keep Scale"
+msgstr "ä¿æŒæ¯”例"
+
msgid "Particles Anim"
msgstr "ç²’å­åŠ¨ç”»"
@@ -7990,6 +8347,9 @@ msgstr "预览"
msgid "Transform Format"
msgstr "å˜æ¢æ ¼å¼"
+msgid "Use Colors"
+msgstr "使用颜色"
+
msgid "Use Custom Data"
msgstr "使用自定义数æ®"
@@ -7999,18 +8359,6 @@ msgstr "实例数"
msgid "Visible Instance Count"
msgstr "å¯è§å®žä¾‹æ•°"
-msgid "Transform Array"
-msgstr "å˜æ¢æ•°ç»„"
-
-msgid "Transform 2D Array"
-msgstr "å˜æ¢ 2D 数组"
-
-msgid "Color Array"
-msgstr "颜色数组"
-
-msgid "Custom Data Array"
-msgstr "自定义数æ®æ•°ç»„"
-
msgid "Partition Type"
msgstr "分区类型"
@@ -8047,6 +8395,9 @@ msgstr "边界"
msgid "Max Error"
msgstr "最大误差"
+msgid "Vertices per Polygon"
+msgstr "å•å¤šè¾¹å½¢é¡¶ç‚¹æ•°"
+
msgid "Details"
msgstr "细节"
@@ -8095,9 +8446,15 @@ msgstr "最大缩放"
msgid "Scale Curve"
msgstr "缩放曲线"
+msgid "Turbulence"
+msgstr "扰动"
+
msgid "Noise Strength"
msgstr "噪声强度"
+msgid "Noise Scale"
+msgstr "噪声比例"
+
msgid "Noise Speed"
msgstr "噪声速度"
@@ -8110,9 +8467,27 @@ msgstr "最å°å½±å“"
msgid "Influence Max"
msgstr "最大影å“"
+msgid "Initial Displacement Min"
+msgstr "最å°åˆå§‹ä½ç§»"
+
+msgid "Initial Displacement Max"
+msgstr "最大åˆå§‹ä½ç§»"
+
+msgid "Influence over Life"
+msgstr "éšç”Ÿå‘½å‘¨æœŸçš„å½±å“"
+
+msgid "Amount at End"
+msgstr "结æŸæ—¶æ•°é‡"
+
+msgid "Amount at Collision"
+msgstr "碰撞时数é‡"
+
msgid "Keep Velocity"
msgstr "ä¿æŒé€Ÿåº¦"
+msgid "Attractor Interaction"
+msgstr "å¸å¼•å™¨äº¤äº’"
+
msgid "Use Scale"
msgstr "使用缩放"
@@ -8155,6 +8530,21 @@ msgstr "从左到å³"
msgid "Is Hemisphere"
msgstr "是å¦åŠçƒ"
+msgid "Ring Segments"
+msgstr "环段数"
+
+msgid "Radial Steps"
+msgstr "径å‘步数"
+
+msgid "Section Length"
+msgstr "节长度"
+
+msgid "Section Rings"
+msgstr "节环数"
+
+msgid "Section Segments"
+msgstr "节段数"
+
msgid "Curve Step"
msgstr "曲线步长"
@@ -8164,12 +8554,27 @@ msgstr "A"
msgid "B"
msgstr "B"
+msgid "Slide on Slope"
+msgstr "æ–œå¡æ»‘动"
+
msgid "Custom Solver Bias"
msgstr "自定义求解器åç½®"
+msgid "Execution Mode"
+msgstr "执行模å¼"
+
msgid "Target Nodepath"
msgstr "目标节点路径"
+msgid "Tip Nodepath"
+msgstr "尖端节点路径"
+
+msgid "Jiggle Data Chain Length"
+msgstr "Jiggle æ•°æ®é“¾é•¿åº¦"
+
+msgid "Default Joint Settings"
+msgstr "默认关节设置"
+
msgid "Use Gravity"
msgstr "使用é‡åŠ›"
@@ -8179,6 +8584,30 @@ msgstr "骨骼索引"
msgid "Bone 2D Node"
msgstr "Bone2D 节点"
+msgid "Physical Bone Chain Length"
+msgstr "物ç†éª¨é“¾é•¿åº¦"
+
+msgid "Target Minimum Distance"
+msgstr "目标最å°è·ç¦»"
+
+msgid "Target Maximum Distance"
+msgstr "目标最大è·ç¦»"
+
+msgid "Flip Bend Direction"
+msgstr "翻转弯曲方å‘"
+
+msgid "Modification Count"
+msgstr "修改数"
+
+msgid "Scale Base Bone"
+msgstr "缩放基础骨骼"
+
+msgid "Group Size"
+msgstr "分组大å°"
+
+msgid "Bone Size"
+msgstr "骨骼大å°"
+
msgid "Bind Count"
msgstr "绑定数"
@@ -8200,6 +8629,12 @@ msgstr "顶部颜色"
msgid "Horizon Color"
msgstr "地平线颜色"
+msgid "Cover"
+msgstr "天穹"
+
+msgid "Cover Modulate"
+msgstr "天穹调制"
+
msgid "Ground"
msgstr "地é¢"
@@ -8227,9 +8662,15 @@ msgstr "å心率"
msgid "Turbidity"
msgstr "浊度"
+msgid "Sun Disk Scale"
+msgstr "太阳盘缩放"
+
msgid "Ground Color"
msgstr "地é¢é¢œè‰²"
+msgid "Night Sky"
+msgstr "夜空"
+
msgid "Content Margins"
msgstr "内容边è·"
@@ -8272,6 +8713,24 @@ msgstr "关键è¯é¢œè‰²"
msgid "Member Keyword Colors"
msgstr "æˆå‘˜å…³é”®è¯é¢œè‰²"
+msgid "Color Regions"
+msgstr "ç€è‰²åŒºåŸŸ"
+
+msgid "Preserve Invalid"
+msgstr "ä¿ç•™æ— æ•ˆå­—符"
+
+msgid "Preserve Control"
+msgstr "ä¿ç•™æŽ§åˆ¶å­—符"
+
+msgid "Custom Punctuation"
+msgstr "自定义标点"
+
+msgid "Break Flags"
+msgstr "断行标志"
+
+msgid "Justification Flags"
+msgstr "调整标志"
+
msgid "Size Override"
msgstr "尺寸覆盖"
@@ -8314,9 +8773,6 @@ msgstr "终点"
msgid "Frames"
msgstr "帧"
-msgid "Current Frame"
-msgstr "当å‰å¸§"
-
msgid "Pause"
msgstr "æš‚åœ"
@@ -8335,6 +8791,9 @@ msgstr "默认字体"
msgid "Default Font Size"
msgstr "默认字体大å°"
+msgid "Terrains"
+msgstr "地形"
+
msgid "Tile Shape"
msgstr "图å—形状"
@@ -8365,12 +8824,12 @@ msgstr "自定义数æ®å±‚"
msgid "Transpose"
msgstr "转置"
+msgid "Texture Origin"
+msgstr "纹ç†åŽŸç‚¹"
+
msgid "Y Sort Origin"
msgstr "Y 排åºåŽŸç‚¹"
-msgid "Terrains"
-msgstr "地形"
-
msgid "Terrain Set"
msgstr "地形集"
@@ -8437,36 +8896,63 @@ msgstr "默认值"
msgid "Color Default"
msgstr "颜色默认"
+msgid "Texture Repeat"
+msgstr "纹ç†é‡å¤"
+
+msgid "Texture Source"
+msgstr "纹ç†æº"
+
+msgid "Billboard Type"
+msgstr "公告æ¿ç±»åž‹"
+
+msgid "Mode 2D"
+msgstr "2D 模å¼"
+
msgid "Use All Surfaces"
msgstr "使用所有表é¢"
msgid "Surface Index"
msgstr "表é¢ç´¢å¼•"
-msgid "Canvas"
-msgstr "画布"
-
-msgid "Navigation Map"
-msgstr "导航地图"
-
-msgid "Direct Space State"
-msgstr "DirectSpaceState"
+msgid "Degrees Mode"
+msgstr "度数模å¼"
msgid "Fallback Environment"
msgstr "回退环境"
-msgid "Scenario"
-msgstr "场景"
-
msgid "Plane"
msgstr "å¹³é¢"
+msgid "Default Theme Scale"
+msgstr "默认主题缩放"
+
+msgid "Custom"
+msgstr "自定义"
+
+msgid "Custom Font"
+msgstr "自定义字体"
+
+msgid "Default Font Antialiasing"
+msgstr "默认字体抗锯齿"
+
+msgid "Default Font Hinting"
+msgstr "默认字体微调"
+
+msgid "Default Font Subpixel Positioning"
+msgstr "默认字体次åƒç´ å®šä½"
+
+msgid "Default Font Multichannel Signed Distance Field"
+msgstr "默认字体多通é“带符å·è·ç¦»åœº"
+
+msgid "Default Font Generate Mipmaps"
+msgstr "é»˜è®¤å­—ä½“ç”Ÿæˆ Mipmap"
+
+msgid "LCD Subpixel Layout"
+msgstr "LCD 次åƒç´ å¸ƒå±€"
+
msgid "Fallback values"
msgstr "回退值"
-msgid "Stylebox"
-msgstr "æ ·å¼ç›’"
-
msgid "Streams"
msgstr "æµ"
@@ -8599,6 +9085,9 @@ msgstr "输出延迟"
msgid "Channel Disable Threshold dB"
msgstr "声é“ç¦ç”¨é˜ˆå€¼ dB"
+msgid "Channel Disable Time"
+msgstr "声é“ç¦ç”¨æ—¶é—´"
+
msgid "Video"
msgstr "视频"
@@ -8608,6 +9097,12 @@ msgstr "视频延迟补å¿ï¼ˆæ¯«ç§’)"
msgid "Bus Count"
msgstr "总线数é‡"
+msgid "Output Device"
+msgstr "输出设备"
+
+msgid "Input Device"
+msgstr "输入设备"
+
msgid "Playback Speed Scale"
msgstr "播放速度缩放"
@@ -8620,6 +9115,12 @@ msgstr "是å¦æ¿€æ´»"
msgid "Movie Writer"
msgstr "Movie Writer"
+msgid "Speaker Mode"
+msgstr "扬声器模å¼"
+
+msgid "MJPEG Quality"
+msgstr "MJPEG è´¨é‡"
+
msgid "Movie File"
msgstr "电影文件"
@@ -8651,7 +9152,7 @@ msgid "Default Edge Connection Margin"
msgstr "默认边界连接边è·"
msgid "Default Link Connection Radius"
-msgstr "默认链接连接边è·"
+msgstr "默认链接连接åŠå¾„"
msgid "Edge Connection Color"
msgstr "边界连接颜色"
@@ -8668,6 +9169,45 @@ msgstr "几何体边ç¦ç”¨é¢œè‰²"
msgid "Geometry Face Disabled Color"
msgstr "几何体é¢ç¦ç”¨é¢œè‰²"
+msgid "Link Connection Color"
+msgstr "链接连接颜色"
+
+msgid "Link Connection Disabled Color"
+msgstr "链接连接ç¦ç”¨é¢œè‰²"
+
+msgid "Agent Path Color"
+msgstr "代ç†è·¯å¾„颜色"
+
+msgid "Enable Edge Connections"
+msgstr "å¯ç”¨è¾¹ç•Œè¿žæŽ¥"
+
+msgid "Enable Edge Connections X-Ray"
+msgstr "å¯ç”¨è¾¹ç•Œè¿žæŽ¥ X å…‰"
+
+msgid "Enable Edge Lines"
+msgstr "å¯ç”¨è¾¹ç•Œçº¿"
+
+msgid "Enable Edge Lines X-Ray"
+msgstr "å¯ç”¨è¾¹ç•Œçº¿ X å…‰"
+
+msgid "Enable Geometry Face Random Color"
+msgstr "å¯ç”¨å‡ ä½•ä½“é¢éšæœºé¢œè‰²"
+
+msgid "Enable Link Connections"
+msgstr "å¯ç”¨é“¾æŽ¥è¿žæŽ¥"
+
+msgid "Enable Link Connections X-Ray"
+msgstr "å¯ç”¨é“¾æŽ¥è¿žæŽ¥ X å…‰"
+
+msgid "Enable Agent Paths"
+msgstr "å¯ç”¨ä»£ç†è·¯å¾„"
+
+msgid "Enable Agent Paths X-Ray"
+msgstr "å¯ç”¨ä»£ç†è·¯å¾„ X å…‰"
+
+msgid "Agent Path Point Size"
+msgstr "代ç†è·¯å¾„点大å°"
+
msgid "Inverse Mass"
msgstr "逆转质é‡"
@@ -8683,6 +9223,9 @@ msgstr "总线性阻尼"
msgid "Total Gravity"
msgstr "总é‡åŠ›"
+msgid "Center of Mass Local"
+msgstr "局部质心"
+
msgid "Exclude"
msgstr "排除"
@@ -8692,30 +9235,78 @@ msgstr "与实体碰撞"
msgid "Collide With Areas"
msgstr "与区域碰撞"
+msgid "Canvas Instance ID"
+msgstr "画布实例 ID"
+
msgid "Shape RID"
msgstr "形状 RID"
+msgid "Collide Separation Ray"
+msgstr "碰撞分离射线"
+
+msgid "Exclude Bodies"
+msgstr "排除实体"
+
msgid "Exclude Objects"
msgstr "排除对象"
+msgid "Recovery as Collision"
+msgstr "æ¢å¤è®°ä¸ºç¢°æ’ž"
+
msgid "Default Gravity"
msgstr "默认é‡åŠ›"
msgid "Default Gravity Vector"
msgstr "默认é‡åŠ›å‘é‡"
+msgid "Default Linear Damp"
+msgstr "默认线性阻尼"
+
+msgid "Default Angular Damp"
+msgstr "默认角度阻尼"
+
msgid "Sleep Threshold Linear"
msgstr "ç¡çœ çº¿é€Ÿåº¦é˜ˆå€¼"
msgid "Sleep Threshold Angular"
msgstr "ç¡çœ è§’速度阈值"
+msgid "Time Before Sleep"
+msgstr "ç¡çœ å‰æ—¶é—´"
+
+msgid "Solver"
+msgstr "求解器"
+
+msgid "Solver Iterations"
+msgstr "求解器迭代数"
+
+msgid "Contact Recycle Radius"
+msgstr "接触é‡è¿­ä»£åŠå¾„"
+
+msgid "Contact Max Separation"
+msgstr "接触最大分离"
+
+msgid "Contact Max Allowed Penetration"
+msgstr "接触最大å…许穿é€"
+
+msgid "Default Contact Bias"
+msgstr "默认接触åç½®"
+
+msgid "Default Constraint Bias"
+msgstr "默认约æŸåç½®"
+
msgid "Physics Engine"
msgstr "物ç†å¼•æ“Ž"
+msgid "Inverse Inertia Tensor"
+msgstr "åå‘惯性张é‡"
+
msgid "Principal Inertia Axes"
msgstr "主惯性轴"
+msgid "Hit Back Faces"
+msgstr "命中背é¢"
+
msgid "Max Collisions"
msgstr "最大碰撞数"
@@ -8725,9 +9316,48 @@ msgstr "顶点"
msgid "Fragment"
msgstr "片段"
+msgid "Tesselation Control"
+msgstr "镶嵌控制"
+
+msgid "Tesselation Evaluation"
+msgstr "镶嵌评估"
+
+msgid "Compute"
+msgstr "计算"
+
+msgid "Syntax"
+msgstr "语法"
+
+msgid "Bytecode"
+msgstr "字节ç "
+
+msgid "Compile Error"
+msgstr "编译错误"
+
+msgid "Base Error"
+msgstr "基础错误"
+
+msgid "IDs"
+msgstr "ID"
+
+msgid "Constant ID"
+msgstr "å¸¸é‡ ID"
+
+msgid "Sample Masks"
+msgstr "采样掩ç "
+
msgid "Depth Draw"
msgstr "深度绘制"
+msgid "Depth Prepass Alpha"
+msgstr "深度å‰ç½®é˜¶æ®µ"
+
+msgid "Depth Test Disabled"
+msgstr "ç¦ç”¨æ·±åº¦æµ‹è¯•"
+
+msgid "SSS Mode Skin"
+msgstr "SSS 模å¼è’™çš®"
+
msgid "Cull"
msgstr "剔除"
@@ -8758,6 +9388,21 @@ msgstr "顶点光照"
msgid "Particle Trails"
msgstr "ç²’å­å°¾è¿¹"
+msgid "Alpha to Coverage"
+msgstr "Alpha 为覆盖é¢"
+
+msgid "Alpha to Coverage and One"
+msgstr "Alpha 为覆盖并置一"
+
+msgid "Light Only"
+msgstr "ä»…ç¯å…‰"
+
+msgid "Collision Use Scale"
+msgstr "碰撞使用缩放"
+
+msgid "Disable Force"
+msgstr "ç¦ç”¨åŠ›"
+
msgid "Disable Velocity"
msgstr "ç¦ç”¨é€Ÿåº¦"
@@ -8779,21 +9424,42 @@ msgstr "å¯ç”¨æ¸²æŸ“循环"
msgid "VRAM Compression"
msgstr "VRAM 压缩"
+msgid "Import S3TC BPTC"
+msgstr "导入 S3TC BPTC"
+
+msgid "Import ETC2 ASTC"
+msgstr "导入 ETC2 ASTC"
+
msgid "Lossless Compression"
msgstr "æ— æŸåŽ‹ç¼©"
msgid "Force PNG"
msgstr "强制 PNG"
+msgid "WebP Compression"
+msgstr "WebP 压缩"
+
+msgid "Compression Method"
+msgstr "压缩方法"
+
+msgid "Lossless Compression Factor"
+msgstr "æ— æŸåŽ‹ç¼©ç³»æ•°"
+
+msgid "Time Rollover Secs"
+msgstr "时间翻转秒数"
+
msgid "Use Physical Light Units"
msgstr "使用物ç†å…‰çº¿å•ä½"
msgid "Soft Shadow Filter Quality"
-msgstr "柔和阴影过滤器质é‡"
+msgstr "柔和阴影过滤质é‡"
msgid "Shadow Atlas"
msgstr "阴影图集"
+msgid "Item Buffer Size"
+msgstr "项目缓冲区大å°"
+
msgid "Shader Compiler"
msgstr "ç€è‰²å™¨ç¼–译器"
@@ -8812,6 +9478,9 @@ msgstr "åå°„"
msgid "Sky Reflections"
msgstr "天空åå°„"
+msgid "Roughness Layers"
+msgstr "粗糙层"
+
msgid "Texture Array Reflections"
msgstr "纹ç†æ•°ç»„åå°„"
@@ -8819,7 +9488,7 @@ msgid "GGX Samples"
msgstr "GGX 样本"
msgid "Fast Filter High Quality"
-msgstr "高质é‡å¿«é€Ÿè¿‡æ»¤å™¨"
+msgstr "高质é‡å¿«é€Ÿè¿‡æ»¤"
msgid "Reflection Atlas"
msgstr "å射图集"
@@ -8852,29 +9521,131 @@ msgid "Disable for Vendors"
msgstr "针对厂商ç¦ç”¨"
msgid "Default Filters"
-msgstr "默认过滤器"
+msgstr "默认过滤"
msgid "Use Nearest Mipmap Filter"
-msgstr "使用最近 Mipmap 过滤"
+msgstr "使用最近邻 Mipmap 过滤"
+
+msgid "Anisotropic Filtering Level"
+msgstr "å„å‘异性过滤级别"
msgid "Depth of Field"
msgstr "景深"
+msgid "Depth of Field Bokeh Shape"
+msgstr "景深散景形状"
+
+msgid "Depth of Field Bokeh Quality"
+msgstr "景深散景质é‡"
+
msgid "Depth of Field Use Jitter"
msgstr "景深使用抖动"
+msgid "Half Size"
+msgstr "一åŠå¤§å°"
+
+msgid "Adaptive Target"
+msgstr "适应目标"
+
+msgid "Blur Passes"
+msgstr "模糊通é“"
+
+msgid "Fadeout From"
+msgstr "淡出起点"
+
+msgid "Fadeout To"
+msgstr "淡出终点"
+
+msgid "Screen Space Roughness Limiter"
+msgstr "å±å¹•ç©ºé—´ç²—糙度é™åˆ¶å™¨"
+
+msgid "Decals"
+msgstr "贴花"
+
+msgid "Light Projectors"
+msgstr "光投影器"
+
msgid "Occlusion Rays per Thread"
msgstr "æ¯çº¿ç¨‹é®æŒ¡å°„线"
msgid "Upscale Mode"
msgstr "放大模å¼"
+msgid "Screen Space Reflection"
+msgstr "å±å¹•ç©ºé—´åå°„"
+
+msgid "Roughness Quality"
+msgstr "粗糙度质é‡"
+
+msgid "Subsurface Scattering Quality"
+msgstr "次表é¢æ•£å°„è´¨é‡"
+
+msgid "Subsurface Scattering Scale"
+msgstr "次表é¢æ•£å°„比例"
+
+msgid "Subsurface Scattering Depth Scale"
+msgstr "次表é¢æ•£å°„深度比例"
+
msgid "Global Shader Variables"
msgstr "全局ç€è‰²å™¨å˜é‡"
msgid "Buffer Size"
msgstr "缓冲区大å°"
+msgid "Probe Capture"
+msgstr "探针æ•èŽ·"
+
+msgid "Update Speed"
+msgstr "更新速度"
+
+msgid "Probe Ray Count"
+msgstr "探针射线数"
+
+msgid "Frames to Converge"
+msgstr "收敛帧数"
+
+msgid "Frames to Update Lights"
+msgstr "æ›´æ–°ç¯å…‰å¸§æ•°"
+
+msgid "Volume Size"
+msgstr "体积尺寸"
+
+msgid "Volume Depth"
+msgstr "体积深度"
+
+msgid "Spatial Indexer"
+msgstr "空间索引器"
+
+msgid "Update Iterations per Frame"
+msgstr "æ¯å¸§æ›´æ–°è¿­ä»£æ¬¡æ•°"
+
+msgid "Threaded Cull Minimum Instances"
+msgstr "多线程剔除最å°å®žä¾‹æ•°"
+
+msgid "Forward Renderer"
+msgstr "å‰å‘渲染器"
+
+msgid "Threaded Render Minimum Instances"
+msgstr "多线程渲染最å°å®žä¾‹æ•°"
+
+msgid "Cluster Builder"
+msgstr "集群构建器"
+
+msgid "Max Clustered Elements"
+msgstr "最大集群元素数"
+
+msgid "OpenGL"
+msgstr "OpenGL"
+
+msgid "Max Renderable Elements"
+msgstr "最大å¯æ¸²æŸ“元素数"
+
+msgid "Max Renderable Lights"
+msgstr "最大å¯æ¸²æŸ“å…‰æºæ•°"
+
+msgid "Max Lights per Object"
+msgstr "å•å¯¹è±¡æœ€å¤§å…‰æºæ•°"
+
msgid "Shaders"
msgstr "ç€è‰²å™¨"
diff --git a/editor/translations/properties/zh_TW.po b/editor/translations/properties/zh_TW.po
index 93130d6ec7..a8109570ee 100644
--- a/editor/translations/properties/zh_TW.po
+++ b/editor/translations/properties/zh_TW.po
@@ -44,8 +44,8 @@ msgstr ""
"Project-Id-Version: Godot Engine properties\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-02-10 10:44+0000\n"
-"Last-Translator: abcabcc <xmmandxpp@outlook.com>\n"
+"PO-Revision-Date: 2023-02-18 17:29+0000\n"
+"Last-Translator: Eric K <eric900601@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot-properties/zh_Hant/>\n"
"Language: zh_TW\n"
@@ -226,6 +226,9 @@ msgstr "å› ç´ "
msgid "Button Index"
msgstr "按éµç´¢å¼•"
+msgid "Double Click"
+msgstr "雙擊"
+
msgid "Tilt"
msgstr "傾斜"
@@ -289,9 +292,6 @@ msgstr "分é å¤§å°"
msgid "Blocking Mode Enabled"
msgstr "啟用阻塞模å¼"
-msgid "Connection"
-msgstr "連接"
-
msgid "Read Chunk Size"
msgstr "讀å–å€å¡Šå¤§å°"
@@ -310,9 +310,6 @@ msgstr "輸入緩è¡å€å¤§å°ä¸Šé™"
msgid "Output Buffer Max Size"
msgstr "輸出緩è¡å€å¤§å°ä¸Šé™"
-msgid "Stream Peer"
-msgstr "串æµä½¿ç”¨è€…"
-
msgid "Resource"
msgstr "資æº"
@@ -337,9 +334,6 @@ msgstr "種å­"
msgid "State"
msgstr "狀態"
-msgid "Source Code"
-msgstr "原始碼"
-
msgid "Worker Pool"
msgstr "工作池"
@@ -430,15 +424,6 @@ msgstr "å­˜å–"
msgid "Display Mode"
msgstr "顯示模å¼"
-msgid "Current Dir"
-msgstr "ç›®å‰ç›®éŒ„"
-
-msgid "Current File"
-msgstr "所在檔案"
-
-msgid "Current Path"
-msgstr "所在目錄"
-
msgid "Show Hidden Files"
msgstr "顯示隱è—的檔案"
@@ -520,18 +505,12 @@ msgstr "專注模å¼"
msgid "Base Type"
msgstr "基礎型別"
-msgid "Edited Resource"
-msgstr "已經編輯資"
-
msgid "Editable"
msgstr "å¯ç·¨è¼¯"
msgid "Toggle Mode"
msgstr "切æ›æ¨¡å¼"
-msgid "Script Owner"
-msgstr "腳本所有者"
-
msgid "Editor Language"
msgstr "編輯器語言"
@@ -676,6 +655,9 @@ msgstr "é¡è‰²ä¸»é¡Œ"
msgid "Appearance"
msgstr "外觀"
+msgid "Caret"
+msgstr "輸入指標"
+
msgid "Caret Blink"
msgstr "æ’入符閃çˆ"
@@ -1201,6 +1183,9 @@ msgstr "密碼"
msgid "Compress"
msgstr "壓縮"
+msgid "Language"
+msgstr "語言"
+
msgid "Outline Size"
msgstr "輪廓尺寸"
@@ -1397,7 +1382,7 @@ msgid "Available URLs"
msgstr "å¯ç”¨ URL"
msgid "Unset"
-msgstr "未設置"
+msgstr "未設定"
msgid "Error"
msgstr "錯誤"
@@ -1468,6 +1453,15 @@ msgstr "警告"
msgid "ID"
msgstr "ID"
+msgid "Texture"
+msgstr "ç´‹ç†è²¼åœ–"
+
+msgid "Separation"
+msgstr "é–“è·"
+
+msgid "Speed"
+msgstr "速度"
+
msgid "Version Control"
msgstr "版本控制"
@@ -1546,18 +1540,15 @@ msgstr "iOS"
msgid "Hide Home Indicator"
msgstr "éš±è— Home æ©«æ¢"
-msgid "Input Devices"
-msgstr "輸入è£ç½®"
-
-msgid "Pointing"
-msgstr "指點"
-
msgid "Boot Splash"
msgstr "å•Ÿå‹•ç•«é¢"
msgid "BG Color"
msgstr "背景é¡è‰²"
+msgid "Input Devices"
+msgstr "輸入è£ç½®"
+
msgid "Environment"
msgstr "環境"
@@ -1585,6 +1576,9 @@ msgstr "ç·©è¡"
msgid "Agile Event Flushing"
msgstr "æ•æ·äº‹ä»¶åˆ·æ–°"
+msgid "Pointing"
+msgstr "指點"
+
msgid "Emulate Touch From Mouse"
msgstr "以滑鼠模擬觸控"
@@ -1952,7 +1946,7 @@ msgid "Reference Space Type"
msgstr "åƒç…§ç©ºé–“é¡žåž‹"
msgid "Android"
-msgstr "安å“"
+msgstr "Android"
msgid "Android SDK Path"
msgstr "Android SDK 路徑"
@@ -2128,6 +2122,9 @@ msgstr "憑證"
msgid "Splash Screen"
msgstr "å•Ÿå‹•ç•«é¢"
+msgid "Web"
+msgstr "Web"
+
msgid "HTTP Host"
msgstr "HTTP 主機"
@@ -2167,11 +2164,14 @@ msgstr "ç›®å‰"
msgid "Max Distance"
msgstr "最大è·é›¢"
+msgid "Left"
+msgstr "å·¦"
+
msgid "Top"
msgstr "頂端"
-msgid "Speed"
-msgstr "速度"
+msgid "Right"
+msgstr "å³"
msgid "Horizontal Enabled"
msgstr "已啟用水平"
@@ -2194,9 +2194,6 @@ msgstr "時間"
msgid "Randomness"
msgstr "隨機性"
-msgid "Texture"
-msgstr "ç´‹ç†è²¼åœ–"
-
msgid "Sphere Radius"
msgstr "çƒé«”åŠå¾‘"
@@ -2227,15 +2224,6 @@ msgstr "路徑最大è·é›¢"
msgid "Max Speed"
msgstr "最大速度"
-msgid "Rotation Degrees"
-msgstr "旋轉角度"
-
-msgid "Global Rotation Degrees"
-msgstr "全域旋轉角度"
-
-msgid "Global Scale"
-msgstr "全域縮放"
-
msgid "Base Offset"
msgstr "基礎å移"
@@ -2378,7 +2366,7 @@ msgid "Extra Cull Margin"
msgstr "é¡å¤–剔除邊è·"
msgid "End"
-msgstr "çµæŸ"
+msgstr "é å°¾"
msgid "World Scale"
msgstr "世界縮放"
@@ -2509,9 +2497,6 @@ msgstr "填充角度"
msgid "Hide Root"
msgstr "éš±è—根節點"
-msgid "Volume"
-msgstr "é«”ç©"
-
msgid "Z Index"
msgstr "Z 索引"
@@ -2527,15 +2512,6 @@ msgstr "傳輸模å¼"
msgid "Transfer Channel"
msgstr "傳輸通é“"
-msgid "Owner"
-msgstr "æ“有者"
-
-msgid "Multiplayer"
-msgstr "多人"
-
-msgid "Current Scene"
-msgstr "ç›®å‰å ´æ™¯"
-
msgid "Autostart"
msgstr "自動開始"
@@ -2602,9 +2578,6 @@ msgstr "分隔線字體"
msgid "V Separation"
msgstr "垂直分隔"
-msgid "Separation"
-msgstr "é–“è·"
-
msgid "Title Offset"
msgstr "標題å移é‡"
diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml
index 0b7e4e50e6..08c8763493 100644
--- a/modules/gdscript/doc_classes/@GDScript.xml
+++ b/modules/gdscript/doc_classes/@GDScript.xml
@@ -121,6 +121,13 @@
[/codeblock]
</description>
</method>
+ <method name="is_instance_of">
+ <return type="bool" />
+ <param index="0" name="value" type="Variant" />
+ <param index="1" name="type" type="Variant" />
+ <description>
+ </description>
+ </method>
<method name="len">
<return type="int" />
<param index="0" name="var" type="Variant" />
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index c8dfdbdd68..38f9163f70 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -32,6 +32,7 @@
#include "core/config/engine.h"
#include "core/config/project_settings.h"
+#include "core/core_constants.h"
#include "core/core_string_names.h"
#include "core/io/file_access.h"
#include "core/io/resource_loader.h"
@@ -48,7 +49,7 @@
#endif
#define UNNAMED_ENUM "<anonymous enum>"
-#define ENUM_SEPARATOR "::"
+#define ENUM_SEPARATOR "."
static MethodInfo info_from_utility_func(const StringName &p_function) {
ERR_FAIL_COND_V(!Variant::has_utility_function(p_function), MethodInfo());
@@ -137,12 +138,16 @@ static GDScriptParser::DataType make_enum_type(const StringName &p_enum_name, co
// For enums, native_type is only used to check compatibility in is_type_compatible()
// We can set anything readable here for error messages, as long as it uniquely identifies the type of the enum
- type.native_type = p_base_name + ENUM_SEPARATOR + p_enum_name;
+ if (p_base_name.is_empty()) {
+ type.native_type = p_enum_name;
+ } else {
+ type.native_type = p_base_name + ENUM_SEPARATOR + p_enum_name;
+ }
return type;
}
-static GDScriptParser::DataType make_native_enum_type(const StringName &p_enum_name, const StringName &p_native_class, const bool p_meta = true) {
+static GDScriptParser::DataType make_native_enum_type(const StringName &p_enum_name, const StringName &p_native_class, bool p_meta = true) {
// Find out which base class declared the enum, so the name is always the same even when coming from other contexts.
StringName native_base = p_native_class;
while (true && native_base != StringName()) {
@@ -154,7 +159,7 @@ static GDScriptParser::DataType make_native_enum_type(const StringName &p_enum_n
GDScriptParser::DataType type = make_enum_type(p_enum_name, native_base, p_meta);
if (p_meta) {
- type.builtin_type = Variant::NIL; // Native enum types are not Dictionaries
+ type.builtin_type = Variant::NIL; // Native enum types are not Dictionaries.
}
List<StringName> enum_values;
@@ -167,6 +172,22 @@ static GDScriptParser::DataType make_native_enum_type(const StringName &p_enum_n
return type;
}
+static GDScriptParser::DataType make_global_enum_type(const StringName &p_enum_name, const StringName &p_base, bool p_meta = true) {
+ GDScriptParser::DataType type = make_enum_type(p_enum_name, p_base, p_meta);
+ if (p_meta) {
+ type.builtin_type = Variant::NIL; // Native enum types are not Dictionaries.
+ type.is_pseudo_type = true;
+ }
+
+ HashMap<StringName, int64_t> enum_values;
+ CoreConstants::get_enum_values(type.native_type, &enum_values);
+ for (const KeyValue<StringName, int64_t> &element : enum_values) {
+ type.enum_values[element.key] = element.value;
+ }
+
+ return type;
+}
+
static GDScriptParser::DataType make_builtin_meta_type(Variant::Type p_type) {
GDScriptParser::DataType type;
type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
@@ -562,7 +583,6 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type
GDScriptParser::DataType result;
result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
- result.builtin_type = Variant::OBJECT;
if (p_type->type_chain.is_empty()) {
// void.
@@ -575,15 +595,26 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type
StringName first = p_type->type_chain[0]->name;
if (first == SNAME("Variant")) {
- if (p_type->type_chain.size() > 1) {
- // TODO: Variant does actually have a nested Type though.
- push_error(R"(Variant doesn't contain nested types.)", p_type->type_chain[1]);
+ if (p_type->type_chain.size() == 2) {
+ // May be nested enum.
+ StringName enum_name = p_type->type_chain[1]->name;
+ StringName qualified_name = String(first) + ENUM_SEPARATOR + String(p_type->type_chain[1]->name);
+ if (CoreConstants::is_global_enum(qualified_name)) {
+ result = make_global_enum_type(enum_name, first, true);
+ return result;
+ } else {
+ push_error(vformat(R"(Name "%s" is not a nested type of "Variant".)", enum_name), p_type->type_chain[1]);
+ return bad_type;
+ }
+ } else if (p_type->type_chain.size() > 2) {
+ push_error(R"(Variant only contains enum types, which do not have nested types.)", p_type->type_chain[2]);
return bad_type;
}
result.kind = GDScriptParser::DataType::VARIANT;
} else if (first == SNAME("Object")) {
// Object is treated like a native type, not a built-in.
result.kind = GDScriptParser::DataType::NATIVE;
+ result.builtin_type = Variant::OBJECT;
result.native_type = SNAME("Object");
} else if (GDScriptParser::get_builtin_type(first) < Variant::VARIANT_MAX) {
// Built-in types.
@@ -604,6 +635,7 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type
} else if (class_exists(first)) {
// Native engine classes.
result.kind = GDScriptParser::DataType::NATIVE;
+ result.builtin_type = Variant::OBJECT;
result.native_type = first;
} else if (ScriptServer::is_global_class(first)) {
if (parser->script_path == ScriptServer::get_global_class_path(first)) {
@@ -633,6 +665,12 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type
} else if (ClassDB::has_enum(parser->current_class->base_type.native_type, first)) {
// Native enum in current class.
result = make_native_enum_type(first, parser->current_class->base_type.native_type);
+ } else if (CoreConstants::is_global_enum(first)) {
+ if (p_type->type_chain.size() > 1) {
+ push_error(R"(Enums cannot contain nested types.)", p_type->type_chain[1]);
+ return bad_type;
+ }
+ result = make_global_enum_type(first, StringName());
} else {
// Classes in current scope.
List<GDScriptParser::ClassNode *> script_classes;
@@ -1338,6 +1376,7 @@ void GDScriptAnalyzer::resolve_node(GDScriptParser::Node *p_node, bool p_is_root
case GDScriptParser::Node::SELF:
case GDScriptParser::Node::SUBSCRIPT:
case GDScriptParser::Node::TERNARY_OPERATOR:
+ case GDScriptParser::Node::TYPE_TEST:
case GDScriptParser::Node::UNARY_OPERATOR:
reduce_expression(static_cast<GDScriptParser::ExpressionNode *>(p_node), p_is_root);
break;
@@ -2196,6 +2235,9 @@ void GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode *p_expre
case GDScriptParser::Node::TERNARY_OPERATOR:
reduce_ternary_op(static_cast<GDScriptParser::TernaryOpNode *>(p_expression), p_is_root);
break;
+ case GDScriptParser::Node::TYPE_TEST:
+ reduce_type_test(static_cast<GDScriptParser::TypeTestNode *>(p_expression));
+ break;
case GDScriptParser::Node::UNARY_OPERATOR:
reduce_unary_op(static_cast<GDScriptParser::UnaryOpNode *>(p_expression));
break;
@@ -2502,13 +2544,7 @@ void GDScriptAnalyzer::reduce_await(GDScriptParser::AwaitNode *p_await) {
void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_op) {
reduce_expression(p_binary_op->left_operand);
-
- if (p_binary_op->operation == GDScriptParser::BinaryOpNode::OP_TYPE_TEST && p_binary_op->right_operand && p_binary_op->right_operand->type == GDScriptParser::Node::IDENTIFIER) {
- reduce_identifier(static_cast<GDScriptParser::IdentifierNode *>(p_binary_op->right_operand), true);
- } else {
- reduce_expression(p_binary_op->right_operand);
- }
- // TODO: Right operand must be a valid type with the `is` operator. Need to check here.
+ reduce_expression(p_binary_op->right_operand);
GDScriptParser::DataType left_type;
if (p_binary_op->left_operand) {
@@ -2546,19 +2582,7 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
}
}
} else {
- if (p_binary_op->operation == GDScriptParser::BinaryOpNode::OP_TYPE_TEST) {
- GDScriptParser::DataType test_type = right_type;
- test_type.is_meta_type = false;
-
- if (!is_type_compatible(test_type, left_type)) {
- push_error(vformat(R"(Expression is of type "%s" so it can't be of type "%s".)"), p_binary_op->left_operand);
- p_binary_op->reduced_value = false;
- } else {
- p_binary_op->reduced_value = true;
- }
- } else {
- ERR_PRINT("Parser bug: unknown binary operation.");
- }
+ ERR_PRINT("Parser bug: unknown binary operation.");
}
p_binary_op->set_datatype(type_from_variant(p_binary_op->reduced_value, p_binary_op));
@@ -2567,24 +2591,7 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
GDScriptParser::DataType result;
- if (p_binary_op->operation == GDScriptParser::BinaryOpNode::OP_TYPE_TEST) {
- GDScriptParser::DataType test_type = right_type;
- test_type.is_meta_type = false;
-
- if (!is_type_compatible(test_type, left_type) && !is_type_compatible(left_type, test_type)) {
- if (left_type.is_hard_type()) {
- push_error(vformat(R"(Expression is of type "%s" so it can't be of type "%s".)", left_type.to_string(), test_type.to_string()), p_binary_op->left_operand);
- } else {
- // TODO: Warning.
- mark_node_unsafe(p_binary_op);
- }
- }
-
- // "is" operator is always a boolean anyway.
- result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
- result.kind = GDScriptParser::DataType::BUILTIN;
- result.builtin_type = Variant::BOOL;
- } else if ((p_binary_op->variant_op == Variant::OP_EQUAL || p_binary_op->variant_op == Variant::OP_NOT_EQUAL) &&
+ if ((p_binary_op->variant_op == Variant::OP_EQUAL || p_binary_op->variant_op == Variant::OP_NOT_EQUAL) &&
((left_type.kind == GDScriptParser::DataType::BUILTIN && left_type.builtin_type == Variant::NIL) || (right_type.kind == GDScriptParser::DataType::BUILTIN && right_type.builtin_type == Variant::NIL))) {
// "==" and "!=" operators always return a boolean when comparing to null.
result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
@@ -2599,6 +2606,8 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
result = get_operation_type(p_binary_op->variant_op, left_type, right_type, valid, p_binary_op);
if (!valid) {
push_error(vformat(R"(Invalid operands "%s" and "%s" for "%s" operator.)", left_type.to_string(), right_type.to_string(), Variant::get_operator_name(p_binary_op->variant_op)), p_binary_op);
+ } else if (result.type_source != GDScriptParser::DataType::ANNOTATED_EXPLICIT) {
+ mark_node_unsafe(p_binary_op);
}
} else {
ERR_PRINT("Parser bug: unknown binary operation.");
@@ -3661,6 +3670,20 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
}
}
+ if (CoreConstants::is_global_constant(name)) {
+ int index = CoreConstants::get_global_constant_index(name);
+ StringName enum_name = CoreConstants::get_global_constant_enum(index);
+ int64_t value = CoreConstants::get_global_constant_value(index);
+ if (enum_name != StringName()) {
+ p_identifier->set_datatype(make_global_enum_type(enum_name, StringName(), false));
+ } else {
+ p_identifier->set_datatype(type_from_variant(value, p_identifier));
+ }
+ p_identifier->is_constant = true;
+ p_identifier->reduced_value = value;
+ return;
+ }
+
if (GDScriptLanguage::get_singleton()->has_any_global_constant(name)) {
Variant constant = GDScriptLanguage::get_singleton()->get_any_global_constant(name);
p_identifier->set_datatype(type_from_variant(constant, p_identifier));
@@ -3669,6 +3692,25 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
return;
}
+ if (CoreConstants::is_global_enum(name)) {
+ p_identifier->set_datatype(make_global_enum_type(name, StringName(), true));
+ if (!can_be_builtin) {
+ push_error(vformat(R"(Global enum "%s" cannot be used on its own.)", name), p_identifier);
+ }
+ return;
+ }
+
+ // Allow "Variant" here since it might be used for nested enums.
+ if (can_be_builtin && name == SNAME("Variant")) {
+ GDScriptParser::DataType variant;
+ variant.kind = GDScriptParser::DataType::VARIANT;
+ variant.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
+ variant.is_meta_type = true;
+ variant.is_pseudo_type = true;
+ p_identifier->set_datatype(variant);
+ return;
+ }
+
// Not found.
// Check if it's a builtin function.
if (GDScriptUtilityFunctions::function_exists(name)) {
@@ -3809,12 +3851,14 @@ void GDScriptAnalyzer::reduce_self(GDScriptParser::SelfNode *p_self) {
mark_lambda_use_self();
}
-void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscript) {
+void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscript, bool p_can_be_pseudo_type) {
if (p_subscript->base == nullptr) {
return;
}
if (p_subscript->base->type == GDScriptParser::Node::IDENTIFIER) {
reduce_identifier(static_cast<GDScriptParser::IdentifierNode *>(p_subscript->base), true);
+ } else if (p_subscript->base->type == GDScriptParser::Node::SUBSCRIPT) {
+ reduce_subscript(static_cast<GDScriptParser::SubscriptNode *>(p_subscript->base), true);
} else {
reduce_expression(p_subscript->base);
}
@@ -3838,14 +3882,28 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri
result_type = type_from_variant(value, p_subscript);
}
} else if (base_type.is_variant() || !base_type.is_hard_type()) {
- valid = true;
+ valid = !base_type.is_pseudo_type || p_can_be_pseudo_type;
result_type.kind = GDScriptParser::DataType::VARIANT;
- mark_node_unsafe(p_subscript);
+ if (base_type.is_variant() && base_type.is_hard_type() && base_type.is_meta_type && base_type.is_pseudo_type) {
+ // Special case: it may be a global enum with pseudo base (e.g. Variant.Type).
+ String enum_name;
+ if (p_subscript->base->type == GDScriptParser::Node::IDENTIFIER) {
+ enum_name = String(static_cast<GDScriptParser::IdentifierNode *>(p_subscript->base)->name) + ENUM_SEPARATOR + String(p_subscript->attribute->name);
+ }
+ if (CoreConstants::is_global_enum(enum_name)) {
+ result_type = make_global_enum_type(enum_name, StringName());
+ } else {
+ valid = false;
+ mark_node_unsafe(p_subscript);
+ }
+ } else {
+ mark_node_unsafe(p_subscript);
+ }
} else {
reduce_identifier_from_base(p_subscript->attribute, &base_type);
GDScriptParser::DataType attr_type = p_subscript->attribute->get_datatype();
if (attr_type.is_set()) {
- valid = true;
+ valid = !attr_type.is_pseudo_type || p_can_be_pseudo_type;
result_type = attr_type;
p_subscript->is_constant = p_subscript->attribute->is_constant;
p_subscript->reduced_value = p_subscript->attribute->reduced_value;
@@ -3861,7 +3919,12 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri
}
}
if (!valid) {
- push_error(vformat(R"(Cannot find member "%s" in base "%s".)", p_subscript->attribute->name, type_from_metatype(base_type).to_string()), p_subscript->attribute);
+ GDScriptParser::DataType attr_type = p_subscript->attribute->get_datatype();
+ if (!p_can_be_pseudo_type && (attr_type.is_pseudo_type || result_type.is_pseudo_type)) {
+ push_error(vformat(R"(Type "%s" in base "%s" cannot be used on its own.)", p_subscript->attribute->name, type_from_metatype(base_type).to_string()), p_subscript->attribute);
+ } else {
+ push_error(vformat(R"(Cannot find member "%s" in base "%s".)", p_subscript->attribute->name, type_from_metatype(base_type).to_string()), p_subscript->attribute);
+ }
result_type.kind = GDScriptParser::DataType::VARIANT;
}
} else {
@@ -4107,6 +4170,48 @@ void GDScriptAnalyzer::reduce_ternary_op(GDScriptParser::TernaryOpNode *p_ternar
p_ternary_op->set_datatype(result);
}
+void GDScriptAnalyzer::reduce_type_test(GDScriptParser::TypeTestNode *p_type_test) {
+ GDScriptParser::DataType result;
+ result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
+ result.kind = GDScriptParser::DataType::BUILTIN;
+ result.builtin_type = Variant::BOOL;
+ p_type_test->set_datatype(result);
+
+ if (!p_type_test->operand || !p_type_test->test_type) {
+ return;
+ }
+
+ reduce_expression(p_type_test->operand);
+ GDScriptParser::DataType operand_type = p_type_test->operand->get_datatype();
+ GDScriptParser::DataType test_type = type_from_metatype(resolve_datatype(p_type_test->test_type));
+ p_type_test->test_datatype = test_type;
+
+ if (!operand_type.is_set() || !test_type.is_set()) {
+ return;
+ }
+
+ if (p_type_test->operand->is_constant) {
+ p_type_test->is_constant = true;
+ p_type_test->reduced_value = false;
+
+ if (!is_type_compatible(test_type, operand_type)) {
+ push_error(vformat(R"(Expression is of type "%s" so it can't be of type "%s".)", operand_type.to_string(), test_type.to_string()), p_type_test->operand);
+ } else if (is_type_compatible(test_type, type_from_variant(p_type_test->operand->reduced_value, p_type_test->operand))) {
+ p_type_test->reduced_value = test_type.builtin_type != Variant::OBJECT || !p_type_test->operand->reduced_value.is_null();
+ }
+
+ return;
+ }
+
+ if (!is_type_compatible(test_type, operand_type) && !is_type_compatible(operand_type, test_type)) {
+ if (operand_type.is_hard_type()) {
+ push_error(vformat(R"(Expression is of type "%s" so it can't be of type "%s".)", operand_type.to_string(), test_type.to_string()), p_type_test->operand);
+ } else {
+ downgrade_node_type_source(p_type_test->operand);
+ }
+ }
+}
+
void GDScriptAnalyzer::reduce_unary_op(GDScriptParser::UnaryOpNode *p_unary_op) {
reduce_expression(p_unary_op->operand);
@@ -4375,6 +4480,7 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_variant(const Variant &p_va
GDScriptParser::DataType GDScriptAnalyzer::type_from_metatype(const GDScriptParser::DataType &p_meta_type) {
GDScriptParser::DataType result = p_meta_type;
result.is_meta_type = false;
+ result.is_pseudo_type = false;
if (p_meta_type.kind == GDScriptParser::DataType::ENUM) {
result.builtin_type = Variant::INT;
} else {
@@ -4428,11 +4534,16 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_property(const PropertyInfo
result.set_container_element_type(elem_type);
} else if (p_property.type == Variant::INT) {
// Check if it's enum.
- if (p_property.class_name != StringName()) {
- Vector<String> names = String(p_property.class_name).split(".");
- if (names.size() == 2) {
- result = make_native_enum_type(names[1], names[0], false);
+ if ((p_property.usage & (PROPERTY_USAGE_CLASS_IS_ENUM | PROPERTY_USAGE_CLASS_IS_BITFIELD)) && p_property.class_name != StringName()) {
+ if (CoreConstants::is_global_enum(p_property.class_name)) {
+ result = make_global_enum_type(p_property.class_name, StringName(), false);
result.is_constant = false;
+ } else {
+ Vector<String> names = String(p_property.class_name).split(ENUM_SEPARATOR);
+ if (names.size() == 2) {
+ result = make_native_enum_type(names[1], names[0], false);
+ result.is_constant = false;
+ }
}
}
}
diff --git a/modules/gdscript/gdscript_analyzer.h b/modules/gdscript/gdscript_analyzer.h
index cdeba374c7..7a50b32d4c 100644
--- a/modules/gdscript/gdscript_analyzer.h
+++ b/modules/gdscript/gdscript_analyzer.h
@@ -98,8 +98,9 @@ class GDScriptAnalyzer {
void reduce_literal(GDScriptParser::LiteralNode *p_literal);
void reduce_preload(GDScriptParser::PreloadNode *p_preload);
void reduce_self(GDScriptParser::SelfNode *p_self);
- void reduce_subscript(GDScriptParser::SubscriptNode *p_subscript);
+ void reduce_subscript(GDScriptParser::SubscriptNode *p_subscript, bool p_can_be_pseudo_type = false);
void reduce_ternary_op(GDScriptParser::TernaryOpNode *p_ternary_op, bool p_is_root = false);
+ void reduce_type_test(GDScriptParser::TypeTestNode *p_type_test);
void reduce_unary_op(GDScriptParser::UnaryOpNode *p_unary_op);
Variant make_expression_reduced_value(GDScriptParser::ExpressionNode *p_expression, bool &is_reduced);
diff --git a/modules/gdscript/gdscript_byte_codegen.cpp b/modules/gdscript/gdscript_byte_codegen.cpp
index 45008b0e87..a13bf8009f 100644
--- a/modules/gdscript/gdscript_byte_codegen.cpp
+++ b/modules/gdscript/gdscript_byte_codegen.cpp
@@ -612,18 +612,44 @@ void GDScriptByteCodeGenerator::write_binary_operator(const Address &p_target, V
append(p_operator);
}
-void GDScriptByteCodeGenerator::write_type_test(const Address &p_target, const Address &p_source, const Address &p_type) {
- append_opcode(GDScriptFunction::OPCODE_EXTENDS_TEST);
- append(p_source);
- append(p_type);
- append(p_target);
-}
-
-void GDScriptByteCodeGenerator::write_type_test_builtin(const Address &p_target, const Address &p_source, Variant::Type p_type) {
- append_opcode(GDScriptFunction::OPCODE_IS_BUILTIN);
- append(p_source);
- append(p_target);
- append(p_type);
+void GDScriptByteCodeGenerator::write_type_test(const Address &p_target, const Address &p_source, const GDScriptDataType &p_type) {
+ switch (p_type.kind) {
+ case GDScriptDataType::BUILTIN: {
+ if (p_type.builtin_type == Variant::ARRAY && p_type.has_container_element_type()) {
+ const GDScriptDataType &element_type = p_type.get_container_element_type();
+ append_opcode(GDScriptFunction::OPCODE_TYPE_TEST_ARRAY);
+ append(p_target);
+ append(p_source);
+ append(get_constant_pos(element_type.script_type) | (GDScriptFunction::ADDR_TYPE_CONSTANT << GDScriptFunction::ADDR_BITS));
+ append(element_type.builtin_type);
+ append(element_type.native_type);
+ } else {
+ append_opcode(GDScriptFunction::OPCODE_TYPE_TEST_BUILTIN);
+ append(p_target);
+ append(p_source);
+ append(p_type.builtin_type);
+ }
+ } break;
+ case GDScriptDataType::NATIVE: {
+ append_opcode(GDScriptFunction::OPCODE_TYPE_TEST_NATIVE);
+ append(p_target);
+ append(p_source);
+ append(p_type.native_type);
+ } break;
+ case GDScriptDataType::SCRIPT:
+ case GDScriptDataType::GDSCRIPT: {
+ const Variant &script = p_type.script_type;
+ append_opcode(GDScriptFunction::OPCODE_TYPE_TEST_SCRIPT);
+ append(p_target);
+ append(p_source);
+ append(get_constant_pos(script) | (GDScriptFunction::ADDR_TYPE_CONSTANT << GDScriptFunction::ADDR_BITS));
+ } break;
+ default: {
+ ERR_PRINT("Compiler bug: unresolved type in type test.");
+ append_opcode(GDScriptFunction::OPCODE_ASSIGN_FALSE);
+ append(p_target);
+ }
+ }
}
void GDScriptByteCodeGenerator::write_and_left_operand(const Address &p_left_operand) {
diff --git a/modules/gdscript/gdscript_byte_codegen.h b/modules/gdscript/gdscript_byte_codegen.h
index 1d1b22e196..dc05de9fc6 100644
--- a/modules/gdscript/gdscript_byte_codegen.h
+++ b/modules/gdscript/gdscript_byte_codegen.h
@@ -481,8 +481,7 @@ public:
virtual void write_type_adjust(const Address &p_target, Variant::Type p_new_type) override;
virtual void write_unary_operator(const Address &p_target, Variant::Operator p_operator, const Address &p_left_operand) override;
virtual void write_binary_operator(const Address &p_target, Variant::Operator p_operator, const Address &p_left_operand, const Address &p_right_operand) override;
- virtual void write_type_test(const Address &p_target, const Address &p_source, const Address &p_type) override;
- virtual void write_type_test_builtin(const Address &p_target, const Address &p_source, Variant::Type p_type) override;
+ virtual void write_type_test(const Address &p_target, const Address &p_source, const GDScriptDataType &p_type) override;
virtual void write_and_left_operand(const Address &p_left_operand) override;
virtual void write_and_right_operand(const Address &p_right_operand) override;
virtual void write_end_and(const Address &p_target) override;
diff --git a/modules/gdscript/gdscript_codegen.h b/modules/gdscript/gdscript_codegen.h
index 6d42d152b9..7847ab28c7 100644
--- a/modules/gdscript/gdscript_codegen.h
+++ b/modules/gdscript/gdscript_codegen.h
@@ -90,8 +90,7 @@ public:
virtual void write_type_adjust(const Address &p_target, Variant::Type p_new_type) = 0;
virtual void write_unary_operator(const Address &p_target, Variant::Operator p_operator, const Address &p_left_operand) = 0;
virtual void write_binary_operator(const Address &p_target, Variant::Operator p_operator, const Address &p_left_operand, const Address &p_right_operand) = 0;
- virtual void write_type_test(const Address &p_target, const Address &p_source, const Address &p_type) = 0;
- virtual void write_type_test_builtin(const Address &p_target, const Address &p_source, Variant::Type p_type) = 0;
+ virtual void write_type_test(const Address &p_target, const Address &p_source, const GDScriptDataType &p_type) = 0;
virtual void write_and_left_operand(const Address &p_left_operand) = 0;
virtual void write_and_right_operand(const Address &p_right_operand) = 0;
virtual void write_end_and(const Address &p_target) = 0;
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index b34be11169..efa75528fc 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -148,13 +148,8 @@ GDScriptDataType GDScriptCompiler::_gdtype_from_datatype(const GDScriptParser::D
}
} break;
case GDScriptParser::DataType::ENUM:
- result.has_type = true;
result.kind = GDScriptDataType::BUILTIN;
- if (p_datatype.is_meta_type) {
- result.builtin_type = Variant::DICTIONARY;
- } else {
- result.builtin_type = Variant::INT;
- }
+ result.builtin_type = p_datatype.builtin_type;
break;
case GDScriptParser::DataType::RESOLVING:
case GDScriptParser::DataType::UNRESOLVED: {
@@ -494,17 +489,10 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
} break;
case GDScriptParser::Node::CAST: {
const GDScriptParser::CastNode *cn = static_cast<const GDScriptParser::CastNode *>(p_expression);
- GDScriptParser::DataType og_cast_type = cn->get_datatype();
- GDScriptDataType cast_type = _gdtype_from_datatype(og_cast_type, codegen.script);
+ GDScriptDataType cast_type = _gdtype_from_datatype(cn->get_datatype(), codegen.script);
GDScriptCodeGenerator::Address result;
if (cast_type.has_type) {
- if (og_cast_type.kind == GDScriptParser::DataType::ENUM) {
- // Enum types are usually treated as dictionaries, but in this case we want to cast to an integer.
- cast_type.kind = GDScriptDataType::BUILTIN;
- cast_type.builtin_type = Variant::INT;
- }
-
// Create temporary for result first since it will be deleted last.
result = codegen.add_temporary(cast_type);
@@ -817,28 +805,6 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
gen->pop_temporary();
}
} break;
- case GDScriptParser::BinaryOpNode::OP_TYPE_TEST: {
- GDScriptCodeGenerator::Address operand = _parse_expression(codegen, r_error, binary->left_operand);
-
- if (binary->right_operand->type == GDScriptParser::Node::IDENTIFIER && GDScriptParser::get_builtin_type(static_cast<const GDScriptParser::IdentifierNode *>(binary->right_operand)->name) != Variant::VARIANT_MAX) {
- // `is` with builtin type)
- Variant::Type type = GDScriptParser::get_builtin_type(static_cast<const GDScriptParser::IdentifierNode *>(binary->right_operand)->name);
- gen->write_type_test_builtin(result, operand, type);
- } else {
- GDScriptCodeGenerator::Address type = _parse_expression(codegen, r_error, binary->right_operand);
- if (r_error) {
- return GDScriptCodeGenerator::Address();
- }
- gen->write_type_test(result, operand, type);
- if (type.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
- gen->pop_temporary();
- }
- }
-
- if (operand.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
- gen->pop_temporary();
- }
- } break;
default: {
GDScriptCodeGenerator::Address left_operand = _parse_expression(codegen, r_error, binary->left_operand);
GDScriptCodeGenerator::Address right_operand = _parse_expression(codegen, r_error, binary->right_operand);
@@ -894,6 +860,28 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
return result;
} break;
+ case GDScriptParser::Node::TYPE_TEST: {
+ const GDScriptParser::TypeTestNode *type_test = static_cast<const GDScriptParser::TypeTestNode *>(p_expression);
+ GDScriptCodeGenerator::Address result = codegen.add_temporary(_gdtype_from_datatype(type_test->get_datatype(), codegen.script));
+
+ GDScriptCodeGenerator::Address operand = _parse_expression(codegen, r_error, type_test->operand);
+ GDScriptDataType test_type = _gdtype_from_datatype(type_test->test_datatype, codegen.script);
+ if (r_error) {
+ return GDScriptCodeGenerator::Address();
+ }
+
+ if (test_type.has_type) {
+ gen->write_type_test(result, operand, test_type);
+ } else {
+ gen->write_assign_true(result);
+ }
+
+ if (operand.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
+ gen->pop_temporary();
+ }
+
+ return result;
+ } break;
case GDScriptParser::Node::ASSIGNMENT: {
const GDScriptParser::AssignmentNode *assignment = static_cast<const GDScriptParser::AssignmentNode *>(p_expression);
diff --git a/modules/gdscript/gdscript_disassembler.cpp b/modules/gdscript/gdscript_disassembler.cpp
index d4f4358ac1..0acc03be3d 100644
--- a/modules/gdscript/gdscript_disassembler.cpp
+++ b/modules/gdscript/gdscript_disassembler.cpp
@@ -135,23 +135,56 @@ void GDScriptFunction::disassemble(const Vector<String> &p_code_lines) const {
incr += 5;
} break;
- case OPCODE_EXTENDS_TEST: {
- text += "is object ";
- text += DADDR(3);
- text += " = ";
+ case OPCODE_TYPE_TEST_BUILTIN: {
+ text += "type test ";
text += DADDR(1);
- text += " is ";
+ text += " = ";
text += DADDR(2);
+ text += " is ";
+ text += Variant::get_type_name(Variant::Type(_code_ptr[ip + 3]));
incr += 4;
} break;
- case OPCODE_IS_BUILTIN: {
- text += "is builtin ";
+ case OPCODE_TYPE_TEST_ARRAY: {
+ text += "type test ";
+ text += DADDR(1);
+ text += " = ";
text += DADDR(2);
+ text += " is Array[";
+
+ Ref<Script> script_type = get_constant(_code_ptr[ip + 3] & GDScriptFunction::ADDR_MASK);
+ Variant::Type builtin_type = (Variant::Type)_code_ptr[ip + 4];
+ StringName native_type = get_global_name(_code_ptr[ip + 5]);
+
+ if (script_type.is_valid() && script_type->is_valid()) {
+ text += script_type->get_path();
+ } else if (native_type != StringName()) {
+ text += native_type;
+ } else {
+ text += Variant::get_type_name(builtin_type);
+ }
+
+ text += "]";
+
+ incr += 6;
+ } break;
+ case OPCODE_TYPE_TEST_NATIVE: {
+ text += "type test ";
+ text += DADDR(1);
text += " = ";
+ text += DADDR(2);
+ text += " is ";
+ text += get_global_name(_code_ptr[ip + 3]);
+
+ incr += 4;
+ } break;
+ case OPCODE_TYPE_TEST_SCRIPT: {
+ text += "type test ";
text += DADDR(1);
+ text += " = ";
+ text += DADDR(2);
text += " is ";
- text += Variant::get_type_name(Variant::Type(_code_ptr[ip + 3]));
+ text += DADDR(3);
incr += 4;
} break;
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 8cfd48b52b..63dfd4d27c 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -1353,6 +1353,21 @@ static GDScriptCompletionIdentifier _type_from_property(const PropertyInfo &p_pr
return ci;
}
+#define MAX_COMPLETION_RECURSION 100
+struct RecursionCheck {
+ int *counter;
+ _FORCE_INLINE_ bool check() {
+ return (*counter) > MAX_COMPLETION_RECURSION;
+ }
+ RecursionCheck(int *p_counter) :
+ counter(p_counter) {
+ (*counter)++;
+ }
+ ~RecursionCheck() {
+ (*counter)--;
+ }
+};
+
static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context, const StringName &p_identifier, GDScriptCompletionIdentifier &r_type);
static bool _guess_identifier_type_from_base(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_identifier, GDScriptCompletionIdentifier &r_type);
static bool _guess_method_return_type_from_base(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_method, GDScriptCompletionIdentifier &r_type);
@@ -1385,6 +1400,12 @@ static bool _guess_expression_type(GDScriptParser::CompletionContext &p_context,
return false;
}
+ static int recursion_depth = 0;
+ RecursionCheck recursion(&recursion_depth);
+ if (unlikely(recursion.check())) {
+ ERR_FAIL_V_MSG(false, "Reached recursion limit while trying to guess type.");
+ }
+
if (p_expression->is_constant) {
// Already has a value, so just use that.
r_type = _type_from_variant(p_expression->reduced_value);
@@ -1855,6 +1876,12 @@ static bool _guess_expression_type(GDScriptParser::CompletionContext &p_context,
}
static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context, const StringName &p_identifier, GDScriptCompletionIdentifier &r_type) {
+ static int recursion_depth = 0;
+ RecursionCheck recursion(&recursion_depth);
+ if (unlikely(recursion.check())) {
+ ERR_FAIL_V_MSG(false, "Reached recursion limit while trying to guess type.");
+ }
+
// Look in blocks first.
int last_assign_line = -1;
const GDScriptParser::ExpressionNode *last_assigned_expression = nullptr;
@@ -1918,21 +1945,19 @@ static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context,
}
}
- if (suite->parent_if && suite->parent_if->condition && suite->parent_if->condition->type == GDScriptParser::Node::BINARY_OPERATOR && static_cast<const GDScriptParser::BinaryOpNode *>(suite->parent_if->condition)->operation == GDScriptParser::BinaryOpNode::OP_TYPE_TEST) {
+ if (suite->parent_if && suite->parent_if->condition && suite->parent_if->condition->type == GDScriptParser::Node::TYPE_TEST) {
// Operator `is` used, check if identifier is in there! this helps resolve in blocks that are (if (identifier is value)): which are very common..
// Super dirty hack, but very useful.
// Credit: Zylann.
// TODO: this could be hacked to detect ANDed conditions too...
- const GDScriptParser::BinaryOpNode *op = static_cast<const GDScriptParser::BinaryOpNode *>(suite->parent_if->condition);
- if (op->left_operand && op->right_operand && op->left_operand->type == GDScriptParser::Node::IDENTIFIER && static_cast<const GDScriptParser::IdentifierNode *>(op->left_operand)->name == p_identifier) {
+ const GDScriptParser::TypeTestNode *type_test = static_cast<const GDScriptParser::TypeTestNode *>(suite->parent_if->condition);
+ if (type_test->operand && type_test->test_type && type_test->operand->type == GDScriptParser::Node::IDENTIFIER && static_cast<const GDScriptParser::IdentifierNode *>(type_test->operand)->name == p_identifier) {
// Bingo.
GDScriptParser::CompletionContext c = p_context;
- c.current_line = op->left_operand->start_line;
+ c.current_line = type_test->operand->start_line;
c.current_suite = suite;
- GDScriptCompletionIdentifier is_type;
- if (_guess_expression_type(c, op->right_operand, is_type)) {
- id_type = is_type.type;
- id_type.is_meta_type = false;
+ if ((!id_type.is_set() || id_type.is_variant()) && type_test->test_datatype.is_hard_type()) {
+ id_type = type_test->test_datatype;
if (last_assign_line < c.current_line) {
// Override last assignment.
last_assign_line = c.current_line;
@@ -2074,6 +2099,12 @@ static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context,
}
static bool _guess_identifier_type_from_base(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_identifier, GDScriptCompletionIdentifier &r_type) {
+ static int recursion_depth = 0;
+ RecursionCheck recursion(&recursion_depth);
+ if (unlikely(recursion.check())) {
+ ERR_FAIL_V_MSG(false, "Reached recursion limit while trying to guess type.");
+ }
+
GDScriptParser::DataType base_type = p_base.type;
bool is_static = base_type.is_meta_type;
while (base_type.is_set()) {
@@ -2287,6 +2318,12 @@ static void _find_last_return_in_block(GDScriptParser::CompletionContext &p_cont
}
static bool _guess_method_return_type_from_base(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_method, GDScriptCompletionIdentifier &r_type) {
+ static int recursion_depth = 0;
+ RecursionCheck recursion(&recursion_depth);
+ if (unlikely(recursion.check())) {
+ ERR_FAIL_V_MSG(false, "Reached recursion limit while trying to guess type.");
+ }
+
GDScriptParser::DataType base_type = p_base.type;
bool is_static = base_type.is_meta_type;
diff --git a/modules/gdscript/gdscript_function.h b/modules/gdscript/gdscript_function.h
index 2624fb8dd9..1a5e9eef53 100644
--- a/modules/gdscript/gdscript_function.h
+++ b/modules/gdscript/gdscript_function.h
@@ -105,9 +105,10 @@ public:
return false;
}
- Object *obj = p_variant.get_validated_object();
+ bool was_freed = false;
+ Object *obj = p_variant.get_validated_object_with_check(was_freed);
if (!obj) {
- return false;
+ return !was_freed;
}
if (!ClassDB::is_parent_class(obj->get_class_name(), native_type)) {
@@ -124,9 +125,10 @@ public:
return false;
}
- Object *obj = p_variant.get_validated_object();
+ bool was_freed = false;
+ Object *obj = p_variant.get_validated_object_with_check(was_freed);
if (!obj) {
- return false;
+ return !was_freed;
}
Ref<Script> base = obj && obj->get_script_instance() ? obj->get_script_instance()->get_script() : nullptr;
@@ -219,8 +221,10 @@ public:
enum Opcode {
OPCODE_OPERATOR,
OPCODE_OPERATOR_VALIDATED,
- OPCODE_EXTENDS_TEST,
- OPCODE_IS_BUILTIN,
+ OPCODE_TYPE_TEST_BUILTIN,
+ OPCODE_TYPE_TEST_ARRAY,
+ OPCODE_TYPE_TEST_NATIVE,
+ OPCODE_TYPE_TEST_SCRIPT,
OPCODE_SET_KEYED,
OPCODE_SET_KEYED_VALIDATED,
OPCODE_SET_INDEXED_VALIDATED,
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index b5cb5a4680..b32313dad4 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -2463,9 +2463,6 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_binary_operator(Expression
operation->operation = BinaryOpNode::OP_LOGIC_OR;
operation->variant_op = Variant::OP_OR;
break;
- case GDScriptTokenizer::Token::IS:
- operation->operation = BinaryOpNode::OP_TYPE_TEST;
- break;
case GDScriptTokenizer::Token::IN:
operation->operation = BinaryOpNode::OP_CONTENT_TEST;
operation->variant_op = Variant::OP_IN;
@@ -3161,6 +3158,22 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_lambda(ExpressionNode *p_p
return lambda;
}
+GDScriptParser::ExpressionNode *GDScriptParser::parse_type_test(ExpressionNode *p_previous_operand, bool p_can_assign) {
+ TypeTestNode *type_test = alloc_node<TypeTestNode>();
+ reset_extents(type_test, p_previous_operand);
+ update_extents(type_test);
+
+ type_test->operand = p_previous_operand;
+ type_test->test_type = parse_type();
+ complete_extents(type_test);
+
+ if (type_test->test_type == nullptr) {
+ push_error(R"(Expected type specifier after "is".)");
+ }
+
+ return type_test;
+}
+
GDScriptParser::ExpressionNode *GDScriptParser::parse_yield(ExpressionNode *p_previous_operand, bool p_can_assign) {
push_error(R"("yield" was removed in Godot 4.0. Use "await" instead.)");
return nullptr;
@@ -3529,7 +3542,7 @@ GDScriptParser::ParseRule *GDScriptParser::get_rule(GDScriptTokenizer::Token::Ty
{ nullptr, nullptr, PREC_NONE }, // EXTENDS,
{ &GDScriptParser::parse_lambda, nullptr, PREC_NONE }, // FUNC,
{ nullptr, &GDScriptParser::parse_binary_operator, PREC_CONTENT_TEST }, // IN,
- { nullptr, &GDScriptParser::parse_binary_operator, PREC_TYPE_TEST }, // IS,
+ { nullptr, &GDScriptParser::parse_type_test, PREC_TYPE_TEST }, // IS,
{ nullptr, nullptr, PREC_NONE }, // NAMESPACE,
{ &GDScriptParser::parse_preload, nullptr, PREC_NONE }, // PRELOAD,
{ &GDScriptParser::parse_self, nullptr, PREC_NONE }, // SELF,
@@ -4379,9 +4392,6 @@ void GDScriptParser::TreePrinter::print_binary_op(BinaryOpNode *p_binary_op) {
case BinaryOpNode::OP_LOGIC_OR:
push_text(" OR ");
break;
- case BinaryOpNode::OP_TYPE_TEST:
- push_text(" IS ");
- break;
case BinaryOpNode::OP_CONTENT_TEST:
push_text(" IN ");
break;
@@ -4584,6 +4594,9 @@ void GDScriptParser::TreePrinter::print_expression(ExpressionNode *p_expression)
case Node::TERNARY_OPERATOR:
print_ternary_op(static_cast<TernaryOpNode *>(p_expression));
break;
+ case Node::TYPE_TEST:
+ print_type_test(static_cast<TypeTestNode *>(p_expression));
+ break;
case Node::UNARY_OPERATOR:
print_unary_op(static_cast<UnaryOpNode *>(p_expression));
break;
@@ -4943,6 +4956,12 @@ void GDScriptParser::TreePrinter::print_type(TypeNode *p_type) {
}
}
+void GDScriptParser::TreePrinter::print_type_test(TypeTestNode *p_test) {
+ print_expression(p_test->operand);
+ push_text(" IS ");
+ print_type(p_test->test_type);
+}
+
void GDScriptParser::TreePrinter::print_unary_op(UnaryOpNode *p_unary_op) {
// Surround in parenthesis for disambiguation.
push_text("(");
diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h
index 0ba0d5b6da..346c9bc45d 100644
--- a/modules/gdscript/gdscript_parser.h
+++ b/modules/gdscript/gdscript_parser.h
@@ -91,6 +91,7 @@ public:
struct SuiteNode;
struct TernaryOpNode;
struct TypeNode;
+ struct TypeTestNode;
struct UnaryOpNode;
struct VariableNode;
struct WhileNode;
@@ -124,6 +125,7 @@ public:
bool is_constant = false;
bool is_read_only = false;
bool is_meta_type = false;
+ bool is_pseudo_type = false; // For global names that can't be used standalone.
bool is_coroutine = false; // For function calls.
Variant::Type builtin_type = Variant::NIL;
@@ -210,6 +212,7 @@ public:
is_read_only = p_other.is_read_only;
is_constant = p_other.is_constant;
is_meta_type = p_other.is_meta_type;
+ is_pseudo_type = p_other.is_pseudo_type;
is_coroutine = p_other.is_coroutine;
builtin_type = p_other.builtin_type;
native_type = p_other.native_type;
@@ -288,6 +291,7 @@ public:
SUITE,
TERNARY_OPERATOR,
TYPE,
+ TYPE_TEST,
UNARY_OPERATOR,
VARIABLE,
WHILE,
@@ -426,7 +430,6 @@ public:
OP_BIT_XOR,
OP_LOGIC_AND,
OP_LOGIC_OR,
- OP_TYPE_TEST,
OP_CONTENT_TEST,
OP_COMP_EQUAL,
OP_COMP_NOT_EQUAL,
@@ -1150,6 +1153,16 @@ public:
}
};
+ struct TypeTestNode : public ExpressionNode {
+ ExpressionNode *operand = nullptr;
+ TypeNode *test_type = nullptr;
+ DataType test_datatype;
+
+ TypeTestNode() {
+ type = TYPE_TEST;
+ }
+ };
+
struct UnaryOpNode : public ExpressionNode {
enum OpType {
OP_POSITIVE,
@@ -1460,6 +1473,7 @@ private:
ExpressionNode *parse_attribute(ExpressionNode *p_previous_operand, bool p_can_assign);
ExpressionNode *parse_subscript(ExpressionNode *p_previous_operand, bool p_can_assign);
ExpressionNode *parse_lambda(ExpressionNode *p_previous_operand, bool p_can_assign);
+ ExpressionNode *parse_type_test(ExpressionNode *p_previous_operand, bool p_can_assign);
ExpressionNode *parse_yield(ExpressionNode *p_previous_operand, bool p_can_assign);
ExpressionNode *parse_invalid_token(ExpressionNode *p_previous_operand, bool p_can_assign);
TypeNode *parse_type(bool p_allow_void = false);
@@ -1541,8 +1555,9 @@ public:
void print_statement(Node *p_statement);
void print_subscript(SubscriptNode *p_subscript);
void print_suite(SuiteNode *p_suite);
- void print_type(TypeNode *p_type);
void print_ternary_op(TernaryOpNode *p_ternary_op);
+ void print_type(TypeNode *p_type);
+ void print_type_test(TypeTestNode *p_type_test);
void print_unary_op(UnaryOpNode *p_unary_op);
void print_variable(VariableNode *p_variable);
void print_while(WhileNode *p_while);
diff --git a/modules/gdscript/gdscript_utility_functions.cpp b/modules/gdscript/gdscript_utility_functions.cpp
index 758b61bb31..8862450121 100644
--- a/modules/gdscript/gdscript_utility_functions.cpp
+++ b/modules/gdscript/gdscript_utility_functions.cpp
@@ -523,6 +523,82 @@ struct GDScriptUtilityFunctionsDefinitions {
}
}
}
+
+ static inline void is_instance_of(Variant *r_ret, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
+ VALIDATE_ARG_COUNT(2);
+
+ if (p_args[1]->get_type() == Variant::INT) {
+ int builtin_type = *p_args[1];
+ if (builtin_type < 0 || builtin_type >= Variant::VARIANT_MAX) {
+ *r_ret = RTR("Invalid type argument for is_instance_of(), use TYPE_* constants for built-in types.");
+ r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = 1;
+ r_error.expected = Variant::NIL;
+ return;
+ }
+ *r_ret = p_args[0]->get_type() == builtin_type;
+ return;
+ }
+
+ bool was_type_freed = false;
+ Object *type_object = p_args[1]->get_validated_object_with_check(was_type_freed);
+ if (was_type_freed) {
+ *r_ret = RTR("Type argument is a previously freed instance.");
+ r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = 1;
+ r_error.expected = Variant::NIL;
+ return;
+ }
+ if (!type_object) {
+ *r_ret = RTR("Invalid type argument for is_instance_of(), should be a TYPE_* constant, a class or a script.");
+ r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = 1;
+ r_error.expected = Variant::NIL;
+ return;
+ }
+
+ bool was_value_freed = false;
+ Object *value_object = p_args[0]->get_validated_object_with_check(was_value_freed);
+ if (was_value_freed) {
+ *r_ret = RTR("Value argument is a previously freed instance.");
+ r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = 0;
+ r_error.expected = Variant::NIL;
+ return;
+ }
+ if (!value_object) {
+ *r_ret = false;
+ return;
+ }
+
+ GDScriptNativeClass *native_type = Object::cast_to<GDScriptNativeClass>(type_object);
+ if (native_type) {
+ *r_ret = ClassDB::is_parent_class(value_object->get_class_name(), native_type->get_name());
+ return;
+ }
+
+ Script *script_type = Object::cast_to<Script>(type_object);
+ if (script_type) {
+ bool result = false;
+ if (value_object->get_script_instance()) {
+ Script *script_ptr = value_object->get_script_instance()->get_script().ptr();
+ while (script_ptr) {
+ if (script_ptr == script_type) {
+ result = true;
+ break;
+ }
+ script_ptr = script_ptr->get_base_script().ptr();
+ }
+ }
+ *r_ret = result;
+ return;
+ }
+
+ *r_ret = RTR("Invalid type argument for is_instance_of(), should be a TYPE_* constant, a class or a script.");
+ r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = 1;
+ r_error.expected = Variant::NIL;
+ }
};
struct GDScriptUtilityFunctionInfo {
@@ -638,6 +714,7 @@ void GDScriptUtilityFunctions::register_functions() {
REGISTER_FUNC_NO_ARGS(print_stack, false, Variant::NIL);
REGISTER_FUNC_NO_ARGS(get_stack, false, Variant::ARRAY);
REGISTER_FUNC(len, true, Variant::INT, VARARG("var"));
+ REGISTER_FUNC(is_instance_of, true, Variant::BOOL, VARARG("value"), VARARG("type"));
}
void GDScriptUtilityFunctions::unregister_functions() {
diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp
index 9f7d27d841..ba400b8e15 100644
--- a/modules/gdscript/gdscript_vm.cpp
+++ b/modules/gdscript/gdscript_vm.cpp
@@ -201,8 +201,10 @@ void (*type_init_function_table[])(Variant *) = {
static const void *switch_table_ops[] = { \
&&OPCODE_OPERATOR, \
&&OPCODE_OPERATOR_VALIDATED, \
- &&OPCODE_EXTENDS_TEST, \
- &&OPCODE_IS_BUILTIN, \
+ &&OPCODE_TYPE_TEST_BUILTIN, \
+ &&OPCODE_TYPE_TEST_ARRAY, \
+ &&OPCODE_TYPE_TEST_NATIVE, \
+ &&OPCODE_TYPE_TEST_SCRIPT, \
&&OPCODE_SET_KEYED, \
&&OPCODE_SET_KEYED_VALIDATED, \
&&OPCODE_SET_INDEXED_VALIDATED, \
@@ -743,91 +745,95 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
}
DISPATCH_OPCODE;
- OPCODE(OPCODE_EXTENDS_TEST) {
+ OPCODE(OPCODE_TYPE_TEST_BUILTIN) {
CHECK_SPACE(4);
- GET_VARIANT_PTR(a, 0);
- GET_VARIANT_PTR(b, 1);
- GET_VARIANT_PTR(dst, 2);
-
-#ifdef DEBUG_ENABLED
- if (b->get_type() != Variant::OBJECT || b->operator Object *() == nullptr) {
- err_text = "Right operand of 'is' is not a class.";
- OPCODE_BREAK;
- }
-#endif
+ GET_VARIANT_PTR(dst, 0);
+ GET_VARIANT_PTR(value, 1);
- bool extends_ok = false;
- if (a->get_type() == Variant::OBJECT && a->operator Object *() != nullptr) {
-#ifdef DEBUG_ENABLED
- bool was_freed;
- Object *obj_A = a->get_validated_object_with_check(was_freed);
+ Variant::Type builtin_type = (Variant::Type)_code_ptr[ip + 3];
+ GD_ERR_BREAK(builtin_type < 0 || builtin_type >= Variant::VARIANT_MAX);
- if (was_freed) {
- err_text = "Left operand of 'is' is a previously freed instance.";
- OPCODE_BREAK;
- }
+ *dst = value->get_type() == builtin_type;
+ ip += 4;
+ }
+ DISPATCH_OPCODE;
- Object *obj_B = b->get_validated_object_with_check(was_freed);
+ OPCODE(OPCODE_TYPE_TEST_ARRAY) {
+ CHECK_SPACE(6);
- if (was_freed) {
- err_text = "Right operand of 'is' is a previously freed instance.";
- OPCODE_BREAK;
- }
-#else
+ GET_VARIANT_PTR(dst, 0);
+ GET_VARIANT_PTR(value, 1);
- Object *obj_A = *a;
- Object *obj_B = *b;
-#endif // DEBUG_ENABLED
+ GET_VARIANT_PTR(script_type, 2);
+ Variant::Type builtin_type = (Variant::Type)_code_ptr[ip + 4];
+ int native_type_idx = _code_ptr[ip + 5];
+ GD_ERR_BREAK(native_type_idx < 0 || native_type_idx >= _global_names_count);
+ const StringName native_type = _global_names_ptr[native_type_idx];
- GDScript *scr_B = Object::cast_to<GDScript>(obj_B);
+ bool result = false;
+ if (value->get_type() == Variant::ARRAY) {
+ Array *array = VariantInternal::get_array(value);
+ result = array->get_typed_builtin() == ((uint32_t)builtin_type) && array->get_typed_class_name() == native_type && array->get_typed_script() == *script_type && array->get_typed_class_name() == native_type;
+ }
- if (scr_B) {
- //if B is a script, the only valid condition is that A has an instance which inherits from the script
- //in other situation, this should return false.
+ *dst = result;
+ ip += 6;
+ }
+ DISPATCH_OPCODE;
- if (obj_A->get_script_instance() && obj_A->get_script_instance()->get_language() == GDScriptLanguage::get_singleton()) {
- GDScript *cmp = static_cast<GDScript *>(obj_A->get_script_instance()->get_script().ptr());
- //bool found=false;
- while (cmp) {
- if (cmp == scr_B) {
- //inherits from script, all ok
- extends_ok = true;
- break;
- }
+ OPCODE(OPCODE_TYPE_TEST_NATIVE) {
+ CHECK_SPACE(4);
- cmp = cmp->_base;
- }
- }
+ GET_VARIANT_PTR(dst, 0);
+ GET_VARIANT_PTR(value, 1);
- } else {
- GDScriptNativeClass *nc = Object::cast_to<GDScriptNativeClass>(obj_B);
+ int native_type_idx = _code_ptr[ip + 3];
+ GD_ERR_BREAK(native_type_idx < 0 || native_type_idx >= _global_names_count);
+ const StringName native_type = _global_names_ptr[native_type_idx];
-#ifdef DEBUG_ENABLED
- if (!nc) {
- err_text = "Right operand of 'is' is not a class (type: '" + obj_B->get_class() + "').";
- OPCODE_BREAK;
- }
-#endif
- extends_ok = ClassDB::is_parent_class(obj_A->get_class_name(), nc->get_name());
- }
+ bool was_freed = false;
+ Object *object = value->get_validated_object_with_check(was_freed);
+ if (was_freed) {
+ err_text = "Left operand of 'is' is a previously freed instance.";
+ OPCODE_BREAK;
}
- *dst = extends_ok;
+ *dst = object && ClassDB::is_parent_class(object->get_class_name(), native_type);
ip += 4;
}
DISPATCH_OPCODE;
- OPCODE(OPCODE_IS_BUILTIN) {
+ OPCODE(OPCODE_TYPE_TEST_SCRIPT) {
CHECK_SPACE(4);
- GET_VARIANT_PTR(value, 0);
- GET_VARIANT_PTR(dst, 1);
- Variant::Type var_type = (Variant::Type)_code_ptr[ip + 3];
+ GET_VARIANT_PTR(dst, 0);
+ GET_VARIANT_PTR(value, 1);
- GD_ERR_BREAK(var_type < 0 || var_type >= Variant::VARIANT_MAX);
+ GET_VARIANT_PTR(type, 2);
+ Script *script_type = Object::cast_to<Script>(type->operator Object *());
+ GD_ERR_BREAK(!script_type);
+
+ bool was_freed = false;
+ Object *object = value->get_validated_object_with_check(was_freed);
+ if (was_freed) {
+ err_text = "Left operand of 'is' is a previously freed instance.";
+ OPCODE_BREAK;
+ }
+
+ bool result = false;
+ if (object && object->get_script_instance()) {
+ Script *script_ptr = object->get_script_instance()->get_script().ptr();
+ while (script_ptr) {
+ if (script_ptr == script_type) {
+ result = true;
+ break;
+ }
+ script_ptr = script_ptr->get_base_script().ptr();
+ }
+ }
- *dst = value->get_type() == var_type;
+ *dst = result;
ip += 4;
}
DISPATCH_OPCODE;
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_bad_value.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_bad_value.out
index ddbdc17a42..1b6e11f6f2 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_bad_value.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_bad_value.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot find member "V3" in base "enum_bad_value.gd::Enum".
+Cannot find member "V3" in base "enum_bad_value.gd.Enum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_assign_with_wrong_enum_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_assign_with_wrong_enum_type.out
index 84958f1aa2..d401675bcf 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_assign_with_wrong_enum_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_assign_with_wrong_enum_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_class_var_assign_with_wrong_enum_type.gd::MyOtherEnum" as "enum_class_var_assign_with_wrong_enum_type.gd::MyEnum".
+Cannot assign a value of type "enum_class_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_assign_with_wrong_enum_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_init_with_wrong_enum_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_init_with_wrong_enum_type.out
index e294f3496a..4b6b42b024 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_init_with_wrong_enum_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_class_var_init_with_wrong_enum_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_class_var_init_with_wrong_enum_type.gd::MyOtherEnum" as "enum_class_var_init_with_wrong_enum_type.gd::MyEnum".
+Cannot assign a value of type "enum_class_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_class_var_init_with_wrong_enum_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_function_parameter_wrong_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_function_parameter_wrong_type.out
index a91189e2dd..adde630a0b 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_function_parameter_wrong_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_function_parameter_wrong_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot pass a value of type "enum_function_parameter_wrong_type.gd::MyOtherEnum" as "enum_function_parameter_wrong_type.gd::MyEnum".
+Cannot pass a value of type "enum_function_parameter_wrong_type.gd.MyOtherEnum" as "enum_function_parameter_wrong_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_function_return_wrong_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_function_return_wrong_type.out
index 6b4eba3740..9ee3fb7c06 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_function_return_wrong_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_function_return_wrong_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot return a value of type "enum_function_return_wrong_type.gd::MyOtherEnum" as "enum_function_return_wrong_type.gd::MyEnum".
+Cannot return a value of type "enum_function_return_wrong_type.gd.MyOtherEnum" as "enum_function_return_wrong_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_outer_with_wrong_enum_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_outer_with_wrong_enum_type.out
index 616358bb61..8de7bde50d 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_outer_with_wrong_enum_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_outer_with_wrong_enum_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_local_var_assign_outer_with_wrong_enum_type.gd::InnerClass::MyEnum" as "enum_local_var_assign_outer_with_wrong_enum_type.gd::MyEnum".
+Cannot assign a value of type "enum_local_var_assign_outer_with_wrong_enum_type.gd::InnerClass.MyEnum" as "enum_local_var_assign_outer_with_wrong_enum_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_with_wrong_enum_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_with_wrong_enum_type.out
index af3dde663f..e2139e75f6 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_with_wrong_enum_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_assign_with_wrong_enum_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_local_var_assign_with_wrong_enum_type.gd::MyOtherEnum" as "enum_local_var_assign_with_wrong_enum_type.gd::MyEnum".
+Cannot assign a value of type "enum_local_var_assign_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_assign_with_wrong_enum_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_init_with_wrong_enum_type.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_init_with_wrong_enum_type.out
index 781b0bc85f..46c0553c28 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_init_with_wrong_enum_type.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_local_var_init_with_wrong_enum_type.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_local_var_init_with_wrong_enum_type.gd::MyOtherEnum" as "enum_local_var_init_with_wrong_enum_type.gd::MyEnum".
+Cannot assign a value of type "enum_local_var_init_with_wrong_enum_type.gd.MyOtherEnum" as "enum_local_var_init_with_wrong_enum_type.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_native_bad_value.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_native_bad_value.out
index 49f041a2dd..4b1db77a35 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_native_bad_value.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_native_bad_value.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot find member "THIS_DOES_NOT_EXIST" in base "TileSet::TileShape".
+Cannot find member "THIS_DOES_NOT_EXIST" in base "TileSet.TileShape".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_preload_unnamed_assign_to_named.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_preload_unnamed_assign_to_named.out
index e8c7f86c4f..ddd26e7399 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_preload_unnamed_assign_to_named.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_preload_unnamed_assign_to_named.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_value_from_parent.gd::<anonymous enum>" as "enum_preload_unnamed_assign_to_named.gd::MyEnum".
+Cannot assign a value of type "enum_value_from_parent.gd.<anonymous enum>" as "enum_preload_unnamed_assign_to_named.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/enum_unnamed_assign_to_named.out b/modules/gdscript/tests/scripts/analyzer/errors/enum_unnamed_assign_to_named.out
index fb18c94d0b..3a65978aa3 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/enum_unnamed_assign_to_named.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/enum_unnamed_assign_to_named.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_unnamed_assign_to_named.gd::<anonymous enum>" as "enum_unnamed_assign_to_named.gd::MyEnum".
+Cannot assign a value of type "enum_unnamed_assign_to_named.gd.<anonymous enum>" as "enum_unnamed_assign_to_named.gd.MyEnum".
diff --git a/modules/gdscript/tests/scripts/analyzer/errors/preload_enum_error.out b/modules/gdscript/tests/scripts/analyzer/errors/preload_enum_error.out
index 08a973503f..21143f2ade 100644
--- a/modules/gdscript/tests/scripts/analyzer/errors/preload_enum_error.out
+++ b/modules/gdscript/tests/scripts/analyzer/errors/preload_enum_error.out
@@ -1,2 +1,2 @@
GDTEST_ANALYZER_ERROR
-Cannot assign a value of type "enum_from_outer.gd::Named" as "preload_enum_error.gd::LocalNamed".
+Cannot assign a value of type "enum_from_outer.gd.Named" as "preload_enum_error.gd.LocalNamed".
diff --git a/modules/gdscript/tests/scripts/analyzer/features/global_enums.gd b/modules/gdscript/tests/scripts/analyzer/features/global_enums.gd
new file mode 100644
index 0000000000..67d48817e8
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/global_enums.gd
@@ -0,0 +1,30 @@
+func test():
+ var type: Variant.Type
+ type = Variant.Type.TYPE_INT
+ print(type)
+ type = TYPE_FLOAT
+ print(type)
+
+ var direction: ClockDirection
+ direction = ClockDirection.CLOCKWISE
+ print(direction)
+ direction = COUNTERCLOCKWISE
+ print(direction)
+
+ var duper := Duper.new()
+ duper.set_type(Variant.Type.TYPE_INT)
+ duper.set_type(TYPE_FLOAT)
+ duper.set_direction(ClockDirection.CLOCKWISE)
+ duper.set_direction(COUNTERCLOCKWISE)
+
+class Super:
+ func set_type(type: Variant.Type) -> void:
+ print(type)
+ func set_direction(dir: ClockDirection) -> void:
+ print(dir)
+
+class Duper extends Super:
+ func set_type(type: Variant.Type) -> void:
+ print(type)
+ func set_direction(dir: ClockDirection) -> void:
+ print(dir)
diff --git a/modules/gdscript/tests/scripts/analyzer/features/global_enums.out b/modules/gdscript/tests/scripts/analyzer/features/global_enums.out
new file mode 100644
index 0000000000..b3b5bf57c1
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/global_enums.out
@@ -0,0 +1,9 @@
+GDTEST_OK
+2
+3
+0
+1
+2
+3
+0
+1
diff --git a/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.gd b/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.gd
new file mode 100644
index 0000000000..12dc0b93df
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.gd
@@ -0,0 +1,127 @@
+class A extends RefCounted:
+ pass
+
+class B extends A:
+ pass
+
+@warning_ignore("assert_always_true")
+func test():
+ var builtin: Variant = 3
+ assert((builtin is Variant) == true)
+ assert((builtin is int) == true)
+ assert(is_instance_of(builtin, TYPE_INT) == true)
+ assert((builtin is float) == false)
+ assert(is_instance_of(builtin, TYPE_FLOAT) == false)
+
+ const const_builtin: Variant = 3
+ assert((const_builtin is Variant) == true)
+ assert((const_builtin is int) == true)
+ assert(is_instance_of(const_builtin, TYPE_INT) == true)
+ assert((const_builtin is float) == false)
+ assert(is_instance_of(const_builtin, TYPE_FLOAT) == false)
+
+ var int_array: Variant = [] as Array[int]
+ assert((int_array is Variant) == true)
+ assert((int_array is Array) == true)
+ assert(is_instance_of(int_array, TYPE_ARRAY) == true)
+ assert((int_array is Array[int]) == true)
+ assert((int_array is Array[float]) == false)
+ assert((int_array is int) == false)
+ assert(is_instance_of(int_array, TYPE_INT) == false)
+
+ var const_int_array: Variant = [] as Array[int]
+ assert((const_int_array is Variant) == true)
+ assert((const_int_array is Array) == true)
+ assert(is_instance_of(const_int_array, TYPE_ARRAY) == true)
+ assert((const_int_array is Array[int]) == true)
+ assert((const_int_array is Array[float]) == false)
+ assert((const_int_array is int) == false)
+ assert(is_instance_of(const_int_array, TYPE_INT) == false)
+
+ var b_array: Variant = [] as Array[B]
+ assert((b_array is Variant) == true)
+ assert((b_array is Array) == true)
+ assert(is_instance_of(b_array, TYPE_ARRAY) == true)
+ assert((b_array is Array[B]) == true)
+ assert((b_array is Array[A]) == false)
+ assert((b_array is Array[int]) == false)
+ assert((b_array is int) == false)
+ assert(is_instance_of(b_array, TYPE_INT) == false)
+
+ var const_b_array: Variant = [] as Array[B]
+ assert((const_b_array is Variant) == true)
+ assert((const_b_array is Array) == true)
+ assert(is_instance_of(const_b_array, TYPE_ARRAY) == true)
+ assert((const_b_array is Array[B]) == true)
+ assert((const_b_array is Array[A]) == false)
+ assert((const_b_array is Array[int]) == false)
+ assert((const_b_array is int) == false)
+ assert(is_instance_of(const_b_array, TYPE_INT) == false)
+
+ var native: Variant = RefCounted.new()
+ assert((native is Variant) == true)
+ assert((native is Object) == true)
+ assert(is_instance_of(native, TYPE_OBJECT) == true)
+ assert(is_instance_of(native, Object) == true)
+ assert((native is RefCounted) == true)
+ assert(is_instance_of(native, RefCounted) == true)
+ assert((native is Node) == false)
+ assert(is_instance_of(native, Node) == false)
+ assert((native is int) == false)
+ assert(is_instance_of(native, TYPE_INT) == false)
+
+ var a_script: Variant = A.new()
+ assert((a_script is Variant) == true)
+ assert((a_script is Object) == true)
+ assert(is_instance_of(a_script, TYPE_OBJECT) == true)
+ assert(is_instance_of(a_script, Object) == true)
+ assert((a_script is RefCounted) == true)
+ assert(is_instance_of(a_script, RefCounted) == true)
+ assert((a_script is A) == true)
+ assert(is_instance_of(a_script, A) == true)
+ assert((a_script is B) == false)
+ assert(is_instance_of(a_script, B) == false)
+ assert((a_script is Node) == false)
+ assert(is_instance_of(a_script, Node) == false)
+ assert((a_script is int) == false)
+ assert(is_instance_of(a_script, TYPE_INT) == false)
+
+ var b_script: Variant = B.new()
+ assert((b_script is Variant) == true)
+ assert((b_script is Object) == true)
+ assert(is_instance_of(b_script, TYPE_OBJECT) == true)
+ assert(is_instance_of(b_script, Object) == true)
+ assert((b_script is RefCounted) == true)
+ assert(is_instance_of(b_script, RefCounted) == true)
+ assert((b_script is A) == true)
+ assert(is_instance_of(b_script, A) == true)
+ assert((b_script is B) == true)
+ assert(is_instance_of(b_script, B) == true)
+ assert((b_script is Node) == false)
+ assert(is_instance_of(b_script, Node) == false)
+ assert((b_script is int) == false)
+ assert(is_instance_of(b_script, TYPE_INT) == false)
+
+ var var_null: Variant = null
+ assert((var_null is Variant) == true)
+ assert((var_null is int) == false)
+ assert(is_instance_of(var_null, TYPE_INT) == false)
+ assert((var_null is Object) == false)
+ assert(is_instance_of(var_null, TYPE_OBJECT) == false)
+ assert((var_null is RefCounted) == false)
+ assert(is_instance_of(var_null, RefCounted) == false)
+ assert((var_null is A) == false)
+ assert(is_instance_of(var_null, A) == false)
+
+ const const_null: Variant = null
+ assert((const_null is Variant) == true)
+ assert((const_null is int) == false)
+ assert(is_instance_of(const_null, TYPE_INT) == false)
+ assert((const_null is Object) == false)
+ assert(is_instance_of(const_null, TYPE_OBJECT) == false)
+ assert((const_null is RefCounted) == false)
+ assert(is_instance_of(const_null, RefCounted) == false)
+ assert((const_null is A) == false)
+ assert(is_instance_of(const_null, A) == false)
+
+ print('ok')
diff --git a/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.out b/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.out
new file mode 100644
index 0000000000..1b47ed10dc
--- /dev/null
+++ b/modules/gdscript/tests/scripts/analyzer/features/type_test_usage.out
@@ -0,0 +1,2 @@
+GDTEST_OK
+ok
diff --git a/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_enum.out b/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_enum.out
index 6e086a0918..6d8aeaf0b6 100644
--- a/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_enum.out
+++ b/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_enum.out
@@ -2,5 +2,5 @@ GDTEST_OK
>> WARNING
>> Line: 5
>> INT_AS_ENUM_WITHOUT_MATCH
->> Cannot cast 2 as Enum "cast_enum_bad_enum.gd::MyEnum": no enum member has matching value.
+>> Cannot cast 2 as Enum "cast_enum_bad_enum.gd.MyEnum": no enum member has matching value.
2
diff --git a/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_int.out b/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_int.out
index c19d57f98e..b0e4af29a0 100644
--- a/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_int.out
+++ b/modules/gdscript/tests/scripts/analyzer/warnings/cast_enum_bad_int.out
@@ -2,5 +2,5 @@ GDTEST_OK
>> WARNING
>> Line: 4
>> INT_AS_ENUM_WITHOUT_MATCH
->> Cannot cast 2 as Enum "cast_enum_bad_int.gd::MyEnum": no enum member has matching value.
+>> Cannot cast 2 as Enum "cast_enum_bad_int.gd.MyEnum": no enum member has matching value.
2
diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd
new file mode 100644
index 0000000000..c7553769da
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd
@@ -0,0 +1,16 @@
+# https://github.com/godotengine/godot/issues/61636
+
+const External := preload("const_class_reference_external.notest.gd")
+
+class Class1:
+ class Class2:
+ pass
+
+const Class1Alias = Class1
+const Class1Class2Alias = Class1.Class2
+
+const ExternalAlias = External
+const ExternalClassAlias = External.Class
+
+func test():
+ pass
diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out
new file mode 100644
index 0000000000..d73c5eb7cd
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out
@@ -0,0 +1 @@
+GDTEST_OK
diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd b/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd
new file mode 100644
index 0000000000..050e8a0960
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd
@@ -0,0 +1,2 @@
+class Class:
+ pass
diff --git a/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.gd b/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.gd
new file mode 100644
index 0000000000..277242156d
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.gd
@@ -0,0 +1,27 @@
+# https://github.com/godotengine/godot/issues/72967
+
+class CustomNode:
+ extends Node
+
+ static func test_custom_node(n: CustomNode):
+ if not n:
+ print("null node")
+
+func test():
+ test_typed_argument_is_null()
+
+func get_custom_node() -> CustomNode:
+ return null
+
+func test_typed_argument_is_null():
+ var node: Node = Node.new()
+ print_node_name(node.get_parent())
+ node.free()
+ test_custom_node()
+
+func test_custom_node():
+ CustomNode.test_custom_node(get_custom_node())
+
+func print_node_name(n: Node):
+ if not n:
+ print("null node")
diff --git a/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.out b/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.out
new file mode 100644
index 0000000000..41560003d6
--- /dev/null
+++ b/modules/gdscript/tests/scripts/runtime/features/typed_argument_is_null.out
@@ -0,0 +1,3 @@
+GDTEST_OK
+null node
+null node
diff --git a/modules/gltf/doc_classes/GLTFNode.xml b/modules/gltf/doc_classes/GLTFNode.xml
index 8e48066623..f3b3e61501 100644
--- a/modules/gltf/doc_classes/GLTFNode.xml
+++ b/modules/gltf/doc_classes/GLTFNode.xml
@@ -35,8 +35,6 @@
</member>
<member name="height" type="int" setter="set_height" getter="get_height" default="-1">
</member>
- <member name="joint" type="bool" setter="set_joint" getter="get_joint" default="false">
- </member>
<member name="light" type="int" setter="set_light" getter="get_light" default="-1">
</member>
<member name="mesh" type="int" setter="set_mesh" getter="get_mesh" default="-1">
diff --git a/modules/gltf/editor/editor_scene_importer_fbx.cpp b/modules/gltf/editor/editor_scene_importer_fbx.cpp
index f8f458fcc7..5e7a8f4e69 100644
--- a/modules/gltf/editor/editor_scene_importer_fbx.cpp
+++ b/modules/gltf/editor/editor_scene_importer_fbx.cpp
@@ -93,7 +93,7 @@ Node *EditorSceneFormatImporterFBX::import_scene(const String &p_path, uint32_t
Ref<GLTFState> state;
state.instantiate();
print_verbose(vformat("glTF path: %s", sink));
- Error err = gltf->append_from_file(sink, state, p_flags);
+ Error err = gltf->append_from_file(sink, state, p_flags, p_path.get_base_dir());
if (err != OK) {
if (r_err) {
*r_err = FAILED;
diff --git a/modules/gltf/structures/gltf_node.cpp b/modules/gltf/structures/gltf_node.cpp
index 66d1eaad51..30895034a9 100644
--- a/modules/gltf/structures/gltf_node.cpp
+++ b/modules/gltf/structures/gltf_node.cpp
@@ -45,8 +45,6 @@ void GLTFNode::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_skin", "skin"), &GLTFNode::set_skin);
ClassDB::bind_method(D_METHOD("get_skeleton"), &GLTFNode::get_skeleton);
ClassDB::bind_method(D_METHOD("set_skeleton", "skeleton"), &GLTFNode::set_skeleton);
- ClassDB::bind_method(D_METHOD("get_joint"), &GLTFNode::get_joint);
- ClassDB::bind_method(D_METHOD("set_joint", "joint"), &GLTFNode::set_joint);
ClassDB::bind_method(D_METHOD("get_position"), &GLTFNode::get_position);
ClassDB::bind_method(D_METHOD("set_position", "position"), &GLTFNode::set_position);
ClassDB::bind_method(D_METHOD("get_rotation"), &GLTFNode::get_rotation);
@@ -67,7 +65,6 @@ void GLTFNode::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "camera"), "set_camera", "get_camera"); // GLTFCameraIndex
ADD_PROPERTY(PropertyInfo(Variant::INT, "skin"), "set_skin", "get_skin"); // GLTFSkinIndex
ADD_PROPERTY(PropertyInfo(Variant::INT, "skeleton"), "set_skeleton", "get_skeleton"); // GLTFSkeletonIndex
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "joint"), "set_joint", "get_joint"); // bool
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "position"), "set_position", "get_position"); // Vector3
ADD_PROPERTY(PropertyInfo(Variant::QUATERNION, "rotation"), "set_rotation", "get_rotation"); // Quaternion
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale"), "set_scale", "get_scale"); // Vector3
@@ -131,14 +128,6 @@ void GLTFNode::set_skeleton(GLTFSkeletonIndex p_skeleton) {
skeleton = p_skeleton;
}
-bool GLTFNode::get_joint() {
- return joint;
-}
-
-void GLTFNode::set_joint(bool p_joint) {
- joint = p_joint;
-}
-
Vector3 GLTFNode::get_position() {
return position;
}
diff --git a/modules/gltf/structures/gltf_node.h b/modules/gltf/structures/gltf_node.h
index d801a4cc2c..95c80861de 100644
--- a/modules/gltf/structures/gltf_node.h
+++ b/modules/gltf/structures/gltf_node.h
@@ -80,9 +80,6 @@ public:
GLTFSkeletonIndex get_skeleton();
void set_skeleton(GLTFSkeletonIndex p_skeleton);
- bool get_joint();
- void set_joint(bool p_joint);
-
Vector3 get_position();
void set_position(Vector3 p_position);
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index fe0f4aae81..43d2779e41 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -1147,6 +1147,7 @@ void CSharpLanguage::_editor_init_callback() {
// Add plugin to EditorNode and enable it
EditorNode::add_editor_plugin(godotsharp_editor);
ED_SHORTCUT("mono/build_solution", TTR("Build Solution"), KeyModifierMask::ALT | Key::B);
+ ED_SHORTCUT_OVERRIDE("mono/build_solution", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::B);
godotsharp_editor->enable_plugin();
get_singleton()->godotsharp_editor = godotsharp_editor;
diff --git a/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml b/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
index af7c345f15..717906bd2b 100644
--- a/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
+++ b/modules/multiplayer/doc_classes/MultiplayerSynchronizer.xml
@@ -69,6 +69,11 @@
</member>
</members>
<signals>
+ <signal name="synchronized">
+ <description>
+ Emitted when a new synchronization state is received by this synchronizer after the variables have been updated.
+ </description>
+ </signal>
<signal name="visibility_changed">
<param index="0" name="for_peer" type="int" />
<description>
diff --git a/modules/multiplayer/multiplayer_synchronizer.cpp b/modules/multiplayer/multiplayer_synchronizer.cpp
index 10714db6df..458b6a664a 100644
--- a/modules/multiplayer/multiplayer_synchronizer.cpp
+++ b/modules/multiplayer/multiplayer_synchronizer.cpp
@@ -268,6 +268,7 @@ void MultiplayerSynchronizer::_bind_methods() {
BIND_ENUM_CONSTANT(VISIBILITY_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(VISIBILITY_PROCESS_NONE);
+ ADD_SIGNAL(MethodInfo("synchronized"));
ADD_SIGNAL(MethodInfo("visibility_changed", PropertyInfo(Variant::INT, "for_peer")));
}
diff --git a/modules/multiplayer/scene_replication_interface.cpp b/modules/multiplayer/scene_replication_interface.cpp
index 68b6bc4a24..c1d45636f1 100644
--- a/modules/multiplayer/scene_replication_interface.cpp
+++ b/modules/multiplayer/scene_replication_interface.cpp
@@ -775,6 +775,7 @@ Error SceneReplicationInterface::on_sync_receive(int p_from, const uint8_t *p_bu
err = MultiplayerSynchronizer::set_state(props, node, vars);
ERR_FAIL_COND_V(err, err);
ofs += size;
+ sync->emit_signal(SNAME("synchronized"));
#ifdef DEBUG_ENABLED
_profile_node_data("sync_in", sync->get_instance_id(), size);
#endif
diff --git a/platform/linuxbsd/tts_linux.cpp b/platform/linuxbsd/tts_linux.cpp
index 04d7c5444f..6b8584ef6c 100644
--- a/platform/linuxbsd/tts_linux.cpp
+++ b/platform/linuxbsd/tts_linux.cpp
@@ -35,6 +35,11 @@
TTS_Linux *TTS_Linux::singleton = nullptr;
+void TTS_Linux::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_speech_event", "msg_id", "client_id", "type"), &TTS_Linux::_speech_event);
+ ClassDB::bind_method(D_METHOD("_speech_index_mark", "msg_id", "client_id", "type", "index_mark"), &TTS_Linux::_speech_index_mark);
+}
+
void TTS_Linux::speech_init_thread_func(void *p_userdata) {
TTS_Linux *tts = (TTS_Linux *)p_userdata;
if (tts) {
@@ -76,76 +81,84 @@ void TTS_Linux::speech_init_thread_func(void *p_userdata) {
void TTS_Linux::speech_event_index_mark(size_t p_msg_id, size_t p_client_id, SPDNotificationType p_type, char *p_index_mark) {
TTS_Linux *tts = TTS_Linux::get_singleton();
- if (tts && tts->ids.has(p_msg_id)) {
- MutexLock thread_safe_method(tts->_thread_safe_);
- // Get word offset from the index mark injected to the text stream.
- String mark = String::utf8(p_index_mark);
- DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_BOUNDARY, tts->ids[p_msg_id], mark.to_int());
+ if (tts) {
+ tts->call_deferred(SNAME("_speech_index_mark"), p_msg_id, p_client_id, (int)p_type, String::utf8(p_index_mark));
+ }
+}
+
+void TTS_Linux::_speech_index_mark(size_t p_msg_id, size_t p_client_id, int p_type, const String &p_index_mark) {
+ _THREAD_SAFE_METHOD_
+
+ if (ids.has(p_msg_id)) {
+ DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_BOUNDARY, ids[p_msg_id], p_index_mark.to_int());
}
}
void TTS_Linux::speech_event_callback(size_t p_msg_id, size_t p_client_id, SPDNotificationType p_type) {
TTS_Linux *tts = TTS_Linux::get_singleton();
if (tts) {
- MutexLock thread_safe_method(tts->_thread_safe_);
- List<DisplayServer::TTSUtterance> &queue = tts->queue;
- if (!tts->paused && tts->ids.has(p_msg_id)) {
- if (p_type == SPD_EVENT_END) {
- DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_ENDED, tts->ids[p_msg_id]);
- tts->ids.erase(p_msg_id);
- tts->last_msg_id = -1;
- tts->speaking = false;
- } else if (p_type == SPD_EVENT_CANCEL) {
- DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_CANCELED, tts->ids[p_msg_id]);
- tts->ids.erase(p_msg_id);
- tts->last_msg_id = -1;
- tts->speaking = false;
- }
+ tts->call_deferred(SNAME("_speech_event"), p_msg_id, p_client_id, (int)p_type);
+ }
+}
+
+void TTS_Linux::_speech_event(size_t p_msg_id, size_t p_client_id, int p_type) {
+ _THREAD_SAFE_METHOD_
+
+ if (!paused && ids.has(p_msg_id)) {
+ if ((SPDNotificationType)p_type == SPD_EVENT_END) {
+ DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_ENDED, ids[p_msg_id]);
+ ids.erase(p_msg_id);
+ last_msg_id = -1;
+ speaking = false;
+ } else if ((SPDNotificationType)p_type == SPD_EVENT_CANCEL) {
+ DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_CANCELED, ids[p_msg_id]);
+ ids.erase(p_msg_id);
+ last_msg_id = -1;
+ speaking = false;
}
- if (!tts->speaking && queue.size() > 0) {
- DisplayServer::TTSUtterance &message = queue.front()->get();
-
- // Inject index mark after each word.
- String text;
- String language;
- SPDVoice **voices = spd_list_synthesis_voices(tts->synth);
- if (voices != nullptr) {
- SPDVoice **voices_ptr = voices;
- while (*voices_ptr != nullptr) {
- if (String::utf8((*voices_ptr)->name) == message.voice) {
- language = String::utf8((*voices_ptr)->language);
- break;
- }
- voices_ptr++;
- }
- free_spd_voices(voices);
- }
- PackedInt32Array breaks = TS->string_get_word_breaks(message.text, language);
- for (int i = 0; i < breaks.size(); i += 2) {
- const int start = breaks[i];
- const int end = breaks[i + 1];
- text += message.text.substr(start, end - start + 1);
- text += "<mark name=\"" + String::num_int64(end, 10) + "\"/>";
- }
+ }
+ if (!speaking && queue.size() > 0) {
+ DisplayServer::TTSUtterance &message = queue.front()->get();
- spd_set_synthesis_voice(tts->synth, message.voice.utf8().get_data());
- spd_set_volume(tts->synth, message.volume * 2 - 100);
- spd_set_voice_pitch(tts->synth, (message.pitch - 1) * 100);
- float rate = 0;
- if (message.rate > 1.f) {
- rate = log10(MIN(message.rate, 2.5f)) / log10(2.5f) * 100;
- } else if (message.rate < 1.f) {
- rate = log10(MAX(message.rate, 0.5f)) / log10(0.5f) * -100;
+ // Inject index mark after each word.
+ String text;
+ String language;
+ SPDVoice **voices = spd_list_synthesis_voices(synth);
+ if (voices != nullptr) {
+ SPDVoice **voices_ptr = voices;
+ while (*voices_ptr != nullptr) {
+ if (String::utf8((*voices_ptr)->name) == message.voice) {
+ language = String::utf8((*voices_ptr)->language);
+ break;
+ }
+ voices_ptr++;
}
- spd_set_voice_rate(tts->synth, rate);
- spd_set_data_mode(tts->synth, SPD_DATA_SSML);
- tts->last_msg_id = spd_say(tts->synth, SPD_TEXT, text.utf8().get_data());
- tts->ids[tts->last_msg_id] = message.id;
- DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_STARTED, message.id);
-
- queue.pop_front();
- tts->speaking = true;
+ free_spd_voices(voices);
}
+ PackedInt32Array breaks = TS->string_get_word_breaks(message.text, language);
+ for (int i = 0; i < breaks.size(); i += 2) {
+ const int start = breaks[i];
+ const int end = breaks[i + 1];
+ text += message.text.substr(start, end - start + 1);
+ text += "<mark name=\"" + String::num_int64(end, 10) + "\"/>";
+ }
+ spd_set_synthesis_voice(synth, message.voice.utf8().get_data());
+ spd_set_volume(synth, message.volume * 2 - 100);
+ spd_set_voice_pitch(synth, (message.pitch - 1) * 100);
+ float rate = 0;
+ if (message.rate > 1.f) {
+ rate = log10(MIN(message.rate, 2.5f)) / log10(2.5f) * 100;
+ } else if (message.rate < 1.f) {
+ rate = log10(MAX(message.rate, 0.5f)) / log10(0.5f) * -100;
+ }
+ spd_set_voice_rate(synth, rate);
+ spd_set_data_mode(synth, SPD_DATA_SSML);
+ last_msg_id = spd_say(synth, SPD_TEXT, text.utf8().get_data());
+ ids[last_msg_id] = message.id;
+ DisplayServer::get_singleton()->tts_post_utterance_event(DisplayServer::TTS_UTTERANCE_STARTED, message.id);
+
+ queue.pop_front();
+ speaking = true;
}
}
@@ -204,7 +217,7 @@ void TTS_Linux::speak(const String &p_text, const String &p_voice, int p_volume,
if (is_paused()) {
resume();
} else {
- speech_event_callback(0, 0, SPD_EVENT_BEGIN);
+ _speech_event(0, 0, (int)SPD_EVENT_BEGIN);
}
}
diff --git a/platform/linuxbsd/tts_linux.h b/platform/linuxbsd/tts_linux.h
index 3fe7b659d0..3fcbe3207b 100644
--- a/platform/linuxbsd/tts_linux.h
+++ b/platform/linuxbsd/tts_linux.h
@@ -45,7 +45,8 @@
#include <libspeechd.h>
#endif
-class TTS_Linux {
+class TTS_Linux : public Object {
+ GDCLASS(TTS_Linux, Object);
_THREAD_SAFE_CLASS_
List<DisplayServer::TTSUtterance> queue;
@@ -63,6 +64,11 @@ class TTS_Linux {
static TTS_Linux *singleton;
+protected:
+ static void _bind_methods();
+ void _speech_event(size_t p_msg_id, size_t p_client_id, int p_type);
+ void _speech_index_mark(size_t p_msg_id, size_t p_client_id, int p_type, const String &p_index_mark);
+
public:
static TTS_Linux *get_singleton();
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm
index 14778b5f03..e8eb5b419b 100644
--- a/platform/macos/display_server_macos.mm
+++ b/platform/macos/display_server_macos.mm
@@ -2024,7 +2024,7 @@ void DisplayServerMacOS::warp_mouse(const Point2i &p_position) {
// Local point in window coords.
const NSRect contentRect = [wd.window_view frame];
const float scale = screen_get_max_scale();
- NSRect pointInWindowRect = NSMakeRect(p_position.x / scale, contentRect.size.height - (p_position.y / scale - 1), 0, 0);
+ NSRect pointInWindowRect = NSMakeRect(p_position.x / scale, contentRect.size.height - (p_position.y / scale), scale, scale);
NSPoint pointOnScreen = [[wd.window_view window] convertRectToScreen:pointInWindowRect].origin;
// Point in scren coords.
diff --git a/scene/3d/soft_body_3d.cpp b/scene/3d/soft_body_3d.cpp
index e7e3084037..9fa33e9d5c 100644
--- a/scene/3d/soft_body_3d.cpp
+++ b/scene/3d/soft_body_3d.cpp
@@ -217,8 +217,7 @@ bool SoftBody3D::_set_property_pinned_points_attachment(int p_item, const String
if ("spatial_attachment_path" == p_what) {
PinnedPoint *w = pinned_points.ptrw();
- pin_point(w[p_item].point_index, true, p_value);
- _make_cache_dirty();
+ callable_mp(this, &SoftBody3D::_pin_point_deferred).call_deferred(Variant(w[p_item].point_index), true, p_value);
} else if ("offset" == p_what) {
PinnedPoint *w = pinned_points.ptrw();
w[p_item].offset = p_value;
@@ -670,6 +669,11 @@ void SoftBody3D::pin_point(int p_point_index, bool pin, const NodePath &p_spatia
}
}
+void SoftBody3D::_pin_point_deferred(int p_point_index, bool pin, const NodePath p_spatial_attachment_path) {
+ pin_point(p_point_index, pin, p_spatial_attachment_path);
+ _make_cache_dirty();
+}
+
bool SoftBody3D::is_point_pinned(int p_point_index) const {
return -1 != _has_pinned_point(p_point_index);
}
@@ -741,7 +745,11 @@ void SoftBody3D::_add_pinned_point(int p_point_index, const NodePath &p_spatial_
pinned_point->spatial_attachment_path = p_spatial_attachment_path;
if (!p_spatial_attachment_path.is_empty() && has_node(p_spatial_attachment_path)) {
- pinned_point->spatial_attachment = Object::cast_to<Node3D>(get_node(p_spatial_attachment_path));
+ Node3D *attachment_node = Object::cast_to<Node3D>(get_node(p_spatial_attachment_path));
+
+ ERR_FAIL_NULL_MSG(attachment_node, "Attachment node path is invalid.");
+
+ pinned_point->spatial_attachment = attachment_node;
pinned_point->offset = (pinned_point->spatial_attachment->get_global_transform().affine_inverse() * get_global_transform()).xform(PhysicsServer3D::get_singleton()->soft_body_get_point_global_position(physics_rid, pinned_point->point_index));
}
}
diff --git a/scene/3d/soft_body_3d.h b/scene/3d/soft_body_3d.h
index d81011006b..0b75ae2cda 100644
--- a/scene/3d/soft_body_3d.h
+++ b/scene/3d/soft_body_3d.h
@@ -179,6 +179,8 @@ public:
void pin_point(int p_point_index, bool pin, const NodePath &p_spatial_attachment_path = NodePath());
bool is_point_pinned(int p_point_index) const;
+ void _pin_point_deferred(int p_point_index, bool pin, const NodePath p_spatial_attachment_path);
+
void set_ray_pickable(bool p_ray_pickable);
bool is_ray_pickable() const;
diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp
index e2f7ec860c..ee39327d4d 100644
--- a/scene/gui/code_edit.cpp
+++ b/scene/gui/code_edit.cpp
@@ -896,6 +896,7 @@ void CodeEdit::indent_lines() {
set_caret_column(get_caret_column(c) + selection_offset, false, c);
}
end_complex_operation();
+ queue_redraw();
}
void CodeEdit::unindent_lines() {
@@ -973,6 +974,7 @@ void CodeEdit::unindent_lines() {
set_caret_column(initial_cursor_column - removed_characters, false, c);
}
end_complex_operation();
+ queue_redraw();
}
int CodeEdit::_calculate_spaces_till_next_left_indent(int p_column) const {
diff --git a/servers/physics_3d/godot_body_pair_3d.cpp b/servers/physics_3d/godot_body_pair_3d.cpp
index 619e6c00be..3a91e5e480 100644
--- a/servers/physics_3d/godot_body_pair_3d.cpp
+++ b/servers/physics_3d/godot_body_pair_3d.cpp
@@ -167,6 +167,9 @@ void GodotBodyPair3D::validate_contacts() {
// cast forward along motion vector to see if A is going to enter/pass B's collider next frame, only proceed if it does.
// adjust the velocity of A down so that it will just slightly intersect the collider instead of blowing right past it.
bool GodotBodyPair3D::_test_ccd(real_t p_step, GodotBody3D *p_A, int p_shape_A, const Transform3D &p_xform_A, GodotBody3D *p_B, int p_shape_B, const Transform3D &p_xform_B) {
+ GodotShape3D *shape_A_ptr = p_A->get_shape(p_shape_A);
+ GodotShape3D *shape_B_ptr = p_B->get_shape(p_shape_B);
+
Vector3 motion = p_A->get_linear_velocity() * p_step;
real_t mlen = motion.length();
if (mlen < CMP_EPSILON) {
@@ -176,7 +179,7 @@ bool GodotBodyPair3D::_test_ccd(real_t p_step, GodotBody3D *p_A, int p_shape_A,
Vector3 mnormal = motion / mlen;
real_t min = 0.0, max = 0.0;
- p_A->get_shape(p_shape_A)->project_range(mnormal, p_xform_A, min, max);
+ shape_A_ptr->project_range(mnormal, p_xform_A, min, max);
// Did it move enough in this direction to even attempt raycast?
// Let's say it should move more than 1/3 the size of the object in that axis.
@@ -187,33 +190,64 @@ bool GodotBodyPair3D::_test_ccd(real_t p_step, GodotBody3D *p_A, int p_shape_A,
// A is moving fast enough that tunneling might occur. See if it's really about to collide.
- // Cast a segment from support in motion normal, in the same direction of motion by motion length.
- // Support point will the farthest forward collision point along the movement vector.
- // i.e. the point that should hit B first if any collision does occur.
-
- // convert mnormal into body A's local xform because get_support requires (and returns) local coordinates.
- Vector3 s = p_A->get_shape(p_shape_A)->get_support(p_xform_A.basis.xform_inv(mnormal).normalized());
- Vector3 from = p_xform_A.xform(s);
- Vector3 to = from + motion;
-
- Transform3D from_inv = p_xform_B.affine_inverse();
-
- // Back up 10% of the per-frame motion behind the support point and use that as the beginning of our cast.
- // At high speeds, this may mean we're actually casting from well behind the body instead of inside it, which is odd. But it still works out.
- Vector3 local_from = from_inv.xform(from - motion * 0.1);
- Vector3 local_to = from_inv.xform(to);
+ // Support points are the farthest forward points on A in the direction of the motion vector.
+ // i.e. the candidate points of which one should hit B first if any collision does occur.
+ static const int max_supports = 16;
+ Vector3 supports_A[max_supports];
+ int support_count_A;
+ GodotShape3D::FeatureType support_type_A;
+ // Convert mnormal into body A's local xform because get_supports requires (and returns) local coordinates.
+ shape_A_ptr->get_supports(p_xform_A.basis.xform_inv(mnormal).normalized(), max_supports, supports_A, support_count_A, support_type_A);
+
+ // Cast a segment from each support point of A in the motion direction.
+ int segment_support_idx = -1;
+ float segment_hit_length = FLT_MAX;
+ Vector3 segment_hit_local;
+ for (int i = 0; i < support_count_A; i++) {
+ supports_A[i] = p_xform_A.xform(supports_A[i]);
+
+ Vector3 from = supports_A[i];
+ Vector3 to = from + motion;
+
+ Transform3D from_inv = p_xform_B.affine_inverse();
+
+ // Back up 10% of the per-frame motion behind the support point and use that as the beginning of our cast.
+ // At high speeds, this may mean we're actually casting from well behind the body instead of inside it, which is odd.
+ // But it still works out.
+ Vector3 local_from = from_inv.xform(from - motion * 0.1);
+ Vector3 local_to = from_inv.xform(to);
+
+ Vector3 rpos, rnorm;
+ if (shape_B_ptr->intersect_segment(local_from, local_to, rpos, rnorm, true)) {
+ float hit_length = local_from.distance_to(rpos);
+ if (hit_length < segment_hit_length) {
+ segment_support_idx = i;
+ segment_hit_length = hit_length;
+ segment_hit_local = rpos;
+ }
+ }
+ }
- Vector3 rpos, rnorm;
- if (!p_B->get_shape(p_shape_B)->intersect_segment(local_from, local_to, rpos, rnorm, true)) {
- // there was no hit. Since the segment is the length of per-frame motion, this means the bodies will not
+ if (segment_support_idx == -1) {
+ // There was no hit. Since the segment is the length of per-frame motion, this means the bodies will not
// actually collide yet on next frame. We'll probably check again next frame once they're closer.
return false;
}
- // Shorten the linear velocity so it will collide next frame.
- Vector3 hitpos = p_xform_B.xform(rpos);
-
- real_t newlen = hitpos.distance_to(from) + (max - min) * 0.01; // adding 1% of body length to the distance between collision and support point should cause body A's support point to arrive just within B's collider next frame.
+ Vector3 hitpos = p_xform_B.xform(segment_hit_local);
+
+ real_t newlen = hitpos.distance_to(supports_A[segment_support_idx]);
+ if (shape_B_ptr->is_concave()) {
+ // Subtracting 5% of body length from the distance between collision and support point
+ // should cause body A's support point to arrive just before a face of B next frame.
+ newlen = MAX(newlen - (max - min) * 0.05, 0.0);
+ // NOTE: This may stop body A completely, without a proper collision response.
+ // We consider this preferable to tunneling.
+ } else {
+ // Adding 1% of body length to the distance between collision and support point
+ // should cause body A's support point to arrive just within B's collider next frame.
+ newlen += (max - min) * 0.01;
+ }
p_A->set_linear_velocity((mnormal * newlen) / p_step);
diff --git a/servers/rendering/renderer_compositor.cpp b/servers/rendering/renderer_compositor.cpp
index 069b51feaa..a6083fe70d 100644
--- a/servers/rendering/renderer_compositor.cpp
+++ b/servers/rendering/renderer_compositor.cpp
@@ -35,6 +35,8 @@
#include "core/string/print_string.h"
#include "servers/xr_server.h"
+RendererCompositor *RendererCompositor::singleton = nullptr;
+
RendererCompositor *(*RendererCompositor::_create_func)() = nullptr;
bool RendererCompositor::low_end = false;
@@ -47,6 +49,8 @@ bool RendererCompositor::is_xr_enabled() const {
}
RendererCompositor::RendererCompositor() {
+ singleton = this;
+
if (XRServer::get_xr_mode() == XRServer::XRMODE_DEFAULT) {
xr_enabled = GLOBAL_GET("xr/shaders/enabled");
} else {
diff --git a/servers/rendering/renderer_compositor.h b/servers/rendering/renderer_compositor.h
index 9fb79a290b..ff7792741c 100644
--- a/servers/rendering/renderer_compositor.h
+++ b/servers/rendering/renderer_compositor.h
@@ -70,6 +70,7 @@ struct BlitToScreen {
class RendererCompositor {
private:
bool xr_enabled = false;
+ static RendererCompositor *singleton;
protected:
static RendererCompositor *(*_create_func)();
@@ -107,6 +108,7 @@ public:
static bool is_low_end() { return low_end; };
virtual bool is_xr_enabled() const;
+ static RendererCompositor *get_singleton() { return singleton; }
RendererCompositor();
virtual ~RendererCompositor() {}
};
diff --git a/servers/rendering/renderer_rd/effects/copy_effects.cpp b/servers/rendering/renderer_rd/effects/copy_effects.cpp
index bcea9225ea..86484c982a 100644
--- a/servers/rendering/renderer_rd/effects/copy_effects.cpp
+++ b/servers/rendering/renderer_rd/effects/copy_effects.cpp
@@ -110,7 +110,7 @@ CopyEffects::CopyEffects(bool p_prefer_raster_effects) {
copy_to_fb.shader.initialize(copy_modes);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
copy_to_fb.shader.set_variant_enabled(COPY_TO_FB_MULTIVIEW, false);
copy_to_fb.shader.set_variant_enabled(COPY_TO_FB_MULTIVIEW_WITH_DEPTH, false);
}
@@ -266,7 +266,7 @@ CopyEffects::CopyEffects(bool p_prefer_raster_effects) {
specular_merge.shader.initialize(specular_modes);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
specular_merge.shader.set_variant_enabled(SPECULAR_MERGE_ADD_MULTIVIEW, false);
specular_merge.shader.set_variant_enabled(SPECULAR_MERGE_SSR_MULTIVIEW, false);
specular_merge.shader.set_variant_enabled(SPECULAR_MERGE_ADDITIVE_ADD_MULTIVIEW, false);
diff --git a/servers/rendering/renderer_rd/effects/tone_mapper.cpp b/servers/rendering/renderer_rd/effects/tone_mapper.cpp
index 7b152b524f..821960bb3b 100644
--- a/servers/rendering/renderer_rd/effects/tone_mapper.cpp
+++ b/servers/rendering/renderer_rd/effects/tone_mapper.cpp
@@ -56,7 +56,7 @@ ToneMapper::ToneMapper() {
tonemap.shader.initialize(tonemap_modes);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
tonemap.shader.set_variant_enabled(TONEMAP_MODE_NORMAL_MULTIVIEW, false);
tonemap.shader.set_variant_enabled(TONEMAP_MODE_BICUBIC_GLOW_FILTER_MULTIVIEW, false);
tonemap.shader.set_variant_enabled(TONEMAP_MODE_1D_LUT_MULTIVIEW, false);
diff --git a/servers/rendering/renderer_rd/effects/vrs.cpp b/servers/rendering/renderer_rd/effects/vrs.cpp
index 4bc5d7b597..6ec8612029 100644
--- a/servers/rendering/renderer_rd/effects/vrs.cpp
+++ b/servers/rendering/renderer_rd/effects/vrs.cpp
@@ -44,7 +44,7 @@ VRS::VRS() {
vrs_shader.shader.initialize(vrs_modes);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
vrs_shader.shader.set_variant_enabled(VRS_MULTIVIEW, false);
}
diff --git a/servers/rendering/renderer_rd/environment/sky.cpp b/servers/rendering/renderer_rd/environment/sky.cpp
index 7fff349b3c..788ec1cee4 100644
--- a/servers/rendering/renderer_rd/environment/sky.cpp
+++ b/servers/rendering/renderer_rd/environment/sky.cpp
@@ -276,7 +276,7 @@ void SkyRD::ReflectionData::update_reflection_data(int p_size, int p_mipmaps, bo
int mipmaps = p_mipmaps;
uint32_t w = p_size, h = p_size;
- EffectsRD *effects = RendererCompositorRD::singleton->get_effects();
+ EffectsRD *effects = RendererCompositorRD::get_singleton()->get_effects();
ERR_FAIL_NULL_MSG(effects, "Effects haven't been initialized");
bool prefer_raster_effects = effects->get_prefer_raster_effects();
@@ -756,7 +756,7 @@ void SkyRD::init() {
sky_shader.shader.initialize(sky_modes, defines);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
sky_shader.shader.set_variant_enabled(SKY_VERSION_BACKGROUND_MULTIVIEW, false);
sky_shader.shader.set_variant_enabled(SKY_VERSION_HALF_RES_MULTIVIEW, false);
sky_shader.shader.set_variant_enabled(SKY_VERSION_QUARTER_RES_MULTIVIEW, false);
diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
index 3b3979b198..ff180b5465 100644
--- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
@@ -504,7 +504,7 @@ void SceneShaderForwardClustered::init(const String p_defines) {
shader.initialize(shader_versions, p_defines);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_MULTIVIEW, false);
shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW, false);
shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW, false);
@@ -730,7 +730,7 @@ void SceneShaderForwardClustered::init(const String p_defines) {
actions.global_buffer_array_variable = "global_shader_uniforms.data";
actions.instance_uniform_index_variable = "instances.data[instance_index_interp].instance_uniforms_ofs";
- actions.check_multiview_samplers = true; // make sure we check sampling multiview textures
+ actions.check_multiview_samplers = RendererCompositorRD::get_singleton()->is_xr_enabled(); // Make sure we check sampling multiview textures.
compiler.initialize(actions);
}
diff --git a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
index cc4a7dfa47..0e992eb965 100644
--- a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
@@ -421,7 +421,7 @@ void SceneShaderForwardMobile::init(const String p_defines) {
shader.initialize(shader_versions, p_defines);
- if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ if (!RendererCompositorRD::get_singleton()->is_xr_enabled()) {
shader.set_variant_enabled(SHADER_VERSION_COLOR_PASS_MULTIVIEW, false);
shader.set_variant_enabled(SHADER_VERSION_LIGHTMAP_COLOR_PASS_MULTIVIEW, false);
shader.set_variant_enabled(SHADER_VERSION_SHADOW_PASS_MULTIVIEW, false);
@@ -610,7 +610,7 @@ void SceneShaderForwardMobile::init(const String p_defines) {
actions.instance_uniform_index_variable = "draw_call.instance_uniforms_ofs";
actions.apply_luminance_multiplier = true; // apply luminance multiplier to screen texture
- actions.check_multiview_samplers = true; // make sure we check sampling multiview textures
+ actions.check_multiview_samplers = RendererCompositorRD::get_singleton()->is_xr_enabled(); // Make sure we check sampling multiview textures.
compiler.initialize(actions);
}
diff --git a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
index f102bc0650..78bdd3f541 100644
--- a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
@@ -919,7 +919,7 @@ void RendererCanvasRenderRD::_render_item(RD::DrawListID p_draw_list, RID p_rend
} break;
case Item::Command::TYPE_ANIMATION_SLICE: {
const Item::CommandAnimationSlice *as = static_cast<const Item::CommandAnimationSlice *>(c);
- double current_time = RendererCompositorRD::singleton->get_total_time();
+ double current_time = RendererCompositorRD::get_singleton()->get_total_time();
double local_time = Math::fposmod(current_time - as->offset, as->animation_length);
skipping = !(local_time >= as->slice_begin && local_time < as->slice_end);
@@ -1252,13 +1252,12 @@ void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p
l = l->next_ptr;
ERR_CONTINUE(!clight);
}
- Transform2D to_light_xform = (p_canvas_transform * l->light_shader_xform).affine_inverse();
Vector2 canvas_light_pos = p_canvas_transform.xform(l->xform.get_origin()); //convert light position to canvas coordinates, as all computation is done in canvas coords to avoid precision loss
state.light_uniforms[index].position[0] = canvas_light_pos.x;
state.light_uniforms[index].position[1] = canvas_light_pos.y;
- _update_transform_2d_to_mat2x4(to_light_xform, state.light_uniforms[index].matrix);
+ _update_transform_2d_to_mat2x4(l->light_shader_xform.affine_inverse(), state.light_uniforms[index].matrix);
_update_transform_2d_to_mat2x4(l->xform_cache.affine_inverse(), state.light_uniforms[index].shadow_matrix);
state.light_uniforms[index].height = l->height * (p_canvas_transform.columns[0].length() + p_canvas_transform.columns[1].length()) * 0.5; //approximate height conversion to the canvas size, since all calculations are done in canvas coords to avoid precision loss
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.h b/servers/rendering/renderer_rd/renderer_compositor_rd.h
index 43c8d78dee..eae4327908 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.h
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.h
@@ -101,6 +101,7 @@ protected:
double delta = 0.0;
static uint64_t frame;
+ static RendererCompositorRD *singleton;
public:
RendererUtilities *get_utilities() { return utilities; };
@@ -145,7 +146,7 @@ public:
low_end = false;
}
- static RendererCompositorRD *singleton;
+ static RendererCompositorRD *get_singleton() { return singleton; }
RendererCompositorRD();
~RendererCompositorRD();
};
diff --git a/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp b/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp
index 00fb8acca8..3ed5d7dda8 100644
--- a/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/particles_storage.cpp
@@ -774,7 +774,7 @@ void ParticlesStorage::_particles_process(Particles *p_particles, double p_delta
p_particles->phase = new_phase;
- frame_params.time = RendererCompositorRD::singleton->get_total_time();
+ frame_params.time = RendererCompositorRD::get_singleton()->get_total_time();
frame_params.delta = p_delta * p_particles->speed_scale;
frame_params.random_seed = p_particles->random_seed;
frame_params.explosiveness = p_particles->explosiveness;
@@ -1228,7 +1228,7 @@ void ParticlesStorage::particles_set_view_axis(RID p_particles, const Vector3 &p
RD::get_singleton()->compute_list_dispatch_threads(compute_list, particles->amount, 1, 1);
RD::get_singleton()->compute_list_end();
- RendererCompositorRD::singleton->get_effects()->sort_buffer(particles->particles_sort_uniform_set, particles->amount);
+ RendererCompositorRD::get_singleton()->get_effects()->sort_buffer(particles->particles_sort_uniform_set, particles->amount);
}
if (particles->trails_enabled && particles->trail_bind_poses.size() > 1) {
@@ -1341,7 +1341,7 @@ void ParticlesStorage::update_particles() {
particles->inactive = false;
particles->inactive_time = 0;
} else {
- particles->inactive_time += particles->speed_scale * RendererCompositorRD::singleton->get_frame_delta_time();
+ particles->inactive_time += particles->speed_scale * RendererCompositorRD::get_singleton()->get_frame_delta_time();
if (particles->inactive_time > particles->lifetime * 1.2) {
particles->inactive = true;
continue;
@@ -1442,7 +1442,7 @@ void ParticlesStorage::update_particles() {
frame_time = 1.0 / fixed_fps;
decr = frame_time;
}
- double delta = RendererCompositorRD::singleton->get_frame_delta_time();
+ double delta = RendererCompositorRD::get_singleton()->get_frame_delta_time();
if (delta > 0.1) { //avoid recursive stalls if fps goes below 10
delta = 0.1;
} else if (delta <= 0.0) { //unlikely but..
@@ -1461,7 +1461,7 @@ void ParticlesStorage::update_particles() {
if (zero_time_scale) {
_particles_process(particles, 0.0);
} else {
- _particles_process(particles, RendererCompositorRD::singleton->get_frame_delta_time());
+ _particles_process(particles, RendererCompositorRD::get_singleton()->get_frame_delta_time());
}
}
diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp
index 0e2a3c682d..f609fa6023 100644
--- a/servers/rendering/renderer_viewport.cpp
+++ b/servers/rendering/renderer_viewport.cpp
@@ -349,7 +349,7 @@ void RendererViewport::_draw_viewport(Viewport *p_viewport) {
Transform2D scale;
scale.scale(cl->rect_cache.size);
scale.columns[2] = cl->rect_cache.position;
- cl->light_shader_xform = cl->xform * scale;
+ cl->light_shader_xform = xf * cl->xform * scale;
if (cl->use_shadow) {
cl->shadows_next_ptr = lights_with_shadow;
if (lights_with_shadow == nullptr) {
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 940363a7e8..958e960ab2 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -33,6 +33,7 @@
#include "core/os/os.h"
#include "core/string/print_string.h"
#include "core/templates/local_vector.h"
+#include "servers/rendering/renderer_compositor.h"
#include "servers/rendering_server.h"
#include "shader_types.h"
@@ -3055,7 +3056,7 @@ const ShaderLanguage::BuiltinFuncConstArgs ShaderLanguage::builtin_func_const_ar
bool ShaderLanguage::is_const_suffix_lut_initialized = false;
-bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, DataType *r_ret_type, StringName *r_ret_type_str) {
+bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, DataType *r_ret_type, StringName *r_ret_type_str, bool *r_is_custom_function) {
ERR_FAIL_COND_V(p_func->op != OP_CALL && p_func->op != OP_CONSTRUCT, false);
Vector<DataType> args;
@@ -3479,6 +3480,9 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionI
}
}
+ if (r_is_custom_function) {
+ *r_is_custom_function = true;
+ }
return true;
}
}
@@ -5251,7 +5255,8 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
return nullptr;
}
- if (!_validate_function_call(p_block, p_function_info, func, &func->return_cache, &func->struct_name)) {
+ bool is_custom_func = false;
+ if (!_validate_function_call(p_block, p_function_info, func, &func->return_cache, &func->struct_name, &is_custom_func)) {
_set_error(vformat(RTR("No matching function found for: '%s'."), String(funcname->name)));
return nullptr;
}
@@ -5391,6 +5396,16 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
//being sampler, this either comes from a uniform
ShaderNode::Uniform *u = &shader->uniforms[varname];
ERR_CONTINUE(u->type != call_function->arguments[i].type); //this should have been validated previously
+
+ if (RendererCompositor::get_singleton()->is_xr_enabled() && is_custom_func) {
+ ShaderNode::Uniform::Hint hint = u->hint;
+
+ if (hint == ShaderNode::Uniform::HINT_DEPTH_TEXTURE || hint == ShaderNode::Uniform::HINT_SCREEN_TEXTURE || hint == ShaderNode::Uniform::HINT_NORMAL_ROUGHNESS_TEXTURE) {
+ _set_error(vformat(RTR("Unable to pass a multiview texture sampler as a parameter to custom function. Consider to sample it in the main function and then pass the vector result to it."), get_uniform_hint_name(hint)));
+ return nullptr;
+ }
+ }
+
//propagate
if (!_propagate_function_call_sampler_uniform_settings(name, i, u->filter, u->repeat)) {
return nullptr;
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h
index aea61e42c3..220160e5fd 100644
--- a/servers/rendering/shader_language.h
+++ b/servers/rendering/shader_language.h
@@ -1088,7 +1088,7 @@ private:
bool _compare_datatypes(DataType p_datatype_a, String p_datatype_name_a, int p_array_size_a, DataType p_datatype_b, String p_datatype_name_b, int p_array_size_b);
bool _compare_datatypes_in_nodes(Node *a, Node *b);
- bool _validate_function_call(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, DataType *r_ret_type, StringName *r_ret_type_str);
+ bool _validate_function_call(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, DataType *r_ret_type, StringName *r_ret_type_str, bool *r_is_custom_function = nullptr);
bool _parse_function_arguments(BlockNode *p_block, const FunctionInfo &p_function_info, OperatorNode *p_func, int *r_complete_arg = nullptr);
bool _propagate_function_call_sampler_uniform_settings(StringName p_name, int p_argument, TextureFilter p_filter, TextureRepeat p_repeat);
bool _propagate_function_call_sampler_builtin_reference(StringName p_name, int p_argument, const StringName &p_builtin);
diff --git a/tests/core/test_time.h b/tests/core/test_time.h
index 7c8465cd12..6e31324359 100644
--- a/tests/core/test_time.h
+++ b/tests/core/test_time.h
@@ -91,7 +91,7 @@ TEST_CASE("[Time] Datetime dictionary conversion methods") {
datetime[YEAR_KEY] = 2014;
datetime[MONTH_KEY] = 2;
datetime[DAY_KEY] = 9;
- datetime[WEEKDAY_KEY] = Weekday::WEEKDAY_SUNDAY;
+ datetime[WEEKDAY_KEY] = (int64_t)Weekday::WEEKDAY_SUNDAY;
datetime[HOUR_KEY] = 22;
datetime[MINUTE_KEY] = 10;
datetime[SECOND_KEY] = 30;
@@ -100,7 +100,7 @@ TEST_CASE("[Time] Datetime dictionary conversion methods") {
date_only[YEAR_KEY] = 2014;
date_only[MONTH_KEY] = 2;
date_only[DAY_KEY] = 9;
- date_only[WEEKDAY_KEY] = Weekday::WEEKDAY_SUNDAY;
+ date_only[WEEKDAY_KEY] = (int64_t)Weekday::WEEKDAY_SUNDAY;
Dictionary time_only;
time_only[HOUR_KEY] = 22;