diff options
222 files changed, 12282 insertions, 5056 deletions
diff --git a/.gitignore b/.gitignore index 2697507adb..cd6785a8ec 100644 --- a/.gitignore +++ b/.gitignore @@ -40,12 +40,14 @@ gmon.out *.swo *.swp -# QT project files +# Qt project files *.config *.creator *.creator.* *.files *.includes +*.cflags +*.cxxflags # Eclipse CDT files .cproject diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index 3e2dc1538d..5431e2b403 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -185,8 +185,8 @@ License: BSD-3-clause Files: ./thirdparty/libpng/ Comment: libpng -Copyright: 1995-2018, The PNG Reference Library Authors. - 2018, Cosmin Truta. +Copyright: 1995-2019, The PNG Reference Library Authors. + 2018-2019, Cosmin Truta. 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. 1996-1997, Andreas Dilger. 1995-1996, Guy Eric Schalnat, Group 42, Inc. diff --git a/SConstruct b/SConstruct index 6bb129a174..e943f8dc04 100644 --- a/SConstruct +++ b/SConstruct @@ -161,8 +161,8 @@ opts.Add("CXX", "C++ compiler") opts.Add("CC", "C compiler") opts.Add("LINK", "Linker") opts.Add("CCFLAGS", "Custom flags for both the C and C++ compilers") -opts.Add("CXXFLAGS", "Custom flags for the C++ compiler") opts.Add("CFLAGS", "Custom flags for the C compiler") +opts.Add("CXXFLAGS", "Custom flags for the C++ compiler") opts.Add("LINKFLAGS", "Custom flags for the linker") # add platform specific options @@ -271,17 +271,18 @@ if selected_platform in platform_list: CCFLAGS = env.get('CCFLAGS', '') env['CCFLAGS'] = '' - env.Append(CCFLAGS=str(CCFLAGS).split()) CFLAGS = env.get('CFLAGS', '') env['CFLAGS'] = '' - env.Append(CFLAGS=str(CFLAGS).split()) + CXXFLAGS = env.get('CXXFLAGS', '') + env['CXXFLAGS'] = '' + env.Append(CXXFLAGS=str(CXXFLAGS).split()) + LINKFLAGS = env.get('LINKFLAGS', '') env['LINKFLAGS'] = '' - env.Append(LINKFLAGS=str(LINKFLAGS).split()) flag_list = platform_flags[selected_platform] @@ -322,15 +323,16 @@ if selected_platform in platform_list: # FIXME: enable -Wlogical-op and -Wduplicated-branches once #27594 is merged # Note: enable -Wimplicit-fallthrough for Clang (already part of -Wextra for GCC) # once we switch to C++11 or later (necessary for our FALLTHROUGH macro). - env.Append(CCFLAGS=['-Wall', '-Wextra', '-Wno-unused-parameter', - '-Wctor-dtor-privacy', '-Wnon-virtual-dtor'] + env.Append(CCFLAGS=['-Wall', '-Wextra', '-Wno-unused-parameter'] + all_plus_warnings + shadow_local_warning) + env.Append(CXXFLAGS=['-Wctor-dtor-privacy', '-Wnon-virtual-dtor']) if methods.using_gcc(env): - env['CCFLAGS'] += ['-Wno-clobbered', '-Walloc-zero', '-Wnoexcept', - '-Wduplicated-cond', '-Wplacement-new=1', '-Wstringop-overflow=4'] + env.Append(CCFLAGS=['-Wno-clobbered', '-Walloc-zero', + '-Wduplicated-cond', '-Wstringop-overflow=4']) + env.Append(CXXFLAGS=['-Wnoexcept', '-Wplacement-new=1']) version = methods.get_compiler_version(env) if version != None and version[0] >= '9': - env['CCFLAGS'] += ['-Wattribute-alias=2'] + env.Append(CCFLAGS=['-Wattribute-alias=2']) elif (env["warnings"] == 'all'): env.Append(CCFLAGS=['-Wall'] + shadow_local_warning) elif (env["warnings"] == 'moderate'): diff --git a/core/SCsub b/core/SCsub index 00d0bcac24..d5be74a64f 100644 --- a/core/SCsub +++ b/core/SCsub @@ -129,10 +129,10 @@ if env['builtin_zstd']: thirdparty_zstd_sources = [thirdparty_zstd_dir + file for file in thirdparty_zstd_sources] env_thirdparty.Append(CPPPATH=[thirdparty_zstd_dir, thirdparty_zstd_dir + "common"]) - env_thirdparty.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY") + env_thirdparty.Append(CPPFLAGS="-DZSTD_STATIC_LINKING_ONLY") env.Append(CPPPATH=thirdparty_zstd_dir) # Also needed in main env includes will trigger warnings - env.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY") + env.Append(CPPFLAGS="-DZSTD_STATIC_LINKING_ONLY") env_thirdparty.add_source_files(env.core_sources, thirdparty_zstd_sources) diff --git a/core/make_binders.py b/core/make_binders.py index 4c61b90d99..5c1c66cab6 100644 --- a/core/make_binders.py +++ b/core/make_binders.py @@ -9,6 +9,12 @@ public: $ifret R$ $ifnoret void$ (T::*method)($arg, P@$) $ifconst const$; #ifdef DEBUG_METHODS_ENABLED virtual Variant::Type _gen_argument_type(int p_arg) const { return _get_argument_type(p_arg); } + virtual GodotTypeInfo::Metadata get_argument_meta(int p_arg) const { + $ifret if (p_arg==-1) return GetTypeInfo<R>::METADATA;$ + $arg if (p_arg==(@-1)) return GetTypeInfo<P@>::METADATA; + $ + return GodotTypeInfo::METADATA_NONE; + } Variant::Type _get_argument_type(int p_argument) const { $ifret if (p_argument==-1) return (Variant::Type)GetTypeInfo<R>::VARIANT_TYPE;$ $arg if (p_argument==(@-1)) return (Variant::Type)GetTypeInfo<P@>::VARIANT_TYPE; @@ -94,6 +100,12 @@ public: #ifdef DEBUG_METHODS_ENABLED virtual Variant::Type _gen_argument_type(int p_arg) const { return _get_argument_type(p_arg); } + virtual GodotTypeInfo::Metadata get_argument_meta(int p_arg) const { + $ifret if (p_arg==-1) return GetTypeInfo<R>::METADATA;$ + $arg if (p_arg==(@-1)) return GetTypeInfo<P@>::METADATA; + $ + return GodotTypeInfo::METADATA_NONE; + } Variant::Type _get_argument_type(int p_argument) const { $ifret if (p_argument==-1) return (Variant::Type)GetTypeInfo<R>::VARIANT_TYPE;$ diff --git a/core/math/delaunay.h b/core/math/delaunay.h index bd0cf97937..ed52c506db 100644 --- a/core/math/delaunay.h +++ b/core/math/delaunay.h @@ -80,11 +80,11 @@ public: } static bool edge_compare(const Vector<Vector2> &p_vertices, const Edge &p_a, const Edge &p_b) { - if (p_vertices[p_a.edge[0]].distance_to(p_vertices[p_b.edge[0]]) < CMP_EPSILON && p_vertices[p_a.edge[1]].distance_to(p_vertices[p_b.edge[1]]) < CMP_EPSILON) { + if (Math::is_zero_approx(p_vertices[p_a.edge[0]].distance_to(p_vertices[p_b.edge[0]])) && Math::is_zero_approx(p_vertices[p_a.edge[1]].distance_to(p_vertices[p_b.edge[1]]))) { return true; } - if (p_vertices[p_a.edge[0]].distance_to(p_vertices[p_b.edge[1]]) < CMP_EPSILON && p_vertices[p_a.edge[1]].distance_to(p_vertices[p_b.edge[0]]) < CMP_EPSILON) { + if (Math::is_zero_approx(p_vertices[p_a.edge[0]].distance_to(p_vertices[p_b.edge[1]])) && Math::is_zero_approx(p_vertices[p_a.edge[1]].distance_to(p_vertices[p_b.edge[0]]))) { return true; } diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp index a84b5a16c7..0ab8707d3a 100644 --- a/core/math/geometry.cpp +++ b/core/math/geometry.cpp @@ -836,7 +836,7 @@ Geometry::MeshData Geometry::build_convex_mesh(const PoolVector<Plane> &p_planes Vector3 rel = edge1_A - edge0_A; real_t den = clip.normal.dot(rel); - if (Math::abs(den) < CMP_EPSILON) + if (Math::is_zero_approx(den)) continue; // point too short real_t dist = -(clip.normal.dot(edge0_A) - clip.d) / den; diff --git a/core/math/geometry.h b/core/math/geometry.h index 7347cb742a..f3a671aa9a 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -181,8 +181,8 @@ public: } } // finally do the division to get sc and tc - sc = (Math::abs(sN) < CMP_EPSILON ? 0.0 : sN / sD); - tc = (Math::abs(tN) < CMP_EPSILON ? 0.0 : tN / tD); + sc = (Math::is_zero_approx(sN) ? 0.0 : sN / sD); + tc = (Math::is_zero_approx(tN) ? 0.0 : tN / tD); // get the difference of the two closest points Vector3 dP = w + (sc * u) - (tc * v); // = S1(sc) - S2(tc) @@ -195,7 +195,7 @@ public: Vector3 e2 = p_v2 - p_v0; Vector3 h = p_dir.cross(e2); real_t a = e1.dot(h); - if (a > -CMP_EPSILON && a < CMP_EPSILON) // parallel test + if (Math::is_zero_approx(a)) // parallel test return false; real_t f = 1.0 / a; @@ -233,7 +233,7 @@ public: Vector3 e2 = p_v2 - p_v0; Vector3 h = rel.cross(e2); real_t a = e1.dot(h); - if (a > -CMP_EPSILON && a < CMP_EPSILON) // parallel test + if (Math::is_zero_approx(a)) // parallel test return false; real_t f = 1.0 / a; @@ -535,7 +535,7 @@ public: // see http://paulbourke.net/geometry/pointlineplane/ const real_t denom = p_dir_b.y * p_dir_a.x - p_dir_b.x * p_dir_a.y; - if (Math::abs(denom) < CMP_EPSILON) { // parallel? + if (Math::is_zero_approx(denom)) { // parallel? return false; } diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index 0d209402dd..a75f2fb4ab 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -272,13 +272,20 @@ public: return diff < epsilon; } - static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b, real_t epsilon = CMP_EPSILON) { - // TODO: Comparing floats for approximate-equality is non-trivial. - // Using epsilon should cover the typical cases in Godot (where a == b is used to compare two reals), such as matrix and vector comparison operators. - // A proper implementation in terms of ULPs should eventually replace the contents of this function. - // See https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ for details. + static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b) { + real_t tolerance = CMP_EPSILON * abs(a); + if (tolerance < CMP_EPSILON) { + tolerance = CMP_EPSILON; + } + return abs(a - b) < tolerance; + } + + static _ALWAYS_INLINE_ bool is_equal_approx(real_t a, real_t b, real_t tolerance) { + return abs(a - b) < tolerance; + } - return abs(a - b) < epsilon; + static _ALWAYS_INLINE_ bool is_zero_approx(real_t s) { + return abs(s) < CMP_EPSILON; } static _ALWAYS_INLINE_ float absf(float g) { diff --git a/core/math/plane.cpp b/core/math/plane.cpp index cd3cbce300..b01853c4ac 100644 --- a/core/math/plane.cpp +++ b/core/math/plane.cpp @@ -110,7 +110,7 @@ bool Plane::intersects_ray(const Vector3 &p_from, const Vector3 &p_dir, Vector3 real_t den = normal.dot(segment); //printf("den is %i\n",den); - if (Math::abs(den) <= CMP_EPSILON) { + if (Math::is_zero_approx(den)) { return false; } @@ -135,7 +135,7 @@ bool Plane::intersects_segment(const Vector3 &p_begin, const Vector3 &p_end, Vec real_t den = normal.dot(segment); //printf("den is %i\n",den); - if (Math::abs(den) <= CMP_EPSILON) { + if (Math::is_zero_approx(den)) { return false; } diff --git a/core/math/plane.h b/core/math/plane.h index 1c6e4b816b..ec817edd2c 100644 --- a/core/math/plane.h +++ b/core/math/plane.h @@ -125,12 +125,12 @@ Plane::Plane(const Vector3 &p_point1, const Vector3 &p_point2, const Vector3 &p_ bool Plane::operator==(const Plane &p_plane) const { - return normal == p_plane.normal && d == p_plane.d; + return normal == p_plane.normal && Math::is_equal_approx(d, p_plane.d); } bool Plane::operator!=(const Plane &p_plane) const { - return normal != p_plane.normal || d != p_plane.d; + return normal != p_plane.normal || !Math::is_equal_approx(d, p_plane.d); } #endif // PLANE_H diff --git a/core/math/vector2.h b/core/math/vector2.h index 9a214ef9b5..a0c6024c9f 100644 --- a/core/math/vector2.h +++ b/core/math/vector2.h @@ -106,8 +106,8 @@ struct Vector2 { bool operator==(const Vector2 &p_vec2) const; bool operator!=(const Vector2 &p_vec2) const; - bool operator<(const Vector2 &p_vec2) const { return (x == p_vec2.x) ? (y < p_vec2.y) : (x < p_vec2.x); } - bool operator<=(const Vector2 &p_vec2) const { return (x == p_vec2.x) ? (y <= p_vec2.y) : (x <= p_vec2.x); } + bool operator<(const Vector2 &p_vec2) const { return (Math::is_equal_approx(x, p_vec2.x)) ? (y < p_vec2.y) : (x < p_vec2.x); } + bool operator<=(const Vector2 &p_vec2) const { return (Math::is_equal_approx(x, p_vec2.x)) ? (y <= p_vec2.y) : (x < p_vec2.x); } real_t angle() const; @@ -213,11 +213,11 @@ _FORCE_INLINE_ Vector2 Vector2::operator-() const { _FORCE_INLINE_ bool Vector2::operator==(const Vector2 &p_vec2) const { - return x == p_vec2.x && y == p_vec2.y; + return Math::is_equal_approx(x, p_vec2.x) && Math::is_equal_approx(y, p_vec2.y); } _FORCE_INLINE_ bool Vector2::operator!=(const Vector2 &p_vec2) const { - return x != p_vec2.x || y != p_vec2.y; + return !Math::is_equal_approx(x, p_vec2.x) || !Math::is_equal_approx(y, p_vec2.y); } Vector2 Vector2::linear_interpolate(const Vector2 &p_b, real_t p_t) const { diff --git a/core/math/vector3.h b/core/math/vector3.h index e9074c5bd4..21fc09653f 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -341,17 +341,17 @@ Vector3 Vector3::operator-() const { bool Vector3::operator==(const Vector3 &p_v) const { - return (x == p_v.x && y == p_v.y && z == p_v.z); + return (Math::is_equal_approx(x, p_v.x) && Math::is_equal_approx(y, p_v.y) && Math::is_equal_approx(z, p_v.z)); } bool Vector3::operator!=(const Vector3 &p_v) const { - return (x != p_v.x || y != p_v.y || z != p_v.z); + return (!Math::is_equal_approx(x, p_v.x) || !Math::is_equal_approx(y, p_v.y) || !Math::is_equal_approx(z, p_v.z)); } bool Vector3::operator<(const Vector3 &p_v) const { - if (x == p_v.x) { - if (y == p_v.y) + if (Math::is_equal_approx(x, p_v.x)) { + if (Math::is_equal_approx(y, p_v.y)) return z < p_v.z; else return y < p_v.y; @@ -362,8 +362,8 @@ bool Vector3::operator<(const Vector3 &p_v) const { bool Vector3::operator<=(const Vector3 &p_v) const { - if (x == p_v.x) { - if (y == p_v.y) + if (Math::is_equal_approx(x, p_v.x)) { + if (Math::is_equal_approx(y, p_v.y)) return z <= p_v.z; else return y < p_v.y; @@ -402,13 +402,14 @@ real_t Vector3::length_squared() const { void Vector3::normalize() { - real_t l = length(); - if (l == 0) { + real_t lengthsq = length_squared(); + if (lengthsq == 0) { x = y = z = 0; } else { - x /= l; - y /= l; - z /= l; + real_t length = Math::sqrt(lengthsq); + x /= length; + y /= length; + z /= length; } } diff --git a/core/method_bind.h b/core/method_bind.h index 5ea8adb7e0..1b0c3b27c0 100644 --- a/core/method_bind.h +++ b/core/method_bind.h @@ -273,6 +273,8 @@ public: void set_argument_names(const Vector<StringName> &p_names); //set by class, db, can't be inferred otherwise Vector<StringName> get_argument_names() const; + virtual GodotTypeInfo::Metadata get_argument_meta(int p_arg) const = 0; + #endif void set_hint_flags(uint32_t p_hint) { hint_flags = p_hint; } uint32_t get_hint_flags() const { return hint_flags | (is_const() ? METHOD_FLAG_CONST : 0) | (is_vararg() ? METHOD_FLAG_VARARG : 0); } @@ -329,6 +331,10 @@ public: return _gen_argument_type_info(p_arg).type; } + virtual GodotTypeInfo::Metadata get_argument_meta(int) const { + return GodotTypeInfo::METADATA_NONE; + } + #else virtual Variant::Type _gen_argument_type(int p_arg) const { diff --git a/core/object.cpp b/core/object.cpp index 039f556c87..f860423a27 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1059,6 +1059,10 @@ Variant Object::get_meta(const String &p_name) const { return metadata[p_name]; } +void Object::remove_meta(const String &p_name) { + metadata.erase(p_name); +} + Array Object::_get_property_list_bind() const { List<PropertyInfo> lpi; @@ -1691,6 +1695,7 @@ void Object::_bind_methods() { ClassDB::bind_method(D_METHOD("get_script"), &Object::get_script); ClassDB::bind_method(D_METHOD("set_meta", "name", "value"), &Object::set_meta); + ClassDB::bind_method(D_METHOD("remove_meta", "name"), &Object::remove_meta); ClassDB::bind_method(D_METHOD("get_meta", "name"), &Object::get_meta); ClassDB::bind_method(D_METHOD("has_meta", "name"), &Object::has_meta); ClassDB::bind_method(D_METHOD("get_meta_list"), &Object::_get_meta_list_bind); diff --git a/core/object.h b/core/object.h index 3730af1ad4..94abaacdcc 100644 --- a/core/object.h +++ b/core/object.h @@ -673,6 +673,7 @@ public: bool has_meta(const String &p_name) const; void set_meta(const String &p_name, const Variant &p_value); + void remove_meta(const String &p_name); Variant get_meta(const String &p_name) const; void get_meta_list(List<String> *p_list) const; diff --git a/core/reference.h b/core/reference.h index 9105dbbd58..8a19f846c7 100644 --- a/core/reference.h +++ b/core/reference.h @@ -375,7 +375,8 @@ struct PtrToArg<const RefPtr &> { template <class T> struct GetTypeInfo<Ref<T> > { - enum { VARIANT_TYPE = Variant::OBJECT }; + static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, T::get_class_static()); @@ -384,7 +385,8 @@ struct GetTypeInfo<Ref<T> > { template <class T> struct GetTypeInfo<const Ref<T> &> { - enum { VARIANT_TYPE = Variant::OBJECT }; + static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, T::get_class_static()); diff --git a/core/translation.cpp b/core/translation.cpp index 6921f1d9f1..afbc639eaa 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -968,6 +968,19 @@ String TranslationServer::get_locale_name(const String &p_locale) const { return locale_name_map[p_locale]; } +Array TranslationServer::get_loaded_locales() const { + Array locales; + for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) { + + const Ref<Translation> &t = E->get(); + String l = t->get_locale(); + + locales.push_back(l); + } + + return locales; +} + Vector<String> TranslationServer::get_all_locales() { Vector<String> locales; @@ -1168,6 +1181,8 @@ void TranslationServer::_bind_methods() { ClassDB::bind_method(D_METHOD("remove_translation", "translation"), &TranslationServer::remove_translation); ClassDB::bind_method(D_METHOD("clear"), &TranslationServer::clear); + + ClassDB::bind_method(D_METHOD("get_loaded_locales"), &TranslationServer::get_loaded_locales); } void TranslationServer::load_translations() { diff --git a/core/translation.h b/core/translation.h index b12bad0d72..d172b9ecf2 100644 --- a/core/translation.h +++ b/core/translation.h @@ -94,6 +94,8 @@ public: String get_locale_name(const String &p_locale) const; + Array get_loaded_locales() const; + void add_translation(const Ref<Translation> &p_translation); void remove_translation(const Ref<Translation> &p_translation); diff --git a/core/type_info.h b/core/type_info.h index c38688fea1..d85a63ee42 100644 --- a/core/type_info.h +++ b/core/type_info.h @@ -67,43 +67,80 @@ struct TypeInherits { !TypesAreSame<B volatile const, void volatile const>::value; }; +namespace GodotTypeInfo { +enum Metadata { + METADATA_NONE, + METADATA_INT_IS_INT8, + METADATA_INT_IS_INT16, + METADATA_INT_IS_INT32, + METADATA_INT_IS_INT64, + METADATA_INT_IS_UINT8, + METADATA_INT_IS_UINT16, + METADATA_INT_IS_UINT32, + METADATA_INT_IS_UINT64, + METADATA_REAL_IS_FLOAT, + METADATA_REAL_IS_DOUBLE +}; +} + template <class T, typename = void> struct GetTypeInfo { static const Variant::Type VARIANT_TYPE = Variant::NIL; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { ERR_PRINT("GetTypeInfo fallback. Bug!"); return PropertyInfo(); // Not "Nil", this is an error } }; -#define MAKE_TYPE_INFO(m_type, m_var_type) \ - template <> \ - struct GetTypeInfo<m_type> { \ - static const Variant::Type VARIANT_TYPE = m_var_type; \ - static inline PropertyInfo get_class_info() { \ - return PropertyInfo(VARIANT_TYPE, String()); \ - } \ - }; \ - template <> \ - struct GetTypeInfo<const m_type &> { \ - static const Variant::Type VARIANT_TYPE = m_var_type; \ - static inline PropertyInfo get_class_info() { \ - return PropertyInfo(VARIANT_TYPE, String()); \ - } \ +#define MAKE_TYPE_INFO(m_type, m_var_type) \ + template <> \ + struct GetTypeInfo<m_type> { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ + }; \ + template <> \ + struct GetTypeInfo<const m_type &> { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ + }; + +#define MAKE_TYPE_INFO_WITH_META(m_type, m_var_type, m_metadata) \ + template <> \ + struct GetTypeInfo<m_type> { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = m_metadata; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ + }; \ + template <> \ + struct GetTypeInfo<const m_type &> { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = m_metadata; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ }; MAKE_TYPE_INFO(bool, Variant::BOOL) -MAKE_TYPE_INFO(uint8_t, Variant::INT) -MAKE_TYPE_INFO(int8_t, Variant::INT) -MAKE_TYPE_INFO(uint16_t, Variant::INT) -MAKE_TYPE_INFO(int16_t, Variant::INT) -MAKE_TYPE_INFO(uint32_t, Variant::INT) -MAKE_TYPE_INFO(int32_t, Variant::INT) -MAKE_TYPE_INFO(int64_t, Variant::INT) -MAKE_TYPE_INFO(uint64_t, Variant::INT) +MAKE_TYPE_INFO_WITH_META(uint8_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_UINT8) +MAKE_TYPE_INFO_WITH_META(int8_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_INT8) +MAKE_TYPE_INFO_WITH_META(uint16_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_UINT16) +MAKE_TYPE_INFO_WITH_META(int16_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_INT16) +MAKE_TYPE_INFO_WITH_META(uint32_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_UINT32) +MAKE_TYPE_INFO_WITH_META(int32_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_INT32) +MAKE_TYPE_INFO_WITH_META(uint64_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_UINT64) +MAKE_TYPE_INFO_WITH_META(int64_t, Variant::INT, GodotTypeInfo::METADATA_INT_IS_INT64) MAKE_TYPE_INFO(wchar_t, Variant::INT) -MAKE_TYPE_INFO(float, Variant::REAL) -MAKE_TYPE_INFO(double, Variant::REAL) +MAKE_TYPE_INFO_WITH_META(float, Variant::REAL, GodotTypeInfo::METADATA_REAL_IS_FLOAT) +MAKE_TYPE_INFO_WITH_META(double, Variant::REAL, GodotTypeInfo::METADATA_REAL_IS_DOUBLE) MAKE_TYPE_INFO(String, Variant::STRING) MAKE_TYPE_INFO(Vector2, Variant::VECTOR2) @@ -138,6 +175,7 @@ MAKE_TYPE_INFO(BSP_Tree, Variant::DICTIONARY) template <> struct GetTypeInfo<RefPtr> { static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, "Reference"); } @@ -145,6 +183,7 @@ struct GetTypeInfo<RefPtr> { template <> struct GetTypeInfo<const RefPtr &> { static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, "Reference"); } @@ -154,6 +193,7 @@ struct GetTypeInfo<const RefPtr &> { template <> struct GetTypeInfo<Variant> { static const Variant::Type VARIANT_TYPE = Variant::NIL; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::NIL, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT); } @@ -162,25 +202,28 @@ struct GetTypeInfo<Variant> { template <> struct GetTypeInfo<const Variant &> { static const Variant::Type VARIANT_TYPE = Variant::NIL; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(Variant::NIL, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT); } }; -#define MAKE_TEMPLATE_TYPE_INFO(m_template, m_type, m_var_type) \ - template <> \ - struct GetTypeInfo<m_template<m_type> > { \ - static const Variant::Type VARIANT_TYPE = m_var_type; \ - static inline PropertyInfo get_class_info() { \ - return PropertyInfo(VARIANT_TYPE, String()); \ - } \ - }; \ - template <> \ - struct GetTypeInfo<const m_template<m_type> &> { \ - static const Variant::Type VARIANT_TYPE = m_var_type; \ - static inline PropertyInfo get_class_info() { \ - return PropertyInfo(VARIANT_TYPE, String()); \ - } \ +#define MAKE_TEMPLATE_TYPE_INFO(m_template, m_type, m_var_type) \ + template <> \ + struct GetTypeInfo<m_template<m_type> > { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ + }; \ + template <> \ + struct GetTypeInfo<const m_template<m_type> &> { \ + static const Variant::Type VARIANT_TYPE = m_var_type; \ + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; \ + static inline PropertyInfo get_class_info() { \ + return PropertyInfo(VARIANT_TYPE, String()); \ + } \ }; MAKE_TEMPLATE_TYPE_INFO(Vector, uint8_t, Variant::POOL_BYTE_ARRAY) @@ -202,6 +245,7 @@ MAKE_TEMPLATE_TYPE_INFO(PoolVector, Face3, Variant::POOL_VECTOR3_ARRAY) template <typename T> struct GetTypeInfo<T *, typename EnableIf<TypeInherits<Object, T>::value>::type> { static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(StringName(T::get_class_static())); } @@ -210,6 +254,7 @@ struct GetTypeInfo<T *, typename EnableIf<TypeInherits<Object, T>::value>::type> template <typename T> struct GetTypeInfo<const T *, typename EnableIf<TypeInherits<Object, T>::value>::type> { static const Variant::Type VARIANT_TYPE = Variant::OBJECT; + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; static inline PropertyInfo get_class_info() { return PropertyInfo(StringName(T::get_class_static())); } @@ -219,6 +264,7 @@ struct GetTypeInfo<const T *, typename EnableIf<TypeInherits<Object, T>::value>: template <> \ struct GetTypeInfo<m_impl> { \ static const Variant::Type VARIANT_TYPE = Variant::INT; \ + static const GodotTypeInfo::Metadata METADATA = GodotTypeInfo::METADATA_NONE; \ static inline PropertyInfo get_class_info() { \ return PropertyInfo(Variant::INT, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_CLASS_IS_ENUM, String(#m_enum).replace("::", ".")); \ } \ diff --git a/doc/classes/@GDScript.xml b/doc/classes/@GDScript.xml index 29bf9b62ce..22834a4c81 100644 --- a/doc/classes/@GDScript.xml +++ b/doc/classes/@GDScript.xml @@ -498,6 +498,17 @@ [/codeblock] </description> </method> + <method name="is_equal_approx"> + <return type="bool"> + </return> + <argument index="0" name="a" type="float"> + </argument> + <argument index="1" name="b" type="float"> + </argument> + <description> + Returns True/False whether [code]a[/code] and [code]b[/code] are approximately equal to each other. + </description> + </method> <method name="is_inf"> <return type="bool"> </return> @@ -525,6 +536,15 @@ Returns whether [code]s[/code] is a NaN (Not-A-Number) value. </description> </method> + <method name="is_zero_approx"> + <return type="bool"> + </return> + <argument index="0" name="s" type="float"> + </argument> + <description> + Returns True/False whether [code]s[/code] is zero or almost zero. + </description> + </method> <method name="len"> <return type="int"> </return> diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml index 00bd72d4a5..db0fc77b25 100644 --- a/doc/classes/ArrayMesh.xml +++ b/doc/classes/ArrayMesh.xml @@ -205,31 +205,31 @@ Amount of weights/bone indices per vertex (always 4). </constant> <constant name="ARRAY_VERTEX" value="0" enum="ArrayType"> - Vertex array (array of [Vector3] vertices). + [PoolVector3Array], [PoolVector2Array], or [Array] of vertex positions. </constant> <constant name="ARRAY_NORMAL" value="1" enum="ArrayType"> - Normal array (array of [Vector3] normals). + [PoolVector3Array] of vertex normals. </constant> <constant name="ARRAY_TANGENT" value="2" enum="ArrayType"> - Tangent array, array of groups of 4 floats. first 3 floats determine the tangent, and the last the binormal direction as -1 or 1. + [PoolRealArray] of vertex tangents. Each element in groups of 4 floats, first 3 floats determine the tangent, and the last the binormal direction as -1 or 1. </constant> <constant name="ARRAY_COLOR" value="3" enum="ArrayType"> - Vertex array (array of [Color] colors). + [PoolColorArray] of vertex colors. </constant> <constant name="ARRAY_TEX_UV" value="4" enum="ArrayType"> - UV array (array of [Vector3] UVs or float array of groups of 2 floats (u,v)). + [PoolVector2Array] for UV coordinates. </constant> <constant name="ARRAY_TEX_UV2" value="5" enum="ArrayType"> - Second UV array (array of [Vector3] UVs or float array of groups of 2 floats (u,v)). + [PoolVector2Array] for second UV coordinates. </constant> <constant name="ARRAY_BONES" value="6" enum="ArrayType"> - Array of bone indices, as a float array. Each element in groups of 4 floats. + [PoolRealArray] or [PoolIntArray] of bone indices. Each element in groups of 4 floats. </constant> <constant name="ARRAY_WEIGHTS" value="7" enum="ArrayType"> - Array of bone weights, as a float array. Each element in groups of 4 floats. + [PoolRealArray] of bone weights. Each element in groups of 4 floats. </constant> <constant name="ARRAY_INDEX" value="8" enum="ArrayType"> - [Array] of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the *i*'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices. + [PoolIntArray] of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the *i*'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices. For triangles, the index array is interpreted as triples, referring to the vertices of each triangle. For lines, the index array is in pairs indicating the start and end of each line. </constant> <constant name="ARRAY_MAX" value="9" enum="ArrayType"> diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml index 83fbd28152..6dc1600cf2 100644 --- a/doc/classes/AudioServer.xml +++ b/doc/classes/AudioServer.xml @@ -184,6 +184,12 @@ Returns the sample rate at the output of the audioserver. </description> </method> + <method name="get_output_latency" qualifiers="const"> + <return type="float"> + </return> + <description> + </description> + </method> <method name="get_speaker_mode" qualifiers="const"> <return type="int" enum="AudioServer.SpeakerMode"> </return> @@ -191,6 +197,18 @@ Returns the speaker configuration. </description> </method> + <method name="get_time_since_last_mix" qualifiers="const"> + <return type="float"> + </return> + <description> + </description> + </method> + <method name="get_time_to_next_mix" qualifiers="const"> + <return type="float"> + </return> + <description> + </description> + </method> <method name="is_bus_bypassing_effects" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml index c6ec45f15e..07d7c875db 100644 --- a/doc/classes/AudioStreamPlayer.xml +++ b/doc/classes/AudioStreamPlayer.xml @@ -10,6 +10,15 @@ <link>https://docs.godotengine.org/en/latest/tutorials/audio/audio_streams.html</link> </tutorials> <methods> + <method name="get_mix_time" qualifiers="const"> + <return type="float"> + </return> + <description> + Returns the actual amount of time this stream player was mixing since play() was pressed. + To know the exact position this song is mixing right now, add the value to [method AudioServer.get_time_since_last_mix]. + Also consider substracting [method AudioServer.get_output_latency] to that result. + </description> + </method> <method name="get_playback_position"> <return type="float"> </return> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 1da134d441..46a4a70a9b 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -4,7 +4,7 @@ Contains global variables accessible from everywhere. </brief_description> <description> - Contains global variables accessible from everywhere. Use "ProjectSettings.get_setting(variable)", "ProjectSettings.set_setting(variable,value)" or "ProjectSettings.has_setting(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options. + Contains global variables accessible from everywhere. Use [method get_setting], [method set_setting] or [method has_setting] to access them. Variables stored in [code]project.godot[/code] are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options. </description> <tutorials> </tutorials> @@ -15,7 +15,7 @@ <argument index="0" name="hint" type="Dictionary"> </argument> <description> - Add a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see TYPE_* in [@GlobalScope]), and optionally hint:[int](see PROPERTY_HINT_* in [@GlobalScope]), hint_string:[String]. + Adds a custom property info to a property. The dictionary must contain: name:[String](the property's name) and type:[int](see TYPE_* in [@GlobalScope]), and optionally hint:[int](see PROPERTY_HINT_* in [@GlobalScope]), hint_string:[String]. Example: [codeblock] ProjectSettings.set("category/property_name", 0) @@ -37,7 +37,7 @@ <argument index="0" name="name" type="String"> </argument> <description> - Clear the whole configuration (not recommended, may break things). + Clears the whole configuration (not recommended, may break things). </description> </method> <method name="get_order" qualifiers="const"> @@ -46,7 +46,7 @@ <argument index="0" name="name" type="String"> </argument> <description> - Return the order of a configuration value (influences when saved to the config file). + Returns the order of a configuration value (influences when saved to the config file). </description> </method> <method name="get_setting" qualifiers="const"> @@ -63,7 +63,7 @@ <argument index="0" name="path" type="String"> </argument> <description> - Convert a localized path (res://) to a full native OS path. + Converts a localized path ([code]res://[/code]) to a full native OS path. </description> </method> <method name="has_setting" qualifiers="const"> @@ -72,7 +72,7 @@ <argument index="0" name="name" type="String"> </argument> <description> - Return [code]true[/code] if a configuration value is present. + Returns [code]true[/code] if a configuration value is present. </description> </method> <method name="load_resource_pack"> @@ -81,7 +81,7 @@ <argument index="0" name="pack" type="String"> </argument> <description> - Loads the contents of the .pck or .zip file specified by [code]pack[/code] into the resource filesystem (res://). Returns [code]true[/code] on success. + Loads the contents of the .pck or .zip file specified by [code]pack[/code] into the resource filesystem ([code]res://[/code]). Returns [code]true[/code] on success. Note: If a file from [code]pack[/code] shares the same path as a file already in the resource filesystem, any attempts to load that file will use the file from [code]pack[/code]. </description> </method> @@ -91,7 +91,7 @@ <argument index="0" name="path" type="String"> </argument> <description> - Convert a path to a localized path (res:// path). + Convert a path to a localized path ([code]res://[/code] path). </description> </method> <method name="property_can_revert"> @@ -109,14 +109,14 @@ <argument index="0" name="name" type="String"> </argument> <description> - Returns the initial value of the specified property. Returns null if the property does not exist. + Returns the specified property's initial value. Returns [code]null[/code] if the property does not exist. </description> </method> <method name="save"> <return type="int" enum="Error"> </return> <description> - Saves the configuration to the project.godot file. + Saves the configuration to the [code]project.godot[/code] file. </description> </method> <method name="save_custom"> @@ -146,7 +146,7 @@ <argument index="1" name="position" type="int"> </argument> <description> - Set the order of a configuration value (influences when saved to the config file). + Sets the order of a configuration value (influences when saved to the config file). </description> </method> <method name="set_setting"> @@ -168,62 +168,64 @@ Background color for the boot splash. </member> <member name="application/boot_splash/fullsize" type="bool" setter="" getter=""> - Scale the boot splash image to the full window length when engine starts (will leave it as default pixel size otherwise). + If [code]true[/code], scale the boot splash image to the full window length when engine starts. If [code]false[/code], the engine will leave it at the default pixel size. </member> <member name="application/boot_splash/image" type="String" setter="" getter=""> - Path to an image used for boot splash. + Path to an image used as the boot splash. </member> <member name="application/config/custom_user_dir_name" type="String" setter="" getter=""> - This user directory is used for storing persistent data ([code]user://[/code] filesystem). By default (no custom name defined), [code]user://[/code] resolves to a project-specific folder in Godot's own configuration folder (see [method OS.get_user_data_dir]). If a custom directory name is defined, this name will be used instead and appended to the system-specific user data directory (same parent folder as the Godot configuration folder documented in [method OS.get_user_data_dir]). + This user directory is used for storing persistent data ([code]user://[/code] filesystem). If left empty, [code]user://[/code] resolves to a project-specific folder in Godot's own configuration folder (see [method OS.get_user_data_dir]). If a custom directory name is defined, this name will be used instead and appended to the system-specific user data directory (same parent folder as the Godot configuration folder documented in [method OS.get_user_data_dir]). The [member application/config/use_custom_user_dir] setting must be enabled for this to take effect. </member> <member name="application/config/icon" type="String" setter="" getter=""> - Icon used for the project, set when project loads. Exporters will use this icon when possible to. + Icon used for the project, set when project loads. Exporters will also use this icon when possible. </member> <member name="application/config/name" type="String" setter="" getter=""> - Name of the project. It is used from both project manager and by the exporters. Overriding this as name.locale allows setting it in multiple languages. + 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. </member> <member name="application/config/project_settings_override" type="String" setter="" getter=""> Specifies a file to override project settings. For example: [code]user://custom_settings.cfg[/code]. </member> <member name="application/config/use_custom_user_dir" type="bool" setter="" getter=""> - Allow the project to save to its own custom user dir (see [member application/config/custom_user_dir_name]). This setting only works for desktop platforms. A name must be set in the [member application/config/custom_user_dir_name] setting for this to take effect. + If [code]true[/code], the project will save user data to its own user directory (see [member application/config/custom_user_dir_name]). This setting is only effective on desktop platforms. A name must be set in the [member application/config/custom_user_dir_name] setting for this to take effect. If [code]false[/code], the project will save user data to [code](OS user data directory)/Godot/app_userdata/(project name)[/code]. </member> <member name="application/run/disable_stderr" type="bool" setter="" getter=""> - Disable printing to stderr on exported build. + If [code]true[/code], disables printing to standard error in an exported build. </member> <member name="application/run/disable_stdout" type="bool" setter="" getter=""> - Disable printing to stdout on exported build. + If [code]true[/code], disables printing to standard output in an exported build. </member> <member name="application/run/frame_delay_msec" type="int" setter="" getter=""> - Force a delay between frames in the main loop. This may be useful if you plan to disable vsync. + Forces a delay between frames in the main loop (in milliseconds). This may be useful if you plan to disable vertical synchronization. </member> <member name="application/run/low_processor_mode" type="bool" setter="" getter=""> - Turn on low processor mode. This setting only works on desktops. The screen is not redrawn if nothing changes visually. This is meant for writing applications and editors, but is pretty useless (and can hurt performance) on games. + If [code]true[/code], enables low-processor usage mode. This setting only works on desktop platforms. The screen is not redrawn if nothing changes visually. This is meant for writing applications and editors, but is pretty useless (and can hurt performance) in most games. </member> <member name="application/run/low_processor_mode_sleep_usec" type="int" setter="" getter=""> - Amount of sleeping between frames when the low_processor_mode is enabled. This effectively reduces CPU usage when this mode is enabled. + Amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU usage. </member> <member name="application/run/main_scene" type="String" setter="" getter=""> Path to the main scene file that will be loaded when the project runs. </member> <member name="audio/channel_disable_threshold_db" type="float" setter="" getter=""> - Audio buses will disable automatically when sound goes below a given DB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing. + Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing. </member> <member name="audio/channel_disable_time" type="float" setter="" getter=""> - Audio buses will disable automatically when sound goes below a given DB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing. + Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing. </member> <member name="audio/default_bus_layout" type="String" setter="" getter=""> </member> <member name="audio/driver" type="String" setter="" getter=""> + Specifies the audio driver to use. This setting is platform-dependent as each platform supports different audio drivers. If left empty, the default audio driver will be used. </member> <member name="audio/enable_audio_input" type="bool" setter="" getter=""> - This option should be enabled if project works with microphone. + If [code]true[/code], microphone input will be allowed. This requires appropriate permissions to be set when exporting to Android or iOS. </member> <member name="audio/mix_rate" type="int" setter="" getter=""> - Mix rate used for audio. In general, it's better to not touch this and leave it to the host operating system. + Mixing rate used for audio. In general, it's better to not touch this and leave it to the host operating system. </member> <member name="audio/output_latency" type="int" setter="" getter=""> + Output latency in milliseconds for audio. Lower values will result in lower audio latency at the cost of increased CPU usage. Low values may result in audible cracking on slower hardware. </member> <member name="audio/video_delay_compensation_ms" type="int" setter="" getter=""> Setting to hardcode audio delay when playing video. Best to leave this untouched unless you know what you are doing. @@ -232,75 +234,105 @@ Default compression level for gzip. Affects compressed scenes and resources. </member> <member name="compression/formats/zlib/compression_level" type="int" setter="" getter=""> - Default compression level for zlib. Affects compressed scenes and resources. + Default compression level for Zlib. Affects compressed scenes and resources. </member> <member name="compression/formats/zstd/compression_level" type="int" setter="" getter=""> - Default compression level for zstd. Affects compressed scenes and resources. + Default compression level for Zstandard. Affects compressed scenes and resources. </member> <member name="compression/formats/zstd/long_distance_matching" type="bool" setter="" getter=""> - Enable long distance matching in zstd. + Enables long-distance matching in Zstandard. </member> <member name="compression/formats/zstd/window_log_size" type="int" setter="" getter=""> </member> <member name="debug/gdscript/completion/autocomplete_setters_and_getters" type="bool" setter="" getter=""> + If [code]true[/code], displays getters and setters in autocompletion results in the script editor. This setting is meant to be used when porting old projects (Godot 2), as using member variables is the preferred style from Godot 3 onwards. </member> <member name="debug/gdscript/warnings/constant_used_as_function" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a constant is used as a function. </member> <member name="debug/gdscript/warnings/deprecated_keyword" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when deprecated keywords such as [code]slave[/code] are used. </member> <member name="debug/gdscript/warnings/enable" type="bool" setter="" getter=""> + If [code]true[/code], enables specific GDScript warnings (see [code]debug/gdscript/warnings/*[/code] settings). If [code]false[/code], disables all GDScript warnings. </member> <member name="debug/gdscript/warnings/function_conflicts_constant" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a function is declared with the same name as a constant. </member> <member name="debug/gdscript/warnings/function_conflicts_variable" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a function is declared with the same name as a variable. This will turn into an error in a future version when first-class functions become supported in GDScript. </member> <member name="debug/gdscript/warnings/function_may_yield" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a function assigned to a variable may yield and return a function state instead of a value. </member> <member name="debug/gdscript/warnings/function_used_as_property" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when using a function as if it was a property. </member> <member name="debug/gdscript/warnings/incompatible_ternary" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a ternary operator may emit values with incompatible types. </member> <member name="debug/gdscript/warnings/integer_division" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when dividing an integer by another integer (the decimal part will be discarded). </member> <member name="debug/gdscript/warnings/narrowing_conversion" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when passing a floating-point value to a function that expects an integer (it will be converted and lose precision). </member> <member name="debug/gdscript/warnings/property_used_as_function" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when using a property as if it was a function. </member> <member name="debug/gdscript/warnings/return_value_discarded" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when calling a function without using its return value (by assigning it to a variable or using it as a function argument). Such return values are sometimes used to denote possible errors using the [Error] type. </member> <member name="debug/gdscript/warnings/shadowed_variable" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when defining a local or subclass member variable that would shadow a variable at an upper level (such as a member variable). </member> <member name="debug/gdscript/warnings/standalone_expression" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when calling an expression that has no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement. </member> <member name="debug/gdscript/warnings/treat_warnings_as_errors" type="bool" setter="" getter=""> + If [code]true[/code], all warnings will be reported as if they were errors. </member> <member name="debug/gdscript/warnings/unassigned_variable" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when using a variable that wasn't previously assigned. </member> <member name="debug/gdscript/warnings/unassigned_variable_op_assign" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when assigning a variable using an assignment operator like [code]+=[/code] if the variable wasn't previously assigned. </member> <member name="debug/gdscript/warnings/unreachable_code" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when unreachable code is detected (such as after a [code]return[/code] statement that will always be executed). </member> <member name="debug/gdscript/warnings/unsafe_call_argument" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when using an expression whose type may not be compatible with the function parameter expected. </member> <member name="debug/gdscript/warnings/unsafe_cast" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when performing an unsafe cast. </member> <member name="debug/gdscript/warnings/unsafe_method_access" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when calling a method whose presence is not guaranteed at compile-time in the class. </member> <member name="debug/gdscript/warnings/unsafe_property_access" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when accessing a property whose presence is not guaranteed at compile-time in the class. </member> <member name="debug/gdscript/warnings/unused_argument" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a function parameter is unused. </member> <member name="debug/gdscript/warnings/unused_class_variable" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a member variable is unused. </member> <member name="debug/gdscript/warnings/unused_signal" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a signal is unused. </member> <member name="debug/gdscript/warnings/unused_variable" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a local variable is unused. </member> <member name="debug/gdscript/warnings/variable_conflicts_function" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when a variable is declared with the same name as a function. This will turn into an error in a future version when first-class functions become supported in GDScript. </member> <member name="debug/gdscript/warnings/void_assignment" type="bool" setter="" getter=""> + If [code]true[/code], enables warnings when assigning the result of a function that returns [code]void[/code] to a variable. </member> <member name="debug/settings/crash_handler/message" type="String" setter="" getter=""> + Message to be displayed before the backtrace when the engine crashes. </member> <member name="debug/settings/fps/force_fps" type="int" setter="" getter=""> </member> @@ -311,34 +343,34 @@ Maximum amount of functions per frame allowed when profiling. </member> <member name="debug/settings/stdout/print_fps" type="bool" setter="" getter=""> - Print frames per second to stdout. Not very useful in general. + Print frames per second to standard output every second. </member> <member name="debug/settings/stdout/verbose_stdout" type="bool" setter="" getter=""> - Print more information to stdout when running. It shows info such as memory leaks, which scenes and resources are being loaded, etc. + Print more information to standard output when running. It displays information such as memory leaks, which scenes and resources are being loaded, etc. </member> <member name="debug/settings/visual_script/max_call_stack" type="int" setter="" getter=""> Maximum call stack in visual scripting, to avoid infinite recursion. </member> <member name="display/mouse_cursor/custom_image" type="String" setter="" getter=""> - Custom image for the mouse cursor. + Custom image for the mouse cursor (limited to 256x256). </member> <member name="display/mouse_cursor/custom_image_hotspot" type="Vector2" setter="" getter=""> Hotspot for the custom mouse cursor image. </member> <member name="display/mouse_cursor/tooltip_position_offset" type="Vector2" setter="" getter=""> - Position offset for tooltips, relative to the hotspot of the mouse cursor. + Position offset for tooltips, relative to the mouse cursor's hotspot. </member> <member name="display/window/dpi/allow_hidpi" type="bool" setter="" getter=""> - Allow HiDPI display on Windows and OSX. On Desktop Linux, this can't be enabled or disabled. + If [code]true[/code], allows HiDPI display on Windows and macOS. This setting has no effect on desktop Linux, as DPI-awareness fallbacks are not supported there. </member> <member name="display/window/energy_saving/keep_screen_on" type="bool" setter="" getter=""> - Force keep the screen on, so the screensaver does not take over. Works on Desktop and Mobile. + 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. </member> <member name="display/window/handheld/orientation" type="String" setter="" getter=""> - Default orientation for cell phone or tablet. + Default orientation on mobile devices. </member> <member name="display/window/per_pixel_transparency/allowed" type="bool" setter="" getter=""> - Allow per pixel transparency in a Desktop window. This affects performance if not needed, so leave it off. + If [code]true[/code], allows per-pixel transparency in a desktop window. This affects performance if not needed, so leave it on [code]false[/code] unless you need it. </member> <member name="display/window/per_pixel_transparency/enabled" type="bool" setter="" getter=""> </member> @@ -357,19 +389,19 @@ Set the main window height. On desktop, this is the default window size. Stretch mode settings use this also as a reference when enabled. </member> <member name="display/window/size/resizable" type="bool" setter="" getter=""> - Allow the window to be resizable by default. + Allows the window to be resizable by default. </member> <member name="display/window/size/test_height" type="int" setter="" getter=""> - Test a different height for the window. The main use for this is to test with stretch modes. + If greater than zero, uses a different height for the window when running from the editor. The main use for this is to test with stretch modes. </member> <member name="display/window/size/test_width" type="int" setter="" getter=""> - Test a different width for the window. The main use for this is to test with stretch modes. + If greater than zero, uses a different width for the window when running from the editor. The main use for this is to test with stretch modes. </member> <member name="display/window/size/width" type="int" setter="" getter=""> - Set the main window width. On desktop, this is the default window size. Stretch mode settings use this also as a reference when enabled. + Sets the main window width. On desktop platforms, this is the default window size. Stretch mode settings use this also as a reference when enabled. </member> <member name="display/window/vsync/use_vsync" type="bool" setter="" getter=""> - Use VSync. Don't be stupid, don't turn this off. + If [code]true[/code], enables vertical synchronization. This eliminates tearing that may appear in moving scenes, at the cost of higher input latency and stuttering at lower framerates. If [code]false[/code], vertical synchronization will be disabled, however, many platforms will enforce it regardless (such as mobile platforms and HTML5). </member> <member name="editor/active" type="bool" setter="" getter=""> Internal editor setting, don't touch. @@ -377,22 +409,22 @@ <member name="gui/common/default_scroll_deadzone" type="int" setter="" getter=""> </member> <member name="gui/common/swap_ok_cancel" type="bool" setter="" getter=""> - Enable swap OK and Cancel buttons on dialogs. This is because Windows/MacOS/Desktop Linux may use them in different order, so the GUI swaps them depending on the host OS. Disable this behavior by turning this setting off. + If [code]true[/code], swaps OK and Cancel buttons in dialogs on Windows and UWP to follow interface conventions. </member> <member name="gui/theme/custom" type="String" setter="" getter=""> Use a custom theme resource, set a path to it here. </member> <member name="gui/theme/custom_font" type="String" setter="" getter=""> - USe a custom default font resource, set a path to it here. + Use a custom default font resource, set a path to it here. </member> <member name="gui/theme/use_hidpi" type="bool" setter="" getter=""> - Make sure the theme used works with hidpi. + If [code]true[/code], makes sure the theme used works with HiDPI. </member> <member name="gui/timers/incremental_search_max_interval_msec" type="int" setter="" getter=""> - Timer setting for incremental search in Tree, IntemList, etc. controls. + Timer setting for incremental search in Tree, IntemList, etc. controls (in milliseconds). </member> <member name="gui/timers/text_edit_idle_detect_sec" type="float" setter="" getter=""> - Timer for detecting idle in the editor. + Timer for detecting idle in the editor (in seconds). </member> <member name="input/ui_accept" type="Dictionary" setter="" getter=""> </member> @@ -421,8 +453,10 @@ <member name="input/ui_up" type="Dictionary" setter="" getter=""> </member> <member name="input_devices/pointing/emulate_mouse_from_touch" type="bool" setter="" getter=""> + If [code]true[/code], sends mouse input events when tapping or swiping on the touchscreen. </member> <member name="input_devices/pointing/emulate_touch_from_mouse" type="bool" setter="" getter=""> + If [code]true[/code], sends touch input events when clicking or dragging the mouse. </member> <member name="layer_names/2d_physics/layer_1" type="String" setter="" getter=""> </member> @@ -585,23 +619,25 @@ <member name="layer_names/3d_render/layer_9" type="String" setter="" getter=""> </member> <member name="locale/fallback" type="String" setter="" getter=""> + 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. </member> <member name="locale/test" type="String" setter="" getter=""> + If non-empty, this locale will be used when running the project from the editor. </member> <member name="logging/file_logging/enable_file_logging" type="bool" setter="" getter=""> - Log all output to a file. + If [code]true[/code], logs all output to files. </member> <member name="logging/file_logging/log_path" type="String" setter="" getter=""> - Path to logs withint he project. Using an [code]user://[/code] based path is recommended. + Path to logs within the project. Using an [code]user://[/code] path is recommended. </member> <member name="logging/file_logging/max_log_files" type="int" setter="" getter=""> - Amount of log files (used for rotation). + Specifies the maximum amount of log files allowed (used for rotation). </member> <member name="memory/limits/message_queue/max_size_kb" type="int" setter="" getter=""> 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. </member> <member name="memory/limits/multithreaded_server/rid_pool_prealloc" type="int" setter="" getter=""> - This is used by servers when used in multi threading mode (servers and visual). RIDs are preallocated to avoid stalling the server requesting them on threads. If servers get stalled too often when loading resources in a thread, increase this number. + This is used by servers when used in multi-threading mode (servers and visual). RIDs are preallocated to avoid stalling the server requesting them on threads. If servers get stalled too often when loading resources in a thread, increase this number. </member> <member name="network/limits/debugger_stdout/max_chars_per_second" type="int" setter="" getter=""> Maximum amount of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. @@ -613,7 +649,7 @@ Maximum amount of messages allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> <member name="network/limits/packet_peer_stream/max_buffer_po2" type="int" setter="" getter=""> - Default size of packet peer stream for deserializing godot data. Over this size, data is dropped. + Default size of packet peer stream for deserializing Godot data. Over this size, data is dropped. </member> <member name="network/limits/websocket_client/max_in_buffer_kb" type="int" setter="" getter=""> </member> @@ -632,13 +668,13 @@ <member name="network/limits/websocket_server/max_out_packets" type="int" setter="" getter=""> </member> <member name="network/remote_fs/page_read_ahead" type="int" setter="" getter=""> - Amount of read ahead used by remote filesystem. Improves latency. + Amount of read ahead used by remote filesystem. Higher values decrease the effects of latency at the cost of higher bandwidth usage. </member> <member name="network/remote_fs/page_size" type="int" setter="" getter=""> - Page size used by remote filesystem. + Page size used by remote filesystem (in bytes). </member> <member name="node/name_casing" type="int" setter="" getter=""> - When creating nodes names automatically, set the type of casing in this project. This is mostly an editor setting. + When creating node names automatically, set the type of casing in this project. This is mostly an editor setting. </member> <member name="node/name_num_separator" type="int" setter="" getter=""> What to use to separate node name from number. This is mostly an editor setting. @@ -646,20 +682,21 @@ <member name="physics/2d/physics_engine" type="String" setter="" getter=""> </member> <member name="physics/2d/thread_model" type="int" setter="" getter=""> - Set whether physics is run on the main thread or a separate one. Running the server on a thread increases performance, but restricts API Access to only physics process. + Sets whether physics is run on the main thread or a separate one. Running the server on a thread increases performance, but restricts API access to only physics process. </member> <member name="physics/3d/active_soft_world" type="bool" setter="" getter=""> </member> <member name="physics/3d/physics_engine" type="String" setter="" getter=""> + Sets which physics engine to use. </member> <member name="physics/common/physics_fps" type="int" setter="" getter=""> Frames per second used in the physics. Physics always needs a fixed amount of frames per second. </member> <member name="physics/common/physics_jitter_fix" type="float" setter="" getter=""> - Fix to improve physics jitter, specially on monitors where refresh rate is different than physics FPS. + Fix to improve physics jitter, specially on monitors where refresh rate is different than the physics FPS. </member> <member name="rendering/environment/default_clear_color" type="Color" setter="" getter=""> - 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 VisualServer.set_default_clear_color]. + Default background clear color. Overriddable 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 VisualServer.set_default_clear_color]. </member> <member name="rendering/limits/buffers/blend_shape_max_buffer_size_kb" type="int" setter="" getter=""> Max buffer size for blend shapes. Any blend shape bigger than this will not work. @@ -674,68 +711,70 @@ Max buffer size for drawing immediate objects (ImmediateGeometry nodes). Nodes using more than this size will not work. </member> <member name="rendering/limits/rendering/max_renderable_elements" type="int" setter="" getter=""> - Max amount of elements renderable in a frame. If more than this are visible per frame, they will be dropped. Keep in mind elements refer to mesh surfaces and not mesh themselves. + Max amount of elements renderable in a frame. If more than this are visible per frame, they will be dropped. Keep in mind elements refer to mesh surfaces and not meshes themselves. </member> <member name="rendering/limits/time/time_rollover_secs" type="float" setter="" getter=""> - Shaders have a time variable that constantly increases. At some point it needs to be rolled back to zero to avoid numerical errors on shader animations. This setting specifies when. + Shaders have a time variable that constantly increases. At some point, it needs to be rolled back to zero to avoid precision errors on shader animations. This setting specifies when (in seconds). </member> <member name="rendering/quality/2d/gles2_use_nvidia_rect_flicker_workaround" type="bool" setter="" getter=""> - Some Nvidia GPU drivers have a bug, which produces flickering issues for the [code]draw_rect[/code] method, especially as used in [TileMap]. Refer to https://github.com/godotengine/godot/issues/9913 for details. - If [code]true[/code], this option enables a "safe" code path for such Nvidia GPUs, at the cost of performance. This option only impacts the GLES2 rendering backend (so the bug stays if you use GLES3), and only desktop platforms. Default value: [code]false[/code]. + Some NVIDIA GPU drivers have a bug which produces flickering issues for the [code]draw_rect[/code] method, especially as used in [TileMap]. Refer to [url]https://github.com/godotengine/godot/issues/9913[/url] for details. + If [code]true[/code], this option enables a "safe" code path for such NVIDIA GPUs at the cost of performance. This option only impacts the GLES2 rendering backend (so the bug stays if you use GLES3), and only desktop platforms. </member> <member name="rendering/quality/2d/use_pixel_snap" type="bool" setter="" getter=""> - Force snapping of polygons to pixels in 2D rendering. May help in some pixel art styles. + If [code]true[/code], forces snapping of polygons to pixels in 2D rendering. May help in some pixel art styles. </member> <member name="rendering/quality/depth_prepass/disable_for_vendors" type="String" setter="" getter=""> Disable depth pre-pass for some GPU vendors (usually mobile), as their architecture already does this. </member> <member name="rendering/quality/depth_prepass/enable" type="bool" setter="" getter=""> - Do a previous depth pass before rendering materials. This increases performance in scenes with high overdraw, when complex materials and lighting are used. + If [code]true[/code], performs a previous depth pass before rendering materials. This increases performance in scenes with high overdraw, when complex materials and lighting are used. </member> <member name="rendering/quality/directional_shadow/size" type="int" setter="" getter=""> - Size in pixels of the directional shadow. + The directional shadow's size in pixels. Higher values will result in sharper shadows, at the cost of performance. </member> <member name="rendering/quality/directional_shadow/size.mobile" type="int" setter="" getter=""> </member> <member name="rendering/quality/driver/driver_name" type="String" setter="" getter=""> - Name of the configured video driver ("GLES2" or "GLES3"). - Note that the backend in use can be overridden at runtime via the [code]--video-driver[/code] command line argument, or by the [member rendering/quality/driver/fallback_to_gles2] option if the target system does not support GLES3 and falls back to GLES2. In such cases, this property is not updated, so use [method OS.get_current_video_driver] to query it at runtime. + The video driver to use ("GLES2" or "GLES3"). + Note that the backend in use can be overridden at runtime via the [code]--video-driver[/code] command line argument, or by the [member rendering/quality/driver/fallback_to_gles2] option if the target system does not support GLES3 and falls back to GLES2. In such cases, this property is not updated, so use [method OS.get_current_video_driver] to query it at run-time. </member> <member name="rendering/quality/driver/fallback_to_gles2" type="bool" setter="" getter=""> - Whether to allow falling back to the GLES2 driver if the GLES3 driver is not supported. Default value: [code]false[/code]. - Note that the two video drivers are not drop-in replacements for each other, so a game designed for GLES3 might not work properly when falling back to GLES2. In particular, some features of the GLES3 backend are not available in GLES2. Enabling this setting also means that both ETC and ETC2 VRAM-compressed textures will be exported on Android and iOS, increasing the size of the game data pack. + If [code]true[/code], allows falling back to the GLES2 driver if the GLES3 driver is not supported. + Note that the two video drivers are not drop-in replacements for each other, so a game designed for GLES3 might not work properly when falling back to GLES2. In particular, some features of the GLES3 backend are not available in GLES2. Enabling this setting also means that both ETC and ETC2 VRAM-compressed textures will be exported on Android and iOS, increasing the data pack's size. </member> <member name="rendering/quality/filters/anisotropic_filter_level" type="int" setter="" getter=""> - Maximum Anisotropic filter level used for textures when anisotropy enabled. + Maximum anisotropic filter level used for textures with anisotropy enabled. Higher values will result in sharper textures when viewed from oblique angles, at the cost of performance. Only power-of-two values are valid (2, 4, 8, 16). </member> <member name="rendering/quality/filters/use_nearest_mipmap_filter" type="bool" setter="" getter=""> - Force to use nearest mipmap filtering when using mipmaps. This may increase performance in mobile as less memory bandwidth is used. + If [code]true[/code], uses nearest-neighbor mipmap filtering when using mipmaps (also called "bilinear filtering"), which will result in visible seams appearing between mipmap stages. This may increase performance in mobile as less memory bandwidth is used. If [code]false[/code], linear mipmap filtering (also called "trilinear filtering") is used. </member> <member name="rendering/quality/intended_usage/framebuffer_allocation" type="int" setter="" getter=""> - Strategy used for framebuffer allocation. The simpler it is, the less memory it uses (but the least features it supports). + Strategy used for framebuffer allocation. The simpler it is, the less resources it uses (but the less features it supports). </member> <member name="rendering/quality/intended_usage/framebuffer_allocation.mobile" type="int" setter="" getter=""> </member> <member name="rendering/quality/reflections/high_quality_ggx" type="bool" setter="" getter=""> - For reflection probes and panorama backgrounds (sky), use a high amount of samples to create ggx blurred versions (used for roughness). + If [code]true[/code], uses a high amount of samples to create blurred variants of reflection probes and panorama backgrounds (sky). Those blurred variants are used by rough materials. </member> <member name="rendering/quality/reflections/high_quality_ggx.mobile" type="bool" setter="" getter=""> </member> <member name="rendering/quality/reflections/texture_array_reflections" type="bool" setter="" getter=""> - For reflection probes and panorama backgrounds (sky), use a texture array instead of mipmaps. This reduces jitter noise on reflections, but costs more performance and memory. + If [code]true[/code], uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise on reflections, but costs more performance and memory. </member> <member name="rendering/quality/reflections/texture_array_reflections.mobile" type="bool" setter="" getter=""> </member> <member name="rendering/quality/shading/force_blinn_over_ggx" type="bool" setter="" getter=""> + If [code]true[/code], uses faster but lower-quality Blinn model to generate blurred reflections instead of the GGX model. </member> <member name="rendering/quality/shading/force_blinn_over_ggx.mobile" type="bool" setter="" getter=""> </member> <member name="rendering/quality/shading/force_lambert_over_burley" type="bool" setter="" getter=""> + If [code]true[/code], uses faster but lower-quality Lambert material lighting model instead of Burley. </member> <member name="rendering/quality/shading/force_lambert_over_burley.mobile" type="bool" setter="" getter=""> </member> <member name="rendering/quality/shading/force_vertex_shading" type="bool" setter="" getter=""> - Force vertex shading for all rendering. This can increase performance a lot, but also reduces quality immensely. Can work to optimize on very low end mobile. + If [code]true[/code], forces vertex shading for all rendering. This can increase performance a lot, but also reduces quality immensely. Can be used to optimize performance on low-end mobile devices. </member> <member name="rendering/quality/shading/force_vertex_shading.mobile" type="bool" setter="" getter=""> </member> @@ -752,12 +791,12 @@ Subdivision quadrant size for shadow mapping. See shadow mapping documentation. </member> <member name="rendering/quality/shadow_atlas/size" type="int" setter="" getter=""> - Size for shadow atlas (used for point and omni lights). See documentation. + Size for shadow atlas (used for OmniLights and SpotLights). See documentation. </member> <member name="rendering/quality/shadow_atlas/size.mobile" type="int" setter="" getter=""> </member> <member name="rendering/quality/shadows/filter_mode" type="int" setter="" getter=""> - Shadow filter mode. The more complex the filter, the more memory bandwidth required. + Shadow filter mode. Higher-quality settings result in smoother shadows that flicker less when moving. "Disabled" is the fastest option, but also has the lowest quality. "PCF5" is smoother but is also slower. "PCF13" is the smoothest option, but is also the slowest. </member> <member name="rendering/quality/shadows/filter_mode.mobile" type="int" setter="" getter=""> </member> @@ -773,24 +812,25 @@ Weight subsurface scattering samples. Helps to avoid reading samples from unrelated parts of the screen. </member> <member name="rendering/quality/voxel_cone_tracing/high_quality" type="bool" setter="" getter=""> - Use high quality voxel cone tracing (looks better, but requires a higher end GPU). + Use high-quality voxel cone tracing. This results in better-looking reflections, but is much more expensive on the GPU. </member> <member name="rendering/threads/thread_model" type="int" setter="" getter=""> - Thread model for rendering. Rendering on a thread can vastly improve performance, but syncinc to the main thread can cause a bit more jitter. + Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter. </member> <member name="rendering/vram_compression/import_bptc" type="bool" setter="" getter=""> + If [code]true[/code], the texture importer will import VRAM-compressed textures using the BPTC algorithm. This texture compression algorithm is only supported on desktop platforms, and only when using the GLES3 renderer. </member> <member name="rendering/vram_compression/import_etc" type="bool" setter="" getter=""> - If the project uses this compression (usually low end mobile), texture importer will import these. + If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression algorithm. This algorithm doesn't support alpha channels in textures. </member> <member name="rendering/vram_compression/import_etc2" type="bool" setter="" getter=""> - If the project uses this compression (usually high end mobile), texture importer will import these. + If [code]true[/code], the texture importer will import VRAM-compressed textures using the Ericsson Texture Compression 2 algorithm. This texture compression algorithm is only supported when using the GLES3 renderer. </member> <member name="rendering/vram_compression/import_pvrtc" type="bool" setter="" getter=""> - If the project uses this compression (usually iOS), texture importer will import these. + If [code]true[/code], the texture importer will import VRAM-compressed textures using the PowerVR Texture Compression algorithm. This texture compression algorithm is only supported on iOS. </member> <member name="rendering/vram_compression/import_s3tc" type="bool" setter="" getter=""> - If the project uses this compression (usually Desktop and Consoles), texture importer will import these. + If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm. This algorithm is only supported on desktop platforms and consoles. </member> <member name="script" type="Script" setter="" getter=""> </member> diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml index a3acc2c659..05774635b8 100644 --- a/doc/classes/TranslationServer.xml +++ b/doc/classes/TranslationServer.xml @@ -27,6 +27,12 @@ Clears the server from all translations. </description> </method> + <method name="get_loaded_locales" qualifiers="const"> + <return type="Array"> + </return> + <description> + </description> + </method> <method name="get_locale" qualifiers="const"> <return type="String"> </return> diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl index 5d21c679ba..1c35b455c4 100644 --- a/drivers/gles2/shaders/scene.glsl +++ b/drivers/gles2/shaders/scene.glsl @@ -1545,6 +1545,11 @@ FRAGMENT_SHADER_CODE #ifdef BASE_PASS //none + +#ifdef AMBIENT_LIGHT_DISABLED + ambient_light = vec3(0.0, 0.0, 0.0); +#else + #ifdef USE_RADIANCE_MAP vec3 ref_vec = reflect(-eye_position, N); @@ -1567,6 +1572,7 @@ FRAGMENT_SHADER_CODE #endif +#endif // AMBIENT_LIGHT_DISABLED ambient_light *= ambient_energy; #if defined(USE_REFLECTION_PROBE1) || defined(USE_REFLECTION_PROBE2) diff --git a/drivers/xaudio2/SCsub b/drivers/xaudio2/SCsub index 3dca95b429..dfc877b6f5 100644 --- a/drivers/xaudio2/SCsub +++ b/drivers/xaudio2/SCsub @@ -3,5 +3,5 @@ Import('env') env.add_source_files(env.drivers_sources, "*.cpp") -env.Append(CXXFLAGS=['-DXAUDIO2_ENABLED']) +env.Append(CPPFLAGS=['-DXAUDIO2_ENABLED']) env.Append(LINKFLAGS=['xaudio2_8.lib']) diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 9f6fa74dd3..def55d6057 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -544,7 +544,7 @@ public: if (use_fps && animation->get_step() > 0) { float max_frame = animation->get_length() / animation->get_step(); - p_list->push_back(PropertyInfo(Variant::REAL, "frame", PROPERTY_HINT_RANGE, "0," + rtos(max_frame) + ",0.01")); + p_list->push_back(PropertyInfo(Variant::REAL, "frame", PROPERTY_HINT_RANGE, "0," + rtos(max_frame) + ",1")); } else { p_list->push_back(PropertyInfo(Variant::REAL, "time", PROPERTY_HINT_RANGE, "0," + rtos(animation->get_length()) + ",0.01")); } @@ -1022,8 +1022,14 @@ void AnimationTimelineEdit::update_values() { editing = true; if (use_fps && animation->get_step() > 0) { length->set_value(animation->get_length() / animation->get_step()); + length->set_step(1); + length->set_tooltip(TTR("Animation length (frames)")); + time_icon->set_tooltip(TTR("Animation length (frames)")); } else { length->set_value(animation->get_length()); + length->set_step(0.01); + length->set_tooltip(TTR("Animation length (seconds)")); + time_icon->set_tooltip(TTR("Animation length (seconds)")); } loop->set_pressed(animation->has_loop()); editing = false; @@ -1168,7 +1174,7 @@ AnimationTimelineEdit::AnimationTimelineEdit() { len_hb->add_child(expander); time_icon = memnew(TextureRect); time_icon->set_v_size_flags(SIZE_SHRINK_CENTER); - time_icon->set_tooltip(TTR("Animation Length Time (seconds)")); + time_icon->set_tooltip(TTR("Animation length (seconds)")); len_hb->add_child(time_icon); length = memnew(EditorSpinSlider); length->set_min(0.001); @@ -1177,7 +1183,7 @@ AnimationTimelineEdit::AnimationTimelineEdit() { length->set_allow_greater(true); length->set_custom_minimum_size(Vector2(70 * EDSCALE, 0)); length->set_hide_slider(true); - length->set_tooltip(TTR("Animation Length Time (seconds)")); + length->set_tooltip(TTR("Animation length (seconds)")); length->connect("value_changed", this, "_anim_length_changed"); len_hb->add_child(length); loop = memnew(ToolButton); @@ -3857,7 +3863,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) { ERR_FAIL_INDEX(p_track, animation->get_track_count()); if (snap->is_pressed() && step->get_value() != 0) { - p_ofs = Math::stepify(p_ofs, step->get_value()); + p_ofs = snap_time(p_ofs); } while (animation->track_find_key(p_track, p_ofs, true) != -1) { //make sure insertion point is valid p_ofs += 0.001; @@ -4116,6 +4122,7 @@ void AnimationTrackEditor::_update_key_edit() { key_edit = memnew(AnimationTrackKeyEdit); key_edit->animation = animation; key_edit->track = selection.front()->key().track; + key_edit->use_fps = timeline->is_using_fps(); float ofs = animation->track_get_key_time(key_edit->track, selection.front()->key().key); key_edit->key_ofs = ofs; @@ -4889,7 +4896,14 @@ void AnimationTrackEditor::_selection_changed() { float AnimationTrackEditor::snap_time(float p_value) { if (snap->is_pressed()) { - p_value = Math::stepify(p_value, step->get_value()); + + double snap_increment; + if (timeline->is_using_fps() && step->get_value() > 0) + snap_increment = 1.0 / step->get_value(); + else + snap_increment = step->get_value(); + + p_value = Math::stepify(p_value, snap_increment); } return p_value; @@ -5021,7 +5035,7 @@ AnimationTrackEditor::AnimationTrackEditor() { bottom_hb->add_child(memnew(VSeparator)); snap = memnew(ToolButton); - snap->set_text(TTR("Snap: ")); + snap->set_text(TTR("Snap:") + " "); bottom_hb->add_child(snap); snap->set_disabled(true); snap->set_toggle_mode(true); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index 685c5de76c..03a71f3248 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -141,6 +141,9 @@ void ConnectDialog::_tree_node_selected() { Node *current = tree->get_selected(); + if (!current) + return; + dst_path = source->get_path_to(current); get_ok()->set_disabled(false); } @@ -309,6 +312,7 @@ void ConnectDialog::popup_dialog(const String &p_for_signal, bool p_advanced) { advanced->set_pressed(p_advanced); from_signal->set_text(p_for_signal); error_label->add_color_override("font_color", get_color("error_color", "Editor")); + vbc_right->set_visible(p_advanced); if (p_advanced) { @@ -330,7 +334,7 @@ void ConnectDialog::popup_dialog(const String &p_for_signal, bool p_advanced) { } void ConnectDialog::_advanced_pressed() { - vbc_right->set_visible(advanced->is_pressed()); + popup_dialog(from_signal->get_text(), advanced->is_pressed()); } @@ -414,7 +418,7 @@ ConnectDialog::ConnectDialog() { advanced = memnew(CheckBox); dstm_hb->add_child(advanced); - advanced->set_text(TTR("Advanced..")); + advanced->set_text(TTR("Advanced...")); advanced->connect("pressed", this, "_advanced_pressed"); /* diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index e6a6d9e6a6..724b821267 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -233,8 +233,8 @@ void EditorFileDialog::_file_entered(const String &p_file) { void EditorFileDialog::_save_confirm_pressed() { String f = dir_access->get_current_dir().plus_file(file->get_text()); _save_to_recent(); - emit_signal("file_selected", f); hide(); + emit_signal("file_selected", f); } void EditorFileDialog::_post_popup() { @@ -343,8 +343,8 @@ void EditorFileDialog::_action_pressed() { if (files.size()) { _save_to_recent(); - emit_signal("files_selected", files); hide(); + emit_signal("files_selected", files); } return; @@ -354,8 +354,8 @@ void EditorFileDialog::_action_pressed() { if ((mode == MODE_OPEN_ANY || mode == MODE_OPEN_FILE) && dir_access->file_exists(f)) { _save_to_recent(); - emit_signal("file_selected", f); hide(); + emit_signal("file_selected", f); } else if (mode == MODE_OPEN_ANY || mode == MODE_OPEN_DIR) { String path = dir_access->get_current_dir(); @@ -374,8 +374,8 @@ void EditorFileDialog::_action_pressed() { } _save_to_recent(); - emit_signal("dir_selected", path); hide(); + emit_signal("dir_selected", path); } if (mode == MODE_SAVE_FILE) { @@ -441,8 +441,8 @@ void EditorFileDialog::_action_pressed() { } else { _save_to_recent(); - emit_signal("file_selected", f); hide(); + emit_signal("file_selected", f); } } } diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index b0a1331b2e..ecb9ea5f35 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -434,7 +434,7 @@ bool EditorPropertyRevert::is_node_property_different(Node *p_node, const Varian float a = p_current; float b = p_orig; - return Math::abs(a - b) > CMP_EPSILON; //this must be done because, as some scenes save as text, there might be a tiny difference in floats due to numerical error + return !Math::is_equal_approx(a, b); //this must be done because, as some scenes save as text, there might be a tiny difference in floats due to numerical error } return bool(Variant::evaluate(Variant::OP_NOT_EQUAL, p_current, p_orig)); diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 477a6b7f73..cbb7994635 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1937,6 +1937,21 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { open_request(previous_scenes.back()->get()); } break; + case FILE_CLOSE_OTHERS: + case FILE_CLOSE_RIGHT: + case FILE_CLOSE_ALL: { + if (editor_data.get_edited_scene_count() > 1 && (current_option != FILE_CLOSE_RIGHT || editor_data.get_edited_scene() < editor_data.get_edited_scene_count() - 1)) { + int next_tab = editor_data.get_edited_scene() + 1; + next_tab %= editor_data.get_edited_scene_count(); + _scene_tab_closed(next_tab, current_option); + } else { + if (current_option != FILE_CLOSE_ALL) + current_option = -1; + else + _scene_tab_closed(editor_data.get_edited_scene()); + } + + } break; case FILE_CLOSE_ALL_AND_QUIT: case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER: case FILE_CLOSE: { @@ -1974,6 +1989,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { if (scene_idx != -1) _discard_changes(); + save_layout(); break; } @@ -2552,6 +2568,9 @@ void EditorNode::_discard_changes(const String &p_str) { case FILE_CLOSE_ALL_AND_QUIT: case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER: case FILE_CLOSE: + case FILE_CLOSE_OTHERS: + case FILE_CLOSE_RIGHT: + case FILE_CLOSE_ALL: case SCENE_TAB_CLOSE: { _remove_scene(tab_closing); @@ -2564,6 +2583,15 @@ void EditorNode::_discard_changes(const String &p_str) { } else { _menu_option_confirm(current_option, false); } + } else if (current_option == FILE_CLOSE_OTHERS || current_option == FILE_CLOSE_RIGHT) { + if (editor_data.get_edited_scene_count() == 1 || (current_option == FILE_CLOSE_RIGHT && editor_data.get_edited_scene_count() <= editor_data.get_edited_scene() + 1)) { + current_option = -1; + save_confirmation->hide(); + } else { + _menu_option_confirm(current_option, false); + } + } else if (current_option == FILE_CLOSE_ALL && editor_data.get_edited_scene_count() > 0) { + _menu_option_confirm(current_option, false); } else { current_option = -1; save_confirmation->hide(); @@ -4191,8 +4219,8 @@ void EditorNode::_scene_tab_script_edited(int p_tab) { inspector_dock->edit_resource(script); } -void EditorNode::_scene_tab_closed(int p_tab) { - current_option = SCENE_TAB_CLOSE; +void EditorNode::_scene_tab_closed(int p_tab, int option) { + current_option = option; tab_closing = p_tab; Node *scene = editor_data.get_edited_scene_root(p_tab); if (!scene) { @@ -4265,7 +4293,11 @@ void EditorNode::_scene_tab_input(const Ref<InputEvent> &p_input) { scene_tabs_context_menu->add_separator(); scene_tabs_context_menu->add_item(TTR("Show in FileSystem"), FILE_SHOW_IN_FILESYSTEM); scene_tabs_context_menu->add_item(TTR("Play This Scene"), RUN_PLAY_SCENE); + scene_tabs_context_menu->add_separator(); scene_tabs_context_menu->add_item(TTR("Close Tab"), FILE_CLOSE); + scene_tabs_context_menu->add_item(TTR("Close Other Tabs"), FILE_CLOSE_OTHERS); + scene_tabs_context_menu->add_item(TTR("Close Tabs to the Right"), FILE_CLOSE_RIGHT); + scene_tabs_context_menu->add_item(TTR("Close All Tabs"), FILE_CLOSE_ALL); } scene_tabs_context_menu->set_position(mb->get_global_position()); scene_tabs_context_menu->popup(); @@ -5522,7 +5554,7 @@ EditorNode::EditorNode() { scene_tabs->set_drag_to_rearrange_enabled(true); scene_tabs->connect("tab_changed", this, "_scene_tab_changed"); scene_tabs->connect("right_button_pressed", this, "_scene_tab_script_edited"); - scene_tabs->connect("tab_close", this, "_scene_tab_closed"); + scene_tabs->connect("tab_close", this, "_scene_tab_closed", varray(SCENE_TAB_CLOSE)); scene_tabs->connect("tab_hover", this, "_scene_tab_hover"); scene_tabs->connect("mouse_exited", this, "_scene_tab_exit"); scene_tabs->connect("gui_input", this, "_scene_tab_input"); diff --git a/editor/editor_node.h b/editor/editor_node.h index a06708eb54..0084d421f9 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -150,6 +150,9 @@ private: FILE_QUICK_OPEN_SCRIPT, FILE_OPEN_PREV, FILE_CLOSE, + FILE_CLOSE_OTHERS, + FILE_CLOSE_RIGHT, + FILE_CLOSE_ALL, FILE_CLOSE_ALL_AND_QUIT, FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER, FILE_QUIT, @@ -563,7 +566,7 @@ private: void _dock_split_dragged(int ofs); void _dock_popup_exit(); void _scene_tab_changed(int p_tab); - void _scene_tab_closed(int p_tab); + void _scene_tab_closed(int p_tab, int option = SCENE_TAB_CLOSE); void _scene_tab_hover(int p_tab); void _scene_tab_exit(); void _scene_tab_input(const Ref<InputEvent> &p_input); diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp index 7e9d3a889e..12510e27de 100644 --- a/editor/editor_path.cpp +++ b/editor/editor_path.cpp @@ -56,122 +56,67 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) { Ref<Texture> icon = EditorNode::get_singleton()->get_object_icon(obj); - int index = popup->get_item_count(); - popup->add_icon_item(icon, E->get().name.capitalize(), objects.size()); - popup->set_item_h_offset(index, p_depth * 10 * EDSCALE); + int index = get_popup()->get_item_count(); + get_popup()->add_icon_item(icon, E->get().name.capitalize(), objects.size()); + get_popup()->set_item_h_offset(index, p_depth * 10 * EDSCALE); objects.push_back(obj->get_instance_id()); _add_children_to_popup(obj, p_depth + 1); } } -void EditorPath::_gui_input(const Ref<InputEvent> &p_event) { +void EditorPath::_about_to_show() { - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_valid() && mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) { - - Object *obj = ObjectDB::get_instance(history->get_path_object(history->get_path_size() - 1)); - if (!obj) - return; - - objects.clear(); - popup->clear(); - _add_children_to_popup(obj); - popup->set_position(get_global_position() + Vector2(0, get_size().height)); - popup->set_size(Size2(get_size().width, 1)); - popup->popup(); - } -} + Object *obj = ObjectDB::get_instance(history->get_path_object(history->get_path_size() - 1)); + if (!obj) + return; -void EditorPath::_notification(int p_what) { - - switch (p_what) { - - case NOTIFICATION_MOUSE_ENTER: { - mouse_over = true; - update(); - } break; - case NOTIFICATION_MOUSE_EXIT: { - mouse_over = false; - update(); - } break; - case NOTIFICATION_DRAW: { - - RID ci = get_canvas_item(); - Ref<Font> label_font = get_font("font", "Label"); - Size2i size = get_size(); - Ref<Texture> sn = get_icon("SmallNext", "EditorIcons"); - Ref<StyleBox> sb = get_stylebox("pressed", "Button"); - - int ofs = sb->get_margin(MARGIN_LEFT); - - if (mouse_over) { - draw_style_box(sb, Rect2(Point2(), get_size())); - } - - for (int i = 0; i < history->get_path_size(); i++) { - - Object *obj = ObjectDB::get_instance(history->get_path_object(i)); - if (!obj) - continue; - - String type = obj->get_class(); - - Ref<Texture> icon = EditorNode::get_singleton()->get_object_icon(obj); - - if (icon.is_valid()) { - icon->draw(ci, Point2i(ofs, (size.height - icon->get_height()) / 2)); - ofs += icon->get_width(); - } - - if (i == history->get_path_size() - 1) { - //add name - ofs += 4; - int left = size.width - ofs; - if (left < 0) - continue; - String name; - if (Object::cast_to<Resource>(obj)) { - - Resource *r = Object::cast_to<Resource>(obj); - if (r->get_path().is_resource_file()) - name = r->get_path().get_file(); - else - name = r->get_name(); - - if (name == "") - name = r->get_class(); - } else if (obj->is_class("ScriptEditorDebuggerInspectedObject")) - name = obj->call("get_title"); - else if (Object::cast_to<Node>(obj)) - name = Object::cast_to<Node>(obj)->get_name(); - else if (Object::cast_to<Resource>(obj) && Object::cast_to<Resource>(obj)->get_name() != "") - name = Object::cast_to<Resource>(obj)->get_name(); - else - name = obj->get_class(); - - set_tooltip(obj->get_class()); - - label_font->draw(ci, Point2i(ofs, (size.height - label_font->get_height()) / 2 + label_font->get_ascent()), name, get_color("font_color", "Label"), left); - } else { - //add arrow - - //sn->draw(ci,Point2i(ofs,(size.height-sn->get_height())/2)); - //ofs+=sn->get_width(); - ofs += 5; //just looks better! somehow - } - } - - } break; - } + objects.clear(); + get_popup()->clear(); + get_popup()->set_size(Size2(get_size().width, 1)); + _add_children_to_popup(obj); } void EditorPath::update_path() { - update(); + for (int i = 0; i < history->get_path_size(); i++) { + + Object *obj = ObjectDB::get_instance(history->get_path_object(i)); + if (!obj) + continue; + + Ref<Texture> icon = EditorNode::get_singleton()->get_object_icon(obj); + if (icon.is_valid()) + set_icon(icon); + + if (i == history->get_path_size() - 1) { + String name; + if (Object::cast_to<Resource>(obj)) { + + Resource *r = Object::cast_to<Resource>(obj); + if (r->get_path().is_resource_file()) + name = r->get_path().get_file(); + else + name = r->get_name(); + + if (name == "") + name = r->get_class(); + } else if (obj->is_class("ScriptEditorDebuggerInspectedObject")) + name = obj->call("get_title"); + else if (Object::cast_to<Node>(obj)) + name = Object::cast_to<Node>(obj)->get_name(); + else if (Object::cast_to<Resource>(obj) && Object::cast_to<Resource>(obj)->get_name() != "") + name = Object::cast_to<Resource>(obj)->get_name(); + else + name = obj->get_class(); + + set_text(" " + name); // An extra space so the text is not too close of the icon. + set_tooltip(obj->get_class()); + } + } } -void EditorPath::_popup_select(int p_idx) { +void EditorPath::_id_pressed(int p_idx) { ERR_FAIL_INDEX(p_idx, objects.size()); @@ -184,15 +129,14 @@ void EditorPath::_popup_select(int p_idx) { void EditorPath::_bind_methods() { - ClassDB::bind_method("_gui_input", &EditorPath::_gui_input); - ClassDB::bind_method("_popup_select", &EditorPath::_popup_select); + ClassDB::bind_method("_about_to_show", &EditorPath::_about_to_show); + ClassDB::bind_method("_id_pressed", &EditorPath::_id_pressed); } EditorPath::EditorPath(EditorHistory *p_history) { history = p_history; - mouse_over = false; - popup = memnew(PopupMenu); - popup->connect("id_pressed", this, "_popup_select"); - add_child(popup); + set_text_align(ALIGN_LEFT); + get_popup()->connect("about_to_show", this, "_about_to_show"); + get_popup()->connect("id_pressed", this, "_id_pressed"); } diff --git a/editor/editor_path.h b/editor/editor_path.h index e12ca02534..2dc4d21f9b 100644 --- a/editor/editor_path.h +++ b/editor/editor_path.h @@ -32,27 +32,23 @@ #define EDITOR_PATH_H #include "editor_data.h" -#include "scene/gui/control.h" -#include "scene/gui/popup_menu.h" +#include "scene/gui/menu_button.h" -class EditorPath : public Control { +class EditorPath : public MenuButton { - GDCLASS(EditorPath, Control); + GDCLASS(EditorPath, MenuButton); EditorHistory *history; Vector<ObjectID> objects; - PopupMenu *popup; - bool mouse_over; EditorPath(); - void _popup_select(int p_idx); - void _gui_input(const Ref<InputEvent> &p_event); + void _id_pressed(int p_idx); + void _about_to_show(); void _add_children_to_popup(Object *p_obj, int p_depth = 0); protected: static void _bind_methods(); - void _notification(int p_what); public: void update_path(); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 9d936d9b99..45acd1b6d4 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -786,6 +786,7 @@ EditorPropertyLayers::EditorPropertyLayers() { grid->set_h_size_flags(SIZE_EXPAND_FILL); hb->add_child(grid); button = memnew(Button); + button->set_toggle_mode(true); button->set_text(".."); button->connect("pressed", this, "_button_pressed"); hb->add_child(button); @@ -794,6 +795,7 @@ EditorPropertyLayers::EditorPropertyLayers() { add_child(layers); layers->set_hide_on_checkable_item_selection(false); layers->connect("id_pressed", this, "_menu_pressed"); + layers->connect("popup_hide", button, "set_pressed", varray(false)); } ///////////////////// INT ///////////////////////// @@ -2598,6 +2600,7 @@ void EditorPropertyResource::_resource_selected() { RES res = get_edited_object()->get(get_edited_property()); if (res.is_null()) { + edit->set_pressed(true); _update_menu(); return; } @@ -2818,7 +2821,9 @@ EditorPropertyResource::EditorPropertyResource() { add_child(menu); edit = memnew(Button); edit->set_flat(true); + edit->set_toggle_mode(true); menu->connect("id_pressed", this, "_menu_option"); + menu->connect("popup_hide", edit, "set_pressed", varray(false)); edit->connect("pressed", this, "_update_menu"); hbc->add_child(edit); edit->connect("gui_input", this, "_button_input"); diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp index 06cadca1c0..b73cda6008 100644 --- a/editor/editor_run_native.cpp +++ b/editor/editor_run_native.cpp @@ -56,7 +56,7 @@ void EditorRunNative::_notification(int p_what) { small_icon->create_from_image(im, 0); MenuButton *mb = memnew(MenuButton); mb->get_popup()->connect("id_pressed", this, "_run_native", varray(i)); - //mb->connect("pressed", this, "_run_native", varray(-1, i)); + mb->connect("pressed", this, "_run_native", varray(-1, i)); mb->set_icon(small_icon); add_child(mb); menus[i] = mb; @@ -82,10 +82,14 @@ void EditorRunNative::_notification(int p_what) { } else { mb->get_popup()->clear(); mb->show(); - mb->set_tooltip(TTR("Select device from the list")); - for (int i = 0; i < dc; i++) { - mb->get_popup()->add_icon_item(get_icon("Play", "EditorIcons"), eep->get_device_name(i)); - mb->get_popup()->set_item_tooltip(mb->get_popup()->get_item_count() - 1, eep->get_device_info(i).strip_edges()); + if (dc == 1) { + mb->set_tooltip(eep->get_device_name(0) + "\n\n" + eep->get_device_info(0).strip_edges()); + } else { + mb->set_tooltip("Select device from the list"); + for (int i = 0; i < dc; i++) { + mb->get_popup()->add_icon_item(get_icon("Play", "EditorIcons"), eep->get_device_name(i)); + mb->get_popup()->set_item_tooltip(mb->get_popup()->get_item_count() - 1, eep->get_device_info(i).strip_edges()); + } } } } @@ -99,14 +103,15 @@ void EditorRunNative::_run_native(int p_idx, int p_platform) { Ref<EditorExportPlatform> eep = EditorExport::get_singleton()->get_export_platform(p_platform); ERR_FAIL_COND(eep.is_null()); - /*if (p_idx == -1) { + + if (p_idx == -1) { if (eep->get_device_count() == 1) { menus[p_platform]->get_popup()->hide(); p_idx = 0; } else { return; } - }*/ + } Ref<EditorExportPreset> preset; diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp index ab515785da..8f66cce39a 100644 --- a/editor/import/resource_importer_scene.cpp +++ b/editor/import/resource_importer_scene.cpp @@ -1127,7 +1127,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/import", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "animation/fps", PROPERTY_HINT_RANGE, "1,120,1"), 15)); r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "animation/filter_script", PROPERTY_HINT_MULTILINE_TEXT), "")); - r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "animation/storage", PROPERTY_HINT_ENUM, "Built-In,Files"), animations_out ? true : false)); + r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "animation/storage", PROPERTY_HINT_ENUM, "Built-In,Files", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), animations_out ? true : false)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/keep_custom_tracks"), animations_out ? true : false)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/optimizer/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "animation/optimizer/max_linear_error"), 0.05)); diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index 567c336eff..f06b4b2828 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -874,7 +874,7 @@ void AnimationNodeStateMachineEditor::_state_machine_pos_draw() { } to.y = from.y; - float len = MAX(0.0001, playback->get_current_length()); + float len = MAX(0.0001, current_length); float pos = CLAMP(play_pos, 0, len); float c = pos / len; @@ -1012,6 +1012,7 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { StringName current_node; StringName blend_from_node; play_pos = 0; + current_length = 0; if (playback.is_valid()) { tp = playback->get_travel_path(); @@ -1019,6 +1020,7 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { current_node = playback->get_current_node(); blend_from_node = playback->get_blend_from_node(); play_pos = playback->get_current_play_pos(); + current_length = playback->get_current_length(); } { @@ -1060,8 +1062,10 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { } // when current_node is a state machine, use playback of current_node to set play_pos - if (current_node_playback.is_valid()) + if (current_node_playback.is_valid()) { play_pos = current_node_playback->get_current_play_pos(); + current_length = current_node_playback->get_current_length(); + } } } diff --git a/editor/plugins/animation_state_machine_editor.h b/editor/plugins/animation_state_machine_editor.h index 135aff9027..8b0a5a0b00 100644 --- a/editor/plugins/animation_state_machine_editor.h +++ b/editor/plugins/animation_state_machine_editor.h @@ -161,6 +161,7 @@ class AnimationNodeStateMachineEditor : public AnimationTreeNodeEditorPlugin { Vector<StringName> last_travel_path; float last_play_pos; float play_pos; + float current_length; float error_time; String error_text; diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 386bc1738e..0dfb53b34a 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -175,7 +175,7 @@ void EditorAssetLibraryItemDescription::set_image(int p_type, int p_index, const Ref<Image> overlay = get_icon("PlayOverlay", "EditorIcons")->get_data(); Ref<Image> thumbnail = p_image->get_data(); thumbnail = thumbnail->duplicate(); - Point2 overlay_pos = Point2((thumbnail->get_width() - overlay->get_width()) / 2, (thumbnail->get_height() - overlay->get_height()) / 2); + Point2 overlay_pos = Point2((thumbnail->get_width() - overlay->get_width() / 2) / 2, (thumbnail->get_height() - overlay->get_height() / 2) / 2); // Overlay and thumbnail need the same format for `blend_rect` to work. thumbnail->convert(Image::FORMAT_RGBA8); @@ -310,15 +310,20 @@ EditorAssetLibraryItemDescription::EditorAssetLibraryItemDescription() { description = memnew(RichTextLabel); description->connect("meta_clicked", this, "_link_click"); + description->set_custom_minimum_size(Size2(440 * EDSCALE, 300 * EDSCALE)); desc_bg->add_child(description); + VBoxContainer *previews_vbox = memnew(VBoxContainer); + hbox->add_child(previews_vbox); + previews_vbox->add_constant_override("separation", 15 * EDSCALE); + preview = memnew(TextureRect); preview->set_custom_minimum_size(Size2(640 * EDSCALE, 345 * EDSCALE)); - hbox->add_child(preview); + previews_vbox->add_child(preview); previews_bg = memnew(PanelContainer); - vbox->add_child(previews_bg); - previews_bg->set_custom_minimum_size(Size2(0, 101 * EDSCALE)); + previews_vbox->add_child(previews_bg); + previews_bg->set_custom_minimum_size(Size2(640 * EDSCALE, 101 * EDSCALE)); previews = memnew(ScrollContainer); previews_bg->add_child(previews); diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index e5228ff1e7..ab5ff7dee4 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -3916,6 +3916,8 @@ void CanvasItemEditor::_popup_callback(int p_op) { viewport->update(); } break; case LOCK_SELECTED: { + undo_redo->create_action(TTR("Lock Selected")); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -3924,12 +3926,18 @@ void CanvasItemEditor::_popup_callback(int p_op) { if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - canvas_item->set_meta("_edit_lock_", true); - emit_signal("item_lock_status_changed"); + undo_redo->add_do_method(canvas_item, "set_meta", "_edit_lock_", true); + undo_redo->add_undo_method(canvas_item, "remove_meta", "_edit_lock_"); + undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - viewport->update(); + undo_redo->add_do_method(viewport, "update", Variant()); + undo_redo->add_undo_method(viewport, "update", Variant()); + undo_redo->commit_action(); } break; case UNLOCK_SELECTED: { + undo_redo->create_action(TTR("Unlock Selected")); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -3938,12 +3946,18 @@ void CanvasItemEditor::_popup_callback(int p_op) { if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - canvas_item->set_meta("_edit_lock_", Variant()); - emit_signal("item_lock_status_changed"); + undo_redo->add_do_method(canvas_item, "remove_meta", "_edit_lock_"); + undo_redo->add_undo_method(canvas_item, "set_meta", "_edit_lock_", true); + undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - viewport->update(); + undo_redo->add_do_method(viewport, "update", Variant()); + undo_redo->add_undo_method(viewport, "update", Variant()); + undo_redo->commit_action(); } break; case GROUP_SELECTED: { + undo_redo->create_action(TTR("Group Selected")); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -3952,12 +3966,18 @@ void CanvasItemEditor::_popup_callback(int p_op) { if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - canvas_item->set_meta("_edit_group_", true); - emit_signal("item_group_status_changed"); + undo_redo->add_do_method(canvas_item, "set_meta", "_edit_group_", true); + undo_redo->add_undo_method(canvas_item, "remove_meta", "_edit_group_"); + undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - viewport->update(); + undo_redo->add_do_method(viewport, "update", Variant()); + undo_redo->add_undo_method(viewport, "update", Variant()); + undo_redo->commit_action(); } break; case UNGROUP_SELECTED: { + undo_redo->create_action(TTR("Ungroup Selected")); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -3966,10 +3986,14 @@ void CanvasItemEditor::_popup_callback(int p_op) { if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - canvas_item->set_meta("_edit_group_", Variant()); - emit_signal("item_group_status_changed"); + undo_redo->add_do_method(canvas_item, "remove_meta", "_edit_group_"); + undo_redo->add_undo_method(canvas_item, "set_meta", "_edit_group_", true); + undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - viewport->update(); + undo_redo->add_do_method(viewport, "update", Variant()); + undo_redo->add_undo_method(viewport, "update", Variant()); + undo_redo->commit_action(); } break; case ANCHORS_AND_MARGINS_PRESET_TOP_LEFT: { _set_anchors_and_margins_preset(PRESET_TOP_LEFT); diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.cpp b/editor/plugins/cpu_particles_2d_editor_plugin.cpp index 559558cdb8..1622ce17b2 100644 --- a/editor/plugins/cpu_particles_2d_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_2d_editor_plugin.cpp @@ -267,6 +267,7 @@ CPUParticles2DEditorPlugin::CPUParticles2DEditorPlugin(EditorNode *p_node) { menu->get_popup()->add_item(TTR("Load Emission Mask"), MENU_LOAD_EMISSION_MASK); // menu->get_popup()->add_item(TTR("Clear Emission Mask"), MENU_CLEAR_EMISSION_MASK); menu->set_text(TTR("Particles")); + menu->set_switch_on_hover(true); toolbar->add_child(menu); file = memnew(EditorFileDialog); diff --git a/editor/plugins/cpu_particles_editor_plugin.cpp b/editor/plugins/cpu_particles_editor_plugin.cpp index 7222525dd7..70be9b95bb 100644 --- a/editor/plugins/cpu_particles_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_editor_plugin.cpp @@ -101,6 +101,7 @@ CPUParticlesEditor::CPUParticlesEditor() { particles_editor_hb = memnew(HBoxContainer); SpatialEditor::get_singleton()->add_control_to_menu_panel(particles_editor_hb); options = memnew(MenuButton); + options->set_switch_on_hover(true); particles_editor_hb->add_child(options); particles_editor_hb->hide(); diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp index 3d76b5da21..2c0dd5f1db 100644 --- a/editor/plugins/curve_editor_plugin.cpp +++ b/editor/plugins/curve_editor_plugin.cpp @@ -194,7 +194,7 @@ void CurveEditor::on_gui_input(const Ref<InputEvent> &p_event) { Vector2 dir = (control_pos - point_pos).normalized(); real_t tangent; - if (Math::abs(dir.x) > CMP_EPSILON) + if (!Math::is_zero_approx(dir.x)) tangent = dir.y / dir.x; else tangent = 9999 * (dir.y >= 0 ? 1 : -1); diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp index cf111dc4ce..635b934333 100644 --- a/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_editor_plugin.cpp @@ -412,6 +412,7 @@ void MeshInstanceEditor::_bind_methods() { MeshInstanceEditor::MeshInstanceEditor() { options = memnew(MenuButton); + options->set_switch_on_hover(true); SpatialEditor::get_singleton()->add_control_to_menu_panel(options); options->set_text(TTR("Mesh")); diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp index 8ff6080443..fc0a425bfc 100644 --- a/editor/plugins/multimesh_editor_plugin.cpp +++ b/editor/plugins/multimesh_editor_plugin.cpp @@ -293,6 +293,7 @@ void MultiMeshEditor::_bind_methods() { MultiMeshEditor::MultiMeshEditor() { options = memnew(MenuButton); + options->set_switch_on_hover(true); SpatialEditor::get_singleton()->add_control_to_menu_panel(options); options->set_text("MultiMesh"); diff --git a/editor/plugins/particles_2d_editor_plugin.cpp b/editor/plugins/particles_2d_editor_plugin.cpp index 70d4919e9f..50bdf4512b 100644 --- a/editor/plugins/particles_2d_editor_plugin.cpp +++ b/editor/plugins/particles_2d_editor_plugin.cpp @@ -375,6 +375,7 @@ Particles2DEditorPlugin::Particles2DEditorPlugin(EditorNode *p_node) { menu->get_popup()->add_separator(); menu->get_popup()->add_item(TTR("Convert to CPUParticles"), MENU_OPTION_CONVERT_TO_CPU_PARTICLES); menu->set_text(TTR("Particles")); + menu->set_switch_on_hover(true); toolbar->add_child(menu); file = memnew(EditorFileDialog); diff --git a/editor/plugins/particles_editor_plugin.cpp b/editor/plugins/particles_editor_plugin.cpp index 0032850535..09180edf2a 100644 --- a/editor/plugins/particles_editor_plugin.cpp +++ b/editor/plugins/particles_editor_plugin.cpp @@ -454,6 +454,7 @@ ParticlesEditor::ParticlesEditor() { particles_editor_hb = memnew(HBoxContainer); SpatialEditor::get_singleton()->add_control_to_menu_panel(particles_editor_hb); options = memnew(MenuButton); + options->set_switch_on_hover(true); particles_editor_hb->add_child(options); particles_editor_hb->hide(); diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index af43f679fd..712b1a0ae4 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -1060,8 +1060,7 @@ void Polygon2DEditor::_uv_draw() { polygon_fill_color.push_back(pf); } Color prev_color = Color(0.5, 0.5, 0.5); - Rect2 rect(Point2(), mtx.basis_xform(base_tex->get_size())); - rect.expand_to(mtx.basis_xform(uv_edit_draw->get_size())); + Rect2 rect; int uv_draw_max = uvs.size(); @@ -1204,7 +1203,8 @@ void Polygon2DEditor::_uv_draw() { uv_edit_draw->draw_circle(bone_paint_pos, bone_paint_radius->get_value() * EDSCALE, Color(1, 1, 1, 0.1)); } - rect = rect.grow(200); + rect.position -= uv_edit_draw->get_size(); + rect.size += uv_edit_draw->get_size() * 2.0; updating_uv_scroll = true; uv_hscroll->set_min(rect.position.x); uv_hscroll->set_max(rect.position.x + rect.size.x); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 7590751ecb..46b2e8a5f8 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -79,7 +79,6 @@ void ConnectionInfoDialog::popup_connections(String p_method, Vector<Node *> p_n ConnectionInfoDialog::ConnectionInfoDialog() { set_title(TTR("Connections to method:")); - set_resizable(true); VBoxContainer *vbc = memnew(VBoxContainer); vbc->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 8 * EDSCALE); @@ -89,7 +88,6 @@ ConnectionInfoDialog::ConnectionInfoDialog() { add_child(vbc); method = memnew(Label); - method->set_text(""); method->set_align(Label::ALIGN_CENTER); vbc->add_child(method); diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 47f00dc480..5a733f6509 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -2473,7 +2473,7 @@ void SpatialEditorViewport::_draw() { real_t max_speed = camera->get_zfar(); real_t scale_length = (max_speed - min_speed); - if (Math::abs(scale_length) > CMP_EPSILON) { + if (!Math::is_zero_approx(scale_length)) { real_t logscale_t = 1.0 - Math::log(1 + freelook_speed - min_speed) / Math::log(1 + scale_length); // There is no real maximum speed so that factor can become negative, @@ -2491,7 +2491,7 @@ void SpatialEditorViewport::_draw() { real_t max_distance = camera->get_zfar(); real_t scale_length = (max_distance - min_distance); - if (Math::abs(scale_length) > CMP_EPSILON) { + if (!Math::is_zero_approx(scale_length)) { real_t logscale_t = 1.0 - Math::log(1 + cursor.distance - min_distance) / Math::log(1 + scale_length); // There is no real maximum distance so that factor can become negative, @@ -4515,6 +4515,7 @@ void SpatialEditor::_menu_item_pressed(int p_option) { snap_selected_nodes_to_floor(); } break; case MENU_LOCK_SELECTED: { + undo_redo->create_action(TTR("Lock Selected")); List<Node *> &selection = editor_selection->get_selected_node_list(); @@ -4527,13 +4528,18 @@ void SpatialEditor::_menu_item_pressed(int p_option) { if (spatial->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - spatial->set_meta("_edit_lock_", true); - emit_signal("item_lock_status_changed"); + undo_redo->add_do_method(spatial, "set_meta", "_edit_lock_", true); + undo_redo->add_undo_method(spatial, "remove_meta", "_edit_lock_"); + undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - _refresh_menu_icons(); + undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->commit_action(); } break; case MENU_UNLOCK_SELECTED: { + undo_redo->create_action(TTR("Unlock Selected")); List<Node *> &selection = editor_selection->get_selected_node_list(); @@ -4546,13 +4552,18 @@ void SpatialEditor::_menu_item_pressed(int p_option) { if (spatial->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - spatial->set_meta("_edit_lock_", Variant()); - emit_signal("item_lock_status_changed"); + undo_redo->add_do_method(spatial, "remove_meta", "_edit_lock_"); + undo_redo->add_undo_method(spatial, "set_meta", "_edit_lock_", true); + undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed"); } - _refresh_menu_icons(); + undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->commit_action(); } break; case MENU_GROUP_SELECTED: { + undo_redo->create_action(TTR("Group Selected")); List<Node *> &selection = editor_selection->get_selected_node_list(); @@ -4565,14 +4576,18 @@ void SpatialEditor::_menu_item_pressed(int p_option) { if (spatial->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - spatial->set_meta("_edit_group_", true); - emit_signal("item_group_status_changed"); + undo_redo->add_do_method(spatial, "set_meta", "_edit_group_", true); + undo_redo->add_undo_method(spatial, "remove_meta", "_edit_group_"); + undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - _refresh_menu_icons(); + undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->commit_action(); } break; case MENU_UNGROUP_SELECTED: { - + undo_redo->create_action(TTR("Ungroup Selected")); List<Node *> &selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -4584,11 +4599,15 @@ void SpatialEditor::_menu_item_pressed(int p_option) { if (spatial->get_viewport() != EditorNode::get_singleton()->get_scene_root()) continue; - spatial->set_meta("_edit_group_", Variant()); - emit_signal("item_group_status_changed"); + undo_redo->add_do_method(spatial, "remove_meta", "_edit_group_"); + undo_redo->add_undo_method(spatial, "set_meta", "_edit_group_", true); + undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed"); + undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed"); } - _refresh_menu_icons(); + undo_redo->add_do_method(this, "_refresh_menu_icons", Variant()); + undo_redo->add_undo_method(this, "_refresh_menu_icons", Variant()); + undo_redo->commit_action(); } break; } } diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index f741040fa8..4e15bd5116 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -135,8 +135,7 @@ void TextureRegionEditor::_region_draw() { Ref<Texture> select_handle = get_icon("EditorHandle", "EditorIcons"); - Rect2 scroll_rect(Point2(), mtx.basis_xform(base_tex->get_size())); - scroll_rect.expand_to(mtx.basis_xform(edit_draw->get_size())); + Rect2 scroll_rect; Vector2 endpoints[4] = { mtx.basis_xform(rect.position), @@ -167,7 +166,9 @@ void TextureRegionEditor::_region_draw() { scroll_rect.expand_to(endpoints[i]); } - scroll_rect = scroll_rect.grow(200); + scroll_rect.position -= edit_draw->get_size(); + scroll_rect.size += edit_draw->get_size() * 2.0; + updating_scroll = true; hscroll->set_min(scroll_rect.position.x); hscroll->set_max(scroll_rect.position.x + scroll_rect.size.x); diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index 0bbffc8a0b..80e2e99685 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -86,7 +86,7 @@ void ThemeEditor::_name_menu_about_to_show() { } name_menu->get_popup()->clear(); - + name_menu->get_popup()->set_size(Size2()); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { name_menu->get_popup()->add_item(E->get()); @@ -831,6 +831,7 @@ ThemeEditor::ThemeEditor() { type_edit->set_h_size_flags(SIZE_EXPAND_FILL); type_hbc->add_child(type_edit); type_menu = memnew(MenuButton); + type_menu->set_flat(false); type_menu->set_text(".."); type_hbc->add_child(type_menu); @@ -848,6 +849,7 @@ ThemeEditor::ThemeEditor() { name_edit->set_h_size_flags(SIZE_EXPAND_FILL); name_hbc->add_child(name_edit); name_menu = memnew(MenuButton); + type_menu->set_flat(false); name_menu->set_text(".."); name_hbc->add_child(name_menu); diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 467b83f4f8..abb52f8359 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -1934,13 +1934,13 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { toolbar->add_child(bucket_fill_button); picker_button = memnew(ToolButton); - picker_button->set_shortcut(ED_SHORTCUT("tile_map_editor/pîck_tile", TTR("Pick Tile"), KEY_CONTROL)); + picker_button->set_shortcut(ED_SHORTCUT("tile_map_editor/pick_tile", TTR("Pick Tile"), KEY_CONTROL)); picker_button->connect("pressed", this, "_button_tool_select", make_binds(TOOL_PICKING)); picker_button->set_toggle_mode(true); toolbar->add_child(picker_button); select_button = memnew(ToolButton); - select_button->set_shortcut(ED_SHORTCUT("tile_map_editor/pîck_tile", TTR("Select"), KEY_MASK_CMD + KEY_B)); + select_button->set_shortcut(ED_SHORTCUT("tile_map_editor/select", TTR("Select"), KEY_MASK_CMD + KEY_B)); select_button->connect("pressed", this, "_button_tool_select", make_binds(TOOL_SELECTING)); select_button->set_toggle_mode(true); toolbar->add_child(select_button); @@ -1949,6 +1949,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { // Container to the right of the toolbar toolbar_right = memnew(HBoxContainer); + toolbar_right->hide(); toolbar_right->set_h_size_flags(SIZE_EXPAND_FILL); toolbar_right->set_alignment(BoxContainer::ALIGN_END); CanvasItemEditor::get_singleton()->add_control_to_menu_panel(toolbar_right); @@ -2045,10 +2046,12 @@ void TileMapEditorPlugin::make_visible(bool p_visible) { tile_map_editor->show(); tile_map_editor->get_toolbar()->show(); + tile_map_editor->get_toolbar_right()->show(); } else { tile_map_editor->hide(); tile_map_editor->get_toolbar()->hide(); + tile_map_editor->get_toolbar_right()->hide(); tile_map_editor->edit(NULL); } } diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index 296e861949..3bc10861f0 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -214,6 +214,7 @@ protected: public: HBoxContainer *get_toolbar() const { return toolbar; } + HBoxContainer *get_toolbar_right() const { return toolbar_right; } bool forward_gui_input(const Ref<InputEvent> &p_event); void forward_canvas_draw_over_viewport(Control *p_overlay); diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index a732231e17..964303ba22 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -310,6 +310,21 @@ static Ref<StyleBoxEmpty> make_empty_stylebox(float p_margin_left = -1, float p_ return style; } +void VisualShaderEditor::_update_created_node(GraphNode *node) { + + if (EditorSettings::get_singleton()->get("interface/theme/use_graph_node_headers")) { + Ref<StyleBoxFlat> sb = node->get_stylebox("frame", "GraphNode"); + Color c = sb->get_border_color(); + Color mono_color = ((c.r + c.g + c.b) / 3) < 0.7 ? Color(1.0, 1.0, 1.0) : Color(0.0, 0.0, 0.0); + mono_color.a = 0.85; + c = mono_color; + + node->add_color_override("title_color", c); + c.a = 0.7; + node->add_color_override("close_color", c); + } +} + void VisualShaderEditor::_update_graph() { if (updating) @@ -374,6 +389,7 @@ void VisualShaderEditor::_update_graph() { Ref<VisualShaderNodeUniform> uniform = vsnode; if (uniform.is_valid()) { graph->add_child(node); + _update_created_node(node); LineEdit *uniform_name = memnew(LineEdit); uniform_name->set_text(uniform->get_uniform_name()); @@ -510,18 +526,6 @@ void VisualShaderEditor::_update_graph() { node->add_child(hb); node->set_slot(i + port_offset, valid_left, port_left, type_color[port_left], valid_right, port_right, type_color[port_right]); - - if (EditorSettings::get_singleton()->get("interface/theme/use_graph_node_headers")) { - Ref<StyleBoxFlat> sb = node->get_stylebox("frame", "GraphNode"); - Color c = sb->get_border_color(); - Color mono_color = ((c.r + c.g + c.b) / 3) < 0.7 ? Color(1.0, 1.0, 1.0) : Color(0.0, 0.0, 0.0); - mono_color.a = 0.85; - c = mono_color; - - node->add_color_override("title_color", c); - c.a = 0.7; - node->add_color_override("close_color", c); - } } if (vsnode->get_output_port_for_preview() >= 0 && vsnode->get_output_port_type(vsnode->get_output_port_for_preview()) != VisualShaderNode::PORT_TYPE_TRANSFORM) { @@ -541,6 +545,7 @@ void VisualShaderEditor::_update_graph() { if (!uniform.is_valid()) { graph->add_child(node); + _update_created_node(node); } } diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index a00f020ebd..35041da2bd 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -179,6 +179,7 @@ class VisualShaderEditor : public VBoxContainer { void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from); bool _is_available(int p_flags); + void _update_created_node(GraphNode *node); protected: void _notification(int p_what); diff --git a/editor/progress_dialog.cpp b/editor/progress_dialog.cpp index 5fdc725f50..8dac5fa6b5 100644 --- a/editor/progress_dialog.cpp +++ b/editor/progress_dialog.cpp @@ -161,6 +161,7 @@ void ProgressDialog::_popup() { main->set_margin(MARGIN_TOP, style->get_margin(MARGIN_TOP)); main->set_margin(MARGIN_BOTTOM, -style->get_margin(MARGIN_BOTTOM)); + raise(); popup_centered(ms); } @@ -220,6 +221,7 @@ bool ProgressDialog::task_step(const String &p_task, const String &p_state, int if (cancel_hb->is_visible()) { OS::get_singleton()->force_process_input(); } + Main::iteration(); // this will not work on a lot of platforms, so it's only meant for the editor return cancelled; } diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 82a6a07805..b9cf7ec10a 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -631,6 +631,7 @@ void ProjectExportDialog::_delete_preset_confirm() { int idx = presets->get_current(); _edit_preset(-1); + export_button->set_disabled(true); EditorExport::get_singleton()->remove_export_preset(idx); _update_presets(); } @@ -931,7 +932,7 @@ void ProjectExportDialog::_export_project() { Ref<EditorExportPlatform> platform = current->get_platform(); ERR_FAIL_COND(platform.is_null()); - export_project->set_access(FileDialog::ACCESS_FILESYSTEM); + export_project->set_access(EditorFileDialog::ACCESS_FILESYSTEM); export_project->clear_filters(); List<String> extension_list = platform->get_binary_extensions(current); @@ -955,7 +956,7 @@ void ProjectExportDialog::_export_project() { export_project->get_line_edit()->connect("text_entered", export_project, "_file_entered"); } - export_project->set_mode(FileDialog::MODE_SAVE_FILE); + export_project->set_mode(EditorFileDialog::MODE_SAVE_FILE); export_project->popup_centered_ratio(); } @@ -1184,9 +1185,9 @@ ProjectExportDialog::ProjectExportDialog() { patches_hb->add_child(patch_export); patches_hb->add_spacer(); - patch_dialog = memnew(FileDialog); + patch_dialog = memnew(EditorFileDialog); patch_dialog->add_filter("*.pck ; Pack File"); - patch_dialog->set_mode(FileDialog::MODE_OPEN_FILE); + patch_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE); patch_dialog->connect("file_selected", this, "_patch_selected"); add_child(patch_dialog); @@ -1266,11 +1267,11 @@ ProjectExportDialog::ProjectExportDialog() { export_all_button->connect("pressed", this, "_export_all_dialog"); export_all_button->set_disabled(true); - export_pck_zip = memnew(FileDialog); + export_pck_zip = memnew(EditorFileDialog); export_pck_zip->add_filter("*.zip ; ZIP File"); export_pck_zip->add_filter("*.pck ; Godot Game Pack"); - export_pck_zip->set_access(FileDialog::ACCESS_FILESYSTEM); - export_pck_zip->set_mode(FileDialog::MODE_SAVE_FILE); + export_pck_zip->set_access(EditorFileDialog::ACCESS_FILESYSTEM); + export_pck_zip->set_mode(EditorFileDialog::MODE_SAVE_FILE); add_child(export_pck_zip); export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected"); @@ -1300,8 +1301,8 @@ ProjectExportDialog::ProjectExportDialog() { export_templates_error->add_child(download_templates); download_templates->connect("pressed", this, "_open_export_template_manager"); - export_project = memnew(FileDialog); - export_project->set_access(FileDialog::ACCESS_FILESYSTEM); + export_project = memnew(EditorFileDialog); + export_project->set_access(EditorFileDialog::ACCESS_FILESYSTEM); add_child(export_project); export_project->connect("file_selected", this, "_export_project_to_path"); export_project->get_line_edit()->connect("text_changed", this, "_validate_export_path"); diff --git a/editor/project_export.h b/editor/project_export.h index f8b6484477..476a30c9c0 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -90,7 +90,7 @@ private: Tree *patches; Button *patch_export; int patch_index; - FileDialog *patch_dialog; + EditorFileDialog *patch_dialog; ConfirmationDialog *patch_erase; Button *export_button; @@ -139,8 +139,8 @@ private: bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const; void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from); - FileDialog *export_pck_zip; - FileDialog *export_project; + EditorFileDialog *export_pck_zip; + EditorFileDialog *export_project; CheckBox *export_debug; CheckBox *export_pck_zip_debug; diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index 879d072b10..62845bfb9b 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -88,12 +88,18 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i } undo_redo->commit_action(); } else if (p_id == BUTTON_LOCK) { + undo_redo->create_action(TTR("Unlock Node")); if (n->is_class("CanvasItem") || n->is_class("Spatial")) { - n->set_meta("_edit_lock_", Variant()); - _update_tree(); - emit_signal("node_changed"); + + undo_redo->add_do_method(n, "remove_meta", "_edit_lock_"); + undo_redo->add_undo_method(n, "set_meta", "_edit_lock_", true); + undo_redo->add_do_method(this, "_update_tree", Variant()); + undo_redo->add_undo_method(this, "_update_tree", Variant()); + undo_redo->add_do_method(this, "emit_signal", "node_changed"); + undo_redo->add_undo_method(this, "emit_signal", "node_changed"); } + undo_redo->commit_action(); } else if (p_id == BUTTON_PIN) { if (n->is_class("AnimationPlayer")) { @@ -102,11 +108,18 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i } } else if (p_id == BUTTON_GROUP) { + undo_redo->create_action(TTR("Button Group")); + if (n->is_class("CanvasItem") || n->is_class("Spatial")) { - n->set_meta("_edit_group_", Variant()); - _update_tree(); - emit_signal("node_changed"); + + undo_redo->add_do_method(n, "remove_meta", "_edit_group_"); + undo_redo->add_undo_method(n, "set_meta", "_edit_group_", true); + undo_redo->add_do_method(this, "_update_tree", Variant()); + undo_redo->add_undo_method(this, "_update_tree", Variant()); + undo_redo->add_do_method(this, "emit_signal", "node_changed"); + undo_redo->add_undo_method(this, "emit_signal", "node_changed"); } + undo_redo->commit_action(); } else if (p_id == BUTTON_WARNING) { String config_err = n->get_configuration_warning(); diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index 717d6bc8f6..82117b9505 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -210,7 +210,6 @@ void ScriptEditorDebugger::debug_next() { msg.push_back("next"); ppeer->put_var(msg); stack_dump->clear(); - inspector->edit(NULL); } void ScriptEditorDebugger::debug_step() { @@ -222,7 +221,6 @@ void ScriptEditorDebugger::debug_step() { msg.push_back("step"); ppeer->put_var(msg); stack_dump->clear(); - inspector->edit(NULL); } void ScriptEditorDebugger::debug_break() { @@ -436,7 +434,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da emit_signal("breaked", false, false, Variant()); profiler->set_enabled(true); profiler->disable_seeking(); - inspector->edit(NULL); EditorNode::get_singleton()->get_pause_button()->set_pressed(false); } else if (p_msg == "message:click_ctrl") { @@ -1337,7 +1334,7 @@ void ScriptEditorDebugger::stop() { profiler->set_enabled(true); inspect_scene_tree->clear(); - + inspector->edit(NULL); EditorNode::get_singleton()->get_pause_button()->set_pressed(false); EditorNode::get_singleton()->get_pause_button()->set_disabled(true); EditorNode::get_singleton()->get_scene_tree_dock()->hide_remote_tree(); diff --git a/editor/translations/af.po b/editor/translations/af.po index acc57bd967..795044c0cd 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -433,7 +433,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Tree (s):" #: editor/animation_track_editor.cpp @@ -441,6 +441,14 @@ msgstr "Tree (s):" msgid "Animation step value." msgstr "Animasie Zoem." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3814,6 +3822,11 @@ msgid "Delete Node" msgstr "Skrap" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Wissel Gunsteling" @@ -4791,8 +4804,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Anim Voeg Sleutel by" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Anim Voeg Sleutel by" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4864,6 +4902,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5214,52 +5298,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5782,7 +5829,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6614,6 +6661,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Skep Nuwe" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Skep Intekening" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Skep Intekening" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Skep Vouer" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6626,17 +6693,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Skep Nuwe" +msgid "Convert to Polygon2D" +msgstr "Hernoem AutoLaai" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Skep Intekening" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7234,6 +7322,11 @@ msgid "Duplicate Nodes" msgstr "Anim Dupliseer Sleutels" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Skrap" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8398,10 +8491,6 @@ msgid "Open documentation" msgstr "Opnoemings" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 6807717a59..50efabd7f5 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -17,7 +17,7 @@ # Rex_sa <asd1234567890m@gmail.com>, 2017, 2018, 2019. # Wajdi Feki <wajdi.feki@gmail.com>, 2017. # Omar Aglan <omar.aglan91@yahoo.com>, 2018, 2019. -# Codes Otaku <ilyas.gamerz@gmail.com>, 2018. +# Codes Otaku <ilyas.gamerz@gmail.com>, 2018, 2019. # Takai Eddine Kennouche <takai.kenn@gmail.com>, 2018. # Mohamed El-Baz <albaz2000eg@gmail.com>, 2018. # عاصم شكر - Aasem shokr <aasemshokr@gmail.com>, 2018. @@ -28,8 +28,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-24 17:38+0000\n" -"Last-Translator: spiderx0x <legendofdarks@gmail.com>\n" +"PO-Revision-Date: 2019-04-17 10:02+0000\n" +"Last-Translator: Omar Aglan <omar.aglan91@yahoo.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -53,7 +53,7 @@ msgstr "لا يوجد ما يكفي من البايتات من أجل فك ال� #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "مُدخل غير صالح \"i%\" (لم يتم تمريره) في السطر" +msgstr "إدخال خاطيء i% (لم يتم تمريره) في التصريح" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -363,11 +363,11 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "" +msgstr "مشغل الحركة لا يمكنه تحريك نفسه, فقط الاعبين الأخرين." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "لا يمكن إضافة مقطع جديد بدون جذر" #: editor/animation_track_editor.cpp #, fuzzy @@ -376,34 +376,31 @@ msgstr "إضافة مسار" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "مسار المقطع غير صالح, إذن لا يمكن إضافة مفتاح." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "المقطع ليس من نوع مكاني (Spatial), لا يمكن إضافة مفتاح." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "خط التحريك ثلاثي الأبعاد" +msgstr "أضف مفتاح مقطع المتحول (Transform)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track Key" -msgstr "إضافة مسار" +msgstr "أضف مفتاح المقطع" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "مسار المقطع غير صالح, إذن لا يمكن إضافة دالة المفتاح (Method key)." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "استدعاء أسلوب المسار" +msgstr "أضف مفتاح مقطع الدالة" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "" +msgstr "دالة لم توجد في شيئ: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -411,12 +408,11 @@ msgstr "مفتاح حركة التحريك" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" -msgstr "" +msgstr "ذاكرة التخزين المؤقت (Clipboard) فارغة" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Paste Tracks" -msgstr "لصق المُعامل" +msgstr "لصق المقاطع" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" @@ -425,25 +421,32 @@ msgstr "مفتاح تكبير حركة" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "" +msgstr "هذا الخيار لا يعمل لتعديل خط (Bezier), لأنه فقط مقطع واحد." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "فقط قم بتبين المقاطع من العقد (Nodes) المحددة في الشجرة." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "قم بتجميع المقاطع حسب العقد (Nodes) أو إظهارهم كقائمة بسيطة." #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "خطوة (ثانية):" +msgid "Snap:" +msgstr "خطوة أو خطوات: " #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation step value." -msgstr "شجرة الحركة صحيحة." +msgstr "قيمة خطوة الحركة." + +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -452,17 +455,15 @@ msgstr "شجرة الحركة صحيحة." #: editor/project_manager.cpp editor/project_settings_editor.cpp #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Edit" -msgstr "" +msgstr "تعديل" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "شجرة الحركة" +msgstr "خاصيات الحركة." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Copy Tracks" -msgstr "إنسخ المُعامل" +msgstr "إنسخ المقاطع" #: editor/animation_track_editor.cpp msgid "Scale Selection" @@ -481,17 +482,14 @@ msgid "Duplicate Transposed" msgstr "نسخ محمّل" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "نصف المُحدد" +msgstr "إحدف المحدد (المجموعة المختارة)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "إذهب إلي الخطوة التالية" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "إذهب إلي الخطوة السابقة" @@ -505,11 +503,12 @@ msgstr "تنظيف الحركة" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "" +msgstr "إختار العقدة التي سوف يتم تحريكها:" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Use Bezier Curves" -msgstr "" +msgstr "إستعمل خطوط أو منحنيات Bezier" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -557,7 +556,7 @@ msgstr "نسبة التكبير:" #: editor/animation_track_editor.cpp msgid "Select tracks to copy:" -msgstr "" +msgstr "حدد مقاطع لنسخ:" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -565,20 +564,19 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "" +msgstr "أنسخ" #: editor/animation_track_editor_plugins.cpp -#, fuzzy msgid "Add Audio Track Clip" -msgstr "مقاطع الصوت:" +msgstr "أضف مقطع صوت" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "تغيير موضع بداية مقطع صوت" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "تغيير موضع نهاية مقطع صوت" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -646,11 +644,11 @@ msgstr "إرجاع التكبير" #: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Warnings" -msgstr "" +msgstr "تحذيرات" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "" +msgstr "أرقام الخط و العمود." #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -734,7 +732,6 @@ msgid "Disconnect '%s' from '%s'" msgstr "قطع إتصال'%s' من '%s'" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect all from signal: '%s'" msgstr "قطع إتصال'%s' من '%s'" @@ -748,18 +745,16 @@ msgid "Disconnect" msgstr "قطع الاتصال" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect Signal: " -msgstr "يوصل الإشارة:" +msgstr "قم بوصل الإشارة: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection: " -msgstr "خطأ في الإتصال" +msgstr "قم بتعديل الإتصال: " #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "" +msgstr "هل أنت(ي) متأكد(ة) أنك تود إزالة كل الإتصالات من الإشارة \"%s\"؟" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -767,22 +762,19 @@ msgstr "إشارات" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "هل أنت(ي) متأكد(ة) أنك تود إزالة كل الإتصالات من هذه الإشارة؟" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect All" -msgstr "قطع الاتصال" +msgstr "قطع الاتصال على الكل" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." -msgstr "المُعدل" +msgstr "تعديل..." #: editor/connections_dialog.cpp -#, fuzzy msgid "Go To Method" -msgstr "قائمة الطرق" +msgstr "إذهب إلى الدالة" #: editor/create_dialog.cpp msgid "Change %s Type" @@ -915,7 +907,6 @@ msgid "Error loading:" msgstr "خطآ في التحميل:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" msgstr "فشل في تحميل المشهد بسبب وجود تبعيات مفقودة يعتمد المشهد عليها:" @@ -1068,9 +1059,8 @@ msgid "Uncompressing Assets" msgstr "يفكك الضغط عن الأصول" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" -msgstr "الحزمة تم تثبيتها بنجاح!" +msgstr "تم تتبيث الحزمة بنجاح!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -1216,9 +1206,8 @@ msgid "Add Bus" msgstr "أضف بيوس" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." -msgstr "إحفظ نسق بيوس الصوت كـ..." +msgstr "أضف مسار صوت (Audio Bus) جديد إلى هذا التصميم." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1387,7 +1376,7 @@ msgstr "تخزين الملف:" #: editor/editor_export.cpp msgid "No export template found at the expected path:" -msgstr "" +msgstr "لم يوجد قالب التصدير في المسار المتوقع:" #: editor/editor_export.cpp msgid "Packing" @@ -1398,12 +1387,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" +"المنصة المستهدفة تحتاج لتشفير ملمس 'ETC' ل GLES2. قم بتمكين 'Import Etc' في " +"إعدادات المشروع." #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"المنصة المستهدفة تحتاج لتشفير ملمس \"ETC2\" ل GLES3. قم بتمكين 'Import Etc " +"2' في إعدادات المشروع." #: editor/editor_export.cpp msgid "" @@ -3899,6 +3892,11 @@ msgid "Delete Node" msgstr "إنشاء عقدة" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "تمكين/إيقاف هذا المسار." @@ -4888,9 +4886,34 @@ msgid "Layout" msgstr "المخطط" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "أدخل مفاتيح" +msgid "Insert keys (based on mask)." +msgstr "أدخل مفتاح (مسارات موجودة بالفعل)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "أضف مفتاح الحركة" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4963,6 +4986,52 @@ msgstr "تعديل البولي (مسح النقطة)" msgid "Set Handle" msgstr "حدد المعامل" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "خطأ تحميل الصورة:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "لا بيكسل بشفافية > 128 في الصورة..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "حمل قناع الانبعاث" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "إمسح قناع الانبعاث" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "جسيمات" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "عدد النقاط المولدة:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "قناع الانبعاث" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "التقط من البيكسل" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "الوان الانبعاث" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5316,22 +5385,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "لا يمكن إنشاء سوى نقطة وحيدة داخل ParticlesMaterial معالج المواد" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "خطأ تحميل الصورة:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "لا بيكسل بشفافية > 128 في الصورة..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "حمل قناع الانبعاث" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "إمسح قناع الانبعاث" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5339,30 +5392,9 @@ msgstr "تحويل إلي %s" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "جسيمات" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "عدد النقاط المولدة:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "وقت التوليد (تانية):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "قناع الانبعاث" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "التقط من البيكسل" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "الوان الانبعاث" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "الوجوه لا تحتوي على منطقة!" @@ -5899,7 +5931,8 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " مرجع الصنف" #: editor/plugins/script_editor_plugin.cpp @@ -6740,6 +6773,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "إنشاء شبكة الخطوط العريضة" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "إنشاء بولي" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "إنشاء مُضلع التنقل" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "أنشئ شكل مُطبق" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "الميش فارغ!" @@ -6752,18 +6805,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "تحويل إلي %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "إنشاء شبكة الخطوط العريضة" +msgid "Convert to Polygon2D" +msgstr "تحويل إلي %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "إنشاء مُضلع التنقل" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "أنشئ شكل مُطبق" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7385,6 +7460,11 @@ msgid "Duplicate Nodes" msgstr "مفاتيح نسخ التحريك" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "إنشاء عقدة" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8563,10 +8643,6 @@ msgid "Open documentation" msgstr "فُتح مؤخراً" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10335,6 +10411,10 @@ msgstr "التعين للإنتظام." msgid "Varyings can only be assigned in vertex function." msgstr "يمكن تعيين المتغيرات فقط في الذروة ." +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "أدخل مفاتيح" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "نمذج المشهد(المشاهد) المحددة كطفل للعقدة المحددة." diff --git a/editor/translations/bg.po b/editor/translations/bg.po index a179f3b438..fb81a1793a 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -433,7 +433,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Стъпка (сек.):" #: editor/animation_track_editor.cpp @@ -441,6 +441,14 @@ msgstr "Стъпка (сек.):" msgid "Animation step value." msgstr "Изтриване на анимацията?" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3826,6 +3834,11 @@ msgid "Delete Node" msgstr "Избиране на всичко" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Покажи Любими" @@ -4811,7 +4824,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4883,6 +4920,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5234,52 +5317,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5798,7 +5844,7 @@ msgid "Save Theme As..." msgstr "Запази Темата Като..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6635,6 +6681,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Създайте нов/а %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6647,17 +6713,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Създайте нов/а %s" +msgid "Convert to Polygon2D" +msgstr "Преместване на Полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7274,6 +7361,11 @@ msgid "Duplicate Nodes" msgstr "Направи дупликат на Key(s)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Избиране на всичко" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8465,10 +8557,6 @@ msgid "Open documentation" msgstr "Отвори документацията на Godot онлайн" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 3634ca82d2..4b7dd76be6 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -451,14 +451,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "স্ন্যাপ (পিক্সেলসমূহ):" +msgid "Snap:" +msgstr "স্ন্যাপ" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "অ্যানিমেশনের তালিকাটি কার্যকর।" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "এফ পি এস" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -4062,6 +4070,11 @@ msgid "Delete Node" msgstr "নোড(সমূহ) অপসারণ করুন" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "নোড(সমূহ) অপসারণ করুন" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "বিক্ষেপ-হীন মোড" @@ -5086,9 +5099,34 @@ msgid "Layout" msgstr "লেআউট/নকশা সংরক্ষণ করুন" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "চাবিসমূহ সন্নিবেশ করুন" +msgid "Insert keys (based on mask)." +msgstr "চাবি সন্নিবেশ করুন (বিদ্যমান ট্র্যাক/পথসমূহ)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "অ্যানিমেশনে (Anim) চাবি যোগ করুন" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5161,6 +5199,56 @@ msgstr "Poly সম্পাদন করুন (বিন্দু অপসা msgid "Set Handle" msgstr "হ্যান্ডেল স্থাপন করুন" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "ছবি লোডে সমস্যা হয়েছে:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "স্বচ্ছতাসহ কোনো পিক্সেল নেই > ছবিতে ১২৮..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Emission Mask লোড করুন" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Emission Mask পরিস্কার করুন" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +#, fuzzy +msgid "Particles" +msgstr "ভারটেক্স" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "উৎপাদিত বিন্দুর সংখ্যা:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Emission Mask" +msgstr "Emission Mask স্থাপন করুন" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Capture from Pixel" +msgstr "দৃশ্য হতে তৈরি করবেন" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Emission Colors" +msgstr "Emission-এর স্থানসমূহ:" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5528,22 +5616,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "শুধুমাত্র ParticlesMaterial প্রসেস ম্যাটেরিয়ালে বিন্দু স্থাপন সম্ভব" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "ছবি লোডে সমস্যা হয়েছে:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "স্বচ্ছতাসহ কোনো পিক্সেল নেই > ছবিতে ১২৮..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Emission Mask লোড করুন" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Emission Mask পরিস্কার করুন" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5552,34 +5624,9 @@ msgstr "এতে রূপান্তর করুন..." #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy -msgid "Particles" -msgstr "ভারটেক্স" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "উৎপাদিত বিন্দুর সংখ্যা:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Generation Time (sec):" msgstr "গড় সময় (সেঃ)" -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Emission Mask" -msgstr "Emission Mask স্থাপন করুন" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Capture from Pixel" -msgstr "দৃশ্য হতে তৈরি করবেন" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Emission Colors" -msgstr "Emission-এর স্থানসমূহ:" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "পৃষ্ঠসমূহ কোনো আকার নেই!" @@ -6134,7 +6181,8 @@ msgid "Save Theme As..." msgstr "থিম এইরূপে সংরক্ষণ করুন..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " ক্লাস রেফারেন্স" #: editor/plugins/script_editor_plugin.cpp @@ -7014,6 +7062,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "প্রান্তরেখা মেস তৈরি করুন" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Poly তৈরি করুন" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Navigation Polygon তৈরি করুন" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "অকলুডার (occluder) পলিগন তৈরি করুন" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "সংরক্ষণের পথটি খালি!" @@ -7026,19 +7094,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "ফ্রেমসমূহ স্তূপ করুন" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "এতে রূপান্তর করুন..." #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "প্রান্তরেখা মেস তৈরি করুন" +msgid "Convert to Polygon2D" +msgstr "পলিগন সরান" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Navigation Polygon তৈরি করুন" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "অকলুডার (occluder) পলিগন তৈরি করুন" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7674,6 +7764,11 @@ msgid "Duplicate Nodes" msgstr "নোড(সমূহ) প্রতিলিপি করুন" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "নোড(সমূহ) অপসারণ করুন" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8932,10 +9027,6 @@ msgid "Open documentation" msgstr "রেফারেন্সের ডকুমেন্টেশনে খুঁজুন।" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "নোড(সমূহ) অপসারণ করুন" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "শীষ্য নোড তৈরি করুন" @@ -10861,12 +10952,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "স্ন্যাপ (পিক্সেলসমূহ):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "চাবিসমূহ সন্নিবেশ করুন" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "নির্বাচিত দৃশ্য(সমূহ)-কে নির্বাচিত নোডের অংশ হিসেবে ইনস্ট্যান্স করুন।" -#~ msgid "FPS" -#~ msgstr "এফ পি এস" - #, fuzzy #~ msgid "Warnings:" #~ msgstr "সতর্কতা" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 75f6c53145..cd87bb8a46 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-04-08 10:35+0000\n" +"PO-Revision-Date: 2019-04-19 16:33+0000\n" "Last-Translator: roger <616steam@gmail.com>\n" "Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/" "godot/ca/>\n" @@ -234,7 +234,7 @@ msgstr "Captura" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "El de més a prop" +msgstr "Més proper" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -429,13 +429,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Agrupa les pistes per node o mostra-les en una llista." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Pas (s): " +#, fuzzy +msgid "Snap:" +msgstr "Alinea" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valor del pas d'Animació." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3836,9 +3845,8 @@ msgstr "Nodes Connectats" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Nodes Disconnected" -msgstr "Desconnectat" +msgstr "Nodes Desconnectats" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy @@ -3847,8 +3855,12 @@ msgstr "Animació" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Node" +msgstr "Eliminar Node" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" msgstr "Elimina els Nodes" #: editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -3857,9 +3869,8 @@ msgid "Toggle Filter On/Off" msgstr "Activa/Desactiva la Pista." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Change Filter" -msgstr "S'ha Modificat el Filtre de Locale" +msgstr "Canviar Filtre" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." @@ -4859,9 +4870,34 @@ msgid "Layout" msgstr "Desar Disseny" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Insereix Claus" +msgid "Insert keys (based on mask)." +msgstr "Insereix una Clau (Pistes existents)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Insereix una Clau" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4933,6 +4969,52 @@ msgstr "Edita el Polígon (Elimina un Punt)" msgid "Set Handle" msgstr "Estableix la Nansa" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Error en carregar la imatge:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Cap píxel amb transparència > 128 en la imatge..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Carrega una Màscara d'Emissió" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Esborra la Màscara d'Emissió" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partícules" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Recompte de punts generats:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Màscara d'Emissió" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Captura des d'un Píxel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Colors d'Emissió" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5285,22 +5367,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Només es poden establir punts en materials de procés ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Error en carregar la imatge:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Cap píxel amb transparència > 128 en la imatge..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Carrega una Màscara d'Emissió" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Esborra la Màscara d'Emissió" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5308,30 +5374,9 @@ msgstr "Converteix en majúscules" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partícules" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Recompte de punts generats:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Temps de generació (s):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Màscara d'Emissió" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Captura des d'un Píxel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Colors d'Emissió" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Les Cares no tenen àrea!" @@ -5866,7 +5911,8 @@ msgid "Save Theme As..." msgstr "Desa el Tema com a..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Referència de Classe" #: editor/plugins/script_editor_plugin.cpp @@ -6715,6 +6761,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Crea la Malla de Contorn" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Crear Polígon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Crea un Polígon de Navegació" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Crea un Polígon Oclusor" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "El camí per desar és buit!" @@ -6727,19 +6793,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "SpriteFrames" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Converteix a %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Crea la Malla de Contorn" +msgid "Convert to Polygon2D" +msgstr "Mou el Polígon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Crea un Polígon de Navegació" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Crea un Polígon Oclusor" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7354,6 +7442,11 @@ msgid "Duplicate Nodes" msgstr "Duplica els Nodes" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Eliminar Node" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8573,10 +8666,6 @@ msgid "Open documentation" msgstr "Obre la Documentació en línia" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Elimina els Nodes" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Afegeix un Node Fill" @@ -10466,13 +10555,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Snap (s): " +#~ msgstr "Pas (s): " + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Insereix Claus" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instancia les escenes seleccionades com a filles del node seleccionat." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Avisos:" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 49075fe390..63d5bea503 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -426,13 +426,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Seskupit stopy podle uzlu nebo je zobrazit jako jednoduchý seznam." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Přichycení (s): " +#, fuzzy +msgid "Snap:" +msgstr "Přichytit" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Hodnota animačního kroku." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3794,6 +3803,11 @@ msgid "Delete Node" msgstr "Smazat uzel" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Odstranit uzel/uzly" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Aktivovat/Deaktivovat tuto stopu." @@ -4752,8 +4766,34 @@ msgid "Layout" msgstr "Rozložení" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Vložit klíče." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Vložit klíč (existující stopy)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Animace: vložit klíč" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4823,6 +4863,52 @@ msgstr "Upravit polygon (Odstranit bod)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Chyba při nahrávání obrázku:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Žádný pixel s průhledností > 128 v obrázku..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Načíst emisní masku" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Vyčistit emisní masku" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Částice" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Počet vygenerovaných bodů:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Emisní maska" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5178,52 +5264,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Chyba při nahrávání obrázku:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Žádný pixel s průhledností > 128 v obrázku..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Načíst emisní masku" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Vyčistit emisní masku" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Převést na CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Částice" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Počet vygenerovaných bodů:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Čas generování (sec):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Emisní maska" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5735,7 +5784,8 @@ msgid "Save Theme As..." msgstr "Uložit motiv jako..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Reference třídy" #: editor/plugins/script_editor_plugin.cpp @@ -6567,6 +6617,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Vytvořit 2D mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Vytvořit Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Vytvořit navigační polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Vytvořit Occluder Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite je prázdný!" @@ -6579,16 +6649,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Konvertovat na 2D mesh" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Vytvořit 2D mesh" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Přesunout polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Vytvořit navigační polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Vytvořit Occluder Polygon" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7188,6 +7282,11 @@ msgid "Duplicate Nodes" msgstr "Duplikovat uzel/uzly" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Smazat uzel" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8360,10 +8459,6 @@ msgid "Open documentation" msgstr "Otevřít dokumentaci" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Odstranit uzel/uzly" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Přidat podřízený uzel" @@ -10205,8 +10300,11 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" -#~ msgid "FPS" -#~ msgstr "FPS" +#~ msgid "Snap (s): " +#~ msgstr "Přichycení (s): " + +#~ msgid "Insert keys." +#~ msgstr "Vložit klíče." #~ msgid "Warnings:" #~ msgstr "Varování:" diff --git a/editor/translations/da.po b/editor/translations/da.po index 5096ed924a..ee8b415fe3 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -434,13 +434,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Grupper spor efter node eller vis dem som almindelig liste." #: editor/animation_track_editor.cpp -msgid "Snap (s): " +#, fuzzy +msgid "Snap:" msgstr "Trin: " #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animation trin værdi." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3865,6 +3874,11 @@ msgid "Delete Node" msgstr "Vælg Node" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Slå spor til/fra." @@ -4850,8 +4864,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Anim Indsæt Nøgle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Anim Indsæt Nøgle" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4924,6 +4963,52 @@ msgstr "Rediger Poly (Fjern Punkt)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5277,22 +5362,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5300,30 +5369,9 @@ msgstr "Konverter Til %s" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5856,7 +5904,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6698,6 +6746,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Opret Ny %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Opret Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Opret Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Opret Mappe" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6710,18 +6778,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Konverter Til %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Opret Ny %s" +msgid "Convert to Polygon2D" +msgstr "Konverter Til %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Opret Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7333,6 +7422,11 @@ msgid "Duplicate Nodes" msgstr "Dublikér nøgle(r)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Vælg Node" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8523,10 +8617,6 @@ msgid "Open documentation" msgstr "Åben Seneste" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/de.po b/editor/translations/de.po index adae79c0e7..a9f174e98e 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -452,13 +452,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Spuren nach Node gruppieren oder nacheinander anzeigen." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Einrasten (s): " +#, fuzzy +msgid "Snap:" +msgstr "Einrasten" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animationsschrittwert." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3863,6 +3872,11 @@ msgid "Delete Node" msgstr "Node löschen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Node(s) löschen" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Filter ein-/ausschalten" @@ -4841,8 +4855,34 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Schlüsselbilder einfügen." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Schlüsselbilder einfügen (Einfg)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Schlüsselbild einfügen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4914,6 +4954,52 @@ msgstr "Polygon bearbeiten (Punkt entfernen)" msgid "Set Handle" msgstr "Wähle Griff" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Fehler beim Laden des Bilds:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Keine Pixel mit einer Transparenz > 128 im Bild..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Emissionsmaske laden" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Emissionsmaske leeren" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partikel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Anzahl generierter Punkte:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Emissionsmaske" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Von Pixel aufnehmen" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Emissionsfarben" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPU-Partikel" @@ -5268,52 +5354,15 @@ msgstr "" "werden" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Fehler beim Laden des Bilds:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Keine Pixel mit einer Transparenz > 128 im Bild..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Emissionsmaske laden" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Emissionsmaske leeren" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Zu CPU-Partikeln konvertieren" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partikel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Anzahl generierter Punkte:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Erzeugungszeit (s):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Emissionsmaske" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Von Pixel aufnehmen" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Emissionsfarben" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Flächen enthalten keinen Bereich!" @@ -5825,7 +5874,8 @@ msgid "Save Theme As..." msgstr "Motiv speichern als..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Klassenreferenz" #: editor/plugins/script_editor_plugin.cpp @@ -6653,6 +6703,26 @@ msgid "Nameless gizmo" msgstr "Namenloser Anfasser" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "2D-Mesh erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Polygon3D erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Kollisionspolygon erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Occluder-Polygon erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite ist leer!" @@ -6667,16 +6737,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Ungültige Geometrie, Mesh kann nicht ersetzt werden." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Ungültige Geometrie, Mesh kann nicht ersetzt werden." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Ungültige Geometrie, Mesh kann nicht ersetzt werden." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Ungültige Geometrie, Mesh kann nicht ersetzt werden." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Zu 2D-Mesh umwandeln" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "2D-Mesh erzeugen" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Polygon verschieben" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Kollisionspolygon erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Occluder-Polygon erzeugen" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7264,6 +7361,11 @@ msgid "Duplicate Nodes" msgstr "Nodes duplizieren" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Node löschen" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Visual-Shader-Eingabetyp geändert" @@ -8486,10 +8588,6 @@ msgid "Open documentation" msgstr "Dokumentation öffnen" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Node(s) löschen" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Node hier anhängen" @@ -10390,13 +10488,16 @@ msgstr "Zuweisung an Uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." +#~ msgid "Snap (s): " +#~ msgstr "Einrasten (s): " + +#~ msgid "Insert keys." +#~ msgstr "Schlüsselbilder einfügen." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instantiiere gewählte Szene(n) als Unterobjekt des ausgewählten Nodes." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Warnungen:" @@ -11929,9 +12030,6 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." #~ msgid "Cannot go into subdir:" #~ msgstr "Unterordner kann nicht geöffnet werden:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Schlüsselbilder einfügen (Einfg)" - #~ msgid "Enable/Disable interpolation when looping animation." #~ msgstr "Aktivieren/Deaktivieren Interpolation, wenn Schleife aktiviert." diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po index 55e457c169..cf2e88000d 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -430,7 +430,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Selektiere Node(s) zum Importieren aus" #: editor/animation_track_editor.cpp @@ -438,6 +438,14 @@ msgstr "Selektiere Node(s) zum Importieren aus" msgid "Animation step value." msgstr "Animations-Node" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3805,6 +3813,11 @@ msgid "Delete Node" msgstr "Node(s) löschen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Node(s) löschen" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4795,9 +4808,34 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Bild einfügen" +msgid "Insert keys (based on mask)." +msgstr "Bilder (innerhalb) einfügen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim Bild einfügen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4869,6 +4907,55 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Emissions-Maske laden" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Clear Emission Mask" +msgstr "Inhalt der Emissions-Masken löschen" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Emission Mask" +msgstr "Emissions-Maske setzen" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Emission Colors" +msgstr "Emissions-Maske setzen" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5225,23 +5312,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Emissions-Maske laden" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Clear Emission Mask" -msgstr "Inhalt der Emissions-Masken löschen" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5249,32 +5319,9 @@ msgstr "Verbindung zu Node:" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Emission Mask" -msgstr "Emissions-Maske setzen" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Emission Colors" -msgstr "Emissions-Maske setzen" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Flächen enthalten keinen Bereich!" @@ -5803,7 +5850,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6636,6 +6683,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6648,20 +6715,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "Verbindung zu Node:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Convert to Polygon2D" msgstr "Verbindung zu Node:" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" +msgid "Create CollisionPolygon2D Sibling" msgstr "Node erstellen" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "" @@ -7270,6 +7358,11 @@ msgid "Duplicate Nodes" msgstr "Node(s) duplizieren" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Node(s) löschen" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8461,10 +8554,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Node(s) löschen" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10270,6 +10359,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Bild einfügen" + +#, fuzzy #~ msgid "OrientedPathFollow only works when set as a child of a Path node." #~ msgstr "" #~ "PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D " @@ -10431,6 +10524,3 @@ msgstr "" #~ msgid "Export all files in the project directory." #~ msgstr "Exportiere alle Dateien in das Projektverzeichnis." - -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Bilder (innerhalb) einfügen" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 5f92cabbee..f9408cfbbc 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -399,13 +399,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3659,6 +3667,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4610,7 +4623,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4681,6 +4718,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5031,52 +5114,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5580,7 +5626,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6398,6 +6444,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6410,15 +6472,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6989,6 +7071,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8138,10 +8224,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index ab99259302..b6cf0f79dc 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -430,13 +430,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Ομαδοποίηση κομματιών ανα κόμβο, ή εμφάνιση σε λίστα." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Κούμπωμα (s): " +#, fuzzy +msgid "Snap:" +msgstr "Κούμπωμα" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Τιμή βήματος κίνησης." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3897,6 +3906,11 @@ msgid "Delete Node" msgstr "Διαγραφή Κόμβων" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Διαγραφή Κόμβων" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Εναλλαγή κομματιού on/off." @@ -4885,8 +4899,34 @@ msgid "Layout" msgstr "Διάταξη" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Εισαγωγή κλειδιών." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Εισαγωγή κλειδιού (Υπαρκτά κομμάτια)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim εισαγωγή κλειδιού" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4959,6 +4999,52 @@ msgstr "Επεγεργασία πολυγώνου (Αφαίρεση σημείο msgid "Set Handle" msgstr "Ορισμός λαβής" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Σφάλμα κατά την φόρτωση εικόνας:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Δεν υπάρχουν εικονοστοιχεία με διαφάνεια >128 στην εικόνα..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Φόρτωση μάσκας εκπομπής" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Εκκαθάριση μάσκας εκπομπής" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Σωματίδια" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Αριθμός δημιουργημένων σημείων:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Μάσκα εκπομπής" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Καταγραφή από εικονοστοιχείο" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Χρώματα εκπομπής" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "Σωματίδια CPU" @@ -5314,52 +5400,15 @@ msgstr "" "ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Σφάλμα κατά την φόρτωση εικόνας:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Δεν υπάρχουν εικονοστοιχεία με διαφάνεια >128 στην εικόνα..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Φόρτωση μάσκας εκπομπής" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Εκκαθάριση μάσκας εκπομπής" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Μετατροπή σε σωματίδια CPU" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Σωματίδια" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Αριθμός δημιουργημένων σημείων:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Χρόνος παραγωγής (sec):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Μάσκα εκπομπής" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Καταγραφή από εικονοστοιχείο" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Χρώματα εκπομπής" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Οι επιφάνειες έχουν μηδενικό εμβαδόν!" @@ -5897,7 +5946,8 @@ msgid "Save Theme As..." msgstr "Αποθήκευση θέματος ως..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Αναφορά κλασεων" #: editor/plugins/script_editor_plugin.cpp @@ -6750,6 +6800,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Δημιουργία πλέγματος περιγράμματος" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Δημιουγία πολυγώνου" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Δημιουργία πολυγώνου πλοήγησης" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Δημιουργία πολυγώνου εμποδίου" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Η διαδρομή αποθήκευσης είναι άδεια!" @@ -6762,19 +6832,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "Kαρέ Sprite" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Μετατροπή σε %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Δημιουργία πλέγματος περιγράμματος" +msgid "Convert to Polygon2D" +msgstr "Μετακίνηση πολυγώνου" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Δημιουργία πολυγώνου πλοήγησης" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Δημιουργία πολυγώνου εμποδίου" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7402,6 +7494,11 @@ msgid "Duplicate Nodes" msgstr "Διπλασιασμός κόμβων" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Διαγραφή Κόμβων" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8635,10 +8732,6 @@ msgid "Open documentation" msgstr "Άνοιγμα ηλεκτρονικής τεκμηρίωσης της Godot" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Διαγραφή Κόμβων" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Προσθήκη κόμβου ως παιδί" @@ -10536,14 +10629,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Snap (s): " +#~ msgstr "Κούμπωμα (s): " + +#~ msgid "Insert keys." +#~ msgstr "Εισαγωγή κλειδιών." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Δημιουργία στιγμιοτύπων των επιλεγμένων σκηνών ως παιδιά του επιλεγμένου " #~ "κόμβου." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Προειδοποιήσεις:" diff --git a/editor/translations/es.po b/editor/translations/es.po index 22907ff2ea..f66b06cccd 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -42,8 +42,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-04-05 13:04+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2019-04-19 16:33+0000\n" +"Last-Translator: eon-s <emanuel.segretin@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -453,13 +453,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Agrupar las pistas por nodo o mostrarlas como una lista plana." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Snap (s): " +#, fuzzy +msgid "Snap:" +msgstr "Snap" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valor de step de animación." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -2513,7 +2522,7 @@ msgstr "Documentación en línea" #: editor/editor_node.cpp msgid "Q&A" -msgstr "P&R" +msgstr "Preguntas y respuestas" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -3861,6 +3870,11 @@ msgid "Delete Node" msgstr "Eliminar Nodo" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Eliminar nodo(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Act./Desact. Filtro On/Off" @@ -4841,8 +4855,34 @@ msgid "Layout" msgstr "Disposición" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Insertar claves." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Insertar Claves (Ins)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Insertar clave de animación" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4914,6 +4954,52 @@ msgstr "Editar polígono (quitar punto)" msgid "Set Handle" msgstr "Establecer handle" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Error al cargar la imagen:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "No hay píxeles con transparencia > 128 en la imagen..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Cargar máscara de emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Borrar máscara de emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partículas" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Conteo de puntos generados:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Máscara de Emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturar desde píxel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Colores de Emisión" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5271,52 +5357,15 @@ msgstr "" "Solo se puede asignar un punto a un material de procesado ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Error al cargar la imagen:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "No hay píxeles con transparencia > 128 en la imagen..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Cargar máscara de emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Borrar máscara de emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Convertir a CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partículas" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Conteo de puntos generados:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Tiempo de generación (seg):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Máscara de Emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturar desde píxel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Colores de Emisión" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "¡Las caras no contienen área!" @@ -5828,7 +5877,8 @@ msgid "Save Theme As..." msgstr "Guardar tema como..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Referencia de clase" #: editor/plugins/script_editor_plugin.cpp @@ -6653,6 +6703,26 @@ msgid "Nameless gizmo" msgstr "Gizmo sin nombre" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Crear Mesh 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Crear Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Crear Polígono de Colisión" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Crear polígono oclusor" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "¡El sprite esta vacío!" @@ -6665,16 +6735,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Geometría inválida, no se puede reemplazar por mesh." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Convertir a Mesh 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Crear Mesh 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Mover polígono" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Crear Polígono de Colisión" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Crear polígono oclusor" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7260,6 +7357,11 @@ msgid "Duplicate Nodes" msgstr "Duplicar Nodos" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Eliminar Nodo" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Cambiar Tipo de Entrada del Visual Shader" @@ -8483,10 +8585,6 @@ msgid "Open documentation" msgstr "Abrir documentación" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Eliminar nodo(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Añadir nodo hijo" @@ -10385,13 +10483,16 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Snap (s): " +#~ msgstr "Snap (s): " + +#~ msgid "Insert keys." +#~ msgstr "Insertar claves." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Advertencias:" @@ -11964,9 +12065,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgid "Cannot go into subdir:" #~ msgstr "No se puede acceder al subdir:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Insertar Claves (Ins)" - #~ msgid "Top (Num7)" #~ msgstr "Cima (Num7)" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index da204947b0..e27603d799 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -423,13 +423,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Agrupar las pistas por nodo o mostrarlas como una lista plana." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Ajuste (s): " +#, fuzzy +msgid "Snap:" +msgstr "Esnapear" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valor de paso de animación." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3827,6 +3836,11 @@ msgid "Delete Node" msgstr "Eliminar Nodo" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Eliminar Nodo(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Act./Desact. Filtro On/Off" @@ -4806,8 +4820,34 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Insertar claves." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Insertar Claves (Ins)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Insertar Clave de Animación" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4879,6 +4919,52 @@ msgstr "Editar Polígono (Remover Punto)" msgid "Set Handle" msgstr "Setear Handle" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Error al cargar la imagen:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Sin pixeles con transparencia > 128 en imagen..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Cargar Máscara de Emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Limpiar Máscara de Emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partículas" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Conteo de Puntos Generados:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Máscara de Emisión" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturar desde Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Colores de Emisión" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5231,52 +5317,15 @@ msgstr "" "Solo se puede setear un punto en un material de proceso ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Error al cargar la imagen:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Sin pixeles con transparencia > 128 en imagen..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Cargar Máscara de Emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Limpiar Máscara de Emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Convertir A CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partículas" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Conteo de Puntos Generados:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Tiempo de Generación (seg):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Máscara de Emisión" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturar desde Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Colores de Emisión" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Las caras no contienen area!" @@ -5788,7 +5837,8 @@ msgid "Save Theme As..." msgstr "Guardar Tema Como..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Referencia de Clases" #: editor/plugins/script_editor_plugin.cpp @@ -6613,6 +6663,26 @@ msgid "Nameless gizmo" msgstr "Gizmo sin nombre" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Crear Mesh 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Crear Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Crear Polígono de Colisión" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Crear Polígono Oclusor" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "El sprite esta vacío!" @@ -6625,16 +6695,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Geometría inválida, no se puede reemplazar por mesh." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Geometría inválida, no se puede reemplazar por mesh." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Convertir A Mesh 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Crear Mesh 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Mover Polígono" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Crear Polígono de Colisión" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Crear Polígono Oclusor" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7219,6 +7316,11 @@ msgid "Duplicate Nodes" msgstr "Duplicar Nodos" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Eliminar Nodo" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Se cambió el Tipo de Entrada de Visual Shader" @@ -8444,10 +8546,6 @@ msgid "Open documentation" msgstr "Abrir documentación" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Eliminar Nodo(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Agregar Nodo Hijo" @@ -10337,13 +10435,16 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Snap (s): " +#~ msgstr "Ajuste (s): " + +#~ msgid "Insert keys." +#~ msgstr "Insertar claves." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Advertencias:" @@ -11892,9 +11993,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgid "Cannot go into subdir:" #~ msgstr "No se puede acceder al subdir:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Insertar Claves (Ins)" - #~ msgid "Top (Num7)" #~ msgstr "Cima (Num7)" diff --git a/editor/translations/et.po b/editor/translations/et.po index a58094bf47..455623f6aa 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -399,13 +399,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3659,6 +3667,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4610,7 +4623,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4681,6 +4718,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5031,52 +5114,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5580,7 +5626,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6398,6 +6444,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6410,15 +6472,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6989,6 +7071,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8138,10 +8224,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 6548423140..445b941a96 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -441,7 +441,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "گام(ها):" #: editor/animation_track_editor.cpp @@ -449,6 +449,14 @@ msgstr "گام(ها):" msgid "Animation step value." msgstr "گره انیمیشن" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3837,6 +3845,11 @@ msgid "Delete Node" msgstr "حذف گره(ها)" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "حذف گره(ها)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4826,8 +4839,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "کلید را در انیمیشن درج کن" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "کلید را در انیمیشن درج کن" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4900,6 +4938,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5254,22 +5338,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5277,30 +5345,9 @@ msgstr "اتصال به گره:" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5832,7 +5879,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6686,6 +6733,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "ساختن %s جدید" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "ساختن پوشه" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "مسیر خالی است" @@ -6698,18 +6765,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "اتصال به گره:" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "ساختن %s جدید" +msgid "Convert to Polygon2D" +msgstr "اتصال به گره:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7325,6 +7413,11 @@ msgid "Duplicate Nodes" msgstr "تکرار کلیدهای انیمیشن" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "حذف گره(ها)" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8527,10 +8620,6 @@ msgid "Open documentation" msgstr "شمارش ها" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "حذف گره(ها)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "افزودن گره فرزند" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 7924d22ba0..117aaa6561 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -416,13 +416,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Ryhmitä raidat solmujen mukaan tai näytä ne tavallisena luettelona." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Askellus (s): " +#, fuzzy +msgid "Snap:" +msgstr "Tartu" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animaation askelluksen arvo." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3801,6 +3810,11 @@ msgid "Delete Node" msgstr "Poista solmu" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Poista solmu(t)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Kytke suodin päälle/pois" @@ -4777,8 +4791,34 @@ msgid "Layout" msgstr "Asettelu" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Lisää avainruutuja." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Lisää avainruutu (olemassa olevat raidat)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Animaatio: Lisää avain" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4850,6 +4890,52 @@ msgstr "Muokkaa polygonia (poista piste)" msgid "Set Handle" msgstr "Aseta kahva" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Virhe ladattaessa kuvaa:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Kuvassa ei ole pikseleitä, joiden läpinäkyvyys on enemmän kuin 128…" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Lataa emissiomaski" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Tyhjennä emissiomaski" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partikkelit" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Luotujen pisteiden määrä:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Emission maski" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Nappaa pikselistä" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Emission väri" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUPartikkelit" @@ -5203,52 +5289,15 @@ msgstr "" "Piste voidaan asettaa ainoastaan ParticlesMaterial käsittelyn materiaaliin" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Virhe ladattaessa kuvaa:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Kuvassa ei ole pikseleitä, joiden läpinäkyvyys on enemmän kuin 128…" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Lataa emissiomaski" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Tyhjennä emissiomaski" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Muunna CPUPartikkeleiksi" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partikkelit" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Luotujen pisteiden määrä:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Luontiaika (s):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Emission maski" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Nappaa pikselistä" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Emission väri" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Pinnat eivät sisällä aluetta!" @@ -5759,7 +5808,8 @@ msgid "Save Theme As..." msgstr "Tallenna teema nimellä..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Luokan referenssi" #: editor/plugins/script_editor_plugin.cpp @@ -6584,6 +6634,26 @@ msgid "Nameless gizmo" msgstr "Nimetön muokkain" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Luo 2D-mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Luo Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Luo törmäyspolygoni" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Luo peittopolygoni" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite on tyhjä!" @@ -6596,16 +6666,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Virheellinen geometria, ei voida korvata meshillä." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Virheellinen geometria, ei voida korvata meshillä." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Virheellinen geometria, ei voida korvata meshillä." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Virheellinen geometria, ei voida korvata meshillä." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Muunna 2D-meshiksi" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Luo 2D-mesh" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Siirrä polygonia" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Luo törmäyspolygoni" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Luo peittopolygoni" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7190,6 +7287,11 @@ msgid "Duplicate Nodes" msgstr "Kahdenna solmut" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Poista solmu" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Visual Shaderin syötteen tyyppi vaihdettu" @@ -8406,10 +8508,6 @@ msgid "Open documentation" msgstr "Avaa dokumentaatio" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Poista solmu(t)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Lisää alisolmu" @@ -10279,12 +10377,15 @@ msgstr "Sijoitus uniformille." msgid "Varyings can only be assigned in vertex function." msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." +#~ msgid "Snap (s): " +#~ msgstr "Askellus (s): " + +#~ msgid "Insert keys." +#~ msgstr "Lisää avainruutuja." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Luo valituista skeneistä ilmentymä valitun solmun alle." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Varoitukset:" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 5160c5b3bc..aece9febdd 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -405,13 +405,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3665,6 +3673,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4616,7 +4629,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4687,6 +4724,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5037,52 +5120,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5586,7 +5632,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6404,6 +6450,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6416,15 +6478,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6995,6 +7077,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8144,10 +8230,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index a91f78a912..37175d7001 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -473,13 +473,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Grouper les pistes par nœuds ou les afficher dans une liste simple." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Pas (s) : " +#, fuzzy +msgid "Snap:" +msgstr "Aligner" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valeur du pas d'animation." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "IPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3893,6 +3902,11 @@ msgid "Delete Node" msgstr "Supprimer un nœud" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Supprimer nœud(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Activer/désactiver le filtre" @@ -4873,8 +4887,34 @@ msgid "Layout" msgstr "Disposition sur l'écran" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Insérer les clefs." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Insérer une clé (pistes existantes)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Insérer une clé d'animation" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4946,6 +4986,52 @@ msgstr "Modifier le polygone (supprimer un point)" msgid "Set Handle" msgstr "Définir la poignée" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Erreur de chargement d'image :" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Pas de pixels avec transparence > 128 dans l'image..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Charger Masque d'Émission" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Effacer Masque d'Émission" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Particules" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Compte de Points Générés :" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Masque d'émission" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturer depuis Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Couleurs d'émission" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5305,52 +5391,15 @@ msgstr "" "Ne peut définir qu'un point dans un matériau de processus ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Erreur de chargement d'image :" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Pas de pixels avec transparence > 128 dans l'image..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Charger Masque d'Émission" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Effacer Masque d'Émission" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Convertir en CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Particules" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Compte de Points Générés :" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Temps de Génération (sec) :" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Masque d'émission" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturer depuis Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Couleurs d'émission" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Des faces ne contiennent pas de zone !" @@ -5862,7 +5911,8 @@ msgid "Save Theme As..." msgstr "Enregistrer le thème sous…" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Référence de classe" #: editor/plugins/script_editor_plugin.cpp @@ -6690,6 +6740,26 @@ msgid "Nameless gizmo" msgstr "Gadget sans nom" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Créer un maillage 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Créer un Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Créer le polygone de collision" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Créer un polygone occulteur" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Le sprite est vide !" @@ -6704,16 +6774,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Géométrie invalide, impossible de remplacer par un maillage." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Géométrie invalide, impossible de remplacer par un maillage." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Géométrie invalide, impossible de remplacer par un maillage." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Géométrie invalide, impossible de remplacer par un maillage." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Convertir en maillage 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Créer un maillage 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Déplacer le polygone" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Créer le polygone de collision" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Créer un polygone occulteur" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7300,6 +7397,11 @@ msgid "Duplicate Nodes" msgstr "Dupliquer le(s) nœud(s)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Supprimer un nœud" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Type d’entrée Visual Shader changée" @@ -8523,10 +8625,6 @@ msgid "Open documentation" msgstr "Ouvrir la documentation" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Supprimer nœud(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Ajouter un nœud enfant" @@ -10437,14 +10535,17 @@ msgstr "Affectation à l'uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." +#~ msgid "Snap (s): " +#~ msgstr "Pas (s) : " + +#~ msgid "Insert keys." +#~ msgstr "Insérer les clefs." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instancie la(les) scène(s) sélectionnée(s) en tant qu'enfant(s) du nœud " #~ "sélectionné." -#~ msgid "FPS" -#~ msgstr "IPS" - #~ msgid "Warnings:" #~ msgstr "Avertissements :" diff --git a/editor/translations/he.po b/editor/translations/he.po index 1adcb6b56c..8ef45fd8d8 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -441,14 +441,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "צעד/ים:" +msgid "Snap:" +msgstr "הצמדה" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "שקופיות ההנפשה" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3823,6 +3831,11 @@ msgid "Delete Node" msgstr "מחיקת שורה" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "החלפת מצב מועדפים" @@ -4805,10 +4818,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "הכנס מפתח" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4877,6 +4915,52 @@ msgstr "עריכת מצולע (הסרת נקודה)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5229,22 +5313,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5252,30 +5320,9 @@ msgstr "המרה לאותיות גדולות" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5803,7 +5850,7 @@ msgid "Save Theme As..." msgstr "שמירת ערכת עיצוב בשם…" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6648,6 +6695,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "יצירת %s חדש" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "יצירת מצולע" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "יצירת מצולע" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "יצירת תיקייה" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6660,18 +6727,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "המרה לאותיות גדולות" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "יצירת %s חדש" +msgid "Convert to Polygon2D" +msgstr "הזזת מצולע" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "יצירת מצולע" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7280,6 +7368,11 @@ msgid "Duplicate Nodes" msgstr "שכפול" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "מחיקת שורה" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8465,10 +8558,6 @@ msgid "Open documentation" msgstr "פתיחת התיעוד המקוון של Godot" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10221,6 +10310,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "צעד/ים:" + +#, fuzzy #~ msgid "Warnings:" #~ msgstr "אזהרות" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 1758532805..f7bf57678d 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -424,13 +424,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3763,6 +3771,11 @@ msgid "Delete Node" msgstr "को हटा दें" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4724,10 +4737,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "चाबी यहां डालें" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4796,6 +4834,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5146,52 +5230,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5707,7 +5754,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6530,6 +6577,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "एक नया बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "सदस्यता बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "सदस्यता बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "एक नया बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6542,17 +6609,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "एक नया बनाएं" +msgid "Convert to Polygon2D" +msgstr "सदस्यता बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "सदस्यता बनाएं" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7143,6 +7231,11 @@ msgid "Duplicate Nodes" msgstr "प्रतिलिपि" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "को हटा दें" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8300,10 +8393,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 6cfdf720ba..a7501f9b14 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -404,13 +404,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3664,6 +3672,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4615,7 +4628,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4686,6 +4723,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5036,52 +5119,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5585,7 +5631,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6403,6 +6449,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6415,15 +6477,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6994,6 +7076,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8143,10 +8229,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 016e540184..2f1aa1b660 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -446,14 +446,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Lépés (mp):" +msgid "Snap:" +msgstr "Illesztés" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "Az animációs fa érvényes." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3935,6 +3943,11 @@ msgid "Delete Node" msgstr "Node létrehozás" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Zavarmentes mód váltása." @@ -4940,9 +4953,34 @@ msgid "Layout" msgstr "Elrendezés" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Kulcsok Beszúrása" +msgid "Insert keys (based on mask)." +msgstr "Kulcs Beszúrása (Meglévő Nyomvonalakra)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Animáció kulcs beillesztés" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5015,6 +5053,52 @@ msgstr "Sokszög Szerkesztése (Pont Eltávolítása)" msgid "Set Handle" msgstr "Fogantyú Beállítása" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Hiba a kép betöltésekor:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Nem létezik egyetlen pixel sem >128-as átlátszósággal a képben..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Kibocsátási Maszk Betöltése" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Kibocsátási Maszk Törlése" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Részecskék" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Generált Pontok Száma:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Kibocsátási Maszk" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Kinyerés Pixelből" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Kibocsátási Színek" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5369,22 +5453,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Csak egy ParticlesMaterial feldolgozó anyagba állíthat pontot" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Hiba a kép betöltésekor:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Nem létezik egyetlen pixel sem >128-as átlátszósággal a képben..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Kibocsátási Maszk Betöltése" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Kibocsátási Maszk Törlése" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5392,30 +5460,9 @@ msgstr "Konvertálás Nagybetűsre" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Részecskék" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Generált Pontok Száma:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Generálási Idő (mp):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Kibocsátási Maszk" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Kinyerés Pixelből" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Kibocsátási Színek" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Az oldalak nem tartalmaznak területet!" @@ -5953,7 +6000,8 @@ msgid "Save Theme As..." msgstr "Téma Mentése Másként..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Osztály Referencia" #: editor/plugins/script_editor_plugin.cpp @@ -6796,6 +6844,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Körvonalháló Készítése" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Navigációs Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Árnyékoló Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "A háló üres!" @@ -6808,18 +6876,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Konvertálás Nagybetűsre" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Körvonalháló Készítése" +msgid "Convert to Polygon2D" +msgstr "Sokszög Mozgatása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Navigációs Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Árnyékoló Sokszög Létrehozása" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7433,6 +7523,11 @@ msgid "Duplicate Nodes" msgstr "Animáció kulcsok megkettőzése" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Node létrehozás" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8612,10 +8707,6 @@ msgid "Open documentation" msgstr "Godot online dokumentáció megnyitása" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10385,6 +10476,14 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Lépés (mp):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Kulcsok Beszúrása" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Kiválasztott Scene(k) példányosítása a kiválasztott Node gyermekeként." diff --git a/editor/translations/id.po b/editor/translations/id.po index a277a3b3e2..876990c0c1 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -430,13 +430,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Susun Track-track dengan node atau tampilkan sebagai daftar biasa." #: editor/animation_track_editor.cpp -msgid "Snap (s): " +#, fuzzy +msgid "Snap:" msgstr "Snap (d): " #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Nilai Langkah Animasi." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3901,6 +3910,11 @@ msgid "Delete Node" msgstr "Metode Publik:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Alihkan track ini ke nyala/mati." @@ -4926,8 +4940,33 @@ msgid "Layout" msgstr "Simpan Penampilan" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Sisipkan Key Anim" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Sisipkan Key Anim" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5001,6 +5040,52 @@ msgstr "Sunting Bidang (Hapus Titik)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Galat saat memuat gambar:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partikel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5361,22 +5446,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Galat saat memuat gambar:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5384,30 +5453,9 @@ msgstr "Sambungkan Ke Node:" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partikel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5944,7 +5992,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6804,6 +6852,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Buat Baru %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Buat Bidang" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Buat Bidang" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Buat Folder" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6816,18 +6884,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Sambungkan Ke Node:" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Buat Baru %s" +msgid "Convert to Polygon2D" +msgstr "Sambungkan Ke Node:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Buat Bidang" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7448,6 +7537,11 @@ msgid "Duplicate Nodes" msgstr "Duplikat Key" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Metode Publik:" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8669,10 +8763,6 @@ msgid "Open documentation" msgstr "Buka baru-baru ini" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/is.po b/editor/translations/is.po index 644f19939b..cc911642be 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -426,13 +426,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3699,6 +3707,11 @@ msgid "Delete Node" msgstr "Anim DELETE-lyklar" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4656,7 +4669,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4727,6 +4764,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5077,52 +5160,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5629,7 +5675,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6447,6 +6493,24 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Afrita val" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Breyta Viðbót" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6459,15 +6523,36 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Breyta Viðbót" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7052,6 +7137,11 @@ msgid "Duplicate Nodes" msgstr "Tvíteknir lyklar" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Anim DELETE-lyklar" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8205,10 +8295,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 30c4d6a3b9..3dbfa81714 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -37,8 +37,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-30 20:04+0000\n" -"Last-Translator: Marco Melorio <m.melorio@icloud.com>\n" +"PO-Revision-Date: 2019-04-14 13:04+0000\n" +"Last-Translator: Marco Galli <mrcgll98@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -446,13 +446,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Raggruppa le tracce per nodo o mostra una lista semplice." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Snap (s): " +#, fuzzy +msgid "Snap:" +msgstr "Snap" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valore del passo dell'animazione." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3851,6 +3860,11 @@ msgid "Delete Node" msgstr "Elimina Nodo" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Elimina Nodo(i)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Attiva/Disattiva il Filtro" @@ -4831,8 +4845,34 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Inserisci chiavi." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Inserisci Keys (Ins)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Inserisci una chiave d'animazione" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4904,6 +4944,52 @@ msgstr "Modifica Poly (Rimuovi Punto)" msgid "Set Handle" msgstr "Imposta Maniglia" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Errore di caricamento immagine:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Nessun pixel con trasparenza >128 nell'immagine..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Carica Maschera Emissione" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Cancella Maschera Emissione" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Particelle" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Conteggio Punti Generati:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Maschera Emissione" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Cattura da Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Colori Emissione" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5259,52 +5345,15 @@ msgstr "" "ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Errore di caricamento immagine:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Nessun pixel con trasparenza >128 nell'immagine..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Carica Maschera Emissione" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Cancella Maschera Emissione" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Converti in CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Particelle" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Conteggio Punti Generati:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Tempo di Generazione (sec):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Maschera Emissione" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Cattura da Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Colori Emissione" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Le facce non contengono area!" @@ -5818,7 +5867,8 @@ msgid "Save Theme As..." msgstr "Salva Tema Come..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Riferimento di Classe" #: editor/plugins/script_editor_plugin.cpp @@ -6645,6 +6695,26 @@ msgid "Nameless gizmo" msgstr "Gizmo senza nome" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Crea Mesh 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Crea Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Crea Poligono di Collisione" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Crea Poligono di occlusione" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Lo sprite è vuoto!" @@ -6659,16 +6729,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Geometria non valida, impossibile sostituirla con una mesh." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Geometria non valida, impossibile sostituirla con una mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geometria non valida, impossibile sostituirla con una mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Geometria non valida, impossibile sostituirla con una mesh." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Converti in Mesh 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Crea Mesh 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Sposta Poligono" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Crea Poligono di Collisione" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Crea Poligono di occlusione" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7255,6 +7352,11 @@ msgid "Duplicate Nodes" msgstr "Duplica Nodi" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Elimina Nodo" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Tipo di Input Visual Shader Cambiato" @@ -8475,10 +8577,6 @@ msgid "Open documentation" msgstr "Apri la documentazione" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Elimina Nodo(i)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Aggiungi Nodo Figlio" @@ -10376,12 +10474,15 @@ msgstr "Assegnazione all'uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings può essere assegnato solo nella funzione del vertice." +#~ msgid "Snap (s): " +#~ msgstr "Snap (s): " + +#~ msgid "Insert keys." +#~ msgstr "Inserisci chiavi." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Istanzia le scene selezionate come figlie del nodo selezionato." -#~ msgid "FPS" -#~ msgstr "FPS" - #, fuzzy #~ msgid "Warnings:" #~ msgstr "Avvertimento" @@ -11928,9 +12029,6 @@ msgstr "Varyings può essere assegnato solo nella funzione del vertice." #~ msgid "Cannot go into subdir:" #~ msgstr "Impossibile accedere alla subdirectory:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Inserisci Keys (Ins)" - #~ msgid "Top (Num7)" #~ msgstr "Alto (Num7)" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 6ab3436f15..67a472c64d 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -26,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-19 15:04+0000\n" -"Last-Translator: nitenook <admin@alterbaum.net>\n" +"PO-Revision-Date: 2019-04-19 16:33+0000\n" +"Last-Translator: Wataru Onuki <watonu@magadou.com>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" "Language: ja\n" @@ -445,13 +445,22 @@ msgstr "" "ノードごとにトラックをグループ化するか、プレーンなリストとして表示します。" #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "スナップ (秒): " +#, fuzzy +msgid "Snap:" +msgstr "スナップ" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "アニメーションステップの値。" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "フレームレート" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -2329,7 +2338,7 @@ msgstr "プロジェクト" #: editor/editor_node.cpp msgid "Project Settings" -msgstr "プロジェクトの設定" +msgstr "プロジェクト設定" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export" @@ -3843,6 +3852,11 @@ msgid "Delete Node" msgstr "ノードを削除" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "ノードを削除" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "このトラックの オン/オフ を切り替え。" @@ -4827,8 +4841,34 @@ msgid "Layout" msgstr "レイアウト" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "キーを挿入する。" +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "キーを (既存のトラックに) 挿入" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "アニメーションキーを挿入" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -4904,6 +4944,55 @@ msgstr "ポリゴンを編集(点を除去)" msgid "Set Handle" msgstr "ハンドルを設定する" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "画像読み込みエラー:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "画像内に透明度が128以上のピクセルがありません..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Load Emission Mask" +msgstr "発光(Emission)マスクを読み込む" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Clear Emission Mask" +msgstr "発光(Emission)マスクをクリア" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "パーティクル" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "生成したポイントの数:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "発光(Emission)マスク" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#, fuzzy +msgid "Capture from Pixel" +msgstr "ピクセルから取得" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "発光(Emission)色" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUパーティクル" @@ -5281,55 +5370,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "画像読み込みエラー:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "画像内に透明度が128以上のピクセルがありません..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Load Emission Mask" -msgstr "発光(Emission)マスクを読み込む" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Clear Emission Mask" -msgstr "発光(Emission)マスクをクリア" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "CPUパーティクルに変換" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "パーティクル" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "生成したポイントの数:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "生成時間 (秒):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "発光(Emission)マスク" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy -msgid "Capture from Pixel" -msgstr "ピクセルから取得" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "発光(Emission)色" - #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Faces contain no area!" @@ -5870,7 +5919,8 @@ msgid "Save Theme As..." msgstr "テーマを名前をつけて保存..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " クラスリファレンス" #: editor/plugins/script_editor_plugin.cpp @@ -6392,9 +6442,8 @@ msgid "This operation requires a single selected node." msgstr "一つノードを指定しないと、この操作はできません" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock View Rotation" -msgstr "情報を表示" +msgstr "ビューの回転を固定" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -6602,7 +6651,7 @@ msgstr "トランスフォーム" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap object to floor" -msgstr "" +msgstr "オブジェクトを底面にスナップ" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -6719,6 +6768,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "アウトラインメッシュを生成" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Polygon3Dを生成" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "コリジョン ポリゴンを生成" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "オクルーダーポリゴンを生成" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "保存するパスがありません!" @@ -6731,17 +6800,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "スプライト" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "2Dメッシュに変換" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "アウトラインメッシュを生成" +msgid "Convert to Polygon2D" +msgstr "ポリゴンを移動" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "コリジョン ポリゴンを生成" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "オクルーダーポリゴンを生成" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7361,6 +7453,11 @@ msgid "Duplicate Nodes" msgstr "ノードを複製" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "ノードを削除" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -7410,6 +7507,8 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"プラットフォーム '%s' へのプロジェクトのエクスポートに失敗しました。\n" +"エクスポート用テンプレートが存在しないか、あるいは異常であるようです。" #: editor/project_export.cpp msgid "" @@ -7417,6 +7516,9 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" +"プラットフォーム '%s' へのプロジェクトのエクスポートに失敗しました。\n" +"エクスポート用プリセットあるいはエクスポート設定に問題がある可能性がありま" +"す。" #: editor/project_export.cpp #, fuzzy @@ -7724,9 +7826,8 @@ msgid "Unnamed Project" msgstr "名無しのプロジェクト" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "プロジェクトを開けません" +msgstr "次の場所のプロジェクトを開けません '%s'。" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" @@ -7771,7 +7872,6 @@ msgid "" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "" "Can't run project: no main scene defined.\n" "Please edit the project and set the main scene in \"Project Settings\" under " @@ -7779,7 +7879,7 @@ msgid "" msgstr "" "選択したシーン '%s' は、シーン ファイルではありません、有効なものを選択してい" "ますか?\n" -"'アプリケーション' カテゴリの下の'プロジェクトの設定'で変更できます。" +"'アプリケーション' カテゴリの下の'プロジェクト設定'で変更できます。" #: editor/project_manager.cpp msgid "" @@ -8609,10 +8709,6 @@ msgid "Open documentation" msgstr "ドキュメントを開く" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "ノードを削除" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "子ノードを追加" @@ -10551,12 +10647,15 @@ msgstr "uniform への割り当て。" msgid "Varyings can only be assigned in vertex function." msgstr "Varyingは頂点関数にのみ割り当てることができます。" +#~ msgid "Snap (s): " +#~ msgstr "スナップ (秒): " + +#~ msgid "Insert keys." +#~ msgstr "キーを挿入する。" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "選択したシーンを選択したノードの子としてインスタンス化します。" -#~ msgid "FPS" -#~ msgstr "フレームレート" - #~ msgid "Warnings:" #~ msgstr "警告:" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index cb8aed504b..26eabd113b 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -441,13 +441,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "დააჯგუფე ჩანაწერები კვანძების მიხედვით ან აჩვენე როგორც უბრალო სია." #: editor/animation_track_editor.cpp -msgid "Snap (s): " +#, fuzzy +msgid "Snap:" msgstr "ნაბიჯი (s): " #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "ანიმაციის ნაბიჯის ღირებულება." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3758,6 +3767,11 @@ msgid "Delete Node" msgstr "წაშლა" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "ჩანაწერის ჩართვა / გამორთვა" @@ -4723,8 +4737,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "ანიმ გასაღების ჩაყენება" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "ანიმ გასაღების ჩაყენება" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4796,6 +4835,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5146,52 +5231,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5706,7 +5754,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6532,6 +6580,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "ახალი %s შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6544,17 +6612,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "ახალი %s შექმნა" +msgid "Convert to Polygon2D" +msgstr "შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "შექმნა" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7146,6 +7235,11 @@ msgid "Duplicate Nodes" msgstr "ანიმაციის გასაღებების ასლის შექმნა" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "წაშლა" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8301,10 +8395,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index c50d35d69b..eb7964f81d 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -422,13 +422,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "노드 별로 그룹을 트랙 하거나 일반 목록으로 표시합니다." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "스냅: " +#, fuzzy +msgid "Snap:" +msgstr "스냅" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "애니메이션 단계 값." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "초당 프레임" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3792,6 +3801,11 @@ msgid "Delete Node" msgstr "노드 삭제" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "노드 삭제" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "필터 켜기/끄기 토글" @@ -4758,8 +4772,34 @@ msgid "Layout" msgstr "레이아웃" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "키 삽입." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "키 삽입 (Ins 키)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "애니메이션 키 삽입" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4831,6 +4871,52 @@ msgstr "폴리곤 편집 (점 삭제)" msgid "Set Handle" msgstr "핸들 설정" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "이미지 불러오기 오류:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "이미지에 투명도가 128보다 큰 픽셀이 없습니다..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "에미션 마스크 불러오기" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "에미션 마스크 정리" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "파티클" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "생성된 포인트 개수:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "에미션 마스크(Emission Mask)" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "픽셀로부터 캡쳐" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "에미션 칼라" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPU파티클" @@ -5181,52 +5267,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "오직 ParticlesMaterial 프로세스 메테리얼 안의 포인트만 설정 가능" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "이미지 불러오기 오류:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "이미지에 투명도가 128보다 큰 픽셀이 없습니다..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "에미션 마스크 불러오기" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "에미션 마스크 정리" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "CPU파티클로 변환" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "파티클" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "생성된 포인트 개수:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "생성 시간 (초):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "에미션 마스크(Emission Mask)" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "픽셀로부터 캡쳐" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "에미션 칼라" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "페이스가 영역을 가지고 있지 않습니다!" @@ -5736,7 +5785,8 @@ msgid "Save Theme As..." msgstr "테마 다른 이름으로 저장..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " 클래스 레퍼런스" #: editor/plugins/script_editor_plugin.cpp @@ -6562,6 +6612,26 @@ msgid "Nameless gizmo" msgstr "이름없는 오브젝트의 중심점" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "2D 메시 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "폴리곤3D 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "내비게이션 충돌 폴리곤 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Occluder 폴리곤 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "스프라이트가 비었습니다!" @@ -6574,16 +6644,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "유효하지 않은 형상, 메시로 대체할 수 없습니다." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "유효하지 않은 형상, 메시로 대체할 수 없습니다." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "유효하지 않은 형상, 메시로 대체할 수 없습니다." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "유효하지 않은 형상, 메시로 대체할 수 없습니다." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "스프라이트" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "2D 메시로 전환" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "2D 메시 만들기" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "폴리곤 이동" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "내비게이션 충돌 폴리곤 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Occluder 폴리곤 만들기" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7169,6 +7266,11 @@ msgid "Duplicate Nodes" msgstr "노드 복제" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "노드 삭제" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "비주얼 셰이더 입력 타입 변경됨" @@ -8372,10 +8474,6 @@ msgid "Open documentation" msgstr "문서 열기" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "노드 삭제" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "자식 노드 추가" @@ -10226,12 +10324,15 @@ msgstr "균일하게 배치함." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings는 오직 버텍스 함수에서만 지정할 수 있습니다." +#~ msgid "Snap (s): " +#~ msgstr "스냅: " + +#~ msgid "Insert keys." +#~ msgstr "키 삽입." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "선택된 씬을 선택된 노드의 자식으로 인스턴스 합니다." -#~ msgid "FPS" -#~ msgstr "초당 프레임" - #~ msgid "Warnings:" #~ msgstr "경고:" @@ -11709,9 +11810,6 @@ msgstr "Varyings는 오직 버텍스 함수에서만 지정할 수 있습니다. #~ msgid "Cannot go into subdir:" #~ msgstr "하위 디렉토리로 이동할 수 없습니다:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "키 삽입 (Ins 키)" - #~ msgid "Top (Num7)" #~ msgstr "윗면 (넘버패드7)" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 27fa42d705..22fe1747e6 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -425,7 +425,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Žingsnis(iai):" #: editor/animation_track_editor.cpp @@ -433,6 +433,14 @@ msgstr "Žingsnis(iai):" msgid "Animation step value." msgstr "Animacija" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3743,6 +3751,11 @@ msgid "Delete Node" msgstr "Ištrinti Efektą" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4715,7 +4728,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4787,6 +4824,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5137,52 +5220,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5701,7 +5747,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6524,6 +6570,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Sukurti Naują" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Keisti Poligono Skalę" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Keisti Poligono Skalę" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Sukurti" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6536,17 +6602,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Sukurti Naują" +msgid "Convert to Polygon2D" +msgstr "Keisti Poligono Skalę" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Keisti Poligono Skalę" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7142,6 +7229,11 @@ msgid "Duplicate Nodes" msgstr "Duplikuoti" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Ištrinti Efektą" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8307,10 +8399,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 4c46135e35..a8acaaf300 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -424,13 +424,22 @@ msgstr "" "Sagrupēt celiņus atkarībā no mezgliem vai rādīt tos vienkāršā sarakstā." #: editor/animation_track_editor.cpp -msgid "Snap (s): " +#, fuzzy +msgid "Snap:" msgstr "Solis (s): " #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animācijas soļa vērtība." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3736,6 +3745,11 @@ msgid "Delete Node" msgstr "Izdzēst" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4697,10 +4711,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim ievietot atslēgievietni" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4769,6 +4808,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5119,52 +5204,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5679,7 +5727,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6505,6 +6553,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Izveidot Jaunu %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6517,17 +6585,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Izveidot Jaunu %s" +msgid "Convert to Polygon2D" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7121,6 +7210,11 @@ msgid "Duplicate Nodes" msgstr "Dublicēt atslēgvietnes" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Izdzēst" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8274,10 +8368,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/mi.po b/editor/translations/mi.po index bd3832641d..30d76b28d3 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -397,13 +397,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3657,6 +3665,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4608,7 +4621,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4679,6 +4716,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5029,52 +5112,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5578,7 +5624,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6396,6 +6442,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6408,15 +6470,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6987,6 +7069,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8136,10 +8222,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index d029bdaacd..215ca3d2cc 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -405,13 +405,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3665,6 +3673,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4616,7 +4629,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4687,6 +4724,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5037,52 +5120,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5586,7 +5632,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6404,6 +6450,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6416,15 +6478,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6995,6 +7077,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8144,10 +8230,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 61fb10d582..f253cca02b 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -417,13 +417,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3683,6 +3691,11 @@ msgid "Delete Node" msgstr "Semua Pilihan" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4638,7 +4651,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4709,6 +4746,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5059,52 +5142,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5608,7 +5654,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6426,6 +6472,23 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Semua Pilihan" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6438,15 +6501,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7024,6 +7107,11 @@ msgid "Duplicate Nodes" msgstr "Anim Menduakan Kunci" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Semua Pilihan" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8175,10 +8263,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 405d71e43b..26bd0cc890 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -2,7 +2,7 @@ # Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. -# Allan Nordhøy <epost@anotheragency.no>, 2017-2018. +# Allan Nordhøy <epost@anotheragency.no>, 2017-2018, 2019. # Anonymous <GentleSaucepan@protonmail.com>, 2017. # Elias <eliasnykrem@gmail.com>, 2018. # flesk <eivindkn@gmail.com>, 2017, 2019. @@ -12,12 +12,13 @@ # Norwegian Disaster <stian.furu.overbye@gmail.com>, 2017. # passeride <lukas@passeride.com>, 2017. # Byzantin <kasper-hoel@hotmail.com>, 2018. +# Hans-Marius Øverås <hansmariusoveras@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-02-13 16:10+0000\n" -"Last-Translator: NicolaiF <nico-fre@hotmail.com>\n" +"PO-Revision-Date: 2019-04-23 15:48+0000\n" +"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" "Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/godot-" "engine/godot/nb_NO/>\n" "Language: nb\n" @@ -25,7 +26,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.5-dev\n" +"X-Generator: Weblate 3.7-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -39,9 +40,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "Ikke nok byte til dekodingsbyte, eller ugyldig format." #: core/math/expression.cpp -#, fuzzy msgid "Invalid input %i (not passed) in expression" -msgstr "Ikke gyldig inndata %i (ikke bestått) i utrykket" +msgstr "Ugyldig inndata %i (ikke bestått) i utrykket" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -467,7 +467,7 @@ msgstr "Grupper spor etter node eller vis dem i en enkel liste." #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Steg:" #: editor/animation_track_editor.cpp @@ -475,6 +475,14 @@ msgstr "Steg:" msgid "Animation step value." msgstr "Animasjonstre er gyldig." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -4001,6 +4009,11 @@ msgid "Delete Node" msgstr "Kutt Noder" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Vis/skjul distraksjonsfri modus." @@ -5015,9 +5028,34 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Sett inn Nøkler" +msgid "Insert keys (based on mask)." +msgstr "Sett inn Nøkkel (Eksisterende Spor)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim Sett Inn Nøkkel" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5091,6 +5129,52 @@ msgstr "Rediger Poly (Fjern Punkt)" msgid "Set Handle" msgstr "Sett Handle" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Feil ved innlasting av bilde:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Ingen piksler med gjennomsiktighet > 128 i bilde..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partikler" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5446,22 +5530,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Feil ved innlasting av bilde:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Ingen piksler med gjennomsiktighet > 128 i bilde..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5469,30 +5537,9 @@ msgstr "Konverter til store versaler" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partikler" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -6038,7 +6085,8 @@ msgid "Save Theme As..." msgstr "Lagre Tema Som..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Klassereferanse" #: editor/plugins/script_editor_plugin.cpp @@ -6887,6 +6935,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Lag ny %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Lag Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Lag Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Lag mappe" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6899,18 +6967,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Konverter til store versaler" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Lag ny %s" +msgid "Convert to Polygon2D" +msgstr "Flytt Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Lag Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7532,6 +7621,11 @@ msgid "Duplicate Nodes" msgstr "Anim Dupliser Nøkler" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Kutt Noder" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8239,7 +8333,7 @@ msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "" +msgstr "Generelt" #: editor/project_settings_editor.cpp msgid "Override For..." @@ -8727,10 +8821,6 @@ msgid "Open documentation" msgstr "Åpne Godots nettbaserte dokumentasjon" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10528,6 +10618,10 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Sett inn Nøkler" + +#, fuzzy #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Instanser den valgte scene(r) som barn av den valgte noden." diff --git a/editor/translations/nl.po b/editor/translations/nl.po index c0e046dc9b..6eb5a47d21 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -31,12 +31,13 @@ # Stijn Hinlopen <f.a.hinlopen@gmail.com>, 2019. # jef dered <themen098s@vivaldi.net>, 2019. # Alex H. <sandertjeh13@hotmail.com>, 2019. +# edouardgr <edouard.gruyters@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-28 09:36+0000\n" -"Last-Translator: Alex H. <sandertjeh13@hotmail.com>\n" +"PO-Revision-Date: 2019-04-25 11:54+0000\n" +"Last-Translator: edouardgr <edouard.gruyters@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\n" @@ -44,7 +45,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.6-dev\n" +"X-Generator: Weblate 3.7-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -450,13 +451,21 @@ msgstr "Sporen weergeven op basis van nodes of als lijst." #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Stap(pen):" +msgid "Snap:" +msgstr "Snap" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animatie stap waarde." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3895,6 +3904,12 @@ msgid "Delete Node" msgstr "Alles Selecteren" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete Node(s)" +msgstr "Verwijder knooppunt(en)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Aan-uitschakelaar Track." @@ -4887,9 +4902,34 @@ msgid "Layout" msgstr "Indeling" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Voer Sleutels In" +msgid "Insert keys (based on mask)." +msgstr "Voeg Sleutel in (Bestaande Banen)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim Key Invoegen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4962,6 +5002,52 @@ msgstr "Bewerk Poly (Verwijder punt)" msgid "Set Handle" msgstr "Stel Handgreep In" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Error bij het laden van afbeelding:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Geen pixels met transparantie > 128 in afbeelding..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Laad Emissie Masker" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Leeg Emissie Masker" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partikels" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Telling Gegenereerde Punten:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Emissie Masker" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Neem uit Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Kleuren Emissie" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5324,22 +5410,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Kan punt alleen plaatsen in een PartikelsMateriaal proces materiaal" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Error bij het laden van afbeelding:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Geen pixels met transparantie > 128 in afbeelding..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Laad Emissie Masker" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Leeg Emissie Masker" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5347,30 +5417,9 @@ msgstr "Converteer Naar Hoofdletters" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partikels" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Telling Gegenereerde Punten:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Genereer Tijd (sec):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Emissie Masker" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Neem uit Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Kleuren Emissie" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Vlakken bevatten geen gebied!" @@ -5916,7 +5965,8 @@ msgid "Save Theme As..." msgstr "Thema Opslaan Als..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Klasse Referentie" #: editor/plugins/script_editor_plugin.cpp @@ -6774,6 +6824,26 @@ msgstr "Naamloos apparaat" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Creëer Omlijning Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Creëer Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Creëer Navigatie Polygoon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Creëer Occluder Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Mesh is leeg!" @@ -6787,18 +6857,43 @@ msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite" msgstr "Sprite-Frames" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Verbind Aan Node:" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Creëer Omlijning Mesh" +msgid "Convert to Polygon2D" +msgstr "Beweeg Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Creëer Navigatie Polygoon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Creëer Occluder Polygon" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7417,6 +7512,11 @@ msgid "Duplicate Nodes" msgstr "Dupliceer Graaf Knooppunt(en)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Alles Selecteren" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Visuele Shader Invoertype Gewijzigd" @@ -8534,7 +8634,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "" +msgstr "Instantie Scene(s)" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -8542,7 +8642,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Clear Script" -msgstr "" +msgstr "Script vrijmaken" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -8579,7 +8679,7 @@ msgstr "Klinkt logisch!" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" -msgstr "" +msgstr "Verwijder knooppunt(en)?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -8664,8 +8764,9 @@ msgid "" msgstr "" #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Error saving scene." -msgstr "" +msgstr "Fout scene opslaan." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." @@ -8686,16 +8787,13 @@ msgid "Open documentation" msgstr "Open Godot online documentatie" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Change Type" -msgstr "" +msgstr "Verander Type" #: editor/scene_tree_dock.cpp #, fuzzy @@ -8721,12 +8819,13 @@ msgid "Copy Node Path" msgstr "Kopiëer Nodes" #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete (No Confirm)" -msgstr "" +msgstr "Verwijder (Geen bevestiging)" #: editor/scene_tree_dock.cpp msgid "Add/Create a New Node" -msgstr "" +msgstr "Voeg nieuwe knooppunt aan" #: editor/scene_tree_dock.cpp msgid "" @@ -8740,7 +8839,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Clear a script for the selected node." -msgstr "" +msgstr "Verwijder script van selecteerde knooppunt." #: editor/scene_tree_dock.cpp #, fuzzy @@ -8748,8 +8847,9 @@ msgid "Remote" msgstr "Verwijderen" #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Local" -msgstr "" +msgstr "Lokaal" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" @@ -8761,8 +8861,9 @@ msgid "Toggle Visible" msgstr "Toggle Verborgen Bestanden" #: editor/scene_tree_editor.cpp +#, fuzzy msgid "Node configuration warning:" -msgstr "" +msgstr "Knooppunt configuratie waarschuwing:" #: editor/scene_tree_editor.cpp msgid "" @@ -10563,14 +10664,19 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Stap(pen):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Voer Sleutels In" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Maak een nieuwe kopie van de geselecteerde scene(s) als kind van de " #~ "geselecteerde knoop." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Waarschuwingen:" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 530417f63c..7923ebe539 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -37,8 +37,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-04-05 13:04+0000\n" -"Last-Translator: Przemysław Pierzga <przemyslawpierzga@gmail.com>\n" +"PO-Revision-Date: 2019-04-25 11:54+0000\n" +"Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -47,7 +47,7 @@ msgstr "" "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 3.6-dev\n" +"X-Generator: Weblate 3.7-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -445,13 +445,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Grupuj ścieżki po węzłach lub wyświetl je jako prostą listę." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Przyciąganie (s): " +#, fuzzy +msgid "Snap:" +msgstr "Przyciągaj" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Wartość kroku animacji." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "Klatki na sekundę" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3829,6 +3838,11 @@ msgid "Delete Node" msgstr "Usuń węzeł" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Usuń węzeł (węzły)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Przełącz filtrowanie" @@ -4807,8 +4821,34 @@ msgid "Layout" msgstr "Układ" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Wstaw klucze." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Wstaw klucz (istniejące ścieżki)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Wstaw klatkę kluczową" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4861,7 +4901,7 @@ msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" -"Przeciągnij i upuść + Shift: dodaj węzeł równorzędny\n" +"Przeciągnij i upuść + Shift: Dodaj węzeł równorzędny\n" "Przeciągnij i upuść + Alt: Zmień typ węzła" #: editor/plugins/collision_polygon_editor_plugin.cpp @@ -4880,6 +4920,52 @@ msgstr "Edytuj wielokąt (usuń punkty)" msgid "Set Handle" msgstr "Ustaw Uchwyt" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Błąd wczytywania obrazu:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Brak pikseli z przeźroczystością > 128 w obrazie..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Wczytaj maskę emisji" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Usuń maskę emisji" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Cząsteczki" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Wygeneruj chmurę punktów:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Maska emisji" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Przechwytywanie z piksela" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Kolor emisji" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "Cząsteczki CPU" @@ -5230,52 +5316,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Punkt można wstawić tylko w materiał przetwarzania ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Błąd wczytywania obrazu:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Brak pikseli z przeźroczystością > 128 w obrazie..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Wczytaj maskę emisji" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Usuń maskę emisji" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Przekonwertuj na cząsteczki CPU" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Cząsteczki" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Wygeneruj chmurę punktów:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Czas generowania (sek):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Maska emisji" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Przechwytywanie z piksela" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Kolor emisji" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Ściana nie ma powierzchni!" @@ -5785,7 +5834,8 @@ msgid "Save Theme As..." msgstr "Zapisz motyw jako..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " - referencja klasy" #: editor/plugins/script_editor_plugin.cpp @@ -6035,7 +6085,7 @@ msgstr "Wcięcie w prawo" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "Ustaw komentarz" +msgstr "Przełącz komentarz" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" @@ -6610,6 +6660,26 @@ msgid "Nameless gizmo" msgstr "Uchwyt bez nazwy" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Utwórz siatkę 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Utwórz Wielokąt3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Utwórz wielokąt kolizji" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Stwórz Occluder Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite jest pusty!" @@ -6623,16 +6693,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Konwertuj do siatki 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Utwórz siatkę 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Przesuń Wielokąt" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Utwórz wielokąt kolizji" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Stwórz Occluder Polygon" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7217,12 +7314,17 @@ msgid "Duplicate Nodes" msgstr "Duplikuj węzły" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Usuń węzeł" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Typ wejścia shadera wizualnego zmieniony" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" -msgstr "Wierzchołek" +msgstr "Wierzchołki" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Fragment" @@ -8433,10 +8535,6 @@ msgid "Open documentation" msgstr "Otwórz dokumentację" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Usuń węzeł (węzły)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Dodaj węzeł" @@ -10310,12 +10408,15 @@ msgstr "Przypisanie do uniformu." msgid "Varyings can only be assigned in vertex function." msgstr "Varying może być przypisane tylko w funkcji wierzchołków." +#~ msgid "Snap (s): " +#~ msgstr "Przyciąganie (s): " + +#~ msgid "Insert keys." +#~ msgstr "Wstaw klucze." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Utwórz instancję wybranej sceny/scen jako dziecko wybranego węzła." -#~ msgid "FPS" -#~ msgstr "Klatki na sekundę" - #~ msgid "Warnings:" #~ msgstr "Ostrzeżenia:" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index dea945f474..0aa4cbbca8 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -428,13 +428,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3763,6 +3771,11 @@ msgid "Delete Node" msgstr "Slit th' Node" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4729,7 +4742,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4801,6 +4838,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5154,52 +5237,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5719,7 +5765,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6551,6 +6597,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6563,15 +6629,37 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Discharge ye' Function" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7177,6 +7265,11 @@ msgid "Duplicate Nodes" msgstr "Rename Variable" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Slit th' Node" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8342,10 +8435,6 @@ msgid "Open documentation" msgstr "Yer functions:" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 0deb9619d0..9dc52df2be 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -56,12 +56,14 @@ # Davi <wokep.ma.wavid@gmail.com>, 2019. # Endrick Gustavo <endrickgb@hotmail.com>, 2019. # Hans M. Boron <hansmateusboron@gmail.com>, 2019. +# Gustavo Bolanho <jdmapas@gmail.com>, 2019. +# Nilton Bendini Junior <almascelulas@bol.com.br>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2019-04-08 10:35+0000\n" -"Last-Translator: Hans M. Boron <hansmateusboron@gmail.com>\n" +"PO-Revision-Date: 2019-04-19 16:33+0000\n" +"Last-Translator: Nilton Bendini Junior <almascelulas@bol.com.br>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -259,7 +261,7 @@ msgstr "Tempo (s): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "Ligar/Desligar trilha" +msgstr "Alternar Trilha Ativado" #: editor/animation_track_editor.cpp msgid "Continuous" @@ -313,7 +315,7 @@ msgstr "Deletar Chave(s)" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" -msgstr "Alterar Modo de Atualização da Animação:" +msgstr "Alterar Modo de Atualização da Animação" #: editor/animation_track_editor.cpp msgid "Change Animation Interpolation Mode" @@ -369,9 +371,8 @@ msgid "Change Animation Step" msgstr "Alterar FPS da Animação" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Rearrange Tracks" -msgstr "Reordenar Faixas" +msgstr "Reordenar Trilhas" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." @@ -416,13 +417,12 @@ msgid "Track is not of type Spatial, can't insert key" msgstr "Trilha não é do tipo Espacial,não pode inserir chave" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "Trilha de transformação 3D" +msgstr "Adicionar Chave de Transformação de Trilha" #: editor/animation_track_editor.cpp msgid "Add Track Key" -msgstr "Adicionar Trilha" +msgstr "Adicionar Trilha Chave" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." @@ -430,9 +430,8 @@ msgstr "" "Caminho da trilha é inválido,então não pode adicionar uma chave de método." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "Trilha de método de chamada" +msgstr "Adiciona Método de Trilha Chave" #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -469,13 +468,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Agrupe as trilhas pelo nó ou exiba-as como lista simples." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Snap (s): " +#, fuzzy +msgid "Snap:" +msgstr "Snap" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valor do passo de animação." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -594,17 +602,16 @@ msgid "Copy" msgstr "Copiar" #: editor/animation_track_editor_plugins.cpp -#, fuzzy msgid "Add Audio Track Clip" -msgstr "Clipes de Áudio:" +msgstr "Adiciona Clipe de Trilha de Áudio" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "Alterar Deslocamento do Início de Clipe da Trilha de Áudio" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "Alterar deslocamento de fim do clipe de faixa de áudio" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -1236,7 +1243,7 @@ msgstr "Adicionar Canal" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." -msgstr "Adiciona um novo Canal de Áudio a esse layout." +msgstr "Adicionar novo Canal de Áudio a esse layout." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1427,6 +1434,8 @@ msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"A plataforma de destino requer compactação de textura 'ETC2' para GLES3. " +"Ativar 'Importar Etc 2' nas Configurações do Projeto." #: editor/editor_export.cpp msgid "" @@ -1435,6 +1444,10 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" +"A plataforma de destino requer compactação de textura 'ETC' para o driver " +"retornar ao GLES2.\n" +"Ativar 'Importar Etc' em Configurações do Projeto ou desabilitar 'Driver " +"Fallback Enabled' (Recuperação de driver ativada)." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1557,23 +1570,20 @@ msgid "Move Favorite Down" msgstr "Mover Favorito Abaixo" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Previous Folder" -msgstr "Chão Anterior" +msgstr "Pasta Anterior" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Next Folder" -msgstr "Próximo Chão" +msgstr "Próxima Pasta" #: editor/editor_file_dialog.cpp msgid "Go to parent folder" msgstr "Ir para pasta pai" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "(Un)favorite current folder." -msgstr "Não foi possível criar a pasta." +msgstr "(Des)favoritar pasta atual." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -1806,9 +1816,8 @@ msgid "Project export failed with error code %d." msgstr "Falha na exportação do projeto com código de erro %d." #: editor/editor_node.cpp -#, fuzzy msgid "Imported resources can't be saved." -msgstr "Recursos Importados" +msgstr "Recursos Importados não podem ser salvos." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp @@ -3684,18 +3693,16 @@ msgstr "Carregar..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Move Node Point" -msgstr "Mover pontos" +msgstr "Mover o ponto do nó" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Change BlendSpace1D Limits" msgstr "Alterar limites do BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Labels" -msgstr "Alterar Tempo de Mistura" +msgstr "Alterar rótulos BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3706,24 +3713,21 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Node Point" -msgstr "Adicionar Nó" +msgstr "Adicionar ponto de Nó" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "Adicionar Animação" +msgstr "Adicionar ponto de Animação" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Remove BlendSpace1D Point" -msgstr "Remover Ponto do Caminho" +msgstr "Remover Ponto BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "" +msgstr "Mover ponto de nó BlendSpace1D" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3769,29 +3773,24 @@ msgid "Triangle already exists" msgstr "Triângulo já existe" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Triangle" -msgstr "Adicionar Variável" +msgstr "Adicionar Triângulo" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Limits" -msgstr "Alterar Tempo de Mistura" +msgstr "Alterar limites de BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Labels" -msgstr "Alterar Tempo de Mistura" +msgstr "Alterar rótulos de BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Point" -msgstr "Remover Ponto do Caminho" +msgstr "Remover Ponto do BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Triangle" -msgstr "Remover Variável" +msgstr "Remover Triangulo do BlendSpace2D" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." @@ -3802,9 +3801,8 @@ msgid "No triangles exist, so no blending can take place." msgstr "Não existem triângulos, então nenhuma mistura pode acontecer." #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Toggle Auto Triangles" -msgstr "Alternar Auto Carregamentos de Globais" +msgstr "Alternar Triângulos Automáticos" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." @@ -3837,9 +3835,8 @@ msgid "Output node can't be added to the blend tree." msgstr "Nós de saída não pode ser adicionado à árvore de mistura." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Add Node to BlendTree" -msgstr "Adicionar Nó(s) a Partir da Árvore" +msgstr "Adicionar Nó(s) a Partir da Árvore (BlendTree)" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -3863,9 +3860,8 @@ msgid "Nodes Disconnected" msgstr "Nós Desconectados" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Set Animation" -msgstr "Nova animação" +msgstr "Definir Animação" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -3873,14 +3869,17 @@ msgid "Delete Node" msgstr "Excluir Nó" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Excluir Nó(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" -msgstr "Ligar/desligar esta trilha." +msgstr "Ligar/Desligar Filtro" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Change Filter" -msgstr "FIltro de Idiomas Alterado" +msgstr "Alterar Filtro" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." @@ -3905,9 +3904,8 @@ msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Renamed" -msgstr "Nome do nó" +msgstr "Nó Renomeado" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4138,14 +4136,12 @@ msgid "Cross-Animation Blend Times" msgstr "Tempos de Mistura de Animação Cruzada" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Move Node" -msgstr "Modo Mover" +msgstr "Mover Nó" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Add Transition" -msgstr "Adicionar Tradução" +msgstr "Adicionar Transição" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -4181,9 +4177,8 @@ msgid "No playback resource set at path: %s." msgstr "Sem recurso de playback definido no caminho: %s." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "Removido:" +msgstr "Nó Removido" #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition Removed" @@ -4626,7 +4621,8 @@ msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." msgstr "" -"Filhos de contêineres tem sua âncora e margens sobrescritos pelos seus pais." +"Filhos de contêineres tem suas ancoragens e valores de margem sobrescritos " +"pelos seus pais." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -4859,8 +4855,34 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Inserir chaves." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Inserir Chaves (Ins)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Inserir Chave na Anim" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4932,6 +4954,52 @@ msgstr "Editar Polígono (Remover Ponto)" msgid "Set Handle" msgstr "Definir Manipulador" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Erro ao carregar imagem:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Nenhum pixel com transparência > 128 na imagem." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Carregar Máscara de Emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Limpar Máscara de Emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partículas" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Gerar Contagem de Pontos:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Máscara de Emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturar a partir do Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Cores de Emissão" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "Particulas CPU" @@ -5285,52 +5353,15 @@ msgstr "" "Só é permitido colocar um ponto em um material processador ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Erro ao carregar imagem:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Nenhum pixel com transparência > 128 na imagem." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Carregar Máscara de Emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Limpar Máscara de Emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Converter para Particulas CPU" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partículas" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Gerar Contagem de Pontos:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Gerando Tempo (seg):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Máscara de Emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturar a partir do Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Cores de Emissão" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "As faces não têm área!" @@ -5842,7 +5873,8 @@ msgid "Save Theme As..." msgstr "Salvar Tema Como..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Referência de Classes" #: editor/plugins/script_editor_plugin.cpp @@ -5974,11 +6006,11 @@ msgstr "Abrir a documentação online da Godot" #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" -msgstr "" +msgstr "Solicitar documentos" #: editor/plugins/script_editor_plugin.cpp msgid "Help improve the Godot documentation by giving feedback" -msgstr "" +msgstr "Ajude a melhorar a documentação do Godot dando seu feedback" #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -6176,14 +6208,12 @@ msgid "This skeleton has no bones, create some children Bone2D nodes." msgstr "Este esqueleto não tem ossos, crie alguns nós filhos Bone2D." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "Faça Resto Pose (De Ossos)" +msgstr "Criar postura de descanso para os Ossos" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Set Rest Pose to Bones" -msgstr "Faça Resto Pose (De Ossos)" +msgstr "Definir a postura de repouso para os Ossos" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -6338,9 +6368,8 @@ msgid "Rear" msgstr "Traseira" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align with View" -msgstr "Alinhar com Visão" +msgstr "Alinhar com a Vista" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -6447,9 +6476,8 @@ msgid "XForm Dialog" msgstr "Diálogo XForm" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes To Floor" -msgstr "Encaixar na grade" +msgstr "Encaixar Nó(s) no Chão" #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode (Q)" @@ -6671,6 +6699,26 @@ msgid "Nameless gizmo" msgstr "Coisa sem nome" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Crie uma malha 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Criar Polígono3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Criar polígono de colisão" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Criar Polígono de Oclusão" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite está vazio!" @@ -6684,16 +6732,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Geometria inválida, não é possível substituir por malha." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Geometria inválida, não é possível substituir por malha." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geometria inválida, não é possível substituir por malha." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Geometria inválida, não é possível substituir por malha." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Converter para malha 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Crie uma malha 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Mover Polígono" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Criar polígono de colisão" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Criar Polígono de Oclusão" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7045,13 +7120,12 @@ msgid "Merge from Scene" msgstr "Fundir a partir de Cena" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Next Coordinate" -msgstr "Próximo Chão" +msgstr "Próxima Coordenada" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." -msgstr "" +msgstr "Selecione a próxima forma, subtile ou Tile." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Previous Coordinate" @@ -7059,7 +7133,7 @@ msgstr "Coordenada Anterior" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "" +msgstr "Selecione a forma, subtile ou tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -7263,26 +7337,28 @@ msgstr "Conjunto de Telha" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "" +msgstr "Definir Nome Uniforme" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set Input Default Port" -msgstr "Definir como Padrão para '%s'" +msgstr "Definir Porta Padrão de Entrada" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node to Visual Shader" -msgstr "VisualShader" +msgstr "Adicionar Nó ao Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" msgstr "Duplicar Nó(s)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Excluir Nó" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" -msgstr "" +msgstr "Tipo de Entrada de Shader Visual Alterado" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -7301,14 +7377,12 @@ msgid "VisualShader" msgstr "VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Edit Visual Property" -msgstr "Editar prioridade da telha" +msgstr "Editar Propriedade Visual" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Visual Shader Mode Changed" -msgstr "Alterações de Shader" +msgstr "Modo Visual Shader Alterado" #: editor/project_export.cpp msgid "Runnable" @@ -7327,9 +7401,10 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"Falha ao exportar o projeto para a plataforma '% s'.\n" +"Os modelos de exportação parecem estar ausentes ou inválidos." #: editor/project_export.cpp -#, fuzzy msgid "" "Failed to export the project for platform '%s'.\n" "This might be due to a configuration issue in the export preset or your " @@ -7349,7 +7424,7 @@ msgstr "Exportando tudo" #: editor/project_export.cpp msgid "The given export path doesn't exist:" -msgstr "O caminho de exportação informado não existe." +msgstr "O caminho de exportação informado não existe:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" @@ -8500,10 +8575,6 @@ msgid "Open documentation" msgstr "Abrir a documentação" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Excluir Nó(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Adicionar Nó Filho" @@ -9678,7 +9749,7 @@ msgstr "Identificador está ausente." #: platform/iphone/export/export.cpp msgid "Identifier segments must be of non-zero length." -msgstr "Os segmentos de identificador devem ter comprimento diferente de zero." +msgstr "Segmentos identificadores devem ter comprimento diferente de zero." #: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." @@ -10097,6 +10168,8 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" +"GIProbes não são suportados pelo driver de vídeo GLES2.\n" +"Use um BakedLightmap em vez disso." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -10277,6 +10350,10 @@ msgid "" "If you dont't intend to add a script, then please use a plain 'Control' node " "instead." msgstr "" +"O contêiner por si só não serve para nada, a menos que um script configure " +"seu comportamento de posicionamento de filhos.\n" +"Se você não pretende adicionar um script, por favor use um nó simples " +"'Control'." #: scene/gui/dialogs.cpp msgid "Alert!" @@ -10288,7 +10365,7 @@ msgstr "Confirme Por Favor..." #: scene/gui/file_dialog.cpp msgid "Go to parent folder." -msgstr "Ir para diretório pai" +msgstr "Ir para diretório (pasta) pai." #: scene/gui/popup.cpp msgid "" @@ -10374,12 +10451,15 @@ msgstr "Atribuição à uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Variáveis só podem ser atribuídas na função de vértice." +#~ msgid "Snap (s): " +#~ msgstr "Snap (s): " + +#~ msgid "Insert keys." +#~ msgstr "Inserir chaves." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Instanciar a(s) cena(s) selecionada como filho do nó selecionado." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Avisos:" @@ -11897,9 +11977,6 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice." #~ msgid "Cannot go into subdir:" #~ msgstr "Não é possível ir ao subdiretório:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Inserir Chaves (Ins)" - #~ msgid "Top (Num7)" #~ msgstr "Cima (Num7)" diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 0c8ad8dce9..f9e93885d9 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -427,13 +427,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Agrupar faixas por nó ou exibi-las como lista simples." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Ajuste (s): " +#, fuzzy +msgid "Snap:" +msgstr "Ajustar" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Valor passo da Animação." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3816,6 +3825,11 @@ msgid "Delete Node" msgstr "Apagar Nó" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Apagar Nó(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Alternar Filtro On/Off" @@ -4789,8 +4803,34 @@ msgid "Layout" msgstr "Esquema" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Inserir chaves." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Inserir Chave (Pistas existentes)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim Inserir Chave" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4862,6 +4902,52 @@ msgstr "Editar Poly (Remover Ponto)" msgid "Set Handle" msgstr "Definir Manipulador" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Erro ao carregar imagem:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Sem pixeis com transparência > 128 na imagem..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Carregar máscara de emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Limpar máscara de emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Partículas" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Contagem de Pontos gerados:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Máscara de emissão" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturar a partir do pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Cores de emissão" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5212,52 +5298,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Só pode definir um Ponto num Material ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Erro ao carregar imagem:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Sem pixeis com transparência > 128 na imagem..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Carregar máscara de emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Limpar máscara de emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Converter em CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Partículas" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Contagem de Pontos gerados:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Tempo de geração (s):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Máscara de emissão" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturar a partir do pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Cores de emissão" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "As faces não contêm Área!" @@ -5767,7 +5816,8 @@ msgid "Save Theme As..." msgstr "Guardar tema como..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Referência de classe" #: editor/plugins/script_editor_plugin.cpp @@ -6592,6 +6642,26 @@ msgid "Nameless gizmo" msgstr "Bugiganga sem Nome" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Criar Malha 2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Criar Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Criar Polígono de Colisão" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Criar Polígono oclusor" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite está vazia!" @@ -6604,16 +6674,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Geometria inválida, não substituível por malha." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Geometria inválida, não substituível por malha." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geometria inválida, não substituível por malha." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Geometria inválida, não substituível por malha." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Converter para Malha 2D" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Criar Malha 2D" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Mover Polígono" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Criar Polígono de Colisão" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Criar Polígono oclusor" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7198,6 +7295,11 @@ msgid "Duplicate Nodes" msgstr "Duplicar Nós" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Apagar Nó" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Alterado Tipo de Entrada do Visual Shader" @@ -8414,10 +8516,6 @@ msgid "Open documentation" msgstr "Abrir documentação" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Apagar Nó(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Adicionar Nó filho" @@ -10296,13 +10394,16 @@ msgstr "Atribuição a uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Variações só podem ser atribuídas na função vértice." +#~ msgid "Snap (s): " +#~ msgstr "Ajuste (s): " + +#~ msgid "Insert keys." +#~ msgstr "Inserir chaves." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "" #~ "Instancie a(s) Cena(s) selecionada(s) como filha(s) do Nó selecionado." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Avisos:" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 807d02dc5d..dbc222bbbf 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -439,14 +439,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Pas (s):" +msgid "Snap:" +msgstr "Aliniere" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "Arborele Animației este valid." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3929,6 +3937,11 @@ msgid "Delete Node" msgstr "Creează Nod" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Comutează modul fără distrageri." @@ -4930,9 +4943,34 @@ msgid "Layout" msgstr "Schemă" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Inserează Note" +msgid "Insert keys (based on mask)." +msgstr "Inserează Notă (Melodii existente)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim Inserați Cheie" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5005,6 +5043,52 @@ msgstr "Editează Poligon (Elimină Punct)" msgid "Set Handle" msgstr "Setează Mâner" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Eroare la încărcarea imaginii:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Nici un pixel cu transparența > 128 în imagine..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Încărcare Mască de Emisie" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Curăță Masca de Emisie" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Particule" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Număr de Puncte Generate:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Mască de Emisie" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Capturare din Pixel" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Culori de Emisie" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5359,52 +5443,15 @@ msgstr "" "ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Eroare la încărcarea imaginii:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Nici un pixel cu transparența > 128 în imagine..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Încărcare Mască de Emisie" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Curăță Masca de Emisie" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Particule" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Număr de Puncte Generate:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Timp de Generare (sec):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Mască de Emisie" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Capturare din Pixel" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Culori de Emisie" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Unele fețe nu conțin zonă!" @@ -5942,7 +5989,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6782,6 +6829,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Creează Mesh de Contur" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Crează Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Creare Poligon de Navigare" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Creează Poligon de Ocluziune" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Mesh-ul este gol!" @@ -6794,17 +6861,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Sprite" +msgid "Invalid geometry, can't create polygon." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Creează Mesh de Contur" +msgid "Convert to Mesh2D" +msgstr "Convertește În..." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Deplasare poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Creare Poligon de Navigare" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Creează Poligon de Ocluziune" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7416,6 +7506,11 @@ msgid "Duplicate Nodes" msgstr "Anim Clonare Chei" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Creează Nod" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8600,10 +8695,6 @@ msgid "Open documentation" msgstr "Deschide Recente" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10359,6 +10450,14 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Pas (s):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Inserează Note" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Instanțiază scena(ele) selectată ca un copil al nodului selectat." diff --git a/editor/translations/ru.po b/editor/translations/ru.po index f950d99eec..b9794177bb 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -42,12 +42,13 @@ # LeLuCh B0й <alekx@alumni.nottingham.ac.uk>, 2019. # Арсений Солодков <arsen332211@gmail.com>, 2019. # Nikita <yakrobat@protonmail.com>, 2019. +# LAT_Rio <AlSenya@yandex.ru>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-04-07 08:04+0000\n" -"Last-Translator: Chaosus89 <chaosus89@gmail.com>\n" +"PO-Revision-Date: 2019-04-14 13:04+0000\n" +"Last-Translator: LAT_Rio <AlSenya@yandex.ru>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -453,13 +454,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "Группировать треки по узлам или показывать их как простой список." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Привязка (сек): " +#, fuzzy +msgid "Snap:" +msgstr "Привязка" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Значение шага анимации." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -1217,9 +1227,8 @@ msgid "Add Bus" msgstr "Добавить" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." -msgstr "Сохранить раскладку звуковой шины как..." +msgstr "Добавить новую звуковую шину для этой раскладки." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1560,9 +1569,8 @@ msgid "Go to parent folder" msgstr "Перейти к родительской папке" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "(Un)favorite current folder." -msgstr "Невозможно создать папку." +msgstr "Добавить или удалить текущую папку из избранных." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -2564,9 +2572,8 @@ msgid "Save & Restart" msgstr "Сохранить и перезапустить" #: editor/editor_node.cpp -#, fuzzy msgid "Spins when the editor window redraws." -msgstr "Вращается, когда окно редактора перерисовывается!" +msgstr "Вращается, когда окно редактора перерисовывается." #: editor/editor_node.cpp msgid "Update Always" @@ -3845,6 +3852,11 @@ msgid "Delete Node" msgstr "Удалить узел" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Удалить узел(узлы)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Переключить фильтр вкл/выкл" @@ -4818,8 +4830,34 @@ msgid "Layout" msgstr "Макет" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Вставить ключи." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Вставить ключи (Ins)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Вставить ключ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4891,6 +4929,52 @@ msgstr "Редактировать полигон (удалить точку)" msgid "Set Handle" msgstr "Задать обработчик" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Ошибка при загрузке изображения:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Никаких пикселей с прозрачностью > 128 в изображении..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Маска выброса загружена" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Маска выброса очищена" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Частицы" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Количество создаваемых точек:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Маска излучения" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Из пикселя" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Цвета излучения" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "ЦПУЧастицы" @@ -5241,52 +5325,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Возможно установить точку только в ParticlesMaterial материал" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Ошибка при загрузке изображения:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Никаких пикселей с прозрачностью > 128 в изображении..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Маска выброса загружена" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Маска выброса очищена" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Преобразовать в CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Частицы" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Количество создаваемых точек:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Время генерации (сек):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Маска излучения" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Из пикселя" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Цвета излучения" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Грани не содержат зоны!" @@ -5797,7 +5844,8 @@ msgid "Save Theme As..." msgstr "Сохранить тему как..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Ссылка на Класс" #: editor/plugins/script_editor_plugin.cpp @@ -6133,12 +6181,12 @@ msgstr "У этого скелета нет костей, создайте до� #: editor/plugins/skeleton_2d_editor_plugin.cpp #, fuzzy msgid "Create Rest Pose from Bones" -msgstr "Сделать позу покоя (из костей)" +msgstr "Создать Позу Покоя из Костей" #: editor/plugins/skeleton_2d_editor_plugin.cpp #, fuzzy msgid "Set Rest Pose to Bones" -msgstr "Сделать позу покоя (из костей)" +msgstr "Задать Позу Покоя Костям" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -6295,7 +6343,7 @@ msgstr "Зад" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Align with View" -msgstr "Совместить с видом" +msgstr "Выравнять с областью просмотра" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -6405,7 +6453,7 @@ msgstr "XForm диалоговое окно" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Snap Nodes To Floor" -msgstr "Привязать к полу" +msgstr "Подравнять Узел с Полом" #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode (Q)" @@ -6625,7 +6673,27 @@ msgstr "После" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Nameless gizmo" -msgstr "Безымянный штуковина" +msgstr "Безымянный гизмо" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Создать 2D Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Создать Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Создать полигон столкновений" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Создан затеняющий полигон" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -6641,16 +6709,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Некорректная геометрия, не может быть заменена сеткой." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Некорректная геометрия, не может быть заменена сеткой." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Некорректная геометрия, не может быть заменена сеткой." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Некорректная геометрия, не может быть заменена сеткой." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Спрайт" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Преобразовать в 2D Mesh" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Создать 2D Mesh" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Передвинуть полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Создать полигон столкновений" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Создан затеняющий полигон" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7002,18 +7097,16 @@ msgid "Merge from Scene" msgstr "Слияние из сцены" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Next Coordinate" -msgstr "Следующий этаж" +msgstr "Следующая Координата" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." msgstr "Выберите следующую фигуру, элемент тайла или тайл." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Previous Coordinate" -msgstr "Предыдущий этаж" +msgstr "Предыдущая Координата" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." @@ -7032,9 +7125,8 @@ msgid "Erase bitmask." msgstr "Стереть битовую маску." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "Создать новый узел." +msgstr "Создать новый прямоугольник." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -7174,14 +7266,12 @@ msgid "Clear Tile Bitmask" msgstr "Очистить Битовую Маску Плитки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Concave" -msgstr "Передвинуть полигон" +msgstr "Сделать Полигон Вогнутым" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "Передвинуть полигон" +msgstr "Сделать Полигон Выпуклым" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Tile" @@ -7230,17 +7320,20 @@ msgstr "Задать единообразное имя" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Set Input Default Port" -msgstr "Установить по умолчанию для '%s'" +msgstr "Задать Порт по умолчанию для Ввода" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node to Visual Shader" -msgstr "VisualShader" +msgstr "Добавить Узел в Визуальный Шейдер" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "Дублировать узел(узлы)" +msgstr "Дублировать узлы" + +#: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Удалить узел" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" @@ -7265,12 +7358,12 @@ msgstr "Визуальный Шейдер" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Edit Visual Property" -msgstr "Редактировать приоритет тайла" +msgstr "Редактировать Визуальное Свойство" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Visual Shader Mode Changed" -msgstr "Изменения шейдеров" +msgstr "Режим Визуального Шейдера был изменен" #: editor/project_export.cpp msgid "Runnable" @@ -7313,7 +7406,7 @@ msgstr "Экспорт всех" #: editor/project_export.cpp #, fuzzy msgid "The given export path doesn't exist:" -msgstr "Путь не существует." +msgstr "Данный путь экспорта не существует:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" @@ -7620,12 +7713,13 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" -"Файл настроек проекта был сгенерирован старой версией движка и должен быть " -"преобразован для текущей версии:\n" +"Файл настроек проекта не указывает версию версии движка, на котором он был " +"сгенерирован:\n" "\n" "%s\n" "\n" -"Вы хотите преобразовать его?\n" +"Если вы продолжите, то он будет преобразован в формат текущей версии " +"движка.\n" "Внимание: Вы больше не сможете открыть проект предыдущими версиями движка." #: editor/project_manager.cpp @@ -8356,9 +8450,8 @@ msgid "Instantiated scenes can't become root" msgstr "Мгновенные сцены не могут быть корневыми" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make node as Root" -msgstr "Создать корневой узел сцены" +msgstr "Сделать узел корневым" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" @@ -8399,7 +8492,7 @@ msgstr "Сделать локальным" #: editor/scene_tree_dock.cpp #, fuzzy msgid "New Scene Root" -msgstr "Создать корневой узел сцены" +msgstr "Новый Корневой Узел Сцены" #: editor/scene_tree_dock.cpp msgid "Create Root Node:" @@ -8466,10 +8559,6 @@ msgid "Open documentation" msgstr "Открыть документацию" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Удалить узел(узлы)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Добавить дочерний узел" @@ -8831,23 +8920,20 @@ msgid "Set From Tree" msgstr "Установить из дерева" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Erase Shortcut" -msgstr "Переход ИЗ" +msgstr "Удалить Привязанную Кнопку" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Restore Shortcut" -msgstr "Горячие клавиши" +msgstr "Восстановить Привязанную Кнопку" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Change Shortcut" -msgstr "Изменить привязку" +msgstr "Изменить Привязанную Кнопку" #: editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "Горячие клавиши" +msgstr "Привязанные кнопки" #: editor/settings_config_dialog.cpp msgid "Binding" @@ -10346,12 +10432,15 @@ msgstr "Назначить форму." msgid "Varyings can only be assigned in vertex function." msgstr "Изменения могут быть назначены только в функции вершины." +#~ msgid "Snap (s): " +#~ msgstr "Привязка (сек): " + +#~ msgid "Insert keys." +#~ msgstr "Вставить ключи." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Добавить выбранную сцену(ы), в качестве потомка выбранного узла." -#~ msgid "FPS" -#~ msgstr "FPS" - #~ msgid "Warnings:" #~ msgstr "Предупреждения:" @@ -11891,9 +11980,6 @@ msgstr "Изменения могут быть назначены только � #~ msgid "Cannot go into subdir:" #~ msgstr "Невозможно перейти в подпапку:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "Вставить ключи (Ins)" - #~ msgid "Top (Num7)" #~ msgstr "Вид сверху (Num 7)" diff --git a/editor/translations/si.po b/editor/translations/si.po index dab5cb3e0f..581ab36ee0 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -417,13 +417,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3682,6 +3690,11 @@ msgid "Delete Node" msgstr "යතුරු මකා දමන්න" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "ලුහුබදින්නා සක්රිය/අක්රිය." @@ -4635,10 +4648,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Anim යතුරක් ඇතුලත් කරන්න" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4706,6 +4744,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5056,52 +5140,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5605,7 +5652,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6424,6 +6471,24 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "සාදන්න" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "සාදන්න" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6436,15 +6501,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7021,6 +7106,11 @@ msgid "Duplicate Nodes" msgstr "යතුරු පිටපත් කරන්න" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "යතුරු මකා දමන්න" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8170,10 +8260,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index a664935a69..862f095dd3 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -421,13 +421,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3755,6 +3763,11 @@ msgid "Delete Node" msgstr "Všetky vybrané" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4724,10 +4737,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Animácia Vložiť Kľúč" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4796,6 +4834,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5152,52 +5236,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5717,7 +5764,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6547,6 +6594,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Vytvoriť adresár" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Vytvoriť adresár" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Vytvoriť adresár" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Vytvoriť adresár" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6559,19 +6626,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" +msgid "Convert to Polygon2D" +msgstr "Všetky vybrané" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" msgstr "Vytvoriť adresár" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "" @@ -7175,6 +7263,11 @@ msgid "Duplicate Nodes" msgstr "Duplikovať výber" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Všetky vybrané" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8343,10 +8436,6 @@ msgid "Open documentation" msgstr "Popis:" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index a18d140b17..23d7e5ebee 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -441,7 +441,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Korak (s):" #: editor/animation_track_editor.cpp @@ -449,6 +449,14 @@ msgstr "Korak (s):" msgid "Animation step value." msgstr "Drevo animacije je veljavno." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3914,6 +3922,11 @@ msgid "Delete Node" msgstr "Izberi Gradnik" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Preklop način pisanja brez motenj." @@ -4915,8 +4928,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "V Animacijo Vstavi Ključ" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "V Animacijo Vstavi Ključ" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4988,6 +5026,52 @@ msgstr "Uredi Poligon (Odstrani Točko)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5338,52 +5422,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5917,7 +5964,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6757,6 +6804,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Ustvari Nov %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Ustvarite Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Ustvarite Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Ustvarite Mapo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Model je prazen!" @@ -6769,17 +6836,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Sprite" +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Ustvari Nov %s" +msgid "Convert to Mesh2D" +msgstr "Pretvori V..." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Odstrani Poligon in Točko" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Ustvarite Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7393,6 +7482,11 @@ msgid "Duplicate Nodes" msgstr "Animacija Podvoji ključe" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Izberi Gradnik" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8572,10 +8666,6 @@ msgid "Open documentation" msgstr "Odpri Nedavne" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index f3b24cc2f5..d52ebdcd96 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -407,13 +407,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Vlera e hapit për animacionin." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3793,6 +3801,11 @@ msgid "Delete Node" msgstr "Fshi Nyjen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4744,10 +4757,35 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Vendos Key" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" msgstr "" @@ -4815,6 +4853,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5165,52 +5249,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5714,7 +5761,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6532,6 +6579,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Krijo %s të ri" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Krijo një Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Krijo një Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Krijo një Folder" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6544,15 +6611,37 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" +msgstr "Konverto në %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Krijo një Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7123,6 +7212,11 @@ msgid "Duplicate Nodes" msgstr "Dyfisho Nyjet" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Fshi Nyjen" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8272,10 +8366,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 31ff003c25..57e05ca847 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -442,14 +442,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Један корак (сек.):" +msgid "Snap:" +msgstr "Залепи" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "Анимационо дрво је важеће." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3942,6 +3950,11 @@ msgid "Delete Node" msgstr "Направи чвор" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Укљ./Искљ. режим без сметње." @@ -4937,9 +4950,34 @@ msgid "Layout" msgstr "Распоред" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Убаци кључеве" +msgid "Insert keys (based on mask)." +msgstr "Убаци кључ (постојеће траке)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Уметни кључ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5012,6 +5050,52 @@ msgstr "Уреди полигон (обриши тачку)" msgid "Set Handle" msgstr "Постави дршку" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Грешка при учитавању слике:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "У слици нема пиксела са транспарентношћу већом од 128..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Учитај маску емисије" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Очисти маску емисије" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Честице" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Број генерисаних тачака:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Маска емисије" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Сними од пиксела" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Боје емисије" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5366,22 +5450,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Тачка се само може поставити у ParticlesMaterial процесни материјал" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Грешка при учитавању слике:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "У слици нема пиксела са транспарентношћу већом од 128..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Учитај маску емисије" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Очисти маску емисије" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5389,30 +5457,9 @@ msgstr "Претвори у велика слова" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Честице" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Број генерисаних тачака:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Време генерисања (сек.):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Маска емисије" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Сними од пиксела" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Боје емисије" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Стране не садрже област!" @@ -5954,7 +6001,8 @@ msgid "Save Theme As..." msgstr "Сачувај тему као..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " референца класе" #: editor/plugins/script_editor_plugin.cpp @@ -6811,6 +6859,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Направи ивичну мрежу" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Направи полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Направи навигациони полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Направи осенчен полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Мрежа је празна!" @@ -6823,19 +6891,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "Налепи оквир" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Претвори у велика слова" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Направи ивичну мрежу" +msgid "Convert to Polygon2D" +msgstr "Помери полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Направи навигациони полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Направи осенчен полигон" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7467,6 +7557,11 @@ msgid "Duplicate Nodes" msgstr "Дуплирај чвор/ове графа" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Направи чвор" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8663,10 +8758,6 @@ msgid "Open documentation" msgstr "Отвори Godot онлајн документацију" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -10442,12 +10533,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Један корак (сек.):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Убаци кључеве" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Направи следећу сцену/е као дете одабраног чвора." -#~ msgid "FPS" -#~ msgstr "FPS" - #, fuzzy #~ msgid "Font Size:" #~ msgstr "Поглед испред" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 39d66c018c..ac3590e494 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -423,13 +423,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3697,6 +3705,11 @@ msgid "Delete Node" msgstr "Animacija Obriši Ključeve" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4653,8 +4666,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Animacija dodaj ključ" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Animacija dodaj ključ" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4726,6 +4764,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5076,52 +5160,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5630,7 +5677,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6451,6 +6498,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6463,19 +6530,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" +msgid "Convert to Polygon2D" msgstr "Napravi" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "" @@ -7065,6 +7153,11 @@ msgid "Duplicate Nodes" msgstr "Animacija Uduplaj Ključeve" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Animacija Obriši Ključeve" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8217,10 +8310,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 822a6f9388..63a6d6e6c7 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -432,7 +432,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Steg (s):" #: editor/animation_track_editor.cpp @@ -440,6 +440,14 @@ msgstr "Steg (s):" msgid "Animation step value." msgstr "Animation" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -4159,6 +4167,12 @@ msgid "Delete Node" msgstr "Ta bort Nod(er)" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Delete Node(s)" +msgstr "Ta bort Nod(er)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Växla distraktionsfritt läge." @@ -5165,8 +5179,33 @@ msgid "Layout" msgstr "Layout" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Anim Infoga Nyckel" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Anim Infoga Nyckel" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5242,6 +5281,53 @@ msgstr "Redigera Polygon (ta bort punkt)" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +#, fuzzy +msgid "Particles" +msgstr "Partiklar" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5603,22 +5689,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5626,31 +5696,9 @@ msgstr "Konvertera till Versaler" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy -msgid "Particles" -msgstr "Partiklar" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -6185,7 +6233,7 @@ msgid "Save Theme As..." msgstr "Spara Tema Som..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -7077,6 +7125,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Skapa Ny" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Skapa Prenumeration" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Skapa Prenumeration" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Skapa Mapp" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Sökvägen är tom" @@ -7089,18 +7157,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Konvertera till %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Skapa Ny" +msgid "Convert to Polygon2D" +msgstr "Konvertera till %s" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Skapa Prenumeration" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7725,6 +7814,11 @@ msgid "Duplicate Nodes" msgstr "Duplicera Nod(er)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Ta bort Nod(er)" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8966,11 +9060,6 @@ msgstr "Öppna Senaste" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Delete Node(s)" -msgstr "Ta bort Nod(er)" - -#: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add Child Node" msgstr "Lägg till Barn-Node" @@ -10842,9 +10931,6 @@ msgstr "" #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Instansiera valda scen(er) som barn till vald Node." -#~ msgid "FPS" -#~ msgstr "FPS" - #, fuzzy #~ msgid "Warnings:" #~ msgstr "Varning" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 1bb5f50fe1..17e837d5b1 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -418,13 +418,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3686,6 +3694,11 @@ msgid "Delete Node" msgstr "அனைத்து தேர்வுகள்" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4642,7 +4655,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4713,6 +4750,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5063,52 +5146,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5613,7 +5659,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6431,6 +6477,23 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "அனைத்து தேர்வுகள்" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6443,15 +6506,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -7029,6 +7112,11 @@ msgid "Duplicate Nodes" msgstr "அசைவூட்டு போலிபச்சாவிகள்" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "அனைத்து தேர்வுகள்" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8180,10 +8268,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index 9b70573576..b5f7015c88 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -405,13 +405,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3665,6 +3673,11 @@ msgid "Delete Node" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4616,7 +4629,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4687,6 +4724,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5037,52 +5120,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5586,7 +5632,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6404,6 +6450,22 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6416,15 +6478,35 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" +msgid "Create LightOccluder2D Sibling" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6995,6 +7077,10 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8144,10 +8230,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 79ad3c5357..5b1470e970 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -448,14 +448,22 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Snap (พิกเซล):" +msgid "Snap:" +msgstr "จำกัดการเคลื่อนย้าย" #: editor/animation_track_editor.cpp #, fuzzy msgid "Animation step value." msgstr "ผังแอนิเมชันถูกต้อง" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "เฟรมต่อวินาที" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3891,6 +3899,11 @@ msgid "Delete Node" msgstr "ลบโหนด" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "ลบโหนด" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "โหมดไร้สิ่งรบกวน" @@ -4890,9 +4903,34 @@ msgid "Layout" msgstr "เลย์เอาต์" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "เพิ่มคีย์" +msgid "Insert keys (based on mask)." +msgstr "เพิ่มคีย์ (แทร็กที่มีอยู่แล้ว)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "แทรกคีย์แอนิเมชัน" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4965,6 +5003,52 @@ msgstr "แก้ไขรูปหลายเหลี่ยม (ลบจุ� msgid "Set Handle" msgstr "ปรับขนาดรูปร่าง" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "ผิดพลาดขณะโหลดรูป:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "รูปไม่มีพิกเซลใดที่ความโปร่งแสง > 128 ..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "โหลด Mask การปะทุ" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "ลบ Mask การปล่อย" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "อนุภาค" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "จำนวนจุดที่สร้างขึ้น:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Mask การปะทุ" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "ใช้สีพิกเซล" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "สีการปะทุ" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5317,22 +5401,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "สามารถกำหนดจุดให้แก่ ParticlesMaterial เท่านั้น" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "ผิดพลาดขณะโหลดรูป:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "รูปไม่มีพิกเซลใดที่ความโปร่งแสง > 128 ..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "โหลด Mask การปะทุ" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "ลบ Mask การปล่อย" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5340,30 +5408,9 @@ msgstr "แปลงเป็นตัวพิมพ์ใหญ่" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "อนุภาค" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "จำนวนจุดที่สร้างขึ้น:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "เวลาในการสร้าง (วินาที):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Mask การปะทุ" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "ใช้สีพิกเซล" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "สีการปะทุ" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "หน้าไม่มีพื้นที่!" @@ -5901,7 +5948,8 @@ msgid "Save Theme As..." msgstr "บันทึกธีมเป็น" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " ตำราอ้างอิงคลาส" #: editor/plugins/script_editor_plugin.cpp @@ -6752,6 +6800,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "สร้างเส้นขอบ Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "สร้างรูปหลายเหลี่ยม" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "สร้างรูปทรงนำทาง" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "สร้างรูปหลายเหลี่ยมกั้นแสง" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "ตำแหน่งบันทึกว่างเปล่า!" @@ -6764,19 +6832,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "SpriteFrames" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "แปลงเป็น %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "สร้างเส้นขอบ Mesh" +msgid "Convert to Polygon2D" +msgstr "ย้ายรูปหลายเหลี่ยม" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "สร้างรูปทรงนำทาง" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "สร้างรูปหลายเหลี่ยมกั้นแสง" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7405,6 +7495,11 @@ msgid "Duplicate Nodes" msgstr "ทำซ้ำโหนด" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "ลบโหนด" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8609,10 +8704,6 @@ msgid "Open documentation" msgstr "เปิดคู่มือ" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "ลบโหนด" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "เพิ่มโหนดลูก" @@ -10432,12 +10523,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Snap (พิกเซล):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "เพิ่มคีย์" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "อินสแตนซ์ฉากที่เลือกให้เป็นโหนดลูกของโหนดที่เลือก" -#~ msgid "FPS" -#~ msgstr "เฟรมต่อวินาที" - #, fuzzy #~ msgid "Warnings:" #~ msgstr "คำเตือน" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 6ee2fd344a..30f753d6ab 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -23,12 +23,14 @@ # ege1212 <owlphp@gmail.com>, 2019. # Ömer YAZICIOĞLU <oyazicioglu@gmail.com>, 2019. # Mertcan Duman <mertcan.dmn16@gmail.com>, 2019. +# Furkan Türkal <furkan.turkal@hotmail.com>, 2019. +# Aiden Demir <dnm00110011@hotmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-19 15:04+0000\n" -"Last-Translator: Mertcan Duman <mertcan.dmn16@gmail.com>\n" +"PO-Revision-Date: 2019-04-14 13:04+0000\n" +"Last-Translator: Aiden Demir <dnm00110011@hotmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -52,17 +54,16 @@ msgstr "Byte kodu çözmek için yetersiz byte, ya da Geçersiz format." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Geçersiz girdi, ifadede %i (geçirilmedi)" +msgstr "%i ifadesindeki girdi geçersiz" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" -"\"self\" ifadesi kullanılamaz çünkü örnekleme \"null\" yani tanımlanmadı." +msgstr "\"self\" ifadesi kullanılamaz, çünkü nesne \"null\" (tanımlandı)." #: core/math/expression.cpp #, fuzzy msgid "Invalid operands to operator %s, %s and %s." -msgstr "%s düğümünde geçersiz indeks özelliği ismi '%s'." +msgstr "Geçersiz işlenen operatörler %s, %s ve %s" #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -90,33 +91,28 @@ msgid "Balanced" msgstr "Dengelenmiş" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Mirror" -msgstr "ayna" +msgstr "Ayna" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" msgstr "Anahtar Gir" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Duplicate Selected Key(s)" -msgstr "Seçimi Çoğalt" +msgstr "Seçilen Tuşu/Tuşları Çoğalt" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Delete Selected Key(s)" -msgstr "Seçilenleri Sil" +msgstr "Seçilen Tuşu/Tuşları Sil" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Add Bezier Point" -msgstr "Nokta Ekle" +msgstr "Bezier Noktası Ekle" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Move Bezier Points" -msgstr "Noktayı Taşı" +msgstr "Bezier Noktalarını Taşı" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -285,9 +281,8 @@ msgid "Duplicate Key(s)" msgstr "Düğüm(leri) Çoğalt" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Key(s)" -msgstr "Düğümleri Sil" +msgstr "Tuşları Sil" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" @@ -344,7 +339,6 @@ msgid "Anim Insert Key" msgstr "Animasyon Anahtar Gir" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Step" msgstr "Animasyon Adımını Değiştir" @@ -446,13 +440,21 @@ msgstr "İzleri düğüme göre grupla veya onları düz liste olarak göster." #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " -msgstr "Yapış (Noktalara):" +msgid "Snap:" +msgstr "Yapış" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Animasyon adım değeri." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "FPS" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -487,17 +489,14 @@ msgid "Duplicate Transposed" msgstr "Tersine Çevrilmişi Çoğalt" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" msgstr "Seçilenleri Sil" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" msgstr "Sonraki Adıma Git" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" msgstr "Önceki Adıma Git" @@ -752,12 +751,10 @@ msgid "Disconnect" msgstr "Bağlantıyı kes" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect Signal: " msgstr "Bağlantı Sinyali: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection: " msgstr "Bağlantıları Düzenle " @@ -779,7 +776,6 @@ msgid "Disconnect All" msgstr "Tüm Bağlantıları Kes" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." msgstr "Düzenle" @@ -918,9 +914,8 @@ msgid "Error loading:" msgstr "Yüklerken hata:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Load failed due to missing dependencies:" -msgstr "Sahnedeki kayıp bağımlılıklar yüzünden sahneyi yükleme başarısız oldu:" +msgstr "Yükleme eksik bağlamlar yüzünden başarısız oldu:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1218,9 +1213,8 @@ msgid "Add Bus" msgstr "Bus ekle" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." -msgstr "Audio Bus Yerleşim Düzenini Farklı Kaydet..." +msgstr "" #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1388,27 +1382,30 @@ msgid "Storing File:" msgstr "Dosya Depolama:" #: editor/editor_export.cpp -#, fuzzy msgid "No export template found at the expected path:" msgstr "" -"Hiçbir dışa aktarım kalıbı bulunamadı.\n" -"Dışa aktarım kalıplarını indirin ve yükleyin..." #: editor/editor_export.cpp msgid "Packing" msgstr "Çıkınla" #: editor/editor_export.cpp +#, fuzzy msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" +"Hedef platform GLES2 için 'ETC' doku sıkıştırma gerektirir. Proje " +"Ayarları'nda 'Import Etc' etkinleştirin." #: editor/editor_export.cpp +#, fuzzy msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"Hedef platform GLES3 için 'ETC2' doku sıkıştırma gerektirir. Proje " +"Ayarları'nda 'Import Etc 2' etkinleştirin." #: editor/editor_export.cpp msgid "" @@ -3927,6 +3924,11 @@ msgid "Delete Node" msgstr "Düğümleri Sil" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Düğümleri Sil" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Dikkat-Dağıtmayan Kipine geç." @@ -4930,9 +4932,34 @@ msgid "Layout" msgstr "Yerleşim Düzeni" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Anahtar Gir (Var Olan İzler)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "Anahtarları Gir" +msgid "Auto Insert Key" +msgstr "Animasyon Anahtar Gir" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5005,6 +5032,52 @@ msgstr "Çokluyu Düzenleyin (Noktayı Silin)" msgid "Set Handle" msgstr "Tutamacı Ayarla" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Resim yüklenirken hata:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "Saydamlığı olan nokta yok > 128 bedizde..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Yayma Maskesini Yükle" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Yayma Maskesini Temizle" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Parçacıklar" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Üretilen Nokta Sayısı:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Emisyon Maskesi" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Pikselden Yakala" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Emisyon Renkleri" + #: editor/plugins/cpu_particles_editor_plugin.cpp #, fuzzy msgid "CPUParticles" @@ -5357,22 +5430,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "Nokta sadece ParçacıkMateryal işlem materyalinin içinde ayarlanabilir" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Resim yüklenirken hata:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "Saydamlığı olan nokta yok > 128 bedizde..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Yayma Maskesini Yükle" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Yayma Maskesini Temizle" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5380,30 +5437,9 @@ msgstr "Büyük Harfe Dönüştür" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Parçacıklar" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Üretilen Nokta Sayısı:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Nesil Süresi (sn):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Emisyon Maskesi" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Pikselden Yakala" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Emisyon Renkleri" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Yüzler alan içermez!" @@ -5941,7 +5977,8 @@ msgid "Save Theme As..." msgstr "Temayı Farklı Kaydet..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Sınıf Başvurusu" #: editor/plugins/script_editor_plugin.cpp @@ -6792,6 +6829,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "Anahat Örüntüsü Oluştur" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Çoklu Oluşturun" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Yönlendirici Çokgeni Oluştur" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Engelleyici Çokgeni Oluştur" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Kayıt yolu boş!" @@ -6804,19 +6861,41 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Sprite" msgstr "GörüntüKareleri" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "Şuna Dönüştür %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Anahat Örüntüsü Oluştur" +msgid "Convert to Polygon2D" +msgstr "Çokgeni Taşı" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Yönlendirici Çokgeni Oluştur" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Engelleyici Çokgeni Oluştur" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7444,6 +7523,11 @@ msgid "Duplicate Nodes" msgstr "Düğüm(leri) Çoğalt" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Düğümleri Sil" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8658,10 +8742,6 @@ msgid "Open documentation" msgstr "Çevrimiçi Godot dökümanlarını aç" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Düğümleri Sil" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Çocuk Düğüm Ekle" @@ -10545,12 +10625,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#, fuzzy +#~ msgid "Snap (s): " +#~ msgstr "Yapış (Noktalara):" + +#, fuzzy +#~ msgid "Insert keys." +#~ msgstr "Anahtarları Gir" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Seçilen sahneyi/sahneleri seçilen düğüme çocuk olarak örneklendir." -#~ msgid "FPS" -#~ msgstr "FPS" - #, fuzzy #~ msgid "Warnings:" #~ msgstr "Uyarılar" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 0929e66b29..637c1ffac4 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -425,13 +425,22 @@ msgstr "" "Групувати доріжки за вузлами або показувати їх у форматі простого списку." #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "Прилипання (с): " +#, fuzzy +msgid "Snap:" +msgstr "Прилипання" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "Значення кроку анімації." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "Кадри за секунду" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3819,6 +3828,11 @@ msgid "Delete Node" msgstr "Вилучити вузол" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Вилучити вузли" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "Увімкнути або вимкнути фільтр" @@ -4796,8 +4810,34 @@ msgid "Layout" msgstr "Макет" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "Вставити ключі." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Вставити ключ (існуючі доріжки)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "Вставити ключ анімації" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4870,6 +4910,52 @@ msgstr "Редагувати полігон (вилучити точку)" msgid "Set Handle" msgstr "Встановити обробник" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Помилка завантаження зображення:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "В зображенні немає пікселів з прозорістю > 128..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Завантажити маску випромінювання" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Очистити маску випромінювання" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "Частинки" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Кількість генерованих точок:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "Маска випромінювання" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "Захопити з пікселя" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "Кольори випромінювання" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPUParticles" @@ -5221,52 +5307,15 @@ msgstr "" "Поставити точку можна тільки в процедурному матеріалі ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "Помилка завантаження зображення:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "В зображенні немає пікселів з прозорістю > 128..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "Завантажити маску випромінювання" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "Очистити маску випромінювання" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "Перетворити на CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "Частинки" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "Кількість генерованих точок:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "Час генерації (сек):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "Маска випромінювання" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "Захопити з пікселя" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "Кольори випромінювання" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "Грані не містять ділянки!" @@ -5777,7 +5826,8 @@ msgid "Save Theme As..." msgstr "Зберегти тему як..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " Посилання на клас" #: editor/plugins/script_editor_plugin.cpp @@ -6603,6 +6653,26 @@ msgid "Nameless gizmo" msgstr "Штука без назви" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Створити плоску сітку" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Створити Polygon3D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Створити полігон зіткнення" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Створено затінювальний полігон" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Спрайт порожній!" @@ -6617,16 +6687,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Некоректна геометрія, неможливо замінити сіткою." #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "Некоректна геометрія, неможливо замінити сіткою." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "Некоректна геометрія, неможливо замінити сіткою." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "Некоректна геометрія, неможливо замінити сіткою." + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Спрайт" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "Перетворити на плоску сітку" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "Створити плоску сітку" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "Перемістити полігон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Створити полігон зіткнення" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "Створено затінювальний полігон" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7215,6 +7312,11 @@ msgid "Duplicate Nodes" msgstr "Дублювати вузли" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Вилучити вузол" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Змінено тип введення для візуального шейдера" @@ -8436,10 +8538,6 @@ msgid "Open documentation" msgstr "Відкрити документацію" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Вилучити вузли" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Додати дочірній вузол" @@ -10326,12 +10424,15 @@ msgstr "Призначення однорідного." msgid "Varyings can only be assigned in vertex function." msgstr "Змінні величини можна пов'язувати лише із функцією вузлів." +#~ msgid "Snap (s): " +#~ msgstr "Прилипання (с): " + +#~ msgid "Insert keys." +#~ msgstr "Вставити ключі." + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "Додати вибрану сцену(и), як нащадка вибраного вузла." -#~ msgid "FPS" -#~ msgstr "Кадри за секунду" - #~ msgid "Warnings:" #~ msgstr "Попередження:" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 72cbf7eb88..cf4d0fe630 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -413,13 +413,21 @@ msgid "Group tracks by node or display them as plain list." msgstr "" #: editor/animation_track_editor.cpp -msgid "Snap (s): " +msgid "Snap:" msgstr "" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3714,6 +3722,11 @@ msgid "Delete Node" msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "" @@ -4680,7 +4693,31 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4752,6 +4789,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5105,52 +5188,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5667,7 +5713,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6494,6 +6540,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6506,19 +6572,40 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" +msgid "Convert to Polygon2D" +msgstr ".تمام کا انتخاب" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" msgstr "سب سکریپشن بنائیں" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "" @@ -7113,6 +7200,11 @@ msgid "Duplicate Nodes" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8272,10 +8364,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 74bd1df7eb..d18046ad52 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -436,7 +436,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "Bước (s):" #: editor/animation_track_editor.cpp @@ -444,6 +444,14 @@ msgstr "Bước (s):" msgid "Animation step value." msgstr "Phóng Animation." +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3798,6 +3806,11 @@ msgid "Delete Node" msgstr "Xóa Node(s)" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Xóa Node(s)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "Bật tắt Ưa thích" @@ -4777,8 +4790,33 @@ msgid "Layout" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "Chèn Key Anim" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "Chèn Key Anim" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4850,6 +4888,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5200,52 +5284,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5764,7 +5811,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6594,6 +6641,26 @@ msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "Tạo %s Mới" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "Tạo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "Tạo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "Tạo Folder" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -6606,17 +6673,38 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "Tạo %s Mới" +msgid "Convert to Polygon2D" +msgstr "Xóa Animation" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "Tạo" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7216,6 +7304,11 @@ msgid "Duplicate Nodes" msgstr "Nhân đôi Node(s)" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "Xóa Node(s)" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8382,10 +8475,6 @@ msgid "Open documentation" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "Xóa Node(s)" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index e79ca6a36d..3e03b0e8ff 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -43,12 +43,13 @@ # Song DongHui <14729626293@163.com>, 2019. # simano clio <sim2cle@gmail.com>, 2019. # ByonkoGalilei <byonko@qq.com>, 2019. +# qjyqjyqjyqjy <qjyqjyqjyqjy@sina.com.cn>, 2019. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2019-04-08 10:35+0000\n" -"Last-Translator: ByonkoGalilei <byonko@qq.com>\n" +"PO-Revision-Date: 2019-04-23 15:48+0000\n" +"Last-Translator: qjyqjyqjyqjy <qjyqjyqjyqjy@sina.com.cn>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -56,7 +57,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.6-dev\n" +"X-Generator: Weblate 3.7-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -67,7 +68,7 @@ msgstr "convert函数参数类型非法,请传入以“TYPE_”打头的常量 #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "没有足够的字节来解码或格式不正确。" +msgstr "没有足够的字节来解码或无效的格式。" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -75,27 +76,27 @@ msgstr "表达式中有非法的输入 %i (未通过)" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "自身无法使用因为实例为空" +msgstr "self无法使用因为实例为空(不通过)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "运算符%s,%s和%s的操作数无效。" +msgstr "操作符的操作数无效%s, %s and %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "无效内存地址类型 %s,基类 %s" +msgstr "无效类型索引 %s,从基类 %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "对基础类型 %s 非法的具名索引 '%s'" +msgstr "从基类 %s 无效的名称索引 '%s'" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr ":无效参数类型: '%s'" +msgstr "构造的参数无效: '%s'" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "在对 '%s' 的调用中:" +msgstr "对'%s'调用 :" #: editor/animation_bezier_editor.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -132,7 +133,7 @@ msgstr "移动贝塞尔顶点" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "复制关键帧" +msgstr "动画复制关键帧" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" @@ -140,7 +141,7 @@ msgstr "删除关键帧" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "修改动画关键帧的时间" +msgstr "修改动画关键帧的时长" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" @@ -412,9 +413,8 @@ msgid "Track path is invalid, so can't add a method key." msgstr "跟踪路径无效,所以不能添加方法帧。" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "调用方法轨道" +msgstr "添加方法轨道键" #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -450,13 +450,22 @@ msgid "Group tracks by node or display them as plain list." msgstr "按节点分组或将它们显示为普通列表。" #: editor/animation_track_editor.cpp -msgid "Snap (s): " -msgstr "吸附: " +#, fuzzy +msgid "Snap:" +msgstr "吸附" #: editor/animation_track_editor.cpp msgid "Animation step value." msgstr "动画步进值。" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "帧数" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -1299,7 +1308,7 @@ msgstr "不在资源路径下。" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "添加Autoload" +msgstr "添加自动加载" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp scene/gui/file_dialog.cpp @@ -2439,7 +2448,7 @@ msgstr "在线文档" #: editor/editor_node.cpp msgid "Q&A" -msgstr "问答" +msgstr "常见问题与答案" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -3590,19 +3599,16 @@ msgstr "加载..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Move Node Point" -msgstr "移动点" +msgstr "移动节点" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Limits" -msgstr "更改混合时间" +msgstr "更改混合空间1D限制" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Labels" -msgstr "更改混合时间" +msgstr "更改混合空间1D标签" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3612,24 +3618,21 @@ msgstr "此类型的节点不能被使用。仅允许使用根节点。" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Node Point" -msgstr "添加节点" +msgstr "添加节点顶点" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "添加动画" +msgstr "添加动画点" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Remove BlendSpace1D Point" -msgstr "移除路径顶点" +msgstr "移除混合空间1D顶点" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "" +msgstr "移动混合空间1D节点顶点" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3678,24 +3681,20 @@ msgid "Add Triangle" msgstr "添加三角面" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Limits" -msgstr "更改混合时间" +msgstr "更改混合空间2D限制" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Labels" -msgstr "更改混合时间" +msgstr "更改混合空间2D标签" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Point" -msgstr "移除路径顶点" +msgstr "移除混合空间2D顶点" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Triangle" -msgstr "删除变量" +msgstr "移除混合空间2D三角形" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." @@ -3740,9 +3739,8 @@ msgid "Output node can't be added to the blend tree." msgstr "输出节点不能被添加到混合树。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Add Node to BlendTree" -msgstr "从树中添加节点" +msgstr "在合成树中添加节点" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -3770,11 +3768,15 @@ msgstr "设置动画" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Node" msgstr "删除节点" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "删除节点" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" msgstr "打开/关闭过滤器" @@ -4732,8 +4734,34 @@ msgid "Layout" msgstr "布局" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert keys." -msgstr "插入帧。" +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "插入关键帧( 创建轨道)" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "插入关键帧" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -4805,6 +4833,52 @@ msgstr "编辑多边形(移除顶点)" msgid "Set Handle" msgstr "设置处理程序" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "加载图片出错:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "图片中没有透明度> 128的像素..." + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "加载Emission Mask(发射屏蔽)" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "清除Emission Mask(发射屏蔽)" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "粒子" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "生成顶点计数:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "发光遮罩(mask)" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "从像素捕捉" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "发光颜色" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "CPU粒子" @@ -5155,52 +5229,15 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "可以设置ParticlesMaterial 点的材质" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "加载图片出错:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "图片中没有透明度> 128的像素..." - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "加载Emission Mask(发射屏蔽)" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "清除Emission Mask(发射屏蔽)" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" msgstr "转换为 CPU粒子" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "粒子" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "生成顶点计数:" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "生成时间(秒):" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "发光遮罩(mask)" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "从像素捕捉" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "发光颜色" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "面不含有区域!" @@ -5704,7 +5741,8 @@ msgid "Save Theme As..." msgstr "主题另存为..." #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +#, fuzzy +msgid "%s Class Reference" msgstr " 类引用" #: editor/plugins/script_editor_plugin.cpp @@ -6198,9 +6236,8 @@ msgid "Rear" msgstr "后方" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align with View" -msgstr "与视图对齐" +msgstr "对齐视图" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -6530,6 +6567,26 @@ msgid "Nameless gizmo" msgstr "未命名的Gizmo" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "创建 2D 网格" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "创建3D多边形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "创建碰撞多边形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "添加遮光多边形" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite 是空的!" @@ -6542,16 +6599,43 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "无效的几何体,无法使用网格替换。" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "无效的几何体,无法使用网格替换。" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "无效的几何体,无法使用网格替换。" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "无效的几何体,无法使用网格替换。" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "Sprite 精灵" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Convert to 2D Mesh" +#, fuzzy +msgid "Convert to Mesh2D" msgstr "转换为 2D 网格" #: editor/plugins/sprite_editor_plugin.cpp -msgid "Create 2D Mesh" -msgstr "创建 2D 网格" +#, fuzzy +msgid "Convert to Polygon2D" +msgstr "移动多边形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "创建碰撞多边形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "添加遮光多边形" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -6916,7 +7000,7 @@ msgstr "上一个坐标" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "" +msgstr "选择上一个形状,子砖块,或砖块。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -7121,7 +7205,7 @@ msgstr "瓦片集" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "" +msgstr "设置统一名称" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" @@ -7136,8 +7220,13 @@ msgid "Duplicate Nodes" msgstr "复制节点" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "删除节点" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" -msgstr "" +msgstr "可视着色器输入类型已更改" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -7180,6 +7269,8 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"无法导出平台'%s'的项目。\n" +"导出模板似乎丢失或无效。" #: editor/project_export.cpp msgid "" @@ -7187,6 +7278,8 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" +"无法导出平台'%s'的项目。\n" +"可能由于导出预设或导出设置内的配置有问题。" #: editor/project_export.cpp msgid "Release" @@ -8317,10 +8410,6 @@ msgid "Open documentation" msgstr "打开Godot文档" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "删除节点" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "添加子节点" @@ -9830,7 +9919,7 @@ msgstr "" msgid "" "Plane shapes don't work well and will be removed in future versions. Please " "don't use them." -msgstr "" +msgstr "平面形状无法正常工作,未来版本将被删除。请勿使用。" #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." @@ -9851,6 +9940,8 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" +"GLES2视频驱动程序不支持全局光照探测器。\n" +"请改用已烘焙灯光贴图。" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -10017,6 +10108,8 @@ msgid "" "If you dont't intend to add a script, then please use a plain 'Control' node " "instead." msgstr "" +"除非在脚本内配置其子项的放置行为,否则容器本身没有用处。\n" +"如果您不打算添加脚本,请使用简单的“控件”节点。" #: scene/gui/dialogs.cpp msgid "Alert!" @@ -10109,12 +10202,15 @@ msgstr "对uniform的赋值。" msgid "Varyings can only be assigned in vertex function." msgstr "变量只能在顶点函数中指定。" +#~ msgid "Snap (s): " +#~ msgstr "吸附: " + +#~ msgid "Insert keys." +#~ msgstr "插入帧。" + #~ msgid "Instance the selected scene(s) as child of the selected node." #~ msgstr "将选中的场景实例为选中节点的子节点。" -#~ msgid "FPS" -#~ msgstr "帧数" - #~ msgid "Warnings:" #~ msgstr "警告:" @@ -11638,9 +11734,6 @@ msgstr "变量只能在顶点函数中指定。" #~ msgid "Cannot go into subdir:" #~ msgstr "无法打开目录:" -#~ msgid "Insert Keys (Ins)" -#~ msgstr "插入关键帧( 创建轨道)" - #~ msgid "Perspective (Num5)" #~ msgstr "透视(Num5)" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 2abca01297..45b43c3ce6 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -2,15 +2,14 @@ # Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. -# # Wesley (zx-wt) <ZX_WT@ymail.com>, 2016-2017. -# +# cnieFIT <dtotncq@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:44+0100\n" -"Last-Translator: zx-wt <ZX_WT@ymail.com>\n" +"PO-Revision-Date: 2019-04-10 00:46+0000\n" +"Last-Translator: cnieFIT <dtotncq@gmail.com>\n" "Language-Team: Chinese (Hong Kong) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant_HK/>\n" "Language: zh_HK\n" @@ -18,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.6-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -447,7 +446,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "選擇模式" #: editor/animation_track_editor.cpp @@ -455,6 +454,14 @@ msgstr "選擇模式" msgid "Animation step value." msgstr "新增動畫" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3966,6 +3973,11 @@ msgid "Delete Node" msgstr "不選" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "(不)顯示最愛" @@ -4962,8 +4974,33 @@ msgid "Layout" msgstr "儲存佈局" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Insert keys (based on mask)." +msgstr "動晝插入關鍵幀?" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." +msgid "Auto Insert Key" msgstr "動晝插入關鍵幀?" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5035,6 +5072,52 @@ msgstr "" msgid "Set Handle" msgstr "" +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" msgstr "" @@ -5392,22 +5475,6 @@ msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5415,30 +5482,9 @@ msgstr "轉為..." #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" msgstr "" -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" - #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" msgstr "" @@ -5970,7 +6016,7 @@ msgid "Save Theme As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" +msgid "%s Class Reference" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -6550,9 +6596,8 @@ msgid "Audio Listener" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Doppler Enable" -msgstr "啟用" +msgstr "啟用多普拉效應" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" @@ -6829,6 +6874,26 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Create Mesh2D" +msgstr "新增" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "縮放selection" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "縮放selection" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "新增資料夾" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "路徑為空" @@ -6841,18 +6906,39 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" +msgid "Convert to Mesh2D" msgstr "轉為..." #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "新增" +msgid "Convert to Polygon2D" +msgstr "轉為..." + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "縮放selection" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " @@ -7469,6 +7555,11 @@ msgid "Duplicate Nodes" msgstr "複製動畫幀" #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "不選" + +#: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "" @@ -8676,10 +8767,6 @@ msgid "Open documentation" msgstr "開啓最近的" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 8fdb7e8db0..6f858474a2 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-03-30 20:04+0000\n" +"PO-Revision-Date: 2019-04-25 11:54+0000\n" "Last-Translator: cnieFIT <dtotncq@gmail.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.6-dev\n" +"X-Generator: Weblate 3.7-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -41,9 +41,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "輸入的解碼字節不足、或為無效格式。" #: core/math/expression.cpp -#, fuzzy msgid "Invalid input %i (not passed) in expression" -msgstr "所輸入的 %i 於表現式中無效" +msgstr "運算式中的輸入 %i 無效 (未傳遞)" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -96,12 +95,12 @@ msgstr "刪除所選畫格" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" -msgstr "" +msgstr "添加貝塞爾點" #: editor/animation_bezier_editor.cpp #, fuzzy msgid "Move Bezier Points" -msgstr "移除" +msgstr "移動貝塞爾點" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -207,11 +206,11 @@ msgstr "更新模式 (如何設置此屬性)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" -msgstr "" +msgstr "插值模式" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "" +msgstr "循環包裹模式(從循環開始插入結束)" #: editor/animation_track_editor.cpp #, fuzzy @@ -242,11 +241,11 @@ msgstr "觸發器" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "" +msgstr "捕獲" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "" +msgstr "最近的" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -378,11 +377,11 @@ msgstr "添加動畫軌" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "軌道路徑無效, 因此無法添加鍵。" #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "軌道不是空間類型, 不能插入鍵" #: editor/animation_track_editor.cpp #, fuzzy @@ -396,7 +395,7 @@ msgstr "添加動畫軌" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "跟蹤路徑無效, 因此無法添加方法鍵。" #: editor/animation_track_editor.cpp #, fuzzy @@ -405,7 +404,7 @@ msgstr "動畫新增軌跡與按鍵" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "" +msgstr "在對象中找不到方法: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -413,7 +412,7 @@ msgstr "移動關鍵畫格" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" -msgstr "" +msgstr "剪貼板為空" #: editor/animation_track_editor.cpp #, fuzzy @@ -422,24 +421,24 @@ msgstr "貼上參數" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "縮尺鍵" #: editor/animation_track_editor.cpp msgid "" "This option does not work for Bezier editing, as it's only a single track." -msgstr "" +msgstr "這個選項不適用於貝塞爾編輯,因為它只是一個單軌。" #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "僅顯示樹中所選節點的軌跡。" #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "按節點對軌跡分組或將其顯示為普通清單。" #: editor/animation_track_editor.cpp #, fuzzy -msgid "Snap (s): " +msgid "Snap:" msgstr "步驟 :" #: editor/animation_track_editor.cpp @@ -447,6 +446,14 @@ msgstr "步驟 :" msgid "Animation step value." msgstr "動畫空間。" +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -454,7 +461,7 @@ msgstr "動畫空間。" #: editor/project_manager.cpp editor/project_settings_editor.cpp #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Edit" -msgstr "" +msgstr "編輯" #: editor/animation_track_editor.cpp #, fuzzy @@ -507,11 +514,11 @@ msgstr "清除動畫" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "" +msgstr "選擇要設定動畫的節點:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "使用貝塞爾曲線" #: editor/animation_track_editor.cpp #, fuzzy @@ -560,7 +567,7 @@ msgstr "縮放比例:" #: editor/animation_track_editor.cpp msgid "Select tracks to copy:" -msgstr "" +msgstr "選擇要複製的軌道:" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -568,7 +575,7 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "" +msgstr "複製" #: editor/animation_track_editor_plugins.cpp #, fuzzy @@ -577,11 +584,11 @@ msgstr "添加動畫軌" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "" +msgstr "更改音訊軌道剪輯起始偏移" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "" +msgstr "更改音訊曲目剪輯結束偏移" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -649,11 +656,11 @@ msgstr "重設縮放大小" #: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Warnings" -msgstr "" +msgstr "警告" #: editor/code_editor.cpp msgid "Line and column numbers." -msgstr "" +msgstr "行號和列號。" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -761,7 +768,7 @@ msgstr "連接..." #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "" +msgstr "確定要從“%s”訊號中删除所有連接嗎?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -769,7 +776,7 @@ msgstr "信號" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" -msgstr "" +msgstr "確定要删除此訊號的所有連接嗎?" #: editor/connections_dialog.cpp #, fuzzy @@ -778,7 +785,7 @@ msgstr "斷線" #: editor/connections_dialog.cpp msgid "Edit..." -msgstr "" +msgstr "編輯…" #: editor/connections_dialog.cpp #, fuzzy @@ -839,8 +846,8 @@ msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" -"場景 '%s' 已被變更\n" -"重新載入才能使變更生效" +"場景 '%s' 已被變更.\n" +"重新載入才能使其生效." #: editor/dependency_editor.cpp msgid "" @@ -950,7 +957,7 @@ msgstr "沒有明定擁有者的資源:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "孤立資料管理器" #: editor/dependency_editor.cpp msgid "Delete selected files?" @@ -1276,11 +1283,11 @@ msgstr "不正確的名字。名字不能與現有的 engine class 名衝突。" #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." -msgstr "名稱已存在, 不能跟已經存在的內建類別重複" +msgstr "無效名稱.不能與現有的內置類型名稱沖突." #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." -msgstr "名稱已存在, 不能跟已經存在的全域變數名稱重複" +msgstr "無效名稱.不能跟已經存在的全局常量名稱重複." #: editor/editor_autoload_settings.cpp #, fuzzy @@ -1316,15 +1323,15 @@ msgstr "重新排列 Autoload" #: editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "無效的路徑" +msgstr "無效的路徑." #: editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "檔案不存在" +msgstr "檔案不存在." #: editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "在資源路徑中找不到" +msgstr "不在資源路徑中。" #: editor/editor_autoload_settings.cpp #, fuzzy @@ -1394,7 +1401,7 @@ msgstr "名稱:" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp msgid "Could not create folder." -msgstr "無法新增資料夾" +msgstr "無法新增資料夾." #: editor/editor_dir_dialog.cpp msgid "Choose" @@ -1410,7 +1417,7 @@ msgstr "" #: editor/editor_export.cpp msgid "Packing" -msgstr "" +msgstr "包裝中" #: editor/editor_export.cpp msgid "" @@ -1436,17 +1443,17 @@ msgstr "" #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp #: platform/osx/export/export.cpp platform/uwp/export/export.cpp msgid "Custom debug template not found." -msgstr "" +msgstr "找不到自定義調試範本。" #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp #: platform/osx/export/export.cpp platform/uwp/export/export.cpp msgid "Custom release template not found." -msgstr "" +msgstr "找不到自定義發佈範本。" #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" -msgstr "" +msgstr "找不到範本檔案:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" @@ -1546,15 +1553,15 @@ msgstr "切換模式" #: editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "" +msgstr "聚焦路徑" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "" +msgstr "向上移動收藏" #: editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "" +msgstr "向下移動收藏" #: editor/editor_file_dialog.cpp #, fuzzy @@ -1578,11 +1585,11 @@ msgstr "無法新增資料夾" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." -msgstr "" +msgstr "以縮略圖網格形式查看項目。" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a list." -msgstr "" +msgstr "以清單形式查看項目。" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -1604,7 +1611,7 @@ msgstr "必須使用有效的副檔名。" #: editor/editor_file_system.cpp msgid "ScanSources" -msgstr "" +msgstr "掃描源" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -1625,19 +1632,19 @@ msgstr "繼承:" #: editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "繼承:" #: editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "簡要說明:" #: editor/editor_help.cpp msgid "Properties" -msgstr "" +msgstr "性質" #: editor/editor_help.cpp msgid "Properties:" -msgstr "" +msgstr "效能:" #: editor/editor_help.cpp msgid "Methods" @@ -1664,15 +1671,15 @@ msgstr "訊號:" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "" +msgstr "枚舉" #: editor/editor_help.cpp msgid "Enumerations:" -msgstr "" +msgstr "枚舉:" #: editor/editor_help.cpp msgid "enum " -msgstr "" +msgstr "枚舉 " #: editor/editor_help.cpp msgid "Constants" @@ -1753,7 +1760,7 @@ msgstr "取代全部" #: editor/editor_help_search.cpp msgid "Classes Only" -msgstr "" +msgstr "僅限類" #: editor/editor_help_search.cpp #, fuzzy @@ -1772,15 +1779,15 @@ msgstr "定數" #: editor/editor_help_search.cpp msgid "Properties Only" -msgstr "" +msgstr "僅屬性" #: editor/editor_help_search.cpp msgid "Theme Properties Only" -msgstr "" +msgstr "僅限主題屬性" #: editor/editor_help_search.cpp msgid "Member Type" -msgstr "" +msgstr "成員類型" #: editor/editor_help_search.cpp #, fuzzy @@ -1789,11 +1796,11 @@ msgstr "Class:" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" -msgstr "" +msgstr "屬性:" #: editor/editor_inspector.cpp msgid "Set" -msgstr "" +msgstr "集合" #: editor/editor_inspector.cpp msgid "Set Multiple:" @@ -1824,12 +1831,12 @@ msgstr "專案輸出失敗,錯誤代碼是 %d。" #: editor/editor_node.cpp msgid "Imported resources can't be saved." -msgstr "" +msgstr "無法保存導入的資源。" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "" +msgstr "確定" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" @@ -1839,7 +1846,7 @@ msgstr "儲存資源錯誤!" msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." -msgstr "" +msgstr "無法保存此資源,因為它不屬於已編輯的場景。先讓它唯一。" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." @@ -1860,7 +1867,7 @@ msgstr "儲存中發生了錯誤。" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." -msgstr "" +msgstr "無法打開“%s”。檔案可能已被移動或删除。" #: editor/editor_node.cpp msgid "Error while parsing '%s'." @@ -1910,39 +1917,39 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "無法覆蓋仍處於打開狀態的場景!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "無法加載要合併的網格庫!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "保存MeshLibrary時出錯!" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "" +msgstr "無法加載Tileset進行合併!" #: editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "" +msgstr "保存tileset時出錯!" #: editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "" +msgstr "嘗試保存佈局時出錯!" #: editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "" +msgstr "覆蓋默認編輯器佈局。" #: editor/editor_node.cpp msgid "Layout name not found!" -msgstr "" +msgstr "找不到佈局名稱!" #: editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "" +msgstr "已將默認佈局還原為基本設定。" #: editor/editor_node.cpp msgid "" @@ -1950,6 +1957,8 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" +"此資源屬於已導入的場景, 因此不可編輯。\n" +"請閱讀與導入場景相關的文檔, 以便更好地瞭解此工作流。" #: editor/editor_node.cpp msgid "" @@ -1980,7 +1989,7 @@ msgstr "" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "沒有要運行的已定義場景。" #: editor/editor_node.cpp msgid "" @@ -2009,7 +2018,7 @@ msgstr "在運行場景前,請先存檔。" #: editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "無法啟動子程序" +msgstr "無法啟動子進程!" #: editor/editor_node.cpp msgid "Open Scene" @@ -2017,15 +2026,15 @@ msgstr "開啟場景" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "打開基本場景" #: editor/editor_node.cpp msgid "Quick Open Scene..." -msgstr "快速開啟場景" +msgstr "快速開啟場景..." #: editor/editor_node.cpp msgid "Quick Open Script..." -msgstr "" +msgstr "快速打開腳本…" #: editor/editor_node.cpp #, fuzzy @@ -2034,15 +2043,15 @@ msgstr "另存新檔" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "" +msgstr "關閉前是否保存對“%s”的更改?" #: editor/editor_node.cpp msgid "Saved %s modified resource(s)." -msgstr "" +msgstr "已保存%s個已修改的資源。" #: editor/editor_node.cpp msgid "A root node is required to save the scene." -msgstr "" +msgstr "保存場景需要根節點。" #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2066,7 +2075,7 @@ msgstr "在設置場景前,無法完成該指定操作。" #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "導出網格庫" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -2074,7 +2083,7 @@ msgstr "在設置根節點(root node)前,無法完成該指定操作。" #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "" +msgstr "導出磁貼集" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." @@ -2086,7 +2095,7 @@ msgstr "目前的場景尚未存檔,仍要開啟嗎?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "無法重新載入未存檔的場景" +msgstr "無法重新載入未存檔的場景." #: editor/editor_node.cpp msgid "Revert" @@ -2518,7 +2527,7 @@ msgstr "暫停場景" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "停止此場景" +msgstr "停止此場景." #: editor/editor_node.cpp editor/editor_profiler.cpp msgid "Stop" @@ -2679,32 +2688,32 @@ msgstr "更新" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Version:" -msgstr "" +msgstr "版本:" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp msgid "Author:" -msgstr "" +msgstr "作者:" #: editor/editor_plugin_settings.cpp msgid "Status:" -msgstr "" +msgstr "狀態:" #: editor/editor_plugin_settings.cpp msgid "Edit:" -msgstr "" +msgstr "編輯:" #: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp #: editor/rename_dialog.cpp msgid "Start" -msgstr "" +msgstr "開始" #: editor/editor_profiler.cpp msgid "Measure:" -msgstr "" +msgstr "措施:" #: editor/editor_profiler.cpp msgid "Frame Time (sec)" -msgstr "" +msgstr "幀時間 (秒)" #: editor/editor_profiler.cpp msgid "Average Time (sec)" @@ -2712,7 +2721,7 @@ msgstr "平均時間 (秒)" #: editor/editor_profiler.cpp msgid "Frame %" -msgstr "" +msgstr "幀%" #: editor/editor_profiler.cpp msgid "Physics Frame %" @@ -2724,7 +2733,7 @@ msgstr "時間:" #: editor/editor_profiler.cpp msgid "Inclusive" -msgstr "" +msgstr "包容" #: editor/editor_profiler.cpp msgid "Self" @@ -2752,7 +2761,7 @@ msgstr "層" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "" +msgstr "位 %d, 值 %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -2771,7 +2780,7 @@ msgstr "無效的路徑" msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." -msgstr "" +msgstr "所選資源(%s)與此内容(%s)所需的任何類型都不匹配。" #: editor/editor_properties.cpp msgid "" @@ -2832,7 +2841,7 @@ msgstr "相依性編輯器" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "" +msgstr "選定的節點不是視口!" #: editor/editor_properties_array_dict.cpp msgid "Size: " @@ -2872,7 +2881,7 @@ msgstr "" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "" +msgstr "將您的邏輯寫在_run()方法中。" #: editor/editor_run_script.cpp msgid "There is an edited scene already." @@ -3121,7 +3130,7 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." -msgstr "" +msgstr "無法移動/重命名資源根目錄。" #: editor/filesystem_dock.cpp msgid "Cannot move a folder into itself." @@ -3197,7 +3206,7 @@ msgstr "移除" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." -msgstr "" +msgstr "編輯依賴項…" #: editor/filesystem_dock.cpp msgid "View Owners..." @@ -3435,11 +3444,11 @@ msgstr "正在導入場景…" #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" -msgstr "" +msgstr "生成光照圖" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "" +msgstr "為網格生成: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script..." @@ -3447,11 +3456,11 @@ msgstr "正在運行自定義腳本…" #: editor/import/resource_importer_scene.cpp msgid "Couldn't load post-import script:" -msgstr "" +msgstr "無法加載導入後腳本:" #: editor/import/resource_importer_scene.cpp msgid "Invalid/broken script for post-import (check console):" -msgstr "" +msgstr "導入後腳本無效/已損壞(檢查控制台):" #: editor/import/resource_importer_scene.cpp msgid "Error running post-import script:" @@ -3719,7 +3728,7 @@ msgstr "移除" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" -msgstr "" +msgstr "移動 BlendSpace1D 節點點" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3729,6 +3738,8 @@ msgid "" "AnimationTree is inactive.\n" "Activate to enable playback, check node warnings if activation fails." msgstr "" +"動畫樹處於非活動狀態。\n" +"激活以啟用播放, 如果啟動失敗, 請檢查節點警告。" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3869,6 +3880,11 @@ msgid "Delete Node" msgstr "刪除" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #, fuzzy msgid "Toggle Filter On/Off" msgstr "切換最愛" @@ -3902,7 +3918,7 @@ msgstr "節點名稱:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node..." -msgstr "" +msgstr "添加節點..。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -3912,32 +3928,32 @@ msgstr "過濾檔案..." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Enable filtering" -msgstr "" +msgstr "啟用篩選" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "" +msgstr "切換自動播放" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "" +msgstr "新動畫名稱:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "新增動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "" +msgstr "更改動畫名稱:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Delete Animation?" -msgstr "" +msgstr "刪除動畫?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "移除動畫" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -3952,23 +3968,23 @@ msgstr "Autoload「%s」已經存在!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "重命名動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "" +msgstr "混合下一個更改" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "" +msgstr "更改混合時間" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "載入動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "複製動畫" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -3982,56 +3998,56 @@ msgstr "在資源路徑中找不到" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "" +msgstr "粘貼的動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "" +msgstr "粘貼動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to edit!" -msgstr "" +msgstr "沒有要編輯的動畫!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "" +msgstr "從當前位置向後播放所選動畫。(A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "" +msgstr "從結尾向後播放選定的動畫。(Shift+a)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "停止動畫回放。(S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "" +msgstr "從頭開始播放選取中的動畫。(Shift+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "" +msgstr "從當前位置播放選定的動畫。(D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "" +msgstr "動畫位置(秒)。" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." -msgstr "" +msgstr "在全域範圍內縮放節點的動畫播放。" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "動畫工具" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New" -msgstr "" +msgstr "新增" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -4045,19 +4061,19 @@ msgstr "開啟資料夾" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "" +msgstr "在播放機中顯示動畫清單。" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "" +msgstr "載入后自動播放" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning" -msgstr "" +msgstr "洋葱皮" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "啟用洋葱皮" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy @@ -4066,39 +4082,39 @@ msgstr "描述:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" -msgstr "" +msgstr "跳過" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" -msgstr "" +msgstr "未來" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "" +msgstr "深度" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "" +msgstr "1步" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "2步" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "3步" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "" +msgstr "僅差異" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "強制白色調節" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "" +msgstr "包括3D控制器" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pin AnimationPlayer" @@ -4106,11 +4122,11 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "創建新動畫" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +msgstr "動畫名稱:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/resource_preloader_editor_plugin.cpp @@ -4118,54 +4134,54 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Error!" -msgstr "" +msgstr "錯誤!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "" +msgstr "混合時間:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "" +msgstr "下一個(自動隊列):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "跨動畫混合時間" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Move Node" -msgstr "移動 Autoload" +msgstr "移動節點" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Add Transition" -msgstr "轉場" +msgstr "添加轉換" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "" +msgstr "添加節點" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "" +msgstr "結束" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "" +msgstr "立即" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" -msgstr "" +msgstr "同步" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "" +msgstr "在末尾" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" -msgstr "" +msgstr "行程" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." @@ -4179,12 +4195,12 @@ msgstr "在資源路徑中找不到" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Removed" -msgstr "已刪除:" +msgstr "已刪除節點" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Transition Removed" -msgstr "轉場" +msgstr "已刪除轉換" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -4221,68 +4237,67 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "轉場" +msgstr "轉場: " #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "" +msgstr "動畫樹" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" -msgstr "" +msgstr "新名稱:" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Scale:" -msgstr "" +msgstr "縮放:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade In (s):" -msgstr "" +msgstr "淡入(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "" +msgstr "淡出(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend" -msgstr "" +msgstr "混合" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix" -msgstr "" +msgstr "混合" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Auto Restart:" -msgstr "" +msgstr "自動重新開始:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Restart (s):" -msgstr "" +msgstr "重新開始(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Random Restart (s):" -msgstr "" +msgstr "隨機重新開始(秒):" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Start!" -msgstr "" +msgstr "開始!" #: editor/plugins/animation_tree_player_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Amount:" -msgstr "" +msgstr "數量:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 0:" -msgstr "" +msgstr "混合 0:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend 1:" -msgstr "" +msgstr "混合 1:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "X-Fade Time (s):" @@ -4290,112 +4305,112 @@ msgstr "" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Current:" -msgstr "" +msgstr "當前:" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Add Input" -msgstr "" +msgstr "添加輸入" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "" +msgstr "清除Auto-Advance" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "設定自動前進" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Delete Input" -msgstr "" +msgstr "刪除輸入事件" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "" +msgstr "動畫樹有效。" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "" +msgstr "動畫樹無效。" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation Node" -msgstr "" +msgstr "動畫節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "OneShot Node" -msgstr "" +msgstr "單項節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Mix Node" -msgstr "" +msgstr "混合節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" -msgstr "" +msgstr "混合2 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend3 Node" -msgstr "" +msgstr "混合3 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend4 Node" -msgstr "" +msgstr "混合4 節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "時間尺度節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "" +msgstr "時間搜索節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "轉場節點" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." -msgstr "" +msgstr "導入動畫…" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "" +msgstr "編輯節點篩選" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Filters..." -msgstr "" +msgstr "篩選…" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Contents:" -msgstr "" +msgstr "內容:" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "View Files" -msgstr "過濾檔案..." +msgstr "查看檔案" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" -msgstr "" +msgstr "無法解析主機名稱:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "" +msgstr "連接錯誤, 請重試。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" -msgstr "" +msgstr "無法連接到主機:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" -msgstr "" +msgstr "主機沒有響應:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "" +msgstr "請求失敗, 返回代碼:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "" +msgstr "請求失敗, 重定向次數太多" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4403,58 +4418,56 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" -msgstr "" +msgstr "預期:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Got:" -msgstr "" +msgstr "獲得:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed sha256 hash check" -msgstr "" +msgstr "sha256哈希值檢查失敗" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "" +msgstr "資源下載錯誤:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "載入時發生錯誤:" +msgstr "正在下載 (%s / %s)…" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Downloading..." -msgstr "載入時發生錯誤:" +msgstr "正在下載……" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." -msgstr "" +msgstr "解析中…" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Error making request" -msgstr "載入場景時發生錯誤" +msgstr "請求時發生錯誤" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "" +msgstr "空閒" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" -msgstr "" +msgstr "重試" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" -msgstr "" +msgstr "下載錯誤" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" -msgstr "" +msgstr "此資源文檔正在下載中!" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" -msgstr "" +msgstr "第一項" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy @@ -4467,7 +4480,7 @@ msgstr "下一個" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "" +msgstr "最後" #: editor/plugins/asset_library_editor_plugin.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -4477,7 +4490,7 @@ msgstr "全部" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Plugins" -msgstr "" +msgstr "挿件" #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -4494,11 +4507,11 @@ msgstr "類別:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "地址:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Support..." -msgstr "" +msgstr "支持…" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -4506,11 +4519,11 @@ msgstr "官方" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "測試" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "ZIP資源包" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -4520,98 +4533,97 @@ msgid "" msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +#, fuzzy msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." -msgstr "" +msgstr "沒有可供渲染的Meshes,請確保Mesh包含UV2通道並且勾選'Bake Light'選項" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." -msgstr "" +msgstr "創建光圖圖像失敗, 請確保路徑是可寫的。" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "變更光源半徑" +msgstr "渲染光圖" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp msgid "Preview" -msgstr "" +msgstr "預覽" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "配置吸附" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" -msgstr "" +msgstr "網格偏移量:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Step:" -msgstr "" +msgstr "網格大小:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "" +msgstr "旋轉偏移量:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "" +msgstr "旋轉步驟:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move vertical guide" -msgstr "" +msgstr "垂直移動尺標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create new vertical guide" -msgstr "" +msgstr "創建新的垂直尺標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Remove vertical guide" -msgstr "" +msgstr "刪除垂直尺標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move horizontal guide" -msgstr "" +msgstr "移動水平尺標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create new horizontal guide" -msgstr "" +msgstr "創建新的水平尺標" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove horizontal guide" -msgstr "移除" +msgstr "移除水平尺標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create new horizontal and vertical guides" -msgstr "" +msgstr "創建新的水平和垂直尺標" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Move pivot" -msgstr "移除" +msgstr "移動樞軸" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate CanvasItem" -msgstr "" +msgstr "旋轉CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move anchor" -msgstr "" +msgstr "移動錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize CanvasItem" -msgstr "" +msgstr "調整CanvasItem的大小" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale CanvasItem" -msgstr "" +msgstr "縮放CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move CanvasItem" -msgstr "" +msgstr "移動CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." @@ -4621,285 +4633,316 @@ msgstr "" msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." -msgstr "" +msgstr "容器的子級的錨定值和頁邊距值被其父級覆蓋。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" -msgstr "" +msgstr "僅限錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors and Margins" -msgstr "" +msgstr "改變錨點和邊距" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors" -msgstr "" +msgstr "改變錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "" +msgstr "粘貼姿勢" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." -msgstr "" +msgstr "警告:容器的子級只能由其父級確定其位置和大小。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp -#, fuzzy msgid "Zoom Reset" -msgstr "縮小" +msgstr "重置縮放" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Select Mode" -msgstr "" +msgstr "選擇模式" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" -msgstr "" +msgstr "拖動: 旋轉" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+Drag: Move" -msgstr "" +msgstr "Alt+Drag:移動" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." -msgstr "" +msgstr "按 \"v\" 更改樞軸, \"Shift + v\" 以拖動樞軸 (移動時)。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" -msgstr "" +msgstr "Alt+滑鼠右鍵:顯示鼠標點擊位置下所有的節點清單" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Mode" -msgstr "" +msgstr "移動模式" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate Mode" -msgstr "" +msgstr "旋轉模式" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Scale Mode" -msgstr "切換模式" +msgstr "縮放模式" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." -msgstr "" +msgstr "在按一下的位置顯示所有物件的清單 (在選擇模式下與 Alt + RMB 相同)。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "" +msgstr "點擊以更改物件的旋轉樞軸。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" -msgstr "" +msgstr "平移模式" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Toggle snapping." -msgstr "" +msgstr "切換吸附。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" -msgstr "" +msgstr "使用吸附" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "" +msgstr "吸附選項" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap to grid" -msgstr "" +msgstr "吸附到網格" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Use Rotation Snap" -msgstr "" +msgstr "使用旋轉吸附" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "Configure Snap..." -msgstr "" +msgstr "配置吸附…" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap Relative" -msgstr "" +msgstr "相對吸附" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Use Pixel Snap" -msgstr "" +msgstr "使用像素吸附" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Smart snapping" -msgstr "" +msgstr "智慧吸附" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to parent" -msgstr "" +msgstr "吸附到父級節點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node anchor" -msgstr "" +msgstr "吸附到節點的錨點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node sides" -msgstr "" +msgstr "捕捉到節點邊" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node center" -msgstr "" +msgstr "吸附到節點的中心" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to other nodes" -msgstr "" +msgstr "吸附到其他的節點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to guides" -msgstr "" +msgstr "吸附到尺標" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock the selected object in place (can't be moved)." -msgstr "" +msgstr "將所選物件鎖定到中心 (無法移動)。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "Unlock the selected object (can be moved)." -msgstr "" +msgstr "解鎖所選物件 (可以移動)。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." -msgstr "" +msgstr "確保對象的子級不可選。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Restores the object's children's ability to be selected." -msgstr "" +msgstr "恢復對象的子級選擇能力。" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Skeleton Options" -msgstr "單例" +msgstr "骨架選項" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" -msgstr "" +msgstr "顯示骨骼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "" +msgstr "製作IK鏈" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "" +msgstr "清除IK鏈" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Custom Bone(s) from Node(s)" -msgstr "" +msgstr "從節點製作自定義骨骼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Custom Bones" -msgstr "" +msgstr "清除自定義骨骼" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "" +msgstr "視圖" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Show Grid" -msgstr "" +msgstr "顯示網格" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "" +msgstr "顯示輔助線" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" -msgstr "" +msgstr "顯示尺規" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "" +msgstr "顯示引導" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" -msgstr "" +msgstr "顯示原點" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Viewport" -msgstr "" +msgstr "顯示視口" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "顯示組和鎖定圖標" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "" +msgstr "居中選擇" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" -msgstr "" +msgstr "幀選擇" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" +msgstr "佈局" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy -msgid "Insert keys." -msgstr "動畫新增按鍵" +msgid "Insert keys (based on mask)." +msgstr "插入幀 (現有軌道)" #: editor/plugins/canvas_item_editor_plugin.cpp -msgid "Insert Key (Existing Tracks)" +msgid "" +"Auto insert keys when objects are translated, rotated on scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Auto Insert Key" +msgstr "新增關鍵畫格" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "插入幀 (現有軌道)" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "" +msgstr "複製姿勢" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "" +msgstr "清除姿勢" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "" +msgstr "將網格步數乘以2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" -msgstr "" +msgstr "將網格步數除以2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" -msgstr "" +msgstr "添加 %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." -msgstr "" +msgstr "添加 %s…" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Cannot instantiate multiple nodes without root." -msgstr "" +msgstr "無法具現化沒有根的多個節點。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" -msgstr "" +msgstr "創建節點" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Error instancing scene from %s" -msgstr "" +msgstr "%s 中的具現化場景出錯" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" -msgstr "" +msgstr "更改預設類型" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -4908,43 +4951,88 @@ msgid "" msgstr "" #: editor/plugins/collision_polygon_editor_plugin.cpp -#, fuzzy msgid "Create Polygon3D" -msgstr "新增資料夾" +msgstr "創建3D多邊形" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" -msgstr "" +msgstr "編輯多邊形" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly (Remove Point)" -msgstr "" +msgstr "編輯多邊形 (刪除頂點)" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" +msgstr "設置控制程序" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "加載影像時出錯:" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image..." +msgstr "影像中沒有透明度大於128的點數…" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "粒子" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" msgstr "" #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" -msgstr "" +msgstr "CPU粒子" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "" +msgstr "從網格創建發射點" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "" +msgstr "從節點創建發射點" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" -msgstr "" +msgstr "平面0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat1" -msgstr "" +msgstr "平面1" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy @@ -4953,86 +5041,86 @@ msgstr "所有的選擇" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease out" -msgstr "" +msgstr "淡出" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "" +msgstr "平滑步長" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" -msgstr "" +msgstr "修改曲線點" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Tangent" -msgstr "" +msgstr "修改曲線切角" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "" +msgstr "加載曲線預設" #: editor/plugins/curve_editor_plugin.cpp msgid "Add point" -msgstr "" +msgstr "添加點" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy msgid "Remove point" -msgstr "移除" +msgstr "刪除點" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy msgid "Left linear" -msgstr "線性" +msgstr "左線性" #: editor/plugins/curve_editor_plugin.cpp msgid "Right linear" -msgstr "" +msgstr "右線性" #: editor/plugins/curve_editor_plugin.cpp msgid "Load preset" -msgstr "" +msgstr "載入預設" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy msgid "Remove Curve Point" -msgstr "移除" +msgstr "刪除曲線點" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" -msgstr "" +msgstr "切換曲線直線切線" #: editor/plugins/curve_editor_plugin.cpp msgid "Hold Shift to edit tangents individually" -msgstr "" +msgstr "按住 Shift 鍵可單獨編輯切線" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "" +msgstr "渲染 GI Probe" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" -msgstr "" +msgstr "漸變編輯" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "" +msgstr "項目 %d" #: editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "" +msgstr "項目" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "" +msgstr "項目清單編輯器" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "" +msgstr "創建遮光多邊形" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "網格是空的!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" @@ -5040,11 +5128,11 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Convex Body" -msgstr "" +msgstr "創建靜態凸體" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "" +msgstr "這對場景根目錄不起作用!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" @@ -5052,15 +5140,15 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "" +msgstr "創建凸面形狀" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "" +msgstr "創建導航網格" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "包含的網格不是ArrayMesh類型。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" @@ -5068,7 +5156,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "沒有要調試的網格。" #: editor/plugins/mesh_instance_editor_plugin.cpp #: editor/plugins/sprite_editor_plugin.cpp @@ -5077,11 +5165,11 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "網格實例缺少網格!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "網格沒有表面來創建輪廓!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" @@ -5093,11 +5181,11 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "" +msgstr "創建輪廓" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "網格" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" @@ -5105,7 +5193,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "" +msgstr "創建凸形靜態體" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" @@ -5117,7 +5205,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." -msgstr "" +msgstr "創建輪廓網格…" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy @@ -5135,36 +5223,36 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "" +msgstr "創建輪廓網格" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "" +msgstr "輪廓尺寸:" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" -msgstr "" +msgstr "删除項目%d?" #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" -msgstr "" +msgstr "添加項目" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove Selected Item" -msgstr "" +msgstr "删除所選項" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "從場景導入" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "從場景更新" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "" +msgstr "未指定網格源(節點中沒有多網格集)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." @@ -5172,75 +5260,75 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "" +msgstr "網格源無效(路徑無效)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "" +msgstr "網格源無效 (不是網格實例)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "" +msgstr "網格源無效(不包含網格資源)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." -msgstr "" +msgstr "未指定表面源。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "" +msgstr "表面源無效(路徑無效)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." -msgstr "" +msgstr "表面源無效(沒有幾何圖形)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "表面源無效(沒有面)。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Parent has no solid faces to populate." -msgstr "" +msgstr "父級沒有要填充的實體面。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Couldn't map area." -msgstr "" +msgstr "無法映射區域。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "" +msgstr "選擇源網格:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "" +msgstr "選擇目標曲面:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" -msgstr "" +msgstr "填充曲面" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "" +msgstr "填充多網格" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "目標表面:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "源網格:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "" +msgstr "X 軸" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "" +msgstr "Y 軸" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "" +msgstr "Z 軸" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" @@ -5248,54 +5336,38 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "" +msgstr "隨機旋轉:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "" +msgstr "隨機傾斜:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "" +msgstr "隨機縮放:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" -msgstr "" +msgstr "填充" #: editor/plugins/navigation_polygon_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "" +msgstr "創建導航多邊形" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generating Visibility Rect" -msgstr "" +msgstr "生成可見性矩形" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" -msgstr "" +msgstr "生成可見性矩形" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" msgstr "" #: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Error loading image:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "No pixels with transparency > 128 in image..." -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Load Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Clear Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp #, fuzzy msgid "Convert to CPUParticles" @@ -5303,33 +5375,12 @@ msgstr "轉換成..." #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -msgid "Particles" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Generated Point Count:" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp msgid "Generation Time (sec):" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Mask" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Capture from Pixel" -msgstr "" - -#: editor/plugins/particles_2d_editor_plugin.cpp -msgid "Emission Colors" -msgstr "" +msgstr "生成時間 (秒):" #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" -msgstr "" +msgstr "面不包含任何區域!" #: editor/plugins/particles_editor_plugin.cpp msgid "No faces!" @@ -5337,55 +5388,55 @@ msgstr "" #: editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry." -msgstr "" +msgstr "節點不包含幾何圖形。" #: editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry (faces)." -msgstr "" +msgstr "節點不包含幾何圖形 (面)。" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "" +msgstr "創建發射器" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "" +msgstr "排放點:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" -msgstr "" +msgstr "表面點" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "表面點 + 法線 (定向)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" -msgstr "" +msgstr "體積" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Source: " -msgstr "" +msgstr "排放源: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "" +msgstr "需要“顆粒資料”類型的處理器資料。" #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "" +msgstr "生成 AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate Visibility AABB" -msgstr "" +msgstr "生成可見性AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" -msgstr "" +msgstr "生成 AABB" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" -msgstr "" +msgstr "從曲線中删除點" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Out-Control from Curve" @@ -5809,14 +5860,13 @@ msgid "Error while saving theme." msgstr "儲存中發生了錯誤。" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Saving" -msgstr "載入時發生錯誤:" +msgstr "保存錯誤" #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Error importing theme." -msgstr "讀取字體錯誤。" +msgstr "導入主題時出錯。" #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -5840,23 +5890,24 @@ msgstr "另存場景為..." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "" +msgstr "導入主題" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" -msgstr "" +msgstr "保存主題時出錯" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving" -msgstr "" +msgstr "保存錯誤" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As..." -msgstr "" +msgstr "將主題另存為..。" #: editor/plugins/script_editor_plugin.cpp -msgid " Class Reference" -msgstr "" +#, fuzzy +msgid "%s Class Reference" +msgstr " 類引用" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." @@ -5871,42 +5922,42 @@ msgstr "排序:" #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Move Up" -msgstr "" +msgstr "上移" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Move Down" -msgstr "" +msgstr "下移" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" -msgstr "" +msgstr "下一個腳本" #: editor/plugins/script_editor_plugin.cpp msgid "Previous script" -msgstr "" +msgstr "上一個腳本" #: editor/plugins/script_editor_plugin.cpp msgid "File" -msgstr "" +msgstr "檔案" #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Open..." -msgstr "開啟" +msgstr "開啟…" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "" +msgstr "全部保存" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "" +msgstr "軟重新加載腳本" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" -msgstr "" +msgstr "複製腳本路徑" #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -5920,99 +5971,99 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Theme" -msgstr "" +msgstr "主題" #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Import Theme..." -msgstr "我知道了" +msgstr "導入主題..。" #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "" +msgstr "重新載入主題" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "" +msgstr "保存主題" #: editor/plugins/script_editor_plugin.cpp msgid "Close Docs" -msgstr "" +msgstr "關閉檔案" #: editor/plugins/script_editor_plugin.cpp msgid "Close All" -msgstr "" +msgstr "全部關閉" #: editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "" +msgstr "關閉其他選項卡" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" -msgstr "" +msgstr "運行" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "\"切換腳本\" 面板" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Next" -msgstr "" +msgstr "查找下一個" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "" +msgstr "跨過" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" -msgstr "" +msgstr "步入" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" -msgstr "" +msgstr "跳過" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp #: editor/script_editor_debugger.cpp msgid "Continue" -msgstr "" +msgstr "繼續" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "" +msgstr "保持調試器打開" #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Debug with External Editor" -msgstr "離開編輯器嗎?" +msgstr "使用外部編輯器進行調試" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" -msgstr "" +msgstr "打開 Godot 線上文檔" #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" -msgstr "" +msgstr "請求檔案" #: editor/plugins/script_editor_plugin.cpp msgid "Help improve the Godot documentation by giving feedback" -msgstr "" +msgstr "通過提供回饋幫助改進 Godot 文檔" #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." -msgstr "" +msgstr "搜索參考文檔。" #: editor/plugins/script_editor_plugin.cpp msgid "Go to previous edited document." -msgstr "" +msgstr "轉到上一個編輯的檔案。" #: editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "" +msgstr "轉到下一個編輯的檔案。" #: editor/plugins/script_editor_plugin.cpp msgid "Discard" -msgstr "" +msgstr "棄置" #: editor/plugins/script_editor_plugin.cpp msgid "" @@ -6022,20 +6073,20 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp msgid "Reload" -msgstr "" +msgstr "重新載入" #: editor/plugins/script_editor_plugin.cpp msgid "Resave" -msgstr "" +msgstr "重新保存" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "" +msgstr "調試器" #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Search Results" -msgstr "搜尋幫助" +msgstr "搜尋結果" #: editor/plugins/script_text_editor.cpp #, fuzzy @@ -6044,28 +6095,28 @@ msgstr "行:" #: editor/plugins/script_text_editor.cpp msgid "(ignore)" -msgstr "" +msgstr "(忽略)" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Go to Function" -msgstr "建立函式" +msgstr "轉到函數" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Standard" -msgstr "" +msgstr "標準" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "" +msgstr "只能拖拽檔案系統中的資源。" #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "" +msgstr "查找符號" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" -msgstr "" +msgstr "選擇顏色" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp #, fuzzy @@ -6074,46 +6125,46 @@ msgstr "轉換成..." #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Uppercase" -msgstr "" +msgstr "大寫" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Lowercase" -msgstr "" +msgstr "小寫" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Capitalize" -msgstr "" +msgstr "首字母大寫" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Syntax Highlighter" -msgstr "" +msgstr "高亮顯示語法" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Cut" -msgstr "" +msgstr "剪切" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "" +msgstr "選擇全部" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Delete Line" -msgstr "刪除" +msgstr "删除行" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "" +msgstr "向左縮進" #: editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "" +msgstr "向右縮進" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "" +msgstr "切換注釋" #: editor/plugins/script_text_editor.cpp #, fuzzy @@ -6122,15 +6173,15 @@ msgstr "前往第...行" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "" +msgstr "折疊所有行" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "" +msgstr "展開所有行" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "" +msgstr "拷貝到下一行" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" @@ -6152,40 +6203,39 @@ msgstr "轉換成..." #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" -msgstr "" +msgstr "自動縮進" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "" +msgstr "設置中斷點" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "" +msgstr "刪除所有中斷點" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Go to Next Breakpoint" -msgstr "往下一步" +msgstr "轉到下一個中斷點" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Go to Previous Breakpoint" -msgstr "往上一步" +msgstr "轉到上一個中斷點" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "" +msgstr "查找上一個" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Find in Files..." -msgstr "過濾檔案..." +msgstr "在檔中查找..。" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." -msgstr "建立函式" +msgstr "轉到函數…" #: editor/plugins/script_text_editor.cpp #, fuzzy @@ -6198,58 +6248,57 @@ msgstr "" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" -msgstr "" +msgstr "著色器" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "" +msgstr "此骨架沒有骨骼綁定,請創建一些 Bone2d 骨骼子節點。" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Create Rest Pose from Bones" -msgstr "" +msgstr "從骨骼創建休息姿勢" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" -msgstr "" +msgstr "將休息姿勢設置為骨骼" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Skeleton2D" -msgstr "單例" +msgstr "2D骨骼節點" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "" +msgstr "創建休息姿勢 (從骨骼)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "" +msgstr "將骨骼設定為靜止姿勢" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical bones" -msgstr "" +msgstr "創建物理骨骼" #: editor/plugins/skeleton_editor_plugin.cpp #, fuzzy msgid "Skeleton" -msgstr "單例" +msgstr "骨架" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical skeleton" -msgstr "" +msgstr "創建物理骨架" #: editor/plugins/skeleton_ik_editor_plugin.cpp #, fuzzy msgid "Play IK" -msgstr "開始" +msgstr "播放 IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" -msgstr "" +msgstr "正交" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective" -msgstr "" +msgstr "透視" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." @@ -6257,31 +6306,31 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "" +msgstr "X軸變換。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "" +msgstr "Y軸變換。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "" +msgstr "Z 軸變換。" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "" +msgstr "查看平面轉換。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " -msgstr "" +msgstr "縮放: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "" +msgstr "翻譯: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "" +msgstr "旋轉 %s 度。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." @@ -6297,80 +6346,79 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "偏航" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" -msgstr "" +msgstr "繪製的物件" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Material Changes" -msgstr "正在儲存變更..." +msgstr "材質變更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Shader Changes" -msgstr "" +msgstr "著色器變更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Surface Changes" -msgstr "" +msgstr "表面變更" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" -msgstr "" +msgstr "繪製調用" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" -msgstr "" +msgstr "頂點" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "" +msgstr "俯視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "" +msgstr "底視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" -msgstr "" +msgstr "底部" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View." -msgstr "" +msgstr "左視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left" -msgstr "" +msgstr "左" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View." -msgstr "" +msgstr "右視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right" -msgstr "" +msgstr "右" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "" +msgstr "前視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front" -msgstr "" +msgstr "正面" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View." -msgstr "" +msgstr "後視圖。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear" -msgstr "" +msgstr "後" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with View" -msgstr "" +msgstr "與視圖對齊" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -6378,11 +6426,11 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." -msgstr "" +msgstr "此操作需要單個選定的節點。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock View Rotation" -msgstr "" +msgstr "鎖定視圖旋轉" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -6390,101 +6438,99 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" -msgstr "" +msgstr "顯示線框" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Overdraw" -msgstr "" +msgstr "顯示過度繪圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Unshaded" -msgstr "" +msgstr "顯示無陰影" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Environment" -msgstr "" +msgstr "查看環境" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "" +msgstr "查看 Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" -msgstr "" +msgstr "查看資訊" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "View FPS" -msgstr "過濾檔案..." +msgstr "查看FPS" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" -msgstr "" +msgstr "半分辯率" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" -msgstr "" +msgstr "音訊監聽器" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Doppler Enable" -msgstr "啟用" +msgstr "啟用多普拉效應" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" -msgstr "" +msgstr "影片預覽" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "" +msgstr "自由視圖 左" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "" +msgstr "自由視圖 右" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Forward" -msgstr "往前" +msgstr "自由視圖 前" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "" +msgstr "自由視圖 后" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "" +msgstr "自由視圖 上" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Down" -msgstr "" +msgstr "自由視圖 下" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "" +msgstr "自由視圖速度調節" #: editor/plugins/spatial_editor_plugin.cpp msgid "" "Note: The FPS value displayed is the editor's framerate.\n" "It cannot be used as a reliable indication of in-game performance." -msgstr "" +msgstr "注意: 顯示的FPS值是編輯器的幀率。 它不能用于表現遊戲內的實際性能" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" -msgstr "" +msgstr "視圖旋轉已鎖定" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" -msgstr "" +msgstr "XForm對話框" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Nodes To Floor" -msgstr "" +msgstr "將節點捕捉到地面" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Select Mode (Q)" -msgstr "僅選擇區域" +msgstr "選擇模式 (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -6495,59 +6541,59 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" -msgstr "" +msgstr "移動模式 (W)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode (E)" -msgstr "" +msgstr "旋轉模式 (E)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "" +msgstr "縮放模式 (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" -msgstr "" +msgstr "本地坐標" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Space Mode (%s)" -msgstr "" +msgstr "本地空間模式(%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Mode (%s)" -msgstr "" +msgstr "捕捉模式 (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "" +msgstr "底部視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "" +msgstr "俯視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "" +msgstr "後視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "" +msgstr "前視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "" +msgstr "左視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "" +msgstr "右視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal view" -msgstr "" +msgstr "切換 投影/正交 視圖" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "" +msgstr "插入動畫幀" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" @@ -6559,64 +6605,64 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Selection With View" -msgstr "" +msgstr "將所選內容與視圖對齊" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Tool Select" -msgstr "所有的選擇" +msgstr "工具選擇" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Move" -msgstr "" +msgstr "工具移動" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Rotate" -msgstr "" +msgstr "工具旋轉" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Scale" -msgstr "" +msgstr "縮放工具" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" -msgstr "" +msgstr "切換自由觀察模式" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" -msgstr "" +msgstr "變換" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap object to floor" -msgstr "" +msgstr "將對象吸附到地板" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." -msgstr "" +msgstr "轉換對話框..。" #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "" +msgstr "1個視口" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "" +msgstr "2個視口" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "" +msgstr "2個視口 (Alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "" +msgstr "3個視口" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "" +msgstr "3個視口 (Alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "" +msgstr "4個視口" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" @@ -6624,48 +6670,48 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" -msgstr "" +msgstr "顯示原點" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Grid" -msgstr "" +msgstr "顯示網格" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "設定" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" -msgstr "" +msgstr "吸附設定" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "" +msgstr "移動吸附" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "" +msgstr "旋轉吸附(度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "" +msgstr "縮放吸附 (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "" +msgstr "視區設定" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" -msgstr "" +msgstr "透視視角(度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" -msgstr "" +msgstr "查看Z-Near:" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Far:" -msgstr "" +msgstr "查看 Z-Far:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" @@ -6677,31 +6723,51 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" -msgstr "" +msgstr "旋轉 (度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale (ratio):" -msgstr "" +msgstr "縮放(比例):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Type" -msgstr "" +msgstr "轉換類型" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pre" -msgstr "" +msgstr "前" #: editor/plugins/spatial_editor_plugin.cpp msgid "Post" -msgstr "" +msgstr "發佈" #: editor/plugins/spatial_editor_plugin.cpp msgid "Nameless gizmo" -msgstr "" +msgstr "未命名的gizmo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Mesh2D" +msgstr "創建2D網格" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create Polygon2D" +msgstr "創建3D多邊形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D" +msgstr "創建碰撞多邊形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D" +msgstr "創建遮光多邊形" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" -msgstr "" +msgstr "Sprite 是空的!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." @@ -6709,7 +6775,22 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "無效的幾何圖形,無法用網格替換。" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create polygon." +msgstr "無效的幾何圖形,無法用網格替換。" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create collision polygon." +msgstr "無效的幾何圖形,無法用網格替換。" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Invalid geometry, can't create light occluder." +msgstr "無效的幾何圖形,無法用網格替換。" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" @@ -6717,98 +6798,108 @@ msgstr "" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Convert to 2D Mesh" -msgstr "轉換成..." +msgid "Convert to Mesh2D" +msgstr "轉換為2D網格" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy -msgid "Create 2D Mesh" -msgstr "新增 %s" +msgid "Convert to Polygon2D" +msgstr "轉換為2D網格" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create CollisionPolygon2D Sibling" +msgstr "創建碰撞多邊形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Create LightOccluder2D Sibling" +msgstr "創建遮光多邊形" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "" +msgstr "簡化: " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " -msgstr "" +msgstr "擴展(像素): " #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Update Preview" -msgstr "預覽:" +msgstr "更新預覽" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Settings:" -msgstr "專案設定" +msgstr "設定:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" -msgstr "" +msgstr "錯誤:無法加載幀資源!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" -msgstr "" +msgstr "添加幀" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "" +msgstr "資源剪貼板為空或不是紋理!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" -msgstr "" +msgstr "粘貼幀" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Empty" -msgstr "" +msgstr "添加空白幀" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "" +msgstr "更改動畫fps" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" -msgstr "" +msgstr "(空)" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy msgid "Animations:" -msgstr "動畫空間。" +msgstr "動畫:" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy msgid "New Animation" -msgstr "動畫最佳化" +msgstr "新動畫" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" -msgstr "" +msgstr "速度 (FPS):" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "" +msgstr "循環" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy msgid "Animation Frames:" -msgstr "動畫空間。" +msgstr "動畫幀:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" -msgstr "" +msgstr "插入空白幀(之前)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (After)" -msgstr "" +msgstr "插入空白幀(之后)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (Before)" -msgstr "" +msgstr "移動(以前)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (After)" -msgstr "" +msgstr "移動(之後)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" @@ -6816,32 +6907,32 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" -msgstr "" +msgstr "設置紋理區域" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Margin" -msgstr "" +msgstr "設置邊距" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "" +msgstr "吸附模式:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp msgid "None" -msgstr "" +msgstr "無" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "" +msgstr "像素吸附" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "" +msgstr "網格吸附" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" -msgstr "" +msgstr "自動剪切" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Offset:" @@ -6849,7 +6940,7 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" -msgstr "" +msgstr "步驟:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" @@ -6861,40 +6952,40 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" -msgstr "" +msgstr "無法將主題保存到檔案:" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "" +msgstr "添加所有項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "" +msgstr "全部添加" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "" +msgstr "删除所有項目" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Remove All" -msgstr "移除" +msgstr "全部删除" #: editor/plugins/theme_editor_plugin.cpp msgid "Edit theme..." -msgstr "" +msgstr "編輯主題…" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." -msgstr "" +msgstr "主題編輯菜單。" #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "" +msgstr "添加類項" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "" +msgstr "删除類項" #: editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" @@ -6906,7 +6997,7 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Create From Current Editor Theme" -msgstr "" +msgstr "從當前編輯器主題模板創建" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -6918,116 +7009,113 @@ msgstr "" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "" +msgstr "檢查項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "已檢查的項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Radio Item" -msgstr "" +msgstr "單選項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Radio Item" -msgstr "" +msgstr "選中的單選項目" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "有" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "許多" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" -msgstr "" +msgstr "有, 許多, 選項" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "" +msgstr "標籤 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "" +msgstr "標籤 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "" +msgstr "標籤 3" #: editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "" +msgstr "數據類型:" #: editor/plugins/theme_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "圖標" #: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp msgid "Style" -msgstr "" +msgstr "樣式" #: editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "" +msgstr "字體" #: editor/plugins/theme_editor_plugin.cpp msgid "Color" -msgstr "" +msgstr "顏色" #: editor/plugins/theme_editor_plugin.cpp msgid "Constant" msgstr "固定" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Erase Selection" -msgstr "所有的選擇" +msgstr "擦除選中" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Fix Invalid Tiles" -msgstr "不能使用的名稱。" +msgstr "修復無效的磁貼" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "所有的選擇" +msgstr "切割選擇" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "" +msgstr "繪製磚塊地圖" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Line Draw" -msgstr "線性" +msgstr "線性繪製" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rectangle Paint" -msgstr "" +msgstr "繪製矩形" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket Fill" -msgstr "" +msgstr "油漆桶填充" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" -msgstr "" +msgstr "擦除磚塊地圖" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Find Tile" -msgstr "尋找" +msgstr "查找磁貼" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" -msgstr "" +msgstr "轉置" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror X" @@ -7039,75 +7127,73 @@ msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "" +msgstr "繪製磁貼" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "" +msgstr "選擇磁貼" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Copy Selection" -msgstr "移除所選" +msgstr "複製選擇" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate left" -msgstr "" +msgstr "向左旋轉" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate right" -msgstr "" +msgstr "向右旋轉" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "水平翻轉" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "垂直翻轉" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "動畫更改座標" +msgstr "清除變換" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet." -msgstr "" +msgstr "將紋理添加到磁貼集。" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "移除" +msgstr "從磁貼集中刪除選定的紋理。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "" +msgstr "從場景創建" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "" +msgstr "從場景合併" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" -msgstr "" +msgstr "下一個座標" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." -msgstr "" +msgstr "選擇下一個形狀、子磁貼或磁貼。" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Previous Coordinate" -msgstr "上個分頁" +msgstr "上一個座標" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "" +msgstr "選擇上一個形狀、子磁貼或磁貼。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." -msgstr "" +msgstr "複製位掩碼。" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -7115,53 +7201,52 @@ msgid "Paste bitmask." msgstr "貼上參數" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Erase bitmask." -msgstr "所有的選擇" +msgstr "擦除位掩碼." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create a new rectangle." -msgstr "新增 %s" +msgstr "創建新矩形。" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create a new polygon." -msgstr "新增資料夾" +msgstr "創建新多邊形。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "" +msgstr "將多邊形保留在區域內。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "" +msgstr "啟用吸附和顯示網格 (可通過屬性面板配置)。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "" +msgstr "顯示磁貼名稱 (按住 ALT 鍵)" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "移除" +msgstr "刪除選定的紋理?這將刪除使用它的所有磁貼。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." -msgstr "" +msgstr "您尚未選擇要刪除的紋理。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "從場景創建?這將覆蓋所有當前磁貼。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" -msgstr "" +msgstr "確定合併場景?" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Remove Texture" -msgstr "移除" +msgstr "刪除紋理" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -7174,9 +7259,8 @@ msgid "" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "確定刪除所選擇的檔案嗎?" +msgstr "删除所選的Rect。" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -7188,7 +7272,7 @@ msgstr "新增資料夾" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Delete polygon." -msgstr "刪除" +msgstr "刪除多邊形。" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -7220,31 +7304,30 @@ msgstr "新增資料夾" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Region" -msgstr "" +msgstr "設置磁貼區域" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create Tile" -msgstr "新增資料夾" +msgstr "創建磁貼" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "設定磁貼圖標" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "過濾檔案..." +msgstr "編輯磁貼位掩碼" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Edit Collision Polygon" -msgstr "新增資料夾" +msgstr "編輯碰撞多邊形" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Edit Occlusion Polygon" -msgstr "新增資料夾" +msgstr "編輯遮擋多邊形" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -7252,45 +7335,41 @@ msgid "Edit Navigation Polygon" msgstr "新增資料夾" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "貼上參數" +msgstr "粘貼磁貼位掩碼" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "清除磁貼位掩碼" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Make Polygon Concave" -msgstr "" +msgstr "使多邊形塌陷" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "新增資料夾" +msgstr "使多邊形凸起" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "移除" +msgstr "移除磁貼" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Remove Collision Polygon" -msgstr "移除" +msgstr "刪除碰撞多邊形" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Occlusion Polygon" -msgstr "" +msgstr "刪除遮擋多邊形" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Navigation Polygon" -msgstr "" +msgstr "刪除導航多邊形" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "過濾檔案..." +msgstr "編輯磁貼優先級" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" @@ -7299,17 +7378,17 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create Collision Polygon" -msgstr "新增資料夾" +msgstr "創建碰撞多邊形" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create Occlusion Polygon" -msgstr "新增資料夾" +msgstr "創建遮擋多邊形" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "This property can't be changed." -msgstr "此操作無法在沒有根節點的情況下進行。" +msgstr "無法更改此屬性。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "TileSet" @@ -7317,54 +7396,58 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "" +msgstr "設置統一名稱" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" -msgstr "" +msgstr "設置輸入預設端口" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node to Visual Shader" -msgstr "" +msgstr "將節點添加到可視化著色器" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "複製動畫關鍵畫格" +msgstr "複製節點" + +#: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy +msgid "Delete Nodes" +msgstr "刪除" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" -msgstr "" +msgstr "視覺著色器輸入類型已更改" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" -msgstr "" +msgstr "頂點" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Fragment" -msgstr "輸入參數" +msgstr "片段" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Light" -msgstr "" +msgstr "燈光" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "VisualShader" -msgstr "" +msgstr "視覺化著色器" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Edit Visual Property" -msgstr "過濾檔案..." +msgstr "編輯可視屬性" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Mode Changed" -msgstr "" +msgstr "視覺著色器模式已更改" #: editor/project_export.cpp msgid "Runnable" -msgstr "" +msgstr "可運行的" #: editor/project_export.cpp msgid "Delete patch '%s' from list?" @@ -7372,7 +7455,7 @@ msgstr "" #: editor/project_export.cpp msgid "Delete preset '%s'?" -msgstr "" +msgstr "是否删除預設“%s”?" #: editor/project_export.cpp msgid "" @@ -7389,54 +7472,51 @@ msgstr "" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "釋放" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "輸出" +msgstr "全部導出" #: editor/project_export.cpp -#, fuzzy msgid "The given export path doesn't exist:" -msgstr "檔案不存在" +msgstr "給定的導出路徑不存在:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" -msgstr "" +msgstr "無此平臺的導出範本:" #: editor/project_export.cpp msgid "Presets" -msgstr "" +msgstr "預設" #: editor/project_export.cpp editor/project_settings_editor.cpp msgid "Add..." -msgstr "" +msgstr "添加…" #: editor/project_export.cpp -#, fuzzy msgid "Export Path" -msgstr "輸出" +msgstr "導出路徑" #: editor/project_export.cpp msgid "Resources" -msgstr "" +msgstr "資源" #: editor/project_export.cpp msgid "Export all resources in the project" -msgstr "" +msgstr "導出項目中的所有資源" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "" +msgstr "導出選定的場景 (和依賴項)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" -msgstr "" +msgstr "導出選定的資源 (和依賴項)" #: editor/project_export.cpp msgid "Export Mode:" -msgstr "" +msgstr "導出模式:" #: editor/project_export.cpp msgid "Resources to export:" @@ -7454,205 +7534,201 @@ msgstr "" #: editor/project_export.cpp msgid "Patches" -msgstr "" +msgstr "補丁" #: editor/project_export.cpp msgid "Make Patch" -msgstr "" +msgstr "製作補丁" #: editor/project_export.cpp msgid "Features" -msgstr "" +msgstr "功能" #: editor/project_export.cpp msgid "Custom (comma-separated):" -msgstr "" +msgstr "自訂 (逗號分隔):" #: editor/project_export.cpp #, fuzzy msgid "Feature List:" -msgstr "方法:" +msgstr "功能清單:" #: editor/project_export.cpp #, fuzzy msgid "Script" -msgstr "開啟最近存取" +msgstr "腳本" #: editor/project_export.cpp -#, fuzzy msgid "Script Export Mode:" -msgstr "輸出" +msgstr "腳本導出模式:" #: editor/project_export.cpp msgid "Text" -msgstr "" +msgstr "文本" #: editor/project_export.cpp msgid "Compiled" -msgstr "" +msgstr "編譯" #: editor/project_export.cpp msgid "Encrypted (Provide Key Below)" -msgstr "" +msgstr "加密 (使用以下密碼)" #: editor/project_export.cpp msgid "Invalid Encryption Key (must be 64 characters long)" -msgstr "" +msgstr "不正確加密金鑰 (長度必須為64個字元)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "" +msgstr "腳本加密金鑰 (256位十六進位碼):" #: editor/project_export.cpp -#, fuzzy msgid "Export PCK/Zip" -msgstr "輸出" +msgstr "導出 PCK/ZIP" #: editor/project_export.cpp #, fuzzy msgid "Export mode?" -msgstr "輸出" +msgstr "導出模式:" #: editor/project_export.cpp #, fuzzy msgid "Export All" -msgstr "輸出" +msgstr "全部導出" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" -msgstr "" +msgstr "缺少此平臺的導出範本:" #: editor/project_export.cpp msgid "Export With Debug" -msgstr "" +msgstr "導出為調試" #: editor/project_manager.cpp -#, fuzzy msgid "The path does not exist." -msgstr "檔案不存在" +msgstr "路徑不存在." #: editor/project_manager.cpp msgid "Invalid '.zip' project file, does not contain a 'project.godot' file." -msgstr "" +msgstr "“.zip”項目檔案無效,不包含“project.godot”檔案。" #: editor/project_manager.cpp msgid "Please choose an empty folder." -msgstr "" +msgstr "請選擇一個空資料夾。" #: editor/project_manager.cpp msgid "Please choose a 'project.godot' or '.zip' file." -msgstr "" +msgstr "請選擇“project.godot”或“.zip”檔案。" #: editor/project_manager.cpp msgid "Directory already contains a Godot project." -msgstr "" +msgstr "目錄已包含一個godot項目。" #: editor/project_manager.cpp msgid "Imported Project" -msgstr "" +msgstr "已導入的項目" #: editor/project_manager.cpp #, fuzzy msgid "Invalid Project Name." -msgstr "不能使用的名稱。" +msgstr "項目名稱無效。" #: editor/project_manager.cpp -#, fuzzy msgid "Couldn't create folder." -msgstr "無法新增資料夾" +msgstr "無法新增資料夾." #: editor/project_manager.cpp msgid "There is already a folder in this path with the specified name." -msgstr "" +msgstr "此路徑中已存在具有指定名稱的資料夾。" #: editor/project_manager.cpp msgid "It would be a good idea to name your project." -msgstr "" +msgstr "給你的項目命名是個好主意。" #: editor/project_manager.cpp msgid "Invalid project path (changed anything?)." -msgstr "" +msgstr "不正確項目路徑 (更改了任何內容?)。" #: editor/project_manager.cpp msgid "" "Couldn't load project.godot in project path (error %d). It may be missing or " "corrupted." -msgstr "" +msgstr "無法在項目路徑中加載project.godot(錯誤%d)。它可能遺失或損壞。" #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." -msgstr "" +msgstr "無法在項目路徑中編輯project.godot。" #: editor/project_manager.cpp msgid "Couldn't create project.godot in project path." -msgstr "" +msgstr "無法在項目路徑中創建project.godot。" #: editor/project_manager.cpp msgid "The following files failed extraction from package:" -msgstr "" +msgstr "提取以下檔案失敗:" #: editor/project_manager.cpp #, fuzzy msgid "Rename Project" -msgstr "專案設定" +msgstr "重命名項目" #: editor/project_manager.cpp msgid "New Game Project" -msgstr "" +msgstr "新遊戲項目" #: editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "導入現有項目" #: editor/project_manager.cpp msgid "Import & Edit" -msgstr "" +msgstr "導入與編輯" #: editor/project_manager.cpp msgid "Create New Project" -msgstr "" +msgstr "創建新項目" #: editor/project_manager.cpp #, fuzzy msgid "Create & Edit" -msgstr "新增" +msgstr "創建和編輯" #: editor/project_manager.cpp msgid "Install Project:" -msgstr "" +msgstr "安裝項目:" #: editor/project_manager.cpp msgid "Install & Edit" -msgstr "" +msgstr "安裝和編輯" #: editor/project_manager.cpp msgid "Project Name:" -msgstr "" +msgstr "項目名稱:" #: editor/project_manager.cpp #, fuzzy msgid "Create folder" -msgstr "新增資料夾" +msgstr "創建資料夾" #: editor/project_manager.cpp msgid "Project Path:" -msgstr "" +msgstr "項目路徑:" #: editor/project_manager.cpp msgid "Project Installation Path:" -msgstr "" +msgstr "項目安裝路徑:" #: editor/project_manager.cpp msgid "Browse" -msgstr "" +msgstr "瀏覽" #: editor/project_manager.cpp msgid "Renderer:" -msgstr "" +msgstr "渲染器:" #: editor/project_manager.cpp msgid "OpenGL ES 3.0" -msgstr "" +msgstr "OpenGL ES 3.0" #: editor/project_manager.cpp msgid "" @@ -7664,7 +7740,7 @@ msgstr "" #: editor/project_manager.cpp msgid "OpenGL ES 2.0" -msgstr "" +msgstr "OpenGL ES 2.0" #: editor/project_manager.cpp msgid "" @@ -7676,20 +7752,20 @@ msgstr "" #: editor/project_manager.cpp msgid "Renderer can be changed later, but scenes may need to be adjusted." -msgstr "" +msgstr "渲染器可以然後更改, 但場景可能需要調整。" #: editor/project_manager.cpp msgid "Unnamed Project" -msgstr "" +msgstr "未命名項目" #: editor/project_manager.cpp #, fuzzy msgid "Can't open project at '%s'." -msgstr "連接..." +msgstr "無法打開位於“%s”的項目。" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" -msgstr "" +msgstr "您確定要打開多個項目嗎?" #: editor/project_manager.cpp msgid "" @@ -7703,6 +7779,12 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" +"以下項目設定檔案未指定通過其創建的Godot的版本。\n" +"\n" +"%s\n" +"\n" +"如果繼續打開它, 它將被轉換為 Godot 的當前配置檔案格式。 \n" +"警告: 您將無法再使用以前版本的引擎打開項目。" #: editor/project_manager.cpp msgid "" @@ -7715,12 +7797,18 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" +"以下項目設置檔案是由較舊的引擎版本生成的, 需要為此版本進行轉換:\n" +"\n" +"%s\n" +"\n" +"是否要將其轉換?\n" +"警告: 您將無法再使用以前版本的引擎打開專案。" #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." -msgstr "" +msgstr "此項目設置是由較新的引擎版本創建的, 其設置與此版本不相容。" #: editor/project_manager.cpp msgid "" @@ -7737,11 +7825,11 @@ msgstr "" #: editor/project_manager.cpp msgid "Are you sure to run more than one project?" -msgstr "" +msgstr "您確定要運行多個項目嗎?" #: editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" -msgstr "" +msgstr "是否從清單中删除項目?(資料夾內容將不被修改)" #: editor/project_manager.cpp msgid "" @@ -8523,10 +8611,6 @@ msgid "Open documentation" msgstr "開啟最近存取" #: editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "" @@ -9285,7 +9369,7 @@ msgstr "" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "渲染NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -10333,6 +10417,9 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Insert keys." +#~ msgstr "插入幀." + #~ msgid "Line:" #~ msgstr "行:" diff --git a/methods.py b/methods.py index 9efd8bf2f4..11efd68ce4 100644 --- a/methods.py +++ b/methods.py @@ -29,11 +29,11 @@ def disable_warnings(self): self.Append(CPPFLAGS=['/w']) self['CCFLAGS'] = [x for x in self['CCFLAGS'] if not x in warn_flags] self['CFLAGS'] = [x for x in self['CFLAGS'] if not x in warn_flags] - self['CPPFLAGS'] = [x for x in self['CPPFLAGS'] if not x in warn_flags] + self['CXXFLAGS'] = [x for x in self['CXXFLAGS'] if not x in warn_flags] else: self.Append(CCFLAGS=['-w']) self.Append(CFLAGS=['-w']) - self.Append(CPPFLAGS=['-w']) + self.Append(CXXFLAGS=['-w']) def add_module_version_string(self,s): diff --git a/modules/bmp/image_loader_bmp.cpp b/modules/bmp/image_loader_bmp.cpp index 509b30c7e6..bcc992db24 100644 --- a/modules/bmp/image_loader_bmp.cpp +++ b/modules/bmp/image_loader_bmp.cpp @@ -33,6 +33,7 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image, const uint8_t *p_buffer, const uint8_t *p_color_buffer, + const uint32_t color_table_size, const bmp_header_s &p_header) { Error err = OK; @@ -49,42 +50,82 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image, if (p_header.bmp_info_header.bmp_compression != BI_RGB) { err = FAILED; } + // Check whether we can load it - if (!(bits_per_pixel == 8 || bits_per_pixel == 24 || bits_per_pixel == 32)) { - err = FAILED; - } + if (bits_per_pixel == 1) { + // Requires bit unpacking... + ERR_FAIL_COND_V(width % 8 != 0, ERR_UNAVAILABLE); + ERR_FAIL_COND_V(height % 8 != 0, ERR_UNAVAILABLE); + + } else if (bits_per_pixel == 4) { + // Requires bit unpacking... + ERR_FAIL_COND_V(width % 2 != 0, ERR_UNAVAILABLE); + ERR_FAIL_COND_V(height % 2 != 0, ERR_UNAVAILABLE); + } else if (bits_per_pixel == 16) { + + ERR_FAIL_V(ERR_UNAVAILABLE); + } if (err == OK) { - uint32_t line_width = ((p_header.bmp_info_header.bmp_width * - p_header.bmp_info_header.bmp_bit_count / 8) + - 3) & - ~3; + // Image data (might be indexed) + PoolVector<uint8_t> data; + int data_len = 0; + + if (bits_per_pixel <= 8) { // indexed + data_len = width * height; + } else { // color + data_len = width * height * 4; + } + ERR_FAIL_COND_V(data_len == 0, ERR_BUG); + err = data.resize(data_len); - PoolVector<uint8_t> image_data; - err = image_data.resize(width * height * 4); + PoolVector<uint8_t>::Write data_w = data.write(); + uint8_t *write_buffer = data_w.ptr(); - PoolVector<uint8_t>::Write image_data_w = image_data.write(); - uint8_t *write_buffer = image_data_w.ptr(); + const uint32_t width_bytes = width * bits_per_pixel / 8; + const uint32_t line_width = (width_bytes + 3) & ~3; - const uint32_t color_index_max = p_header.bmp_info_header.bmp_colors_used - 1; + // The actual data traversal is determined by + // the data width in case of 8/4/1 bit images + const uint32_t w = bits_per_pixel >= 24 ? width : width_bytes; const uint8_t *line = p_buffer + (line_width * (height - 1)); + for (unsigned int i = 0; i < height; i++) { const uint8_t *line_ptr = line; - for (unsigned int j = 0; j < width; j++) { + + for (unsigned int j = 0; j < w; j++) { switch (bits_per_pixel) { + case 1: { + uint8_t color_index = *line_ptr; + + write_buffer[index + 0] = (color_index >> 7) & 1; + write_buffer[index + 1] = (color_index >> 6) & 1; + write_buffer[index + 2] = (color_index >> 5) & 1; + write_buffer[index + 3] = (color_index >> 4) & 1; + write_buffer[index + 4] = (color_index >> 3) & 1; + write_buffer[index + 5] = (color_index >> 2) & 1; + write_buffer[index + 6] = (color_index >> 1) & 1; + write_buffer[index + 7] = (color_index >> 0) & 1; + + index += 8; + line_ptr += 1; + } break; + case 4: { + uint8_t color_index = *line_ptr; + + write_buffer[index + 0] = (color_index >> 4) & 0x0f; + write_buffer[index + 1] = color_index & 0x0f; + + index += 2; + line_ptr += 1; + } break; case 8: { - uint8_t color_index = CLAMP(*line_ptr, 0, color_index_max); - uint32_t color = 0x000000; + uint8_t color_index = *line_ptr; - if (p_color_buffer != NULL) - color = ((uint32_t *)p_color_buffer)[color_index]; + write_buffer[index] = color_index; - write_buffer[index + 2] = color & 0xff; - write_buffer[index + 1] = (color >> 8) & 0xff; - write_buffer[index + 0] = (color >> 16) & 0xff; - write_buffer[index + 3] = 0xff; - index += 4; + index += 1; line_ptr += 1; } break; case 24: { @@ -94,6 +135,7 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image, write_buffer[index + 1] = (color >> 8) & 0xff; write_buffer[index + 0] = (color >> 16) & 0xff; write_buffer[index + 3] = 0xff; + index += 4; line_ptr += 3; } break; @@ -104,6 +146,7 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image, write_buffer[index + 1] = (color >> 8) & 0xff; write_buffer[index + 0] = (color >> 16) & 0xff; write_buffer[index + 3] = color >> 24; + index += 4; line_ptr += 4; } break; @@ -111,7 +154,51 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image, } line -= line_width; } - p_image->create(width, height, 0, Image::FORMAT_RGBA8, image_data); + + if (p_color_buffer == NULL || color_table_size == 0) { // regular pixels + + p_image->create(width, height, 0, Image::FORMAT_RGBA8, data); + + } else { // data is in indexed format, extend it + + // Palette data + PoolVector<uint8_t> palette_data; + palette_data.resize(color_table_size * 4); + + PoolVector<uint8_t>::Write palette_data_w = palette_data.write(); + uint8_t *pal = palette_data_w.ptr(); + + const uint8_t *cb = p_color_buffer; + + for (unsigned int i = 0; i < color_table_size; ++i) { + uint32_t color = *((uint32_t *)cb); + + pal[i * 4 + 0] = (color >> 16) & 0xff; + pal[i * 4 + 1] = (color >> 8) & 0xff; + pal[i * 4 + 2] = (color)&0xff; + pal[i * 4 + 3] = 0xff; + + cb += 4; + } + // Extend palette to image + PoolVector<uint8_t> extended_data; + extended_data.resize(data.size() * 4); + + PoolVector<uint8_t>::Write ex_w = extended_data.write(); + uint8_t *dest = ex_w.ptr(); + + const int num_pixels = width * height; + + for (int i = 0; i < num_pixels; i++) { + dest[0] = pal[write_buffer[i] * 4 + 0]; + dest[1] = pal[write_buffer[i] * 4 + 1]; + dest[2] = pal[write_buffer[i] * 4 + 2]; + dest[3] = pal[write_buffer[i] * 4 + 3]; + + dest += 4; + } + p_image->create(width, height, 0, Image::FORMAT_RGBA8, extended_data); + } } } return err; @@ -123,12 +210,9 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f, bmp_header_s bmp_header; Error err = ERR_INVALID_DATA; - static const size_t FILE_HEADER_SIZE = 14; - static const size_t INFO_HEADER_SIZE = 40; - // A valid bmp file should always at least have a // file header and a minimal info header - if (f->get_len() > FILE_HEADER_SIZE + INFO_HEADER_SIZE) { + if (f->get_len() > BITMAP_FILE_HEADER_SIZE + BITMAP_INFO_HEADER_MIN_SIZE) { // File Header bmp_header.bmp_file_header.bmp_signature = f->get_16(); if (bmp_header.bmp_file_header.bmp_signature == BITMAP_SIGNATURE) { @@ -138,9 +222,14 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f, // Info Header bmp_header.bmp_info_header.bmp_header_size = f->get_32(); + ERR_FAIL_COND_V(bmp_header.bmp_info_header.bmp_header_size < BITMAP_INFO_HEADER_MIN_SIZE, ERR_FILE_CORRUPT); + bmp_header.bmp_info_header.bmp_width = f->get_32(); bmp_header.bmp_info_header.bmp_height = f->get_32(); + bmp_header.bmp_info_header.bmp_planes = f->get_16(); + ERR_FAIL_COND_V(bmp_header.bmp_info_header.bmp_planes != 1, ERR_FILE_CORRUPT); + bmp_header.bmp_info_header.bmp_bit_count = f->get_16(); bmp_header.bmp_info_header.bmp_compression = f->get_32(); bmp_header.bmp_info_header.bmp_size_image = f->get_32(); @@ -153,23 +242,30 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f, if (bmp_header.bmp_info_header.bmp_compression != BI_RGB) { ERR_EXPLAIN("Unsupported bmp file: " + f->get_path()); f->close(); - ERR_FAIL_V(err) + ERR_FAIL_V(ERR_UNAVAILABLE); } - - f->seek(FILE_HEADER_SIZE + - bmp_header.bmp_info_header.bmp_header_size); - - if (bmp_header.bmp_info_header.bmp_bit_count < 16 && bmp_header.bmp_info_header.bmp_colors_used == 0) - bmp_header.bmp_info_header.bmp_colors_used = 1 << bmp_header.bmp_info_header.bmp_bit_count; - - // Color table is usually 4 bytes per color -> [B][G][R][0] - uint32_t color_table_size = bmp_header.bmp_info_header.bmp_colors_used * 4; + // Don't rely on sizeof(bmp_file_header) as structure padding + // adds 2 bytes offset leading to misaligned color table reading + uint32_t ct_offset = BITMAP_FILE_HEADER_SIZE + + bmp_header.bmp_info_header.bmp_header_size; + f->seek(ct_offset); + + uint32_t color_table_size = 0; + + // bmp_colors_used may report 0 despite having a color table + // for 4 and 1 bit images, so don't rely on this information + if (bmp_header.bmp_info_header.bmp_bit_count <= 8) { + // Support 256 colors max + color_table_size = 1 << bmp_header.bmp_info_header.bmp_bit_count; + } + ERR_FAIL_COND_V(color_table_size == 0, ERR_BUG); PoolVector<uint8_t> bmp_color_table; if (color_table_size > 0) { - err = bmp_color_table.resize(color_table_size); + // Color table is usually 4 bytes per color -> [B][G][R][0] + err = bmp_color_table.resize(color_table_size * 4); PoolVector<uint8_t>::Write bmp_color_table_w = bmp_color_table.write(); - f->get_buffer(bmp_color_table_w.ptr(), color_table_size); + f->get_buffer(bmp_color_table_w.ptr(), color_table_size * 4); } f->seek(bmp_header.bmp_file_header.bmp_file_offset); @@ -186,7 +282,7 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f, PoolVector<uint8_t>::Read bmp_buffer_r = bmp_buffer.read(); PoolVector<uint8_t>::Read bmp_color_table_r = bmp_color_table.read(); err = convert_to_image(p_image, bmp_buffer_r.ptr(), - bmp_color_table_r.ptr(), bmp_header); + bmp_color_table_r.ptr(), color_table_size, bmp_header); } f->close(); } diff --git a/modules/bmp/image_loader_bmp.h b/modules/bmp/image_loader_bmp.h index b27a47d402..0082cf778a 100644 --- a/modules/bmp/image_loader_bmp.h +++ b/modules/bmp/image_loader_bmp.h @@ -37,6 +37,9 @@ class ImageLoaderBMP : public ImageFormatLoader { protected: static const unsigned BITMAP_SIGNATURE = 0x4d42; + static const unsigned BITMAP_FILE_HEADER_SIZE = 14; // bmp_file_header_s + static const unsigned BITMAP_INFO_HEADER_MIN_SIZE = 40; // bmp_info_header_s + enum bmp_compression_s { BI_RGB = 0x00, BI_RLE8 = 0x01, @@ -76,6 +79,7 @@ protected: static Error convert_to_image(Ref<Image> p_image, const uint8_t *p_buffer, const uint8_t *p_color_buffer, + const uint32_t color_table_size, const bmp_header_s &p_header); public: diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub index 7e714ba43f..e7c2fff54c 100644 --- a/modules/bullet/SCsub +++ b/modules/bullet/SCsub @@ -188,7 +188,7 @@ if env['builtin_bullet']: env_bullet.Append(CPPPATH=[thirdparty_dir]) # if env['target'] == "debug" or env['target'] == "release_debug": - # env_bullet.Append(CCFLAGS=['-DBT_DEBUG']) + # env_bullet.Append(CPPFLAGS=['-DBT_DEBUG']) env_thirdparty = env_bullet.Clone() env_thirdparty.disable_warnings() diff --git a/modules/csg/csg.cpp b/modules/csg/csg.cpp index 0eb539b182..7e1cc937cd 100644 --- a/modules/csg/csg.cpp +++ b/modules/csg/csg.cpp @@ -242,7 +242,7 @@ void CSGBrushOperation::BuildPoly::_clip_segment(const CSGBrush *p_brush, int p_ //check if edge and poly share a vertex, of so, assign it to segment_idx for (int i = 0; i < points.size(); i++) { for (int j = 0; j < 2; j++) { - if (segment[j].distance_to(points[i].point) < CMP_EPSILON) { + if (Math::is_zero_approx(segment[j].distance_to(points[i].point))) { segment_idx[j] = i; inserted_points.push_back(i); break; @@ -310,7 +310,7 @@ void CSGBrushOperation::BuildPoly::_clip_segment(const CSGBrush *p_brush, int p_ Vector2 edgeseg[2] = { points[edges[i].points[0]].point, points[edges[i].points[1]].point }; Vector2 closest = Geometry::get_closest_point_to_segment_2d(segment[j], edgeseg); - if (closest.distance_to(segment[j]) < CMP_EPSILON) { + if (Math::is_zero_approx(closest.distance_to(segment[j]))) { //point rest of this edge res = closest; found = true; @@ -439,7 +439,7 @@ void CSGBrushOperation::BuildPoly::clip(const CSGBrush *p_brush, int p_face, Mes //transform A points to 2D - if (segment[0].distance_to(segment[1]) < CMP_EPSILON) + if (Math::is_zero_approx(segment[0].distance_to(segment[1]))) return; //too small _clip_segment(p_brush, p_face, segment, mesh_merge, p_for_B); @@ -461,10 +461,10 @@ void CSGBrushOperation::_collision_callback(const CSGBrush *A, int p_face_a, Map { //check if either is a degenerate - if (va[0].distance_to(va[1]) < CMP_EPSILON || va[0].distance_to(va[2]) < CMP_EPSILON || va[1].distance_to(va[2]) < CMP_EPSILON) + if (Math::is_zero_approx(va[0].distance_to(va[1])) || Math::is_zero_approx(va[0].distance_to(va[2])) || Math::is_zero_approx(va[1].distance_to(va[2]))) return; - if (vb[0].distance_to(vb[1]) < CMP_EPSILON || vb[0].distance_to(vb[2]) < CMP_EPSILON || vb[1].distance_to(vb[2]) < CMP_EPSILON) + if (Math::is_zero_approx(vb[0].distance_to(vb[1])) || Math::is_zero_approx(vb[0].distance_to(vb[2])) || Math::is_zero_approx(vb[1].distance_to(vb[2]))) return; } diff --git a/modules/etc/SCsub b/modules/etc/SCsub index 6e963ef766..eb2738053b 100644 --- a/modules/etc/SCsub +++ b/modules/etc/SCsub @@ -31,7 +31,7 @@ env_etc.Append(CPPPATH=[thirdparty_dir]) # upstream uses c++11 if not env.msvc: - env_etc.Append(CCFLAGS="-std=c++11") + env_etc.Append(CXXFLAGS="-std=c++11") env_thirdparty = env_etc.Clone() env_thirdparty.disable_warnings() diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub index c2d165f367..f2cd9f9a60 100644 --- a/modules/freetype/SCsub +++ b/modules/freetype/SCsub @@ -72,9 +72,9 @@ if env['builtin_freetype']: # Also needed in main env for scene/ env.Append(CPPPATH=[thirdparty_dir + "/include"]) - env_freetype.Append(CCFLAGS=['-DFT2_BUILD_LIBRARY', '-DFT_CONFIG_OPTION_USE_PNG']) + env_freetype.Append(CPPFLAGS=['-DFT2_BUILD_LIBRARY', '-DFT_CONFIG_OPTION_USE_PNG']) if (env['target'] != 'release'): - env_freetype.Append(CCFLAGS=['-DZLIB_DEBUG']) + env_freetype.Append(CPPFLAGS=['-DZLIB_DEBUG']) # Also requires libpng headers if env['builtin_libpng']: @@ -100,4 +100,4 @@ if env['builtin_freetype']: # Godot source files env_freetype.add_source_files(env.modules_sources, "*.cpp") # Used in scene/, needs to be in main env -env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) +env.Append(CPPFLAGS=['-DFREETYPE_ENABLED']) diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp index 4fd136d5cc..7552bc6bff 100644 --- a/modules/gdscript/gdscript_functions.cpp +++ b/modules/gdscript/gdscript_functions.cpp @@ -68,6 +68,8 @@ const char *GDScriptFunctions::get_func_name(Function p_func) { "exp", "is_nan", "is_inf", + "is_equal_approx", + "is_zero_approx", "ease", "decimals", "stepify", @@ -316,6 +318,17 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_ VALIDATE_ARG_NUM(0); r_ret = Math::is_inf((double)*p_args[0]); } break; + case MATH_ISEQUALAPPROX: { + VALIDATE_ARG_COUNT(2); + VALIDATE_ARG_NUM(0); + VALIDATE_ARG_NUM(1); + r_ret = Math::is_equal_approx((real_t)*p_args[0], (real_t)*p_args[1]); + } break; + case MATH_ISZEROAPPROX: { + VALIDATE_ARG_COUNT(1); + VALIDATE_ARG_NUM(0); + r_ret = Math::is_zero_approx((real_t)*p_args[0]); + } break; case MATH_EASE: { VALIDATE_ARG_COUNT(2); VALIDATE_ARG_NUM(0); @@ -1596,6 +1609,16 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) { mi.return_val.type = Variant::BOOL; return mi; } break; + case MATH_ISEQUALAPPROX: { + MethodInfo mi("is_equal_approx", PropertyInfo(Variant::REAL, "a"), PropertyInfo(Variant::REAL, "b")); + mi.return_val.type = Variant::BOOL; + return mi; + } break; + case MATH_ISZEROAPPROX: { + MethodInfo mi("is_zero_approx", PropertyInfo(Variant::REAL, "s")); + mi.return_val.type = Variant::BOOL; + return mi; + } break; case MATH_EASE: { MethodInfo mi("ease", PropertyInfo(Variant::REAL, "s"), PropertyInfo(Variant::REAL, "curve")); mi.return_val.type = Variant::REAL; diff --git a/modules/gdscript/gdscript_functions.h b/modules/gdscript/gdscript_functions.h index 14bf3d7560..0dbd172acf 100644 --- a/modules/gdscript/gdscript_functions.h +++ b/modules/gdscript/gdscript_functions.h @@ -59,6 +59,8 @@ public: MATH_EXP, MATH_ISNAN, MATH_ISINF, + MATH_ISEQUALAPPROX, + MATH_ISZEROAPPROX, MATH_EASE, MATH_DECIMALS, MATH_STEPIFY, diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 3c9644127c..27e579935f 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -131,14 +131,6 @@ void CSharpLanguage::finish() { finalizing = true; -#ifdef TOOLS_ENABLED - // Must be here, to avoid StringName leaks - if (BindingsGenerator::singleton) { - memdelete(BindingsGenerator::singleton); - BindingsGenerator::singleton = NULL; - } -#endif - // Make sure all script binding gchandles are released before finalizing GDMono for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) { CSharpScriptBinding &script_binding = E->value(); @@ -919,7 +911,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) { } #endif -void CSharpLanguage::project_assembly_loaded() { +void CSharpLanguage::_load_scripts_metadata() { scripts_metadata.clear(); @@ -953,6 +945,7 @@ void CSharpLanguage::project_assembly_loaded() { } scripts_metadata = old_dict_var.operator Dictionary(); + scripts_metadata_invalidated = false; print_verbose("Successfully loaded scripts metadata"); } else { @@ -1024,11 +1017,13 @@ bool CSharpLanguage::debug_break(const String &p_error, bool p_allow_continue) { } } -void CSharpLanguage::_uninitialize_script_bindings() { +void CSharpLanguage::_on_scripts_domain_unloaded() { for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) { CSharpScriptBinding &script_binding = E->value(); script_binding.inited = false; } + + scripts_metadata_invalidated = true; } void CSharpLanguage::set_language_index(int p_idx) { @@ -1086,6 +1081,8 @@ CSharpLanguage::CSharpLanguage() { #endif lang_idx = -1; + + scripts_metadata_invalidated = true; } CSharpLanguage::~CSharpLanguage() { diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index 050527d52b..fe4eed2e24 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -309,14 +309,17 @@ class CSharpLanguage : public ScriptLanguage { int lang_idx; Dictionary scripts_metadata; + bool scripts_metadata_invalidated; // For debug_break and debug_break_parse int _debug_parse_err_line; String _debug_parse_err_file; String _debug_error; + void _load_scripts_metadata(); + friend class GDMono; - void _uninitialize_script_bindings(); + void _on_scripts_domain_unloaded(); public: StringNameCache string_names; @@ -341,9 +344,15 @@ public: void reload_assemblies(bool p_soft_reload); #endif - void project_assembly_loaded(); + _FORCE_INLINE_ Dictionary get_scripts_metadata_or_nothing() { + return scripts_metadata_invalidated ? Dictionary() : scripts_metadata; + } - _FORCE_INLINE_ const Dictionary &get_scripts_metadata() { return scripts_metadata; } + _FORCE_INLINE_ const Dictionary &get_scripts_metadata() { + if (scripts_metadata_invalidated) + _load_scripts_metadata(); + return scripts_metadata; + } virtual String get_name() const; diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp index 259c0ffece..a408716641 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -97,14 +97,10 @@ #define C_METHOD_MONOARRAY_TO(m_type) C_NS_MONOMARSHAL "::mono_array_to_" #m_type #define C_METHOD_MONOARRAY_FROM(m_type) C_NS_MONOMARSHAL "::" #m_type "_to_mono_array" -#define BINDINGS_GENERATOR_VERSION UINT32_C(8) +#define BINDINGS_GENERATOR_VERSION UINT32_C(9) const char *BindingsGenerator::TypeInterface::DEFAULT_VARARG_C_IN("\t%0 %1_in = %1;\n"); -bool BindingsGenerator::verbose_output = false; - -BindingsGenerator *BindingsGenerator::singleton = NULL; - static String fix_doc_description(const String &p_bbcode) { // This seems to be the correct way to do this. It's the same EditorHelp does. @@ -816,9 +812,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) { CRASH_COND(enum_class_name != "Variant"); // Hard-coded... - if (verbose_output) { - WARN_PRINTS("Declaring global enum `" + enum_proxy_name + "` inside static class `" + enum_class_name + "`"); - } + _log("Declaring global enum `%s` inside static class `%s`\n", enum_proxy_name.utf8().get_data(), enum_class_name.utf8().get_data()); p_output.append("\n" INDENT1 "public static partial class "); p_output.append(enum_class_name); @@ -867,9 +861,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) { p_output.append("\n#pragma warning restore CS1591\n"); } -Error BindingsGenerator::generate_cs_core_project(const String &p_solution_dir, DotNetSolution &r_solution, bool p_verbose_output) { - - verbose_output = p_verbose_output; +Error BindingsGenerator::generate_cs_core_project(const String &p_solution_dir, DotNetSolution &r_solution) { String proj_dir = p_solution_dir.plus_file(CORE_API_ASSEMBLY_NAME); @@ -1001,15 +993,12 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_solution_dir, r_solution.add_new_project(CORE_API_ASSEMBLY_NAME, proj_info); - if (verbose_output) - OS::get_singleton()->print("The solution and C# project for the Core API was generated successfully\n"); + _log("The solution and C# project for the Core API was generated successfully\n"); return OK; } -Error BindingsGenerator::generate_cs_editor_project(const String &p_solution_dir, DotNetSolution &r_solution, bool p_verbose_output) { - - verbose_output = p_verbose_output; +Error BindingsGenerator::generate_cs_editor_project(const String &p_solution_dir, DotNetSolution &r_solution) { String proj_dir = p_solution_dir.plus_file(EDITOR_API_ASSEMBLY_NAME); @@ -1100,13 +1089,12 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_solution_dir r_solution.add_new_project(EDITOR_API_ASSEMBLY_NAME, proj_info); - if (verbose_output) - OS::get_singleton()->print("The solution and C# project for the Editor API was generated successfully\n"); + _log("The solution and C# project for the Editor API was generated successfully\n"); return OK; } -Error BindingsGenerator::generate_cs_api(const String &p_output_dir, bool p_verbose_output) { +Error BindingsGenerator::generate_cs_api(const String &p_output_dir) { DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); ERR_FAIL_COND_V(!da, ERR_CANT_CREATE); @@ -1123,13 +1111,13 @@ Error BindingsGenerator::generate_cs_api(const String &p_output_dir, bool p_verb Error proj_err; - proj_err = generate_cs_core_project(p_output_dir, solution, p_verbose_output); + proj_err = generate_cs_core_project(p_output_dir, solution); if (proj_err != OK) { ERR_PRINT("Generation of the Core API C# project failed"); return proj_err; } - proj_err = generate_cs_editor_project(p_output_dir, solution, p_verbose_output); + proj_err = generate_cs_editor_project(p_output_dir, solution); if (proj_err != OK) { ERR_PRINT("Generation of the Editor API C# project failed"); return proj_err; @@ -1168,8 +1156,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls; - if (verbose_output) - OS::get_singleton()->print("Generating %s.cs...\n", itype.proxy_name.utf8().get_data()); + _log("Generating %s.cs...\n", itype.proxy_name.utf8().get_data()); String ctor_method(ICALL_PREFIX + itype.proxy_name + "_Ctor"); // Used only for derived types @@ -1477,7 +1464,13 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte p_output.append("\n" INDENT2 OPEN_BLOCK); if (getter) { - p_output.append(INDENT3 "get\n" OPEN_BLOCK_L3); + p_output.append(INDENT3 "get\n" + + // TODO Remove this once we make accessor methods private/internal (they will no longer be marked as obsolete after that) + "#pragma warning disable CS0618 // Disable warning about obsolete method\n" + + OPEN_BLOCK_L3); + p_output.append("return "); p_output.append(getter->proxy_name + "("); if (p_iprop.index != -1) { @@ -1491,11 +1484,22 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte p_output.append(itos(p_iprop.index)); } } - p_output.append(");\n" CLOSE_BLOCK_L3); + p_output.append(");\n" + + CLOSE_BLOCK_L3 + + // TODO Remove this once we make accessor methods private/internal (they will no longer be marked as obsolete after that) + "#pragma warning restore CS0618\n"); } if (setter) { - p_output.append(INDENT3 "set\n" OPEN_BLOCK_L3); + p_output.append(INDENT3 "set\n" + + // TODO Remove this once we make accessor methods private/internal (they will no longer be marked as obsolete after that) + "#pragma warning disable CS0618 // Disable warning about obsolete method\n" + + OPEN_BLOCK_L3); + p_output.append(setter->proxy_name + "("); if (p_iprop.index != -1) { const ArgumentInterface &idx_arg = setter->arguments.front()->get(); @@ -1508,7 +1512,12 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte p_output.append(itos(p_iprop.index) + ", "); } } - p_output.append("value);\n" CLOSE_BLOCK_L3); + p_output.append("value);\n" + + CLOSE_BLOCK_L3 + + // TODO Remove this once we make accessor methods private/internal (they will no longer be marked as obsolete after that) + "#pragma warning restore CS0618\n"); } p_output.append(CLOSE_BLOCK_L2); @@ -1636,6 +1645,15 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf p_output.append("\")]"); } + if (p_imethod.is_deprecated) { + if (p_imethod.deprecation_message.empty()) + WARN_PRINTS("An empty deprecation message is discouraged. Method: " + p_imethod.proxy_name); + + p_output.append(MEMBER_BEGIN "[Obsolete(\""); + p_output.append(p_imethod.deprecation_message); + p_output.append("\")]"); + } + p_output.append(MEMBER_BEGIN); p_output.append(p_imethod.is_internal ? "internal " : "public "); @@ -1710,8 +1728,6 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf Error BindingsGenerator::generate_glue(const String &p_output_dir) { - verbose_output = true; - bool dir_exists = DirAccess::exists(p_output_dir); ERR_EXPLAIN("The output directory does not exist."); ERR_FAIL_COND_V(!dir_exists, ERR_FILE_BAD_PATH); @@ -2109,6 +2125,58 @@ const BindingsGenerator::TypeInterface *BindingsGenerator::_get_type_or_placehol return &placeholder_types.insert(placeholder.cname, placeholder)->get(); } +StringName BindingsGenerator::_get_int_type_name_from_meta(GodotTypeInfo::Metadata p_meta) { + + switch (p_meta) { + case GodotTypeInfo::METADATA_INT_IS_INT8: + return "sbyte"; + break; + case GodotTypeInfo::METADATA_INT_IS_INT16: + return "short"; + break; + case GodotTypeInfo::METADATA_INT_IS_INT32: + return "int"; + break; + case GodotTypeInfo::METADATA_INT_IS_INT64: + return "long"; + break; + case GodotTypeInfo::METADATA_INT_IS_UINT8: + return "byte"; + break; + case GodotTypeInfo::METADATA_INT_IS_UINT16: + return "ushort"; + break; + case GodotTypeInfo::METADATA_INT_IS_UINT32: + return "uint"; + break; + case GodotTypeInfo::METADATA_INT_IS_UINT64: + return "ulong"; + break; + default: + // Assume INT32 + return "int"; + } +} + +StringName BindingsGenerator::_get_float_type_name_from_meta(GodotTypeInfo::Metadata p_meta) { + + switch (p_meta) { + case GodotTypeInfo::METADATA_REAL_IS_FLOAT: + return "float"; + break; + case GodotTypeInfo::METADATA_REAL_IS_DOUBLE: + return "double"; + break; + default: + // Assume real_t (float or double depending of REAL_T_IS_DOUBLE) +#ifdef REAL_T_IS_DOUBLE + return "double"; +#else + return "float"; +#endif + } +} + void BindingsGenerator::_populate_object_type_interfaces() { obj_types.clear(); @@ -2128,15 +2196,13 @@ void BindingsGenerator::_populate_object_type_interfaces() { } if (!ClassDB::is_class_exposed(type_cname)) { - if (verbose_output) - WARN_PRINTS("Ignoring type " + type_cname.operator String() + " because it's not exposed"); + _log("Ignoring type `%s` because it's not exposed\n", String(type_cname).utf8().get_data()); class_list.pop_front(); continue; } if (!ClassDB::is_class_enabled(type_cname)) { - if (verbose_output) - WARN_PRINTS("Ignoring type " + type_cname.operator String() + " because it's not enabled"); + _log("Ignoring type `%s` because it's not enabled\n", String(type_cname).utf8().get_data()); class_list.pop_front(); continue; } @@ -2164,10 +2230,12 @@ void BindingsGenerator::_populate_object_type_interfaces() { itype.im_type_in = "IntPtr"; itype.im_type_out = itype.proxy_name; + // Populate properties + List<PropertyInfo> property_list; ClassDB::get_property_list(type_cname, &property_list, true); - // Populate properties + Map<StringName, StringName> accessor_methods; for (const List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) { const PropertyInfo &property = E->get(); @@ -2180,18 +2248,21 @@ void BindingsGenerator::_populate_object_type_interfaces() { iprop.setter = ClassDB::get_property_setter(type_cname, iprop.cname); iprop.getter = ClassDB::get_property_getter(type_cname, iprop.cname); + if (iprop.setter != StringName()) + accessor_methods[iprop.setter] = iprop.cname; + if (iprop.getter != StringName()) + accessor_methods[iprop.getter] = iprop.cname; + bool valid = false; iprop.index = ClassDB::get_property_index(type_cname, iprop.cname, &valid); ERR_FAIL_COND(!valid); iprop.proxy_name = escape_csharp_keyword(snake_to_pascal_case(iprop.cname)); - // Prevent property and enclosing type from sharing the same name + // Prevent the property and its enclosing type from sharing the same name if (iprop.proxy_name == itype.proxy_name) { - if (verbose_output) { - WARN_PRINTS("Name of property `" + iprop.proxy_name + "` is ambiguous with the name of its class `" + - itype.proxy_name + "`. Renaming property to `" + iprop.proxy_name + "_`"); - } + _log("Name of property `%s` is ambiguous with the name of its enclosing class `%s`. Renaming property to `%s_`\n", + iprop.proxy_name.utf8().get_data(), itype.proxy_name.utf8().get_data(), iprop.proxy_name.utf8().get_data()); iprop.proxy_name += "_"; } @@ -2258,14 +2329,13 @@ void BindingsGenerator::_populate_object_type_interfaces() { // which could actually will return something different. // Let's put this to notify us if that ever happens. if (itype.cname != name_cache.type_Object || imethod.name != "free") { - if (verbose_output) { - WARN_PRINTS("Notification: New unexpected virtual non-overridable method found.\n" - "We only expected Object.free, but found " + - itype.name + "." + imethod.name); - } + ERR_PRINTS("Notification: New unexpected virtual non-overridable method found.\n" + "We only expected Object.free, but found " + + itype.name + "." + imethod.name); } } else { - ERR_PRINTS("Missing MethodBind for non-virtual method: " + itype.name + "." + imethod.name); + ERR_EXPLAIN("Missing MethodBind for non-virtual method: " + itype.name + "." + imethod.name); + ERR_FAIL(); } } else if (return_info.type == Variant::INT && return_info.usage & PROPERTY_USAGE_CLASS_IS_ENUM) { imethod.return_type.cname = return_info.class_name; @@ -2279,7 +2349,13 @@ void BindingsGenerator::_populate_object_type_interfaces() { } else if (return_info.type == Variant::NIL) { imethod.return_type.cname = name_cache.type_void; } else { - imethod.return_type.cname = Variant::get_type_name(return_info.type); + if (return_info.type == Variant::INT) { + imethod.return_type.cname = _get_int_type_name_from_meta(m ? m->get_argument_meta(-1) : GodotTypeInfo::METADATA_NONE); + } else if (return_info.type == Variant::REAL) { + imethod.return_type.cname = _get_float_type_name_from_meta(m ? m->get_argument_meta(-1) : GodotTypeInfo::METADATA_NONE); + } else { + imethod.return_type.cname = Variant::get_type_name(return_info.type); + } } for (int i = 0; i < argc; i++) { @@ -2298,7 +2374,13 @@ void BindingsGenerator::_populate_object_type_interfaces() { } else if (arginfo.type == Variant::NIL) { iarg.type.cname = name_cache.type_Variant; } else { - iarg.type.cname = Variant::get_type_name(arginfo.type); + if (arginfo.type == Variant::INT) { + iarg.type.cname = _get_int_type_name_from_meta(m ? m->get_argument_meta(i) : GodotTypeInfo::METADATA_NONE); + } else if (arginfo.type == Variant::REAL) { + iarg.type.cname = _get_float_type_name_from_meta(m ? m->get_argument_meta(i) : GodotTypeInfo::METADATA_NONE); + } else { + iarg.type.cname = Variant::get_type_name(arginfo.type); + } } iarg.name = escape_csharp_keyword(snake_to_camel_case(iarg.name)); @@ -2319,16 +2401,24 @@ void BindingsGenerator::_populate_object_type_interfaces() { imethod.proxy_name = escape_csharp_keyword(snake_to_pascal_case(imethod.name)); - // Prevent naming the property and its enclosing type from sharing the same name + // Prevent the method and its enclosing type from sharing the same name if (imethod.proxy_name == itype.proxy_name) { - if (verbose_output) { - WARN_PRINTS("Name of method `" + imethod.proxy_name + "` is ambiguous with the name of its class `" + - itype.proxy_name + "`. Renaming method to `" + imethod.proxy_name + "_`"); - } + _log("Name of method `%s` is ambiguous with the name of its enclosing class `%s`. Renaming method to `%s_`\n", + imethod.proxy_name.utf8().get_data(), itype.proxy_name.utf8().get_data(), imethod.proxy_name.utf8().get_data()); imethod.proxy_name += "_"; } + Map<StringName, StringName>::Element *accessor = accessor_methods.find(imethod.cname); + if (accessor) { + const PropertyInterface *accessor_property = itype.find_property_by_name(accessor->value()); + + // We only deprecate an accessor method if it's in the same class as the property. It's easier this way, but also + // we don't know if an accessor method in a different class could have other purposes, so better leave those untouched. + imethod.is_deprecated = true; + imethod.deprecation_message = imethod.proxy_name + " is deprecated. Use the " + accessor_property->proxy_name + " property instead."; + } + if (itype.class_doc) { for (int i = 0; i < itype.class_doc->methods.size(); i++) { if (itype.class_doc->methods[i].name == imethod.name) { @@ -2556,7 +2646,6 @@ void BindingsGenerator::_populate_builtin_type_interfaces() { // bool itype = TypeInterface::create_value_type(String("bool")); - { // MonoBoolean <---> bool itype.c_in = "\t%0 %1_in = (%0)%1;\n"; @@ -2570,45 +2659,73 @@ void BindingsGenerator::_populate_builtin_type_interfaces() { itype.im_type_out = itype.name; builtin_types.insert(itype.cname, itype); - // int - // C interface is the same as that of enums. Remember to apply any - // changes done here to TypeInterface::postsetup_enum_type as well - itype = TypeInterface::create_value_type(String("int")); - itype.c_arg_in = "&%s_in"; + // Integer types { - // The expected types for parameters and return value in ptrcall are 'int64_t' or 'uint64_t'. - itype.c_in = "\t%0 %1_in = (%0)%1;\n"; - itype.c_out = "\treturn (%0)%1;\n"; - itype.c_type = "int64_t"; + // C interface for 'uint32_t' is the same as that of enums. Remember to apply + // any of the changes done here to 'TypeInterface::postsetup_enum_type' as well. +#define INSERT_INT_TYPE(m_name, m_c_type_in_out, m_c_type) \ + { \ + itype = TypeInterface::create_value_type(String(m_name)); \ + { \ + itype.c_in = "\t%0 %1_in = (%0)%1;\n"; \ + itype.c_out = "\treturn (%0)%1;\n"; \ + itype.c_type = #m_c_type; \ + itype.c_arg_in = "&%s_in"; \ + } \ + itype.c_type_in = #m_c_type_in_out; \ + itype.c_type_out = itype.c_type_in; \ + itype.im_type_in = itype.name; \ + itype.im_type_out = itype.name; \ + builtin_types.insert(itype.cname, itype); \ } - itype.c_type_in = "int32_t"; - itype.c_type_out = itype.c_type_in; - itype.im_type_in = itype.name; - itype.im_type_out = itype.name; - builtin_types.insert(itype.cname, itype); - // real_t - itype = TypeInterface(); - itype.name = "float"; // The name is always "float" in Variant, even with REAL_T_IS_DOUBLE. - itype.cname = itype.name; -#ifdef REAL_T_IS_DOUBLE - itype.proxy_name = "double"; -#else - itype.proxy_name = "float"; -#endif + // The expected type for all integers in ptrcall is 'int64_t', so that's what we use for 'c_type' + + INSERT_INT_TYPE("sbyte", int8_t, int64_t); + INSERT_INT_TYPE("short", int16_t, int64_t); + INSERT_INT_TYPE("int", int32_t, int64_t); + INSERT_INT_TYPE("long", int64_t, int64_t); + INSERT_INT_TYPE("byte", uint8_t, int64_t); + INSERT_INT_TYPE("ushort", uint16_t, int64_t); + INSERT_INT_TYPE("uint", uint32_t, int64_t); + INSERT_INT_TYPE("ulong", uint64_t, int64_t); + } + + // Floating point types { - // The expected type for parameters and return value in ptrcall is 'double'. - itype.c_in = "\t%0 %1_in = (%0)%1;\n"; - itype.c_out = "\treturn (%0)%1;\n"; + // float + itype = TypeInterface(); + itype.name = "float"; + itype.cname = itype.name; + itype.proxy_name = "float"; + { + // The expected type for 'float' in ptrcall is 'double' + itype.c_in = "\t%0 %1_in = (%0)%1;\n"; + itype.c_out = "\treturn (%0)%1;\n"; + itype.c_type = "double"; + itype.c_type_in = "float"; + itype.c_type_out = "float"; + itype.c_arg_in = "&%s_in"; + } + itype.cs_type = itype.proxy_name; + itype.im_type_in = itype.proxy_name; + itype.im_type_out = itype.proxy_name; + builtin_types.insert(itype.cname, itype); + + // double + itype = TypeInterface(); + itype.name = "double"; + itype.cname = itype.name; + itype.proxy_name = "double"; itype.c_type = "double"; - itype.c_type_in = "real_t"; - itype.c_type_out = "real_t"; - itype.c_arg_in = "&%s_in"; + itype.c_type_in = "double"; + itype.c_type_out = "double"; + itype.c_arg_in = "&%s"; + itype.cs_type = itype.proxy_name; + itype.im_type_in = itype.proxy_name; + itype.im_type_out = itype.proxy_name; + builtin_types.insert(itype.cname, itype); } - itype.cs_type = itype.proxy_name; - itype.im_type_in = itype.proxy_name; - itype.im_type_out = itype.proxy_name; - builtin_types.insert(itype.cname, itype); // String itype = TypeInterface(); @@ -2858,7 +2975,18 @@ void BindingsGenerator::_populate_global_constants() { } } -void BindingsGenerator::initialize() { +void BindingsGenerator::_log(const char *p_format, ...) { + + if (log_print_enabled) { + va_list list; + + va_start(list, p_format); + OS::get_singleton()->print("%s", str_format(p_format, list).utf8().get_data()); + va_end(list); + } +} + +void BindingsGenerator::_initialize() { EditorHelp::generate_doc(); @@ -2881,12 +3009,13 @@ void BindingsGenerator::initialize() { void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) { const int NUM_OPTIONS = 2; - int options_left = NUM_OPTIONS; - String mono_glue_option = "--generate-mono-glue"; String cs_api_option = "--generate-cs-api"; - verbose_output = true; + String mono_glue_path; + String cs_api_path; + + int options_left = NUM_OPTIONS; const List<String>::Element *elem = p_cmdline_args.front(); @@ -2895,8 +3024,7 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) const List<String>::Element *path_elem = elem->next(); if (path_elem) { - if (get_singleton()->generate_glue(path_elem->get()) != OK) - ERR_PRINTS(mono_glue_option + ": Failed to generate mono glue"); + mono_glue_path = path_elem->get(); elem = elem->next(); } else { ERR_PRINTS(mono_glue_option + ": No output directory specified"); @@ -2907,8 +3035,7 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) const List<String>::Element *path_elem = elem->next(); if (path_elem) { - if (get_singleton()->generate_cs_api(path_elem->get()) != OK) - ERR_PRINTS(cs_api_option + ": Failed to generate the C# API"); + cs_api_path = path_elem->get(); elem = elem->next(); } else { ERR_PRINTS(cs_api_option + ": No output directory specified"); @@ -2920,10 +3047,23 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) elem = elem->next(); } - verbose_output = false; + if (mono_glue_path.length() || cs_api_path.length()) { + BindingsGenerator bindings_generator; + bindings_generator.set_log_print_enabled(true); + + if (mono_glue_path.length()) { + if (bindings_generator.generate_glue(mono_glue_path) != OK) + ERR_PRINTS(mono_glue_option + ": Failed to generate mono glue"); + } + + if (cs_api_path.length()) { + if (bindings_generator.generate_cs_api(cs_api_path) != OK) + ERR_PRINTS(cs_api_option + ": Failed to generate the C# API"); + } - if (options_left != NUM_OPTIONS) + // Exit once done ::exit(0); + } } #endif diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h index a073c09910..bdba28c267 100644 --- a/modules/mono/editor/bindings_generator.h +++ b/modules/mono/editor/bindings_generator.h @@ -159,17 +159,20 @@ class BindingsGenerator { const DocData::MethodDoc *method_doc; + bool is_deprecated; + String deprecation_message; + void add_argument(const ArgumentInterface &argument) { arguments.push_back(argument); } MethodInterface() { - return_type.cname = BindingsGenerator::get_singleton()->name_cache.type_void; is_vararg = false; is_virtual = false; requires_object_call = false; is_internal = false; method_doc = NULL; + is_deprecated = false; } }; @@ -400,8 +403,8 @@ class BindingsGenerator { } static void postsetup_enum_type(TypeInterface &r_enum_itype) { - // C interface is the same as that of 'int'. Remember to apply any - // changes done here to the 'int' type interface as well + // C interface for enums is the same as that of 'uint32_t'. Remember to apply + // any of the changes done here to the 'uint32_t' type interface as well. r_enum_itype.c_arg_in = "&%s_in"; { @@ -469,7 +472,7 @@ class BindingsGenerator { } }; - static bool verbose_output; + bool log_print_enabled; OrderedHashMap<StringName, TypeInterface> obj_types; @@ -490,7 +493,6 @@ class BindingsGenerator { struct NameCache { StringName type_void; - StringName type_int; StringName type_Array; StringName type_Dictionary; StringName type_Variant; @@ -501,9 +503,19 @@ class BindingsGenerator { StringName type_at_GlobalScope; StringName enum_Error; + StringName type_sbyte; + StringName type_short; + StringName type_int; + StringName type_long; + StringName type_byte; + StringName type_ushort; + StringName type_uint; + StringName type_ulong; + StringName type_float; + StringName type_double; + NameCache() { type_void = StaticCString::create("void"); - type_int = StaticCString::create("int"); type_Array = StaticCString::create("Array"); type_Dictionary = StaticCString::create("Dictionary"); type_Variant = StaticCString::create("Variant"); @@ -513,8 +525,20 @@ class BindingsGenerator { type_String = StaticCString::create("String"); type_at_GlobalScope = StaticCString::create("@GlobalScope"); enum_Error = StaticCString::create("Error"); + + type_sbyte = StaticCString::create("sbyte"); + type_short = StaticCString::create("short"); + type_int = StaticCString::create("int"); + type_long = StaticCString::create("long"); + type_byte = StaticCString::create("byte"); + type_ushort = StaticCString::create("ushort"); + type_uint = StaticCString::create("uint"); + type_ulong = StaticCString::create("ulong"); + type_float = StaticCString::create("float"); + type_double = StaticCString::create("double"); } + private: NameCache(const NameCache &); NameCache &operator=(const NameCache &); }; @@ -560,6 +584,9 @@ class BindingsGenerator { const TypeInterface *_get_type_or_null(const TypeReference &p_typeref); const TypeInterface *_get_type_or_placeholder(const TypeReference &p_typeref); + StringName _get_int_type_name_from_meta(GodotTypeInfo::Metadata p_meta); + StringName _get_float_type_name_from_meta(GodotTypeInfo::Metadata p_meta); + void _default_argument_from_variant(const Variant &p_val, ArgumentInterface &r_iarg); void _populate_object_type_interfaces(); @@ -578,33 +605,26 @@ class BindingsGenerator { Error _save_file(const String &p_path, const StringBuilder &p_content); - BindingsGenerator() {} - - BindingsGenerator(const BindingsGenerator &); - BindingsGenerator &operator=(const BindingsGenerator &); + void _log(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3; - friend class CSharpLanguage; - static BindingsGenerator *singleton; + void _initialize(); public: - Error generate_cs_core_project(const String &p_solution_dir, DotNetSolution &r_solution, bool p_verbose_output = true); - Error generate_cs_editor_project(const String &p_solution_dir, DotNetSolution &r_solution, bool p_verbose_output = true); - Error generate_cs_api(const String &p_output_dir, bool p_verbose_output = true); + Error generate_cs_core_project(const String &p_solution_dir, DotNetSolution &r_solution); + Error generate_cs_editor_project(const String &p_solution_dir, DotNetSolution &r_solution); + Error generate_cs_api(const String &p_output_dir); Error generate_glue(const String &p_output_dir); + void set_log_print_enabled(bool p_enabled) { log_print_enabled = p_enabled; } + static uint32_t get_version(); - void initialize(); + static void handle_cmdline_args(const List<String> &p_cmdline_args); - _FORCE_INLINE_ static BindingsGenerator *get_singleton() { - if (!singleton) { - singleton = memnew(BindingsGenerator); - singleton->initialize(); - } - return singleton; + BindingsGenerator() : + log_print_enabled(true) { + _initialize(); } - - static void handle_cmdline_args(const List<String> &p_cmdline_args); }; #endif diff --git a/modules/mono/editor/csharp_project.cpp b/modules/mono/editor/csharp_project.cpp index beeff51bc2..fe79286556 100644 --- a/modules/mono/editor/csharp_project.cpp +++ b/modules/mono/editor/csharp_project.cpp @@ -158,7 +158,7 @@ Error generate_scripts_metadata(const String &p_project_path, const String &p_ou PoolStringArray project_files = GDMonoMarshal::mono_array_to_PoolStringArray(ret); PoolStringArray::Read r = project_files.read(); - Dictionary old_dict = CSharpLanguage::get_singleton()->get_scripts_metadata(); + Dictionary old_dict = CSharpLanguage::get_singleton()->get_scripts_metadata_or_nothing(); Dictionary new_dict; for (int i = 0; i < project_files.size(); i++) { diff --git a/modules/mono/editor/godotsharp_builds.cpp b/modules/mono/editor/godotsharp_builds.cpp index 00c780d1b7..de3fd91223 100644 --- a/modules/mono/editor/godotsharp_builds.cpp +++ b/modules/mono/editor/godotsharp_builds.cpp @@ -323,10 +323,13 @@ bool GodotSharpBuilds::make_api_assembly(APIAssembly::Type p_api_type) { String api_sln_file = api_sln_dir.plus_file(API_SOLUTION_NAME ".sln"); if (!DirAccess::exists(api_sln_dir) || !FileAccess::exists(api_sln_file)) { - BindingsGenerator *gen = BindingsGenerator::get_singleton(); - bool gen_verbose = OS::get_singleton()->is_stdout_verbose(); + BindingsGenerator bindings_generator; - Error err = gen->generate_cs_api(api_sln_dir, gen_verbose); + if (!OS::get_singleton()->is_stdout_verbose()) { + bindings_generator.set_log_print_enabled(false); + } + + Error err = bindings_generator.generate_cs_api(api_sln_dir); if (err != OK) { show_build_error_dialog("Failed to generate " API_SOLUTION_NAME " solution. Error: " + itos(err)); return false; diff --git a/modules/mono/glue/Managed/Files/Color.cs b/modules/mono/glue/Managed/Files/Color.cs index 88fa3323c2..84ff19fc54 100644 --- a/modules/mono/glue/Managed/Files/Color.cs +++ b/modules/mono/glue/Managed/Files/Color.cs @@ -168,7 +168,7 @@ namespace Godot int max = Mathf.Max(color.r8, Mathf.Max(color.g8, color.b8)); int min = Mathf.Min(color.r8, Mathf.Min(color.g8, color.b8)); - float delta = max - min; + int delta = max - min; if (delta == 0) { @@ -591,11 +591,11 @@ namespace Godot public static bool operator <(Color left, Color right) { - if (left.r == right.r) + if (Mathf.IsEqualApprox(left.r, right.r)) { - if (left.g == right.g) + if (Mathf.IsEqualApprox(left.g, right.g)) { - if (left.b == right.b) + if (Mathf.IsEqualApprox(left.b, right.b)) return left.a < right.a; return left.b < right.b; } @@ -608,11 +608,11 @@ namespace Godot public static bool operator >(Color left, Color right) { - if (left.r == right.r) + if (Mathf.IsEqualApprox(left.r, right.r)) { - if (left.g == right.g) + if (Mathf.IsEqualApprox(left.g, right.g)) { - if (left.b == right.b) + if (Mathf.IsEqualApprox(left.b, right.b)) return left.a > right.a; return left.b > right.b; } @@ -635,7 +635,7 @@ namespace Godot public bool Equals(Color other) { - return r == other.r && g == other.g && b == other.b && a == other.a; + return Mathf.IsEqualApprox(r, other.r) && Mathf.IsEqualApprox(g, other.g) && Mathf.IsEqualApprox(b, other.b) && Mathf.IsEqualApprox(a, other.a); } public override int GetHashCode() diff --git a/modules/mono/glue/Managed/Files/GD.cs b/modules/mono/glue/Managed/Files/GD.cs index 5b591646ea..2068099ac6 100644 --- a/modules/mono/glue/Managed/Files/GD.cs +++ b/modules/mono/glue/Managed/Files/GD.cs @@ -111,7 +111,7 @@ namespace Godot godot_icall_GD_printt(Array.ConvertAll(what, x => x.ToString())); } - public static double Randf() + public static float Randf() { return godot_icall_GD_randf(); } @@ -224,7 +224,7 @@ namespace Godot internal extern static void godot_icall_GD_printt(object[] what); [MethodImpl(MethodImplOptions.InternalCall)] - internal extern static double godot_icall_GD_randf(); + internal extern static float godot_icall_GD_randf(); [MethodImpl(MethodImplOptions.InternalCall)] internal extern static uint godot_icall_GD_randi(); @@ -232,6 +232,7 @@ namespace Godot [MethodImpl(MethodImplOptions.InternalCall)] internal extern static void godot_icall_GD_randomize(); + [MethodImpl(MethodImplOptions.InternalCall)] internal extern static double godot_icall_GD_rand_range(double from, double to); diff --git a/modules/mono/glue/Managed/Files/Mathf.cs b/modules/mono/glue/Managed/Files/Mathf.cs index a064278237..947fbb6665 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/Managed/Files/Mathf.cs @@ -143,6 +143,15 @@ namespace Godot return (weight - from) / (to - from); } + public static bool IsEqualApprox(real_t a, real_t b) + { + real_t tolerance = Epsilon * Abs(a); + if (tolerance < Epsilon) { + tolerance = Epsilon; + } + return Abs(a - b) < tolerance; + } + public static bool IsInf(real_t s) { return real_t.IsInfinity(s); @@ -153,6 +162,11 @@ namespace Godot return real_t.IsNaN(s); } + public static bool IsZeroApprox(real_t s) + { + return Abs(s) < Epsilon; + } + public static real_t Lerp(real_t from, real_t to, real_t weight) { return from + (to - from) * weight; diff --git a/modules/mono/glue/Managed/Files/MathfEx.cs b/modules/mono/glue/Managed/Files/MathfEx.cs index 414762f7b1..d6eb65b097 100644 --- a/modules/mono/glue/Managed/Files/MathfEx.cs +++ b/modules/mono/glue/Managed/Files/MathfEx.cs @@ -36,9 +36,9 @@ namespace Godot return (int)Math.Round(s); } - public static bool IsEqualApprox(real_t a, real_t b, real_t ratio = Mathf.Epsilon) + public static bool IsEqualApprox(real_t a, real_t b, real_t tolerance) { - return Abs(a - b) < ratio; + return Abs(a - b) < tolerance; } } }
\ No newline at end of file diff --git a/modules/mono/glue/Managed/Files/Plane.cs b/modules/mono/glue/Managed/Files/Plane.cs index f11cd490a9..e16d4315be 100644 --- a/modules/mono/glue/Managed/Files/Plane.cs +++ b/modules/mono/glue/Managed/Files/Plane.cs @@ -200,7 +200,7 @@ namespace Godot public bool Equals(Plane other) { - return _normal == other._normal && D == other.D; + return _normal == other._normal && Mathf.IsEqualApprox(D, other.D); } public override int GetHashCode() diff --git a/modules/mono/glue/Managed/Files/Quat.cs b/modules/mono/glue/Managed/Files/Quat.cs index d0c15146a5..0d4349084a 100644 --- a/modules/mono/glue/Managed/Files/Quat.cs +++ b/modules/mono/glue/Managed/Files/Quat.cs @@ -358,7 +358,7 @@ namespace Godot public bool Equals(Quat other) { - return x == other.x && y == other.y && z == other.z && w == other.w; + return Mathf.IsEqualApprox(x, other.x) && Mathf.IsEqualApprox(y, other.y) && Mathf.IsEqualApprox(z, other.z) && Mathf.IsEqualApprox(w, other.w); } public override int GetHashCode() diff --git a/modules/mono/glue/Managed/Files/Vector2.cs b/modules/mono/glue/Managed/Files/Vector2.cs index 908162ec45..bb1950e1a8 100644 --- a/modules/mono/glue/Managed/Files/Vector2.cs +++ b/modules/mono/glue/Managed/Files/Vector2.cs @@ -52,11 +52,15 @@ namespace Godot internal void Normalize() { - real_t length = x * x + y * y; + real_t lengthsq = LengthSquared(); - if (length != 0f) + if (lengthsq == 0) { - length = Mathf.Sqrt(length); + x = y = 0f; + } + else + { + real_t length = Mathf.Sqrt(lengthsq); x /= length; y /= length; } @@ -184,9 +188,9 @@ namespace Godot public Vector2 Normalized() { - var result = this; - result.Normalize(); - return result; + var v = this; + v.Normalize(); + return v; } public Vector2 Project(Vector2 onNormal) @@ -343,7 +347,7 @@ namespace Godot public static bool operator <(Vector2 left, Vector2 right) { - if (left.x.Equals(right.x)) + if (Mathf.IsEqualApprox(left.x, right.x)) { return left.y < right.y; } @@ -353,7 +357,7 @@ namespace Godot public static bool operator >(Vector2 left, Vector2 right) { - if (left.x.Equals(right.x)) + if (Mathf.IsEqualApprox(left.x, right.x)) { return left.y > right.y; } @@ -363,7 +367,7 @@ namespace Godot public static bool operator <=(Vector2 left, Vector2 right) { - if (left.x.Equals(right.x)) + if (Mathf.IsEqualApprox(left.x, right.x)) { return left.y <= right.y; } @@ -373,7 +377,7 @@ namespace Godot public static bool operator >=(Vector2 left, Vector2 right) { - if (left.x.Equals(right.x)) + if (Mathf.IsEqualApprox(left.x, right.x)) { return left.y >= right.y; } @@ -393,7 +397,7 @@ namespace Godot public bool Equals(Vector2 other) { - return x == other.x && y == other.y; + return Mathf.IsEqualApprox(x, other.x) && Mathf.IsEqualApprox(y, other.y); } public override int GetHashCode() diff --git a/modules/mono/glue/Managed/Files/Vector3.cs b/modules/mono/glue/Managed/Files/Vector3.cs index 0c96d346a9..283cb6341a 100644 --- a/modules/mono/glue/Managed/Files/Vector3.cs +++ b/modules/mono/glue/Managed/Files/Vector3.cs @@ -65,14 +65,15 @@ namespace Godot internal void Normalize() { - real_t length = Length(); + real_t lengthsq = LengthSquared(); - if (length == 0f) + if (lengthsq == 0) { x = y = z = 0f; } else { + real_t length = Mathf.Sqrt(lengthsq); x /= length; y /= length; z /= length; @@ -397,9 +398,9 @@ namespace Godot public static bool operator <(Vector3 left, Vector3 right) { - if (left.x == right.x) + if (Mathf.IsEqualApprox(left.x, right.x)) { - if (left.y == right.y) + if (Mathf.IsEqualApprox(left.y, right.y)) return left.z < right.z; return left.y < right.y; } @@ -409,9 +410,9 @@ namespace Godot public static bool operator >(Vector3 left, Vector3 right) { - if (left.x == right.x) + if (Mathf.IsEqualApprox(left.x, right.x)) { - if (left.y == right.y) + if (Mathf.IsEqualApprox(left.y, right.y)) return left.z > right.z; return left.y > right.y; } @@ -421,9 +422,9 @@ namespace Godot public static bool operator <=(Vector3 left, Vector3 right) { - if (left.x == right.x) + if (Mathf.IsEqualApprox(left.x, right.x)) { - if (left.y == right.y) + if (Mathf.IsEqualApprox(left.y, right.y)) return left.z <= right.z; return left.y < right.y; } @@ -433,9 +434,9 @@ namespace Godot public static bool operator >=(Vector3 left, Vector3 right) { - if (left.x == right.x) + if (Mathf.IsEqualApprox(left.x, right.x)) { - if (left.y == right.y) + if (Mathf.IsEqualApprox(left.y, right.y)) return left.z >= right.z; return left.y > right.y; } @@ -455,7 +456,7 @@ namespace Godot public bool Equals(Vector3 other) { - return x == other.x && y == other.y && z == other.z; + return Mathf.IsEqualApprox(x, other.x) && Mathf.IsEqualApprox(y, other.y) && Mathf.IsEqualApprox(z, other.z); } public override int GetHashCode() diff --git a/modules/mono/glue/gd_glue.cpp b/modules/mono/glue/gd_glue.cpp index d756131ac9..7c30092855 100644 --- a/modules/mono/glue/gd_glue.cpp +++ b/modules/mono/glue/gd_glue.cpp @@ -115,7 +115,7 @@ void godot_icall_GD_printt(MonoArray *p_what) { print_line(str); } -double godot_icall_GD_randf() { +float godot_icall_GD_randf() { return Math::randf(); } diff --git a/modules/mono/glue/gd_glue.h b/modules/mono/glue/gd_glue.h index 910979aae3..d4e20e2887 100644 --- a/modules/mono/glue/gd_glue.h +++ b/modules/mono/glue/gd_glue.h @@ -53,7 +53,7 @@ void godot_icall_GD_prints(MonoArray *p_what); void godot_icall_GD_printt(MonoArray *p_what); -double godot_icall_GD_randf(); +float godot_icall_GD_randf(); uint32_t godot_icall_GD_randi(); diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index bfb6c13224..19e49d29f9 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -658,8 +658,6 @@ bool GDMono::_load_project_assembly() { if (success) { mono_assembly_set_main(project_assembly->get_assembly()); - - CSharpLanguage::get_singleton()->project_assembly_loaded(); } else { if (OS::get_singleton()->is_stdout_verbose()) print_error("Mono: Failed to load project assembly"); @@ -866,7 +864,7 @@ Error GDMono::reload_scripts_domain() { } } - CSharpLanguage::get_singleton()->_uninitialize_script_bindings(); + CSharpLanguage::get_singleton()->_on_scripts_domain_unloaded(); Error err = _load_scripts_domain(); if (err != OK) { diff --git a/modules/mono/mono_gd/gd_mono_log.cpp b/modules/mono/mono_gd/gd_mono_log.cpp index 3191cdbd53..a6e04e561d 100644 --- a/modules/mono/mono_gd/gd_mono_log.cpp +++ b/modules/mono/mono_gd/gd_mono_log.cpp @@ -37,6 +37,7 @@ #include "core/os/os.h" #include "../godotsharp_dirs.h" +#include "../utils/string_utils.h" static int log_level_get_id(const char *p_log_level) { @@ -125,27 +126,6 @@ void GDMonoLog::_delete_old_log_files(const String &p_logs_dir) { da->list_dir_end(); } -static String format(const char *p_fmt, ...) { - va_list args; - - va_start(args, p_fmt); - int len = vsnprintf(NULL, 0, p_fmt, args); - va_end(args); - - len += 1; // for the trailing '/0' - - char *buffer(memnew_arr(char, len)); - - va_start(args, p_fmt); - vsnprintf(buffer, len, p_fmt, args); - va_end(args); - - String res(buffer); - memdelete_arr(buffer); - - return res; -} - void GDMonoLog::initialize() { CharString log_level = OS::get_singleton()->get_environment("GODOT_MONO_LOG_LEVEL").utf8(); @@ -172,7 +152,7 @@ void GDMonoLog::initialize() { OS::Time time_now = OS::get_singleton()->get_time(); int pid = OS::get_singleton()->get_process_id(); - String log_file_name = format("%d-%02d-%02d %02d:%02d:%02d (%d).txt", + String log_file_name = str_format("%d_%02d_%02d %02d.%02d.%02d (%d).txt", date_now.year, date_now.month, date_now.day, time_now.hour, time_now.min, time_now.sec, pid); diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp index c390f8b9c2..0ef66577fe 100644 --- a/modules/mono/utils/string_utils.cpp +++ b/modules/mono/utils/string_utils.cpp @@ -32,6 +32,8 @@ #include "core/os/file_access.h" +#include <stdio.h> + namespace { int sfind(const String &p_text, int p_from) { @@ -184,3 +186,50 @@ Error read_all_file_utf8(const String &p_path, String &r_content) { r_content = source; return OK; } + +// TODO: Move to variadic templates once we upgrade to C++11 + +String str_format(const char *p_format, ...) { + va_list list; + + va_start(list, p_format); + String res = str_format(p_format, list); + va_end(list); + + return res; +} +// va_copy was defined in the C99, but not in C++ standards before C++11. +// When you compile C++ without --std=c++<XX> option, compilers still define +// va_copy, otherwise you have to use the internal version (__va_copy). +#if !defined(va_copy) +#if defined(__GNUC__) +#define va_copy(d, s) __va_copy((d), (s)) +#else +#define va_copy(d, s) ((d) = (s)) +#endif +#endif + +#if defined(MINGW_ENABLED) || defined(_MSC_VER) +#define vsnprintf vsnprintf_s +#endif + +String str_format(const char *p_format, va_list p_list) { + va_list list; + + va_copy(list, p_list); + int len = vsnprintf(NULL, 0, p_format, list); + va_end(list); + + len += 1; // for the trailing '/0' + + char *buffer(memnew_arr(char, len)); + + va_copy(list, p_list); + vsnprintf(buffer, len, p_format, list); + va_end(list); + + String res(buffer); + memdelete_arr(buffer); + + return res; +} diff --git a/modules/mono/utils/string_utils.h b/modules/mono/utils/string_utils.h index 61765ccfd8..565b9bb644 100644 --- a/modules/mono/utils/string_utils.h +++ b/modules/mono/utils/string_utils.h @@ -34,6 +34,8 @@ #include "core/ustring.h" #include "core/variant.h" +#include <stdarg.h> + String sformat(const String &p_text, const Variant &p1 = Variant(), const Variant &p2 = Variant(), const Variant &p3 = Variant(), const Variant &p4 = Variant(), const Variant &p5 = Variant()); #ifdef TOOLS_ENABLED @@ -44,4 +46,15 @@ String escape_csharp_keyword(const String &p_name); Error read_all_file_utf8(const String &p_path, String &r_content); +#if defined(__GNUC__) +#define _PRINTF_FORMAT_ATTRIBUTE_1_0 __attribute__((format(printf, 1, 0))) +#define _PRINTF_FORMAT_ATTRIBUTE_1_2 __attribute__((format(printf, 1, 2))) +#else +#define _PRINTF_FORMAT_ATTRIBUTE_1_0 +#define _PRINTF_FORMAT_ATTRIBUTE_1_2 +#endif + +String str_format(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_1_2; +String str_format(const char *p_format, va_list p_list) _PRINTF_FORMAT_ATTRIBUTE_1_0; + #endif // STRING_FORMAT_H diff --git a/modules/opus/SCsub b/modules/opus/SCsub index b72144c679..a1325734e2 100644 --- a/modules/opus/SCsub +++ b/modules/opus/SCsub @@ -139,7 +139,7 @@ if env['builtin_opus']: opus_sources_silk = [] if env["platform"] in ["android", "iphone", "javascript"]: - env_opus.Append(CFLAGS=["-DFIXED_POINT"]) + env_opus.Append(CPPFLAGS=["-DFIXED_POINT"]) opus_sources_silk = [ "silk/fixed/LTP_analysis_filter_FIX.c", "silk/fixed/LTP_scale_ctrl_FIX.c", @@ -208,7 +208,7 @@ if env['builtin_opus']: if env['builtin_libogg']: env_opus.Append(CPPPATH=["#thirdparty/libogg"]) - env_opus.Append(CFLAGS=["-DHAVE_CONFIG_H"]) + env_opus.Append(CPPFLAGS=["-DHAVE_CONFIG_H"]) thirdparty_include_paths = [ "", @@ -222,14 +222,14 @@ if env['builtin_opus']: if env["platform"] == "android": if ("android_arch" in env and env["android_arch"] in ["armv6", "armv7"]): - env_opus.Append(CFLAGS=["-DOPUS_ARM_OPT"]) + env_opus.Append(CPPFLAGS=["-DOPUS_ARM_OPT"]) elif ("android_arch" in env and env["android_arch"] == "arm64v8"): - env_opus.Append(CFLAGS=["-DOPUS_ARM64_OPT"]) + env_opus.Append(CPPFLAGS=["-DOPUS_ARM64_OPT"]) elif env["platform"] == "iphone": if ("arch" in env and env["arch"] == "arm"): - env_opus.Append(CFLAGS=["-DOPUS_ARM_OPT"]) + env_opus.Append(CPPFLAGS=["-DOPUS_ARM_OPT"]) elif ("arch" in env and env["arch"] == "arm64"): - env_opus.Append(CFLAGS=["-DOPUS_ARM64_OPT"]) + env_opus.Append(CPPFLAGS=["-DOPUS_ARM64_OPT"]) env_thirdparty = env_opus.Clone() env_thirdparty.disable_warnings() diff --git a/modules/svg/SCsub b/modules/svg/SCsub index 22f0b1e3eb..66d9b3bf75 100644 --- a/modules/svg/SCsub +++ b/modules/svg/SCsub @@ -16,7 +16,7 @@ env_svg.Append(CPPPATH=[thirdparty_dir]) # FIXME: Needed in editor/editor_themes.cpp for now, but ideally there # shouldn't be a dependency on modules/ and its own 3rd party deps. env.Append(CPPPATH=[thirdparty_dir]) -env.Append(CCFLAGS=["-DSVG_ENABLED"]) +env.Append(CPPFLAGS=["-DSVG_ENABLED"]) env_thirdparty = env_svg.Clone() env_thirdparty.disable_warnings() diff --git a/modules/tga/image_loader_tga.cpp b/modules/tga/image_loader_tga.cpp index 419229677b..a3c0f5ded7 100644 --- a/modules/tga/image_loader_tga.cpp +++ b/modules/tga/image_loader_tga.cpp @@ -148,9 +148,11 @@ Error ImageLoaderTGA::convert_to_image(Ref<Image> p_image, const uint8_t *p_buff uint8_t a = 0xff; if (p_header.color_map_depth == 24) { - r = (p_palette[(index * 3) + 0]); + // Due to low-high byte order, the color table must be + // read in the same order as image data (little endian) + r = (p_palette[(index * 3) + 2]); g = (p_palette[(index * 3) + 1]); - b = (p_palette[(index * 3) + 2]); + b = (p_palette[(index * 3) + 0]); } else { return ERR_INVALID_DATA; } diff --git a/modules/theora/SCsub b/modules/theora/SCsub index 98c4274a7e..f98db2359c 100644 --- a/modules/theora/SCsub +++ b/modules/theora/SCsub @@ -66,7 +66,7 @@ if env['builtin_libtheora']: thirdparty_sources += thirdparty_sources_x86_vc if (env["x86_libtheora_opt_gcc"] or env["x86_libtheora_opt_vc"]): - env_theora.Append(CCFLAGS=["-DOC_X86_ASM"]) + env_theora.Append(CPPFLAGS=["-DOC_X86_ASM"]) thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp index 14c5ddd7f2..8db0799b47 100644 --- a/modules/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -365,7 +365,7 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { float VideoStreamPlaybackTheora::get_time() const { - return time - AudioServer::get_singleton()->get_output_delay() - delay_compensation; //-((get_total())/(float)vi.rate); + return time - AudioServer::get_singleton()->get_output_latency() - delay_compensation; //-((get_total())/(float)vi.rate); }; Ref<Texture> VideoStreamPlaybackTheora::get_texture() { diff --git a/modules/vhacd/SCsub b/modules/vhacd/SCsub index 11cd5f4743..fdd3ddc1e6 100644 --- a/modules/vhacd/SCsub +++ b/modules/vhacd/SCsub @@ -29,7 +29,7 @@ env_vhacd.Append(CPPFLAGS=["-DGODOT_ENET"]) # upstream uses c++11 if not env.msvc: - env_vhacd.Append(CCFLAGS="-std=c++11") + env_vhacd.Append(CXXFLAGS="-std=c++11") env_thirdparty = env_vhacd.Clone() env_thirdparty.disable_warnings() diff --git a/modules/webm/SCsub b/modules/webm/SCsub index cb35b926ab..dcc9a45044 100644 --- a/modules/webm/SCsub +++ b/modules/webm/SCsub @@ -19,7 +19,7 @@ env_webm.Append(CPPPATH=[thirdparty_dir, thirdparty_dir + "libwebm/"]) # upstream uses c++11 if (not env_webm.msvc): - env_webm.Append(CCFLAGS="-std=c++11") + env_webm.Append(CXXFLAGS="-std=c++11") # also requires libogg, libvorbis and libopus if env['builtin_libogg']: diff --git a/modules/webm/libvpx/SCsub b/modules/webm/libvpx/SCsub index 2639d20620..5bf4ea3464 100644 --- a/modules/webm/libvpx/SCsub +++ b/modules/webm/libvpx/SCsub @@ -323,7 +323,7 @@ if webm_cpu_x86: elif cpu_bits == '64': env_libvpx["ASCPU"] = 'X86_64' - env_libvpx.Append(CCFLAGS=['-DWEBM_X86ASM']) + env_libvpx.Append(CPPFLAGS=['-DWEBM_X86ASM']) webm_simd_optimizations = True @@ -337,7 +337,7 @@ if webm_cpu_arm: env_libvpx["ASFLAGS"] = '' env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES' - env_libvpx.Append(CCFLAGS=['-DWEBM_ARMASM']) + env_libvpx.Append(CPPFLAGS=['-DWEBM_ARMASM']) webm_simd_optimizations = True diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp index 06f9e39dc7..f2497eeec1 100644 --- a/modules/webm/video_stream_webm.cpp +++ b/modules/webm/video_stream_webm.cpp @@ -375,7 +375,7 @@ int VideoStreamPlaybackWebm::get_mix_rate() const { inline bool VideoStreamPlaybackWebm::has_enough_video_frames() const { if (video_frames_pos > 0) { - const double audio_delay = AudioServer::get_singleton()->get_output_delay(); + const double audio_delay = AudioServer::get_singleton()->get_output_latency(); const double video_time = video_frames[video_frames_pos - 1]->time; return video_time >= time + audio_delay + delay_compensation; } @@ -383,7 +383,7 @@ inline bool VideoStreamPlaybackWebm::has_enough_video_frames() const { } bool VideoStreamPlaybackWebm::should_process(WebMFrame &video_frame) { - const double audio_delay = AudioServer::get_singleton()->get_output_delay(); + const double audio_delay = AudioServer::get_singleton()->get_output_latency(); return video_frame.time >= time + audio_delay + delay_compensation; } diff --git a/modules/websocket/SCsub b/modules/websocket/SCsub index 0345e533bc..12b4969cf7 100644 --- a/modules/websocket/SCsub +++ b/modules/websocket/SCsub @@ -88,7 +88,7 @@ if env['builtin_libwebsockets'] and not env["platform"] == "javascript": # alrea env_lws.Append(CPPPATH=[helper_dir]) if env["platform"] == "uwp": - env_lws.Append(CCFLAGS=["/DLWS_MINGW_SUPPORT"]) + env_lws.Append(CPPFLAGS=["/DLWS_MINGW_SUPPORT"]) env_thirdparty = env_lws.Clone() env_thirdparty.disable_warnings() diff --git a/modules/xatlas_unwrap/SCsub b/modules/xatlas_unwrap/SCsub index ad364d5aaf..7a40945f27 100644 --- a/modules/xatlas_unwrap/SCsub +++ b/modules/xatlas_unwrap/SCsub @@ -1,7 +1,5 @@ #!/usr/bin/env python -import platform - Import('env') Import('env_modules') @@ -21,23 +19,6 @@ if env['builtin_xatlas']: if (not env.msvc): env_xatlas_unwrap.Append(CXXFLAGS="-std=c++11") - if env["platform"] == 'x11': - # if not specifically one of the *BSD, then use LINUX as default - if platform.system() == "FreeBSD": - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_FREEBSD", "-DPOSH_COMPILER_GCC"]) - elif platform.system() == "OpenBSD": - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_OPENBSD", "-DPOSH_COMPILER_GCC"]) - else: - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_LINUX", "-DPOSH_COMPILER_GCC"]) - elif env["platform"] == 'osx': - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_DARWIN", "-DPOSH_COMPILER_GCC"]) - elif env["platform"] == 'windows': - if env.msvc: - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_WIN32", "-DNV_CC_MSVC", "-DPOSH_COMPILER_MSVC" ]) - else: - env_xatlas_unwrap.Append(CCFLAGS=["-DNV_OS_MINGW", "-DNV_CC_GNUC", "-DPOSH_COMPILER_GCC", "-U__STRICT_ANSI__"]) - env.Append(LIBS=["dbghelp"]) - env_thirdparty = env_xatlas_unwrap.Clone() env_thirdparty.disable_warnings() env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources) diff --git a/platform/android/detect.py b/platform/android/detect.py index 5623274050..6c67067db7 100644 --- a/platform/android/detect.py +++ b/platform/android/detect.py @@ -150,19 +150,21 @@ def configure(env): if (env["target"].startswith("release")): if (env["optimize"] == "speed"): #optimize for speed (default) env.Append(LINKFLAGS=['-O2']) - env.Append(CPPFLAGS=['-O2', '-DNDEBUG', '-fomit-frame-pointer']) + env.Append(CCFLAGS=['-O2', '-fomit-frame-pointer']) + env.Append(CPPFLAGS=['-DNDEBUG']) else: #optimize for size - env.Append(CPPFLAGS=['-Os', '-DNDEBUG']) + env.Append(CCFLAGS=['-Os']) + env.Append(CPPFLAGS=['-DNDEBUG']) env.Append(LINKFLAGS=['-Os']) if (can_vectorize): - env.Append(CPPFLAGS=['-ftree-vectorize']) + env.Append(CCFLAGS=['-ftree-vectorize']) if (env["target"] == "release_debug"): env.Append(CPPFLAGS=['-DDEBUG_ENABLED']) elif (env["target"] == "debug"): env.Append(LINKFLAGS=['-O0']) - env.Append(CPPFLAGS=['-O0', '-D_DEBUG', '-UNDEBUG', '-DDEBUG_ENABLED', - '-DDEBUG_MEMORY_ENABLED', '-g', '-fno-limit-debug-info']) + env.Append(CCFLAGS=['-O0', '-g', '-fno-limit-debug-info']) + env.Append(CPPFLAGS=['-D_DEBUG', '-UNDEBUG', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) ## Compiler configuration @@ -216,15 +218,16 @@ def configure(env): if env['android_stl']: env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/include"]) env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++abi/include"]) - env.Append(CXXFLAGS=['-frtti',"-std=gnu++14"]) + env.Append(CXXFLAGS=['-frtti', "-std=gnu++14"]) else: - env.Append(CXXFLAGS=['-fno-rtti', '-fno-exceptions', '-DNO_SAFE_CAST']) + env.Append(CXXFLAGS=['-fno-rtti', '-fno-exceptions']) + env.Append(CPPFLAGS=['-DNO_SAFE_CAST']) ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"]) if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("15.0.4075724"): print("Using NDK unified headers") sysroot = env["ANDROID_NDK_ROOT"] + "/sysroot" - env.Append(CPPFLAGS=["--sysroot="+sysroot]) + env.Append(CPPFLAGS=["--sysroot=" + sysroot]) env.Append(CPPFLAGS=["-isystem", sysroot + "/usr/include/" + abi_subpath]) env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/android/support/include"]) # For unified headers this define has to be set manually @@ -233,48 +236,51 @@ def configure(env): print("Using NDK deprecated headers") env.Append(CPPFLAGS=["-isystem", lib_sysroot + "/usr/include"]) - env.Append(CPPFLAGS='-fpic -ffunction-sections -funwind-tables -fstack-protector-strong -fvisibility=hidden -fno-strict-aliasing'.split()) + env.Append(CCFLAGS='-fpic -ffunction-sections -funwind-tables -fstack-protector-strong -fvisibility=hidden -fno-strict-aliasing'.split()) env.Append(CPPFLAGS='-DNO_STATVFS -DGLES_ENABLED'.split()) env['neon_enabled'] = False if env['android_arch'] == 'x86': target_opts = ['-target', 'i686-none-linux-android'] # The NDK adds this if targeting API < 21, so we can drop it when Godot targets it at least - env.Append(CPPFLAGS=['-mstackrealign']) + env.Append(CCFLAGS=['-mstackrealign']) elif env['android_arch'] == 'x86_64': target_opts = ['-target', 'x86_64-none-linux-android'] elif env["android_arch"] == "armv6": target_opts = ['-target', 'armv6-none-linux-androideabi'] - env.Append(CPPFLAGS='-D__ARM_ARCH_6__ -march=armv6 -mfpu=vfp -mfloat-abi=softfp'.split()) + env.Append(CCFLAGS='-march=armv6 -mfpu=vfp -mfloat-abi=softfp'.split()) + env.Append(CPPFLAGS=['-D__ARM_ARCH_6__']) elif env["android_arch"] == "armv7": target_opts = ['-target', 'armv7-none-linux-androideabi'] - env.Append(CPPFLAGS='-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -march=armv7-a -mfloat-abi=softfp'.split()) + env.Append(CCFLAGS='-march=armv7-a -mfloat-abi=softfp'.split()) + env.Append(CPPFLAGS='-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__'.split()) if env['android_neon']: env['neon_enabled'] = True - env.Append(CPPFLAGS=['-mfpu=neon', '-D__ARM_NEON__']) + env.Append(CCFLAGS=['-mfpu=neon']) + env.Append(CPPFLAGS=['-D__ARM_NEON__']) else: - env.Append(CPPFLAGS=['-mfpu=vfpv3-d16']) + env.Append(CCFLAGS=['-mfpu=vfpv3-d16']) elif env["android_arch"] == "arm64v8": target_opts = ['-target', 'aarch64-none-linux-android'] + env.Append(CCFLAGS=['-mfix-cortex-a53-835769']) env.Append(CPPFLAGS=['-D__ARM_ARCH_8A__']) - env.Append(CPPFLAGS=['-mfix-cortex-a53-835769']) - env.Append(CPPFLAGS=target_opts) - env.Append(CPPFLAGS=common_opts) + env.Append(CCFLAGS=target_opts) + env.Append(CCFLAGS=common_opts) ## Link flags if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("15.0.4075724"): if LooseVersion(ndk_version) >= LooseVersion("17.1.4828580"): - env.Append(LINKFLAGS=['-Wl,--exclude-libs,libgcc.a','-Wl,--exclude-libs,libatomic.a','-nostdlib++']) + env.Append(LINKFLAGS=['-Wl,--exclude-libs,libgcc.a', '-Wl,--exclude-libs,libatomic.a', '-nostdlib++']) else: - env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] +"/sources/cxx-stl/llvm-libc++/libs/"+arch_subpath+"/libandroid_support.a"]) + env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/libandroid_support.a"]) env.Append(LINKFLAGS=['-shared', '--sysroot=' + lib_sysroot, '-Wl,--warn-shared-textrel']) - env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/"+arch_subpath+"/"]) - env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] +"/sources/cxx-stl/llvm-libc++/libs/"+arch_subpath+"/libc++_shared.so"]) + env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/"]) + env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] +"/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/libc++_shared.so"]) else: env.Append(LINKFLAGS=['-shared', '--sysroot=' + lib_sysroot, '-Wl,--warn-shared-textrel']) if mt_link: diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index f70cee2964..2a3d0843a8 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -1735,8 +1735,8 @@ public: new_file += l + "\n"; } else { String base = l.substr(0, last_tag_pos + last_tag.length()); - if (manifest_sections.has("application_tags")) { - for (List<String>::Element *E = manifest_sections["application_tags"].front(); E; E = E->next()) { + if (manifest_sections.has("application_attribs")) { + for (List<String>::Element *E = manifest_sections["application_attribs"].front(); E; E = E->next()) { String to_add = E->get().strip_edges(); base += " " + to_add + " "; } diff --git a/platform/android/java/AndroidManifest.xml b/platform/android/java/AndroidManifest.xml index 29ddd844ba..613d24fbd2 100644 --- a/platform/android/java/AndroidManifest.xml +++ b/platform/android/java/AndroidManifest.xml @@ -43,13 +43,6 @@ <!--Custom application XML added by add-ons--> <!--CHUNK_APPLICATION_BEGIN--> -<activity android:name="com.google.android.gms.ads.AdActivity" - android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> -<meta-data android:name="com.google.android.gms.version" - android:value="@integer/google_play_services_version" /> -<meta-data - android:name="com.google.android.gms.ads.AD_MANAGER_APP" - android:value="true"/> <!--CHUNK_APPLICATION_END--> </application> diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle index 868bbee831..c468277daa 100644 --- a/platform/android/java/build.gradle +++ b/platform/android/java/build.gradle @@ -10,8 +10,8 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' -//CHUNK_BUILD_DEPENDENCIES_BEGIN -//CHUNK_BUILD_DEPENDENCIES_END +//CHUNK_BUILDSCRIPT_DEPENDENCIES_BEGIN +//CHUNK_BUILDSCRIPT_DEPENDENCIES_END } } @@ -31,7 +31,6 @@ allprojects { dependencies { implementation "com.android.support:support-core-utils:28.0.0" //CHUNK_DEPENDENCIES_BEGIN -compile ('com.google.android.gms:play-services-ads:16.0.0') { exclude group: 'com.android.support' } //CHUNK_DEPENDENCIES_END } @@ -66,7 +65,6 @@ android { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src' //DIR_SRC_BEGIN -,'/home/red/coding/godot-demos/2d/platformer/android/admob/src' //DIR_SRC_END ] res.srcDirs = [ diff --git a/platform/haiku/detect.py b/platform/haiku/detect.py index ae8cc58a4a..874b1ab1fb 100644 --- a/platform/haiku/detect.py +++ b/platform/haiku/detect.py @@ -150,6 +150,6 @@ def configure(env): env.Append(CPPPATH=['#platform/haiku']) env.Append(CPPFLAGS=['-DUNIX_ENABLED', '-DOPENGL_ENABLED', '-DGLES_ENABLED']) env.Append(CPPFLAGS=['-DMEDIA_KIT_ENABLED']) - # env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) + # env.Append(CPPFLAGS=['-DFREETYPE_ENABLED']) env.Append(CPPFLAGS=['-DPTHREAD_NO_RENAME']) # TODO: enable when we have pthread_setname_np env.Append(LIBS=['be', 'game', 'media', 'network', 'bnetapi', 'z', 'GL']) diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py index 853f24379e..d56e28a4af 100644 --- a/platform/iphone/detect.py +++ b/platform/iphone/detect.py @@ -45,20 +45,21 @@ def configure(env): if (env["target"].startswith("release")): env.Append(CPPFLAGS=['-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1']) if (env["optimize"] == "speed"): #optimize for speed (default) - env.Append(CPPFLAGS=['-O2', '-ftree-vectorize', '-fomit-frame-pointer']) + env.Append(CCFLAGS=['-O2', '-ftree-vectorize', '-fomit-frame-pointer']) env.Append(LINKFLAGS=['-O2']) else: #optimize for size - env.Append(CPPFLAGS=['-Os', '-ftree-vectorize']) + env.Append(CCFLAGS=['-Os', '-ftree-vectorize']) env.Append(LINKFLAGS=['-Os']) if env["target"] == "release_debug": env.Append(CPPFLAGS=['-DDEBUG_ENABLED']) elif (env["target"] == "debug"): - env.Append(CPPFLAGS=['-D_DEBUG', '-DDEBUG=1', '-gdwarf-2', '-O0', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + env.Append(CCFLAGS=['-gdwarf-2', '-O0']) + env.Append(CPPFLAGS=['-D_DEBUG', '-DDEBUG=1', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) if (env["use_lto"]): - env.Append(CPPFLAGS=['-flto']) + env.Append(CCFLAGS=['-flto']) env.Append(LINKFLAGS=['-flto']) ## Architecture @@ -104,7 +105,7 @@ def configure(env): detect_darwin_sdk_path('iphonesimulator', env) env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.9' arch_flag = "i386" if env["arch"] == "x86" else env["arch"] - env.Append(CCFLAGS=('-arch ' + arch_flag + ' -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -isysroot $IPHONESDK -mios-simulator-version-min=10.0 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"').split()) + env.Append(CCFLAGS=('-arch ' + arch_flag + ' -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -isysroot $IPHONESDK -mios-simulator-version-min=10.0').split()) elif (env["arch"] == "arm"): detect_darwin_sdk_path('iphone', env) env.Append(CCFLAGS='-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -fpascal-strings -fblocks -isysroot $IPHONESDK -fvisibility=hidden -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=10.0 -MMD -MT dependencies'.split()) @@ -115,9 +116,9 @@ def configure(env): env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON']) if env['ios_exceptions']: - env.Append(CPPFLAGS=['-fexceptions']) + env.Append(CCFLAGS=['-fexceptions']) else: - env.Append(CPPFLAGS=['-fno-exceptions']) + env.Append(CCFLAGS=['-fno-exceptions']) ## Link flags diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 36a753e683..8024897195 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -53,16 +53,18 @@ def configure(env): elif (env["target"] == "release_debug"): if (env["optimize"] == "speed"): #optimize for speed (default) - env.Prepend(CCFLAGS=['-O2', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-O2']) else: #optimize for size - env.Prepend(CCFLAGS=['-Os', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-Os']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED']) if (env["debug_symbols"] == "yes"): env.Prepend(CCFLAGS=['-g1']) if (env["debug_symbols"] == "full"): env.Prepend(CCFLAGS=['-g2']) elif (env["target"] == "debug"): - env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + env.Prepend(CCFLAGS=['-g3']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) ## Architecture @@ -88,10 +90,10 @@ def configure(env): env['AR'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ar" env['RANLIB'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib" env['AS'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-as" - env.Append(CCFLAGS=['-D__MACPORTS__']) #hack to fix libvpx MM256_BROADCASTSI128_SI256 define + env.Append(CPPFLAGS=['-D__MACPORTS__']) #hack to fix libvpx MM256_BROADCASTSI128_SI256 define detect_darwin_sdk_path('osx', env) - env.Append(CPPFLAGS=['-isysroot', '$MACOS_SDK_PATH']) + env.Append(CCFLAGS=['-isysroot', '$MACOS_SDK_PATH']) env.Append(LINKFLAGS=['-isysroot', '$MACOS_SDK_PATH']) else: # osxcross build @@ -110,7 +112,7 @@ def configure(env): env['AR'] = basecmd + "ar" env['RANLIB'] = basecmd + "ranlib" env['AS'] = basecmd + "as" - env.Append(CCFLAGS=['-D__MACPORTS__']) #hack to fix libvpx MM256_BROADCASTSI128_SI256 define + env.Append(CPPFLAGS=['-D__MACPORTS__']) #hack to fix libvpx MM256_BROADCASTSI128_SI256 define if (env["CXX"] == "clang++"): env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) @@ -129,5 +131,5 @@ def configure(env): env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-framework', 'CoreAudio', '-framework', 'CoreMIDI', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback', '-framework', 'CoreVideo']) env.Append(LIBS=['pthread']) - env.Append(CPPFLAGS=['-mmacosx-version-min=10.9']) + env.Append(CCFLAGS=['-mmacosx-version-min=10.9']) env.Append(LINKFLAGS=['-mmacosx-version-min=10.9']) diff --git a/platform/server/detect.py b/platform/server/detect.py index f13ee72fd2..5306a2bf69 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -63,9 +63,10 @@ def configure(env): elif (env["target"] == "release_debug"): if (env["optimize"] == "speed"): #optimize for speed (default) - env.Prepend(CCFLAGS=['-O2', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-O2']) else: #optimize for size - env.Prepend(CCFLAGS=['-Os', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-Os']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED']) if (env["debug_symbols"] == "yes"): env.Prepend(CCFLAGS=['-g1']) @@ -73,7 +74,8 @@ def configure(env): env.Prepend(CCFLAGS=['-g2']) elif (env["target"] == "debug"): - env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + env.Prepend(CCFLAGS=['-g3']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) env.Append(LINKFLAGS=['-rdynamic']) ## Architecture diff --git a/platform/uwp/detect.py b/platform/uwp/detect.py index f8f1b066f6..17f8242466 100644 --- a/platform/uwp/detect.py +++ b/platform/uwp/detect.py @@ -53,18 +53,20 @@ def configure(env): ## Build type if (env["target"] == "release"): - env.Append(CPPFLAGS=['/O2', '/GL']) - env.Append(CPPFLAGS=['/MD']) + env.Append(CCFLAGS=['/O2', '/GL']) + env.Append(CCFLAGS=['/MD']) env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS', '/LTCG']) elif (env["target"] == "release_debug"): - env.Append(CCFLAGS=['/O2', '/Zi', '/DDEBUG_ENABLED']) - env.Append(CPPFLAGS=['/MD']) + env.Append(CCFLAGS=['/O2', '/Zi']) + env.Append(CCFLAGS=['/MD']) + env.Append(CPPFLAGS=['/DDEBUG_ENABLED']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) elif (env["target"] == "debug"): - env.Append(CCFLAGS=['/Zi', '/DDEBUG_ENABLED', '/DDEBUG_MEMORY_ENABLED']) - env.Append(CPPFLAGS=['/MDd']) + env.Append(CCFLAGS=['/Zi']) + env.Append(CCFLAGS=['/MDd']) + env.Append(CPPFLAGS=['/DDEBUG_ENABLED', '/DDEBUG_MEMORY_ENABLED']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/DEBUG']) @@ -136,18 +138,19 @@ def configure(env): ## Compile flags env.Append(CPPPATH=['#platform/uwp', '#drivers/windows']) - env.Append(CCFLAGS=['/DUWP_ENABLED', '/DWINDOWS_ENABLED', '/DTYPED_METHOD_BIND']) - env.Append(CCFLAGS=['/DGLES_ENABLED', '/DGL_GLEXT_PROTOTYPES', '/DEGL_EGLEXT_PROTOTYPES', '/DANGLE_ENABLED']) + env.Append(CPPFLAGS=['/DUWP_ENABLED', '/DWINDOWS_ENABLED', '/DTYPED_METHOD_BIND']) + env.Append(CPPFLAGS=['/DGLES_ENABLED', '/DGL_GLEXT_PROTOTYPES', '/DEGL_EGLEXT_PROTOTYPES', '/DANGLE_ENABLED']) winver = "0x0602" # Windows 8 is the minimum target for UWP build - env.Append(CCFLAGS=['/DWINVER=%s' % winver, '/D_WIN32_WINNT=%s' % winver]) + env.Append(CPPFLAGS=['/DWINVER=%s' % winver, '/D_WIN32_WINNT=%s' % winver]) - env.Append(CPPFLAGS=['/D', '__WRL_NO_DEFAULT_LIB__', '/D', 'WIN32', '/DPNG_ABORT=abort']) + env.Append(CPPFLAGS=['/D__WRL_NO_DEFAULT_LIB__', '/DWIN32', '/DPNG_ABORT=abort']) env.Append(CPPFLAGS=['/AI', vc_base_path + 'lib/store/references']) env.Append(CPPFLAGS=['/AI', vc_base_path + 'lib/x86/store/references']) - env.Append(CCFLAGS='/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'.split()) - env.Append(CXXFLAGS='/ZW /FS'.split()) + env.Append(CCFLAGS='/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'.split()) + env.Append(CPPFLAGS=['/D_UNICODE', '/DUNICODE', '/D "WINAPI_FAMILY=WINAPI_FAMILY_APP"']) + env.Append(CXXFLAGS=['/ZW']) env.Append(CCFLAGS=['/AI', vc_base_path + '\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR'] + '\\References\\CommonConfiguration\\Neutral']) ## Link flags diff --git a/platform/windows/detect.py b/platform/windows/detect.py index e986c47b40..5c38eebf04 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -273,7 +273,8 @@ def configure_mingw(env): env.Prepend(CCFLAGS=['-g2']) elif (env["target"] == "release_debug"): - env.Append(CCFLAGS=['-O2', '-DDEBUG_ENABLED']) + env.Append(CCFLAGS=['-O2']) + env.Append(CPPFLAGS=['-DDEBUG_ENABLED']) if (env["debug_symbols"] == "yes"): env.Prepend(CCFLAGS=['-g1']) if (env["debug_symbols"] == "full"): @@ -284,7 +285,8 @@ def configure_mingw(env): env.Prepend(CCFLAGS=['-Os']) elif (env["target"] == "debug"): - env.Append(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + env.Append(CCFLAGS=['-g3']) + env.Append(CPPFLAGS=['-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) ## Compiler configuration @@ -325,11 +327,12 @@ def configure_mingw(env): ## Compile flags - env.Append(CCFLAGS=['-DWINDOWS_ENABLED', '-mwindows']) - env.Append(CCFLAGS=['-DOPENGL_ENABLED']) - env.Append(CCFLAGS=['-DWASAPI_ENABLED']) - env.Append(CCFLAGS=['-DWINMIDI_ENABLED']) - env.Append(CCFLAGS=['-DWINVER=%s' % env['target_win_version'], '-D_WIN32_WINNT=%s' % env['target_win_version']]) + env.Append(CCFLAGS=['-mwindows']) + env.Append(CPPFLAGS=['-DWINDOWS_ENABLED']) + env.Append(CPPFLAGS=['-DOPENGL_ENABLED']) + env.Append(CPPFLAGS=['-DWASAPI_ENABLED']) + env.Append(CPPFLAGS=['-DWINMIDI_ENABLED']) + env.Append(CPPFLAGS=['-DWINVER=%s' % env['target_win_version'], '-D_WIN32_WINNT=%s' % env['target_win_version']]) env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser', 'imm32', 'bcrypt', 'avrt', 'uuid']) env.Append(CPPFLAGS=['-DMINGW_ENABLED']) diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index a6a947761b..dbfa1b171c 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1411,26 +1411,29 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int void OS_Windows::set_clipboard(const String &p_text) { + // Convert LF line endings to CRLF in clipboard content + // Otherwise, line endings won't be visible when pasted in other software + String text = p_text.replace("\n", "\r\n"); + if (!OpenClipboard(hWnd)) { ERR_EXPLAIN("Unable to open clipboard."); ERR_FAIL(); }; EmptyClipboard(); - HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, (p_text.length() + 1) * sizeof(CharType)); + HGLOBAL mem = GlobalAlloc(GMEM_MOVEABLE, (text.length() + 1) * sizeof(CharType)); if (mem == NULL) { ERR_EXPLAIN("Unable to allocate memory for clipboard contents."); ERR_FAIL(); }; LPWSTR lptstrCopy = (LPWSTR)GlobalLock(mem); - memcpy(lptstrCopy, p_text.c_str(), (p_text.length() + 1) * sizeof(CharType)); - //memset((lptstrCopy + p_text.length()), 0, sizeof(CharType)); + memcpy(lptstrCopy, text.c_str(), (text.length() + 1) * sizeof(CharType)); GlobalUnlock(mem); SetClipboardData(CF_UNICODETEXT, mem); // set the CF_TEXT version (not needed?) - CharString utf8 = p_text.utf8(); + CharString utf8 = text.utf8(); mem = GlobalAlloc(GMEM_MOVEABLE, utf8.length() + 1); if (mem == NULL) { ERR_EXPLAIN("Unable to allocate memory for clipboard contents."); @@ -2485,7 +2488,7 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments, } (*r_pipe) += buf; if (p_pipe_mutex) { - p_pipe_mutex->lock(); + p_pipe_mutex->unlock(); } } diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 94a87a7c90..f8ae5e9acb 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -1,7 +1,7 @@ import os import platform import sys -from methods import get_compiler_version, using_gcc +from methods import get_compiler_version, using_gcc, using_clang def is_active(): @@ -59,6 +59,7 @@ def get_opts(): return [ BoolVariable('use_llvm', 'Use the LLVM compiler', False), BoolVariable('use_lld', 'Use the LLD linker', False), + BoolVariable('use_thinlto', 'Use ThinLTO', False), BoolVariable('use_static_cpp', 'Link libgcc and libstdc++ statically for better portability', False), BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False), BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False), @@ -98,9 +99,10 @@ def configure(env): elif (env["target"] == "release_debug"): if (env["optimize"] == "speed"): #optimize for speed (default) - env.Prepend(CCFLAGS=['-O2', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-O2']) else: #optimize for size - env.Prepend(CCFLAGS=['-Os', '-DDEBUG_ENABLED']) + env.Prepend(CCFLAGS=['-Os']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED']) if (env["debug_symbols"] == "yes"): env.Prepend(CCFLAGS=['-g1']) @@ -108,7 +110,8 @@ def configure(env): env.Prepend(CCFLAGS=['-g2']) elif (env["target"] == "debug"): - env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + env.Prepend(CCFLAGS=['-g3']) + env.Prepend(CPPFLAGS=['-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) env.Append(LINKFLAGS=['-rdynamic']) ## Architecture @@ -134,6 +137,9 @@ def configure(env): if env['use_lld']: if env['use_llvm']: env.Append(LINKFLAGS=['-fuse-ld=lld']) + if env['use_thinlto']: + # A convenience so you don't need to write use_lto too when using SCons + env['use_lto'] = True else: print("Using LLD with GCC is not supported yet, try compiling with 'use_llvm=yes'.") sys.exit(255) @@ -154,12 +160,17 @@ def configure(env): env.Append(LINKFLAGS=['-fsanitize=leak']) if env['use_lto']: - env.Append(CCFLAGS=['-flto']) - if not env['use_llvm'] and env.GetOption("num_jobs") > 1: + env.Append(CCFLAGS=['-flto']) env.Append(LINKFLAGS=['-flto=' + str(env.GetOption("num_jobs"))]) else: - env.Append(LINKFLAGS=['-flto']) + if env['use_lld'] and env['use_thinlto']: + env.Append(CCFLAGS=['-flto=thin']) + env.Append(LINKFLAGS=['-flto=thin']) + else: + env.Append(CCFLAGS=['-flto']) + env.Append(LINKFLAGS=['-flto']) + if not env['use_llvm']: env['RANLIB'] = 'gcc-ranlib' env['AR'] = 'gcc-ar' @@ -173,6 +184,12 @@ def configure(env): if version != None and version[0] >= '6': env.Append(CCFLAGS=['-fpie']) env.Append(LINKFLAGS=['-no-pie']) + # Do the same for clang should be fine with Clang 4 and higher + if using_clang(env): + version = get_compiler_version(env) + if version != None and version[0] >= '4': + env.Append(CCFLAGS=['-fpie']) + env.Append(LINKFLAGS=['-no-pie']) ## Dependencies @@ -315,10 +332,10 @@ def configure(env): ## Cross-compilation if (is64 and env["bits"] == "32"): - env.Append(CPPFLAGS=['-m32']) + env.Append(CCFLAGS=['-m32']) env.Append(LINKFLAGS=['-m32', '-L/usr/lib/i386-linux-gnu']) elif (not is64 and env["bits"] == "64"): - env.Append(CPPFLAGS=['-m64']) + env.Append(CCFLAGS=['-m64']) env.Append(LINKFLAGS=['-m64', '-L/usr/lib/i686-linux-gnu']) # Link those statically for portability diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index faefd85968..73f583111b 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -37,7 +37,7 @@ void AudioStreamPlayer2D::_mix_audio() { if (!stream_playback.is_valid() || !active || - (stream_paused && !stream_fade_out)) { + (stream_paused && !stream_paused_fade_out)) { return; } @@ -50,7 +50,7 @@ void AudioStreamPlayer2D::_mix_audio() { AudioFrame *buffer = mix_buffer.ptrw(); int buffer_size = mix_buffer.size(); - if (stream_fade_out) { + if (stream_paused_fade_out) { // Short fadeout ramp buffer_size = MIN(buffer_size, 128); } @@ -84,10 +84,10 @@ void AudioStreamPlayer2D::_mix_audio() { } //mix! - AudioFrame target_volume = stream_fade_out ? AudioFrame(0.f, 0.f) : current.vol; - AudioFrame vol_prev = stream_fade_in ? AudioFrame(0.f, 0.f) : prev_outputs[i].vol; + AudioFrame target_volume = stream_paused_fade_out ? AudioFrame(0.f, 0.f) : current.vol; + AudioFrame vol_prev = stream_paused_fade_in ? AudioFrame(0.f, 0.f) : prev_outputs[i].vol; AudioFrame vol_inc = (target_volume - vol_prev) / float(buffer_size); - AudioFrame vol = stream_fade_in ? AudioFrame(0.f, 0.f) : current.vol; + AudioFrame vol = stream_paused_fade_in ? AudioFrame(0.f, 0.f) : current.vol; int cc = AudioServer::get_singleton()->get_channel_count(); @@ -139,15 +139,9 @@ void AudioStreamPlayer2D::_mix_audio() { active = false; } - if (stream_stop) { - active = false; - set_physics_process_internal(false); - setplay = -1; - } - output_ready = false; - stream_fade_in = false; - stream_fade_out = false; + stream_paused_fade_in = false; + stream_paused_fade_out = false; } void AudioStreamPlayer2D::_notification(int p_what) { @@ -329,7 +323,6 @@ void AudioStreamPlayer2D::play(float p_from_pos) { } if (stream_playback.is_valid()) { - stream_stop = false; active = true; setplay = p_from_pos; output_ready = false; @@ -347,8 +340,9 @@ void AudioStreamPlayer2D::seek(float p_seconds) { void AudioStreamPlayer2D::stop() { if (stream_playback.is_valid()) { - stream_stop = true; - stream_fade_out = true; + active = false; + set_physics_process_internal(false); + setplay = -1; } } @@ -463,8 +457,8 @@ void AudioStreamPlayer2D::set_stream_paused(bool p_pause) { if (p_pause != stream_paused) { stream_paused = p_pause; - stream_fade_in = p_pause ? false : true; - stream_fade_out = p_pause ? true : false; + stream_paused_fade_in = p_pause ? false : true; + stream_paused_fade_out = p_pause ? true : false; } } @@ -549,9 +543,8 @@ AudioStreamPlayer2D::AudioStreamPlayer2D() { output_ready = false; area_mask = 1; stream_paused = false; - stream_fade_in = false; - stream_fade_out = false; - stream_stop = false; + stream_paused_fade_in = false; + stream_paused_fade_out = false; AudioServer::get_singleton()->connect("bus_layout_changed", this, "_bus_layout_changed"); } diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h index 0cd18fb93b..e9cdfa2303 100644 --- a/scene/2d/audio_stream_player_2d.h +++ b/scene/2d/audio_stream_player_2d.h @@ -73,9 +73,8 @@ private: float pitch_scale; bool autoplay; bool stream_paused; - bool stream_fade_in; - bool stream_fade_out; - bool stream_stop; + bool stream_paused_fade_in; + bool stream_paused_fade_out; StringName bus; void _mix_audio(); diff --git a/scene/2d/navigation_2d.cpp b/scene/2d/navigation_2d.cpp index 57e0a5b118..72b5f2fb12 100644 --- a/scene/2d/navigation_2d.cpp +++ b/scene/2d/navigation_2d.cpp @@ -542,7 +542,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect if (CLOCK_TANGENT(apex_point, portal_left, left) >= 0) { //process - if (portal_left.distance_squared_to(apex_point) < CMP_EPSILON || CLOCK_TANGENT(apex_point, left, portal_right) > 0) { + if (Math::is_zero_approx(portal_left.distance_squared_to(apex_point)) || CLOCK_TANGENT(apex_point, left, portal_right) > 0) { left_poly = p; portal_left = left; } else { @@ -552,7 +552,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect left_poly = p; portal_left = apex_point; portal_right = apex_point; - if (!path.size() || path[path.size() - 1].distance_to(apex_point) > CMP_EPSILON) + if (!path.size() || !Math::is_zero_approx(path[path.size() - 1].distance_to(apex_point))) path.push_back(apex_point); skip = true; } @@ -560,7 +560,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect if (!skip && CLOCK_TANGENT(apex_point, portal_right, right) <= 0) { //process - if (portal_right.distance_squared_to(apex_point) < CMP_EPSILON || CLOCK_TANGENT(apex_point, right, portal_left) < 0) { + if (Math::is_zero_approx(portal_right.distance_squared_to(apex_point)) || CLOCK_TANGENT(apex_point, right, portal_left) < 0) { right_poly = p; portal_right = right; } else { @@ -570,7 +570,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect right_poly = p; portal_right = apex_point; portal_left = apex_point; - if (!path.size() || path[path.size() - 1].distance_to(apex_point) > CMP_EPSILON) + if (!path.size() || !Math::is_zero_approx(path[path.size() - 1].distance_to(apex_point))) path.push_back(apex_point); } } @@ -596,7 +596,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect } } - if (!path.size() || path[path.size() - 1].distance_squared_to(begin_point) > CMP_EPSILON) { + if (!path.size() || !Math::is_zero_approx(path[path.size() - 1].distance_squared_to(begin_point))) { path.push_back(begin_point); // Add the begin point } else { path.write[path.size() - 1] = begin_point; // Replace first midpoint by the exact begin point @@ -604,7 +604,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect path.invert(); - if (path.size() <= 1 || path[path.size() - 1].distance_squared_to(end_point) > CMP_EPSILON) { + if (path.size() <= 1 || !Math::is_zero_approx(path[path.size() - 1].distance_squared_to(end_point))) { path.push_back(end_point); // Add the end point } else { path.write[path.size() - 1] = end_point; // Replace last midpoint by the exact end point diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index 8bc48914d5..ff8c218575 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -38,7 +38,7 @@ void AudioStreamPlayer3D::_mix_audio() { if (!stream_playback.is_valid() || !active || - (stream_paused && !stream_fade_out)) { + (stream_paused && !stream_paused_fade_out)) { return; } @@ -53,7 +53,7 @@ void AudioStreamPlayer3D::_mix_audio() { AudioFrame *buffer = mix_buffer.ptrw(); int buffer_size = mix_buffer.size(); - if (stream_fade_out) { + if (stream_paused_fade_out) { // Short fadeout ramp buffer_size = MIN(buffer_size, 128); } @@ -109,10 +109,10 @@ void AudioStreamPlayer3D::_mix_audio() { int buffers = AudioServer::get_singleton()->get_channel_count(); for (int k = 0; k < buffers; k++) { - AudioFrame target_volume = stream_fade_out ? AudioFrame(0.f, 0.f) : current.vol[k]; - AudioFrame vol_prev = stream_fade_in ? AudioFrame(0.f, 0.f) : prev_outputs[i].vol[k]; + AudioFrame target_volume = stream_paused_fade_out ? AudioFrame(0.f, 0.f) : current.vol[k]; + AudioFrame vol_prev = stream_paused_fade_in ? AudioFrame(0.f, 0.f) : prev_outputs[i].vol[k]; AudioFrame vol_inc = (target_volume - vol_prev) / float(buffer_size); - AudioFrame vol = stream_fade_in ? AudioFrame(0.f, 0.f) : current.vol[k]; + AudioFrame vol = stream_paused_fade_in ? AudioFrame(0.f, 0.f) : current.vol[k]; if (!AudioServer::get_singleton()->thread_has_channel_mix_buffer(current.bus_index, k)) continue; //may have been deleted, will be updated on process @@ -198,15 +198,9 @@ void AudioStreamPlayer3D::_mix_audio() { active = false; } - if (stream_stop) { - active = false; - set_physics_process_internal(false); - setplay = -1; - } - output_ready = false; - stream_fade_in = false; - stream_fade_out = false; + stream_paused_fade_in = false; + stream_paused_fade_out = false; } float AudioStreamPlayer3D::_get_attenuation_db(float p_distance) const { @@ -663,7 +657,6 @@ float AudioStreamPlayer3D::get_pitch_scale() const { void AudioStreamPlayer3D::play(float p_from_pos) { if (stream_playback.is_valid()) { - stream_stop = false; active = true; setplay = p_from_pos; output_ready = false; @@ -681,8 +674,9 @@ void AudioStreamPlayer3D::seek(float p_seconds) { void AudioStreamPlayer3D::stop() { if (stream_playback.is_valid()) { - stream_stop = true; - stream_fade_out = true; + active = false; + set_physics_process_internal(false); + setplay = -1; } } @@ -878,8 +872,8 @@ void AudioStreamPlayer3D::set_stream_paused(bool p_pause) { if (p_pause != stream_paused) { stream_paused = p_pause; - stream_fade_in = stream_paused ? false : true; - stream_fade_out = stream_paused ? true : false; + stream_paused_fade_in = stream_paused ? false : true; + stream_paused_fade_out = stream_paused ? true : false; } } @@ -1024,9 +1018,8 @@ AudioStreamPlayer3D::AudioStreamPlayer3D() { out_of_range_mode = OUT_OF_RANGE_MIX; doppler_tracking = DOPPLER_TRACKING_DISABLED; stream_paused = false; - stream_fade_in = false; - stream_fade_out = false; - stream_stop = false; + stream_paused_fade_in = false; + stream_paused_fade_out = false; velocity_tracker.instance(); AudioServer::get_singleton()->connect("bus_layout_changed", this, "_bus_layout_changed"); diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h index ad83c47afc..98bc74b2e4 100644 --- a/scene/3d/audio_stream_player_3d.h +++ b/scene/3d/audio_stream_player_3d.h @@ -110,9 +110,8 @@ private: float pitch_scale; bool autoplay; bool stream_paused; - bool stream_fade_in; - bool stream_fade_out; - bool stream_stop; + bool stream_paused_fade_in; + bool stream_paused_fade_out; StringName bus; void _mix_audio(); diff --git a/scene/3d/cpu_particles.cpp b/scene/3d/cpu_particles.cpp index 469a1e87db..d4e242dcb7 100644 --- a/scene/3d/cpu_particles.cpp +++ b/scene/3d/cpu_particles.cpp @@ -1394,6 +1394,7 @@ CPUParticles::CPUParticles() { redraw = false; multimesh = VisualServer::get_singleton()->multimesh_create(); + VisualServer::get_singleton()->multimesh_set_visible_instances(multimesh, 0); set_base(multimesh); set_emitting(true); diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp index 190967d76c..84078911cb 100644 --- a/scene/3d/path.cpp +++ b/scene/3d/path.cpp @@ -173,7 +173,7 @@ void PathFollow::_update_transform() { float dot = t_prev.dot(t_cur); float angle = Math::acos(CLAMP(dot, -1, 1)); - if (likely(Math::abs(angle) > CMP_EPSILON)) { + if (likely(!Math::is_zero_approx(angle))) { if (rotation_mode == ROTATION_Y) { // assuming we're referring to global Y-axis. is this correct? axis.x = 0; @@ -184,7 +184,7 @@ void PathFollow::_update_transform() { // all components are allowed } - if (likely(axis.length() > CMP_EPSILON)) { + if (likely(!Math::is_zero_approx(axis.length()))) { t.rotate_basis(axis.normalized(), angle); } } @@ -193,7 +193,7 @@ void PathFollow::_update_transform() { float tilt_angle = c->interpolate_baked_tilt(o); Vector3 tilt_axis = t_cur; // not sure what tilt is supposed to do, is this correct?? - if (likely(Math::abs(tilt_angle) > CMP_EPSILON)) { + if (likely(!Math::is_zero_approx(Math::abs(tilt_angle)))) { if (rotation_mode == ROTATION_Y) { tilt_axis.x = 0; tilt_axis.z = 0; @@ -203,7 +203,7 @@ void PathFollow::_update_transform() { // all components are allowed } - if (likely(tilt_axis.length() > CMP_EPSILON)) { + if (likely(!Math::is_zero_approx(tilt_axis.length()))) { t.rotate_basis(tilt_axis.normalized(), tilt_angle); } } diff --git a/scene/3d/voxel_light_baker.cpp b/scene/3d/voxel_light_baker.cpp index 750ed97ae6..75b419ca58 100644 --- a/scene/3d/voxel_light_baker.cpp +++ b/scene/3d/voxel_light_baker.cpp @@ -835,7 +835,7 @@ void VoxelLightBaker::plot_light_directional(const Vector3 &p_direction, const C for (int i = 0; i < 3; i++) { - if (ABS(light_axis[i]) < CMP_EPSILON) + if (Math::is_zero_approx(light_axis[i])) continue; clip[clip_planes].normal[i] = 1.0; @@ -978,7 +978,7 @@ void VoxelLightBaker::plot_light_omni(const Vector3 &p_pos, const Color &p_color for (int c = 0; c < 3; c++) { - if (ABS(light_axis[c]) < CMP_EPSILON) + if (Math::is_zero_approx(light_axis[c])) continue; clip[clip_planes].normal[c] = 1.0; @@ -1113,7 +1113,7 @@ void VoxelLightBaker::plot_light_spot(const Vector3 &p_pos, const Vector3 &p_axi for (int c = 0; c < 3; c++) { - if (ABS(light_axis[c]) < CMP_EPSILON) + if (Math::is_zero_approx(light_axis[c])) continue; clip[clip_planes].normal[c] = 1.0; diff --git a/scene/audio/audio_stream_player.cpp b/scene/audio/audio_stream_player.cpp index 47278b8fc1..144e58d8b9 100644 --- a/scene/audio/audio_stream_player.cpp +++ b/scene/audio/audio_stream_player.cpp @@ -32,33 +32,10 @@ #include "core/engine.h" -void AudioStreamPlayer::_mix_internal(bool p_fadeout) { - - int bus_index = AudioServer::get_singleton()->thread_find_bus_index(bus); - - //get data - AudioFrame *buffer = mix_buffer.ptrw(); - int buffer_size = mix_buffer.size(); - - if (p_fadeout) { - // Short fadeout ramp - buffer_size = MIN(buffer_size, 128); - } - - stream_playback->mix(buffer, pitch_scale, buffer_size); - - //multiply volume interpolating to avoid clicks if this changes - float target_volume = p_fadeout ? -80.0 : volume_db; - float vol = Math::db2linear(mix_volume_db); - float vol_inc = (Math::db2linear(target_volume) - vol) / float(buffer_size); - for (int i = 0; i < buffer_size; i++) { - buffer[i] *= vol; - vol += vol_inc; - } +void AudioStreamPlayer::_mix_to_bus(const AudioFrame *p_frames,int p_amount) { - //set volume for next mix - mix_volume_db = target_volume; + int bus_index = AudioServer::get_singleton()->thread_find_bus_index(bus); AudioFrame *targets[4] = { NULL, NULL, NULL, NULL }; @@ -83,42 +60,84 @@ void AudioStreamPlayer::_mix_internal(bool p_fadeout) { for (int c = 0; c < 4; c++) { if (!targets[c]) break; - for (int i = 0; i < buffer_size; i++) { - targets[c][i] += buffer[i]; + for (int i = 0; i < p_amount; i++) { + targets[c][i] += p_frames[i]; } } } + +void AudioStreamPlayer::_mix_internal(bool p_fadeout) { + + + //get data + AudioFrame *buffer = mix_buffer.ptrw(); + int buffer_size = mix_buffer.size(); + + if (p_fadeout) { + // Short fadeout ramp + buffer_size = MIN(buffer_size, 128); + } + + stream_playback->mix(buffer, pitch_scale, buffer_size); + + //multiply volume interpolating to avoid clicks if this changes + float target_volume = p_fadeout ? -80.0 : volume_db; + float vol = Math::db2linear(mix_volume_db); + float vol_inc = (Math::db2linear(target_volume) - vol) / float(buffer_size); + + for (int i = 0; i < buffer_size; i++) { + buffer[i] *= vol; + vol += vol_inc; + } + + //set volume for next mix + mix_volume_db = target_volume; + + _mix_to_bus(buffer,buffer_size); + +} + void AudioStreamPlayer::_mix_audio() { + if (use_fadeout) { + _mix_to_bus(fadeout_buffer.ptr(),fadeout_buffer.size()); + use_fadeout=false; + } + if (!stream_playback.is_valid() || !active || - (stream_paused && !stream_fade)) { + (stream_paused && !stream_paused_fade)) { return; } - if (stream_fade) { - _mix_internal(true); - stream_fade = false; - - if (stream_stop) { - stream_playback->stop(); - active = false; - set_process_internal(false); + if (stream_paused) { + if (stream_paused_fade) { + _mix_internal(true); + stream_paused_fade = false; } return; } - if (setseek >= 0.0) { + if (setstop) { + _mix_internal(true); + stream_playback->stop(); + setstop=false; + } + + if (setseek >= 0.0 && !stop_has_priority) { if (stream_playback->is_playing()) { //fade out to avoid pops _mix_internal(true); } + stream_playback->start(setseek); setseek = -1.0; //reset seek mix_volume_db = volume_db; //reset ramp } + stop_has_priority = false; + _mix_internal(false); } @@ -135,7 +154,7 @@ void AudioStreamPlayer::_notification(int p_what) { if (p_what == NOTIFICATION_INTERNAL_PROCESS) { if (!active || (setseek < 0 && !stream_playback->is_playing())) { - active = false; + active = false; set_process_internal(false); emit_signal("finished"); } @@ -162,6 +181,28 @@ void AudioStreamPlayer::set_stream(Ref<AudioStream> p_stream) { AudioServer::get_singleton()->lock(); + if (active && stream_playback.is_valid() && !stream_paused) { + //changing streams out of the blue is not a great idea, but at least + //lets try to somehow avoid a click + + AudioFrame *buffer = fadeout_buffer.ptrw(); + int buffer_size = fadeout_buffer.size(); + + stream_playback->mix(buffer, pitch_scale, buffer_size); + + //multiply volume interpolating to avoid clicks if this changes + float target_volume = -80.0; + float vol = Math::db2linear(mix_volume_db); + float vol_inc = (Math::db2linear(target_volume) - vol) / float(buffer_size); + + for (int i = 0; i < buffer_size; i++) { + buffer[i] *= vol; + vol += vol_inc; + } + + use_fadeout=true; + } + mix_buffer.resize(AudioServer::get_singleton()->thread_get_mix_buffer_size()); if (stream_playback.is_valid()) { @@ -169,6 +210,7 @@ void AudioStreamPlayer::set_stream(Ref<AudioStream> p_stream) { stream.unref(); active = false; setseek = -1; + setstop = false; } if (p_stream.is_valid()) { @@ -209,8 +251,8 @@ void AudioStreamPlayer::play(float p_from_pos) { if (stream_playback.is_valid()) { //mix_volume_db = volume_db; do not reset volume ramp here, can cause clicks - stream_stop = false; setseek = p_from_pos; + stop_has_priority=false; active = true; set_process_internal(true); } @@ -225,16 +267,16 @@ void AudioStreamPlayer::seek(float p_seconds) { void AudioStreamPlayer::stop() { - if (stream_playback.is_valid()) { - stream_stop = true; - stream_fade = true; + if (stream_playback.is_valid() && active) { + setstop=true; + stop_has_priority=true; } } bool AudioStreamPlayer::is_playing() const { if (stream_playback.is_valid()) { - return active; //&& stream_playback->is_playing(); + return active && !setstop; //&& stream_playback->is_playing(); } return false; @@ -301,7 +343,7 @@ void AudioStreamPlayer::set_stream_paused(bool p_pause) { if (p_pause != stream_paused) { stream_paused = p_pause; - stream_fade = p_pause ? true : false; + stream_paused_fade = p_pause ? true : false; } } @@ -315,7 +357,7 @@ void AudioStreamPlayer::_validate_property(PropertyInfo &property) const { if (property.name == "bus") { String options; - for (int i = 0; i < AudioServer::get_singleton()->get_bus_count(); i++) { + for (int i = 0; i <AudioServer::get_singleton()->get_bus_count(); i++) { if (i > 0) options += ","; String name = AudioServer::get_singleton()->get_bus_name(i); @@ -397,9 +439,11 @@ AudioStreamPlayer::AudioStreamPlayer() { setseek = -1; active = false; stream_paused = false; - stream_fade = false; - stream_stop = false; + stream_paused_fade = false; mix_target = MIX_TARGET_STEREO; + fadeout_buffer.resize(512); + setstop=false; + use_fadeout=false; AudioServer::get_singleton()->connect("bus_layout_changed", this, "_bus_layout_changed"); } diff --git a/scene/audio/audio_stream_player.h b/scene/audio/audio_stream_player.h index 590bef95b0..0b782b67e7 100644 --- a/scene/audio/audio_stream_player.h +++ b/scene/audio/audio_stream_player.h @@ -49,17 +49,20 @@ private: Ref<AudioStreamPlayback> stream_playback; Ref<AudioStream> stream; Vector<AudioFrame> mix_buffer; + Vector<AudioFrame> fadeout_buffer; + bool use_fadeout; volatile float setseek; volatile bool active; + volatile bool setstop; + volatile bool stop_has_priority; float mix_volume_db; float pitch_scale; float volume_db; bool autoplay; bool stream_paused; - bool stream_fade; - bool stream_stop; + bool stream_paused_fade; StringName bus; MixTarget mix_target; @@ -72,6 +75,7 @@ private: bool _is_active() const; void _bus_layout_changed(); + void _mix_to_bus(const AudioFrame *p_frames, int p_amount); protected: void _validate_property(PropertyInfo &property) const; diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 7aca6acd00..c78f29dd50 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -825,6 +825,8 @@ void ColorPickerButton::_update_picker() { add_child(popup); picker->connect("color_changed", this, "_color_changed"); popup->connect("modal_closed", this, "_modal_closed"); + popup->connect("about_to_show", this, "set_pressed", varray(true)); + popup->connect("popup_hide", this, "set_pressed", varray(false)); picker->set_pick_color(color); picker->set_edit_alpha(edit_alpha); } @@ -855,4 +857,6 @@ ColorPickerButton::ColorPickerButton() { picker = NULL; popup = NULL; edit_alpha = true; + + set_toggle_mode(true); } diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index 30ad81bb2e..dabff08fea 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -1053,7 +1053,7 @@ void GraphEdit::set_connection_activity(const StringName &p_from, int p_from_por if (E->get().from == p_from && E->get().from_port == p_from_port && E->get().to == p_to && E->get().to_port == p_to_port) { - if (ABS(E->get().activity - p_activity) < CMP_EPSILON) { + if (Math::is_equal_approx(E->get().activity, p_activity)) { //update only if changed top_layer->update(); connections_layer->update(); diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp index b67d8c00d6..a011b793de 100644 --- a/scene/gui/menu_button.cpp +++ b/scene/gui/menu_button.cpp @@ -116,15 +116,19 @@ MenuButton::MenuButton() { switch_on_hover = false; set_flat(true); + set_toggle_mode(true); set_disable_shortcuts(false); set_enabled_focus_mode(FOCUS_NONE); + set_process_unhandled_key_input(true); + set_action_mode(ACTION_MODE_BUTTON_PRESS); + popup = memnew(PopupMenu); popup->hide(); add_child(popup); popup->set_as_toplevel(true); popup->set_pass_on_modal_close_click(false); - set_process_unhandled_key_input(true); - set_action_mode(ACTION_MODE_BUTTON_PRESS); + popup->connect("about_to_show", this, "set_pressed", varray(true)); // For when switching from another MenuButton. + popup->connect("popup_hide", this, "set_pressed", varray(false)); } MenuButton::~MenuButton() { diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp index b9b270ce0c..cb5fb0263b 100644 --- a/scene/gui/option_button.cpp +++ b/scene/gui/option_button.cpp @@ -340,6 +340,7 @@ void OptionButton::_bind_methods() { OptionButton::OptionButton() { current = -1; + set_toggle_mode(true); set_text_align(ALIGN_LEFT); set_action_mode(ACTION_MODE_BUTTON_PRESS); @@ -350,6 +351,7 @@ OptionButton::OptionButton() { popup->set_pass_on_modal_close_click(false); popup->connect("id_pressed", this, "_selected"); popup->connect("id_focused", this, "_focused"); + popup->connect("popup_hide", this, "set_pressed", varray(false)); } OptionButton::~OptionButton() { diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index a7ba9d7dda..3389e34f07 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -965,6 +965,7 @@ void TextEdit::_notification(int p_what) { // draw info icons if (draw_info_gutter && text.has_info_icon(line)) { + int vertical_gap = (get_row_height() * 40) / 100; int horizontal_gap = (cache.info_gutter_width * 30) / 100; int gutter_left = cache.style_normal->get_margin(MARGIN_LEFT) + cache.breakpoint_gutter_width; @@ -979,8 +980,8 @@ void TextEdit::_notification(int p_what) { } Size2i icon_pos; - int xofs = horizontal_gap - (info_icon->get_width()) / 2; - int yofs = (get_row_height() - info_icon->get_height()) / 2; + int xofs = horizontal_gap - (info_icon->get_width() / 4); + int yofs = vertical_gap - (info_icon->get_height() / 4); icon_pos.x = gutter_left + xofs + ofs_x; icon_pos.y = ofs_y + yofs; diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 81c38cec89..125e0a2882 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -1160,7 +1160,7 @@ void SceneTree::_update_root_rect() { WARN_PRINT("Font oversampling only works with the resize modes 'Keep Width', 'Keep Height', and 'Expand'."); } - if (stretch_aspect == STRETCH_ASPECT_IGNORE || ABS(viewport_aspect - video_mode_aspect) < CMP_EPSILON) { + if (stretch_aspect == STRETCH_ASPECT_IGNORE || Math::is_equal_approx(viewport_aspect, video_mode_aspect)) { //same aspect or ignore aspect viewport_size = desired_res; screen_size = video_mode; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 52f63ddc1d..ae2c571201 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2482,11 +2482,7 @@ void Viewport::_gui_hid_control(Control *p_control) { if (gui.mouse_over == p_control) gui.mouse_over = NULL; if (gui.tooltip == p_control) - gui.tooltip = NULL; - if (gui.tooltip == p_control) { - gui.tooltip = NULL; _gui_cancel_tooltip(); - } } void Viewport::_gui_remove_control(Control *p_control) { diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 9face3e476..47f5b152f0 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -782,7 +782,11 @@ void unregister_scene_types() { ResourceLoader::remove_resource_format_loader(resource_loader_bmfont); resource_loader_bmfont.unref(); + //SpatialMaterial is not initialised when 3D is disabled, so it shouldn't be cleaned up either +#ifndef _3D_DISABLED SpatialMaterial::finish_shaders(); +#endif // _3D_DISABLED + ParticlesMaterial::finish_shaders(); CanvasItemMaterial::finish_shaders(); SceneStringNames::free(); diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index e58ec9d71e..9c79b2ba3b 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -1477,7 +1477,7 @@ int Animation::_find(const Vector<K> &p_keys, float p_time) const { middle = (low + high) / 2; - if (Math::abs(p_time - keys[middle].time) < CMP_EPSILON) { //match + if (Math::is_equal_approx(p_time, keys[middle].time)) { //match return middle; } else if (p_time < keys[middle].time) high = middle - 1; //search low end of array @@ -1680,10 +1680,10 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol float delta = p_keys[next].time - p_keys[idx].time; float from = p_time - p_keys[idx].time; - if (Math::absf(delta) > CMP_EPSILON) - c = from / delta; - else + if (Math::is_zero_approx(delta)) c = 0; + else + c = from / delta; } else { @@ -1691,10 +1691,10 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol float delta = (length - p_keys[idx].time) + p_keys[next].time; float from = p_time - p_keys[idx].time; - if (Math::absf(delta) > CMP_EPSILON) - c = from / delta; - else + if (Math::is_zero_approx(delta)) c = 0; + else + c = from / delta; } } else { @@ -1707,10 +1707,10 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol float delta = endtime + p_keys[next].time; float from = endtime + p_time; - if (Math::absf(delta) > CMP_EPSILON) - c = from / delta; - else + if (Math::is_zero_approx(delta)) c = 0; + else + c = from / delta; } } else { // no loop @@ -1723,10 +1723,10 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol float delta = p_keys[next].time - p_keys[idx].time; float from = p_time - p_keys[idx].time; - if (Math::absf(delta) > CMP_EPSILON) - c = from / delta; - else + if (Math::is_zero_approx(delta)) c = 0; + else + c = from / delta; } else { @@ -2774,9 +2774,9 @@ bool Animation::_transform_track_optimize_key(const TKey<TransformKey> &t0, cons const Vector3 &v1 = t1.value.loc; const Vector3 &v2 = t2.value.loc; - if (v0.distance_to(v2) < CMP_EPSILON) { + if (Math::is_zero_approx(v0.distance_to(v2))) { //0 and 2 are close, let's see if 1 is close - if (v0.distance_to(v1) > CMP_EPSILON) { + if (!Math::is_zero_approx(v0.distance_to(v1))) { //not close, not optimizable return false; } @@ -2813,9 +2813,9 @@ bool Animation::_transform_track_optimize_key(const TKey<TransformKey> &t0, cons //localize both to rotation from q0 - if ((q0 - q2).length() < CMP_EPSILON) { + if (Math::is_zero_approx((q0 - q2).length())) { - if ((q0 - q1).length() > CMP_EPSILON) + if (!Math::is_zero_approx((q0 - q1).length())) return false; } else { @@ -2863,9 +2863,9 @@ bool Animation::_transform_track_optimize_key(const TKey<TransformKey> &t0, cons const Vector3 &v1 = t1.value.scale; const Vector3 &v2 = t2.value.scale; - if (v0.distance_to(v2) < CMP_EPSILON) { + if (Math::is_zero_approx(v0.distance_to(v2))) { //0 and 2 are close, let's see if 1 is close - if (v0.distance_to(v1) > CMP_EPSILON) { + if (!Math::is_zero_approx(v0.distance_to(v1))) { //not close, not optimizable return false; } diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 626ed9f5b4..2c6f30f429 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -535,7 +535,7 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map float a = value; float b = original; - if (Math::abs(a - b) < CMP_EPSILON) + if (Math::is_equal_approx(a, b)) continue; } else if (bool(Variant::evaluate(Variant::OP_EQUAL, value, original))) { diff --git a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp index 01a52aa01f..46d92336f3 100644 --- a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp +++ b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp @@ -130,7 +130,7 @@ Vector2 AudioEffectSpectrumAnalyzerInstance::get_magnitude_for_frequency_range(f } uint64_t time = OS::get_singleton()->get_ticks_usec(); float diff = double(time - last_fft_time) / 1000000.0 + base->get_tap_back_pos(); - diff -= AudioServer::get_singleton()->get_output_delay(); + diff -= AudioServer::get_singleton()->get_output_latency(); float fft_time_size = float(fft_size) / mix_rate; int fft_index = fft_pos; diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index c83c3029f3..fc3ecedd03 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -68,16 +68,21 @@ void AudioDriver::audio_server_process(int p_frames, int32_t *p_buffer, bool p_u void AudioDriver::update_mix_time(int p_frames) { - _mix_amount += p_frames; + _last_mix_frames = p_frames; if (OS::get_singleton()) _last_mix_time = OS::get_singleton()->get_ticks_usec(); } -double AudioDriver::get_mix_time() const { +double AudioDriver::get_time_since_last_mix() const { + + return (OS::get_singleton()->get_ticks_usec() - _last_mix_time) / 1000000.0; +} + +double AudioDriver::get_time_to_next_mix() const { double total = (OS::get_singleton()->get_ticks_usec() - _last_mix_time) / 1000000.0; - total += _mix_amount / (double)get_mix_rate(); - return total; + double mix_buffer = _last_mix_frames / (double)get_mix_rate(); + return mix_buffer - total; } void AudioDriver::input_buffer_init(int driver_buffer_frames) { @@ -148,7 +153,7 @@ Array AudioDriver::capture_get_device_list() { AudioDriver::AudioDriver() { _last_mix_time = 0; - _mix_amount = 0; + _last_mix_frames = 0; input_position = 0; input_size = 0; @@ -281,13 +286,6 @@ void AudioServer::_driver_process(int p_frames, int32_t *p_buffer) { to_mix -= to_copy; } - // Calculate latency for Performance.AUDIO_OUTPUT_LATENCY - if (OS::get_singleton()) { - uint64_t ticks = OS::get_singleton()->get_ticks_usec(); - output_latency = (ticks - output_latency_ticks) / 1000000.f; - output_latency_ticks = ticks; - } - #ifdef DEBUG_ENABLED prof_time += OS::get_singleton()->get_ticks_usec() - prof_ticks; #endif @@ -1107,13 +1105,19 @@ AudioServer *AudioServer::get_singleton() { return singleton; } -double AudioServer::get_mix_time() const { +double AudioServer::get_output_latency() const { - return 0; + return AudioDriver::get_singleton()->get_latency(); } -double AudioServer::get_output_delay() const { - return 0; +double AudioServer::get_time_to_next_mix() const { + + return AudioDriver::get_singleton()->get_time_to_next_mix(); +} + +double AudioServer::get_time_since_last_mix() const { + + return AudioDriver::get_singleton()->get_time_since_last_mix(); } AudioServer *AudioServer::singleton = NULL; @@ -1357,6 +1361,10 @@ void AudioServer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_device"), &AudioServer::get_device); ClassDB::bind_method(D_METHOD("set_device", "device"), &AudioServer::set_device); + ClassDB::bind_method(D_METHOD("get_time_to_next_mix"), &AudioServer::get_time_to_next_mix); + ClassDB::bind_method(D_METHOD("get_time_since_last_mix"), &AudioServer::get_time_since_last_mix); + ClassDB::bind_method(D_METHOD("get_output_latency"), &AudioServer::get_output_latency); + ClassDB::bind_method(D_METHOD("capture_get_device_list"), &AudioServer::capture_get_device_list); ClassDB::bind_method(D_METHOD("capture_get_device"), &AudioServer::capture_get_device); ClassDB::bind_method(D_METHOD("capture_set_device", "name"), &AudioServer::capture_set_device); @@ -1386,6 +1394,8 @@ AudioServer::AudioServer() { #ifdef DEBUG_ENABLED prof_time = 0; #endif + mix_time = 0; + mix_size = 0; } AudioServer::~AudioServer() { diff --git a/servers/audio_server.h b/servers/audio_server.h index 3b69cb1b88..e56d87ce84 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -45,7 +45,7 @@ class AudioDriver { static AudioDriver *singleton; uint64_t _last_mix_time; - uint64_t _mix_amount; + uint64_t _last_mix_frames; #ifdef DEBUG_ENABLED uint64_t prof_ticks; @@ -71,7 +71,8 @@ protected: #endif public: - double get_mix_time() const; //useful for video -> audio sync + double get_time_since_last_mix() const; //useful for video -> audio sync + double get_time_to_next_mix() const; enum SpeakerMode { SPEAKER_MODE_STEREO, @@ -163,6 +164,9 @@ public: typedef void (*AudioCallback)(void *p_userdata); private: + uint64_t mix_time; + int mix_size; + uint32_t buffer_size; uint64_t mix_count; uint64_t mix_frames; @@ -351,8 +355,9 @@ public: static AudioServer *get_singleton(); - virtual double get_mix_time() const; //useful for video -> audio sync - virtual double get_output_delay() const; + virtual double get_output_latency() const; + virtual double get_time_to_next_mix() const; + virtual double get_time_since_last_mix() const; void *audio_data_alloc(uint32_t p_data_len, const uint8_t *p_from_data = NULL); void audio_data_free(void *p_data); @@ -377,7 +382,6 @@ public: String capture_get_device(); void capture_set_device(const String &p_name); - float get_output_latency() { return output_latency; } AudioServer(); virtual ~AudioServer(); }; diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp index baf7431e28..3073cc8b11 100644 --- a/servers/physics/collision_solver_sat.cpp +++ b/servers/physics/collision_solver_sat.cpp @@ -98,7 +98,7 @@ static void _generate_contacts_edge_edge(const Vector3 *p_points_A, int p_point_ Vector3 c = rel_A.cross(rel_B).cross(rel_B); - if (Math::abs(rel_A.dot(c)) < CMP_EPSILON) { + if (Math::is_zero_approx(rel_A.dot(c))) { // should handle somehow.. //ERR_PRINT("TODO FIX"); @@ -678,7 +678,7 @@ static void _collision_box_box(const ShapeSW *p_a, const Transform &p_transform_ Vector3 axis = p_transform_a.basis.get_axis(i).cross(p_transform_b.basis.get_axis(j)); - if (axis.length_squared() < CMP_EPSILON) + if (Math::is_zero_approx(axis.length_squared())) continue; axis.normalize(); @@ -767,7 +767,7 @@ static void _collision_box_capsule(const ShapeSW *p_a, const Transform &p_transf // cylinder Vector3 box_axis = p_transform_a.basis.get_axis(i); Vector3 axis = box_axis.cross(cyl_axis); - if (axis.length_squared() < CMP_EPSILON) + if (Math::is_zero_approx(axis.length_squared())) continue; if (!separator.test_axis(axis.normalized())) diff --git a/servers/physics/joints/cone_twist_joint_sw.cpp b/servers/physics/joints/cone_twist_joint_sw.cpp index 268b9eefeb..1b3de3e913 100644 --- a/servers/physics/joints/cone_twist_joint_sw.cpp +++ b/servers/physics/joints/cone_twist_joint_sw.cpp @@ -127,10 +127,10 @@ bool ConeTwistJointSW::setup(real_t p_timestep) { Vector3 relPos = pivotBInW - pivotAInW; Vector3 normal[3]; - if (relPos.length_squared() > CMP_EPSILON) { - normal[0] = relPos.normalized(); - } else { + if (Math::is_zero_approx(relPos.length_squared())) { normal[0] = Vector3(real_t(1.0), 0, 0); + } else { + normal[0] = relPos.normalized(); } plane_space(normal[0], normal[1], normal[2]); diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp index 756348f448..813d9b7704 100644 --- a/servers/physics/joints/generic_6dof_joint_sw.cpp +++ b/servers/physics/joints/generic_6dof_joint_sw.cpp @@ -107,7 +107,7 @@ real_t G6DOFRotationalLimitMotorSW::solveAngularLimits( // correction velocity real_t motor_relvel = m_limitSoftness * (target_velocity - m_damping * rel_vel); - if (motor_relvel < CMP_EPSILON && motor_relvel > -CMP_EPSILON) { + if (Math::is_zero_approx(motor_relvel)) { return 0.0f; //no need for applying force } diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp index e972496b2b..1d1b30286e 100644 --- a/servers/physics/joints/hinge_joint_sw.cpp +++ b/servers/physics/joints/hinge_joint_sw.cpp @@ -167,10 +167,10 @@ bool HingeJointSW::setup(real_t p_step) { Vector3 relPos = pivotBInW - pivotAInW; Vector3 normal[3]; - if (relPos.length_squared() > CMP_EPSILON) { - normal[0] = relPos.normalized(); - } else { + if (Math::is_zero_approx(relPos.length_squared())) { normal[0] = Vector3(real_t(1.0), 0, 0); + } else { + normal[0] = relPos.normalized(); } plane_space(normal[0], normal[1], normal[2]); diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp index d6c3fff421..f4bff66389 100644 --- a/servers/physics_2d/collision_solver_2d_sat.cpp +++ b/servers/physics_2d/collision_solver_2d_sat.cpp @@ -237,8 +237,8 @@ public: Vector2 axis = p_axis; - if (Math::abs(axis.x) < CMP_EPSILON && - Math::abs(axis.y) < CMP_EPSILON) { + if (Math::is_zero_approx(axis.x) && + Math::is_zero_approx(axis.y)) { // strange case, try an upwards separator axis = Vector2(0.0, 1.0); } diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h index 4e99bb3676..26424f927e 100644 --- a/servers/visual/visual_server_canvas.h +++ b/servers/visual/visual_server_canvas.h @@ -82,7 +82,7 @@ public: _FORCE_INLINE_ bool operator()(const Item *p_left, const Item *p_right) const { - if (Math::abs(p_left->ysort_pos.y - p_right->ysort_pos.y) < CMP_EPSILON) + if (Math::is_equal_approx(p_left->ysort_pos.y, p_right->ysort_pos.y)) return p_left->ysort_pos.x < p_right->ysort_pos.x; else return p_left->ysort_pos.y < p_right->ysort_pos.y; diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index c1dc94daa2..af580d6794 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -2654,7 +2654,7 @@ void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, co for (int i = 0; i < 3; i++) { - if (ABS(light_axis[i]) < CMP_EPSILON) + if (Math::is_zero_approx(light_axis[i])) continue; clip[clip_planes].normal[i] = 1.0; @@ -2789,7 +2789,7 @@ void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, co for (int c = 0; c < 3; c++) { - if (ABS(light_axis[c]) < CMP_EPSILON) + if (Math::is_zero_approx(light_axis[c])) continue; clip[clip_planes].normal[c] = 1.0; diff --git a/thirdparty/README.md b/thirdparty/README.md index c98f593920..e2c2334c0f 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -170,7 +170,7 @@ Files extracted from upstream source: ## libpng - Upstream: http://libpng.org/pub/png/libpng.html -- Version: 1.6.35 +- Version: 1.6.37 - License: libpng/zlib Files extracted from upstream source: diff --git a/thirdparty/libpng/LICENSE b/thirdparty/libpng/LICENSE index 62ab8e48dc..e0c5b531cf 100644 --- a/thirdparty/libpng/LICENSE +++ b/thirdparty/libpng/LICENSE @@ -4,8 +4,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE PNG Reference Library License version 2 --------------------------------------- - * Copyright (c) 1995-2018 The PNG Reference Library Authors. - * Copyright (c) 2018 Cosmin Truta. + * Copyright (c) 1995-2019 The PNG Reference Library Authors. + * Copyright (c) 2018-2019 Cosmin Truta. * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * Copyright (c) 1996-1997 Andreas Dilger. * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -13,7 +13,7 @@ PNG Reference Library License version 2 The software is supplied "as is", without warranty of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose, title, and -non-infringement. In no even shall the Copyright owners, or +non-infringement. In no event shall the Copyright owners, or anyone distributing the software, be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of, or in connection with the software, or the use or @@ -39,7 +39,7 @@ subject to the following restrictions: PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) ----------------------------------------------------------------------- -libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are derived from libpng-1.0.6, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals diff --git a/thirdparty/libpng/arm/palette_neon_intrinsics.c b/thirdparty/libpng/arm/palette_neon_intrinsics.c index fa02d6a8b3..b4d1fd2abf 100644 --- a/thirdparty/libpng/arm/palette_neon_intrinsics.c +++ b/thirdparty/libpng/arm/palette_neon_intrinsics.c @@ -1,7 +1,7 @@ /* palette_neon_intrinsics.c - NEON optimised palette expansion functions * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 2017-2018 Arm Holdings. All rights reserved. * Written by Richard Townsend <Richard.Townsend@arm.com>, February 2017. * @@ -20,9 +20,9 @@ # include <arm_neon.h> #endif -/* Build an RGBA palette from the RGB and separate alpha palettes. */ +/* Build an RGBA8 palette from the separate RGB and alpha palettes. */ void -png_riffle_palette_rgba(png_structrp png_ptr, png_row_infop row_info) +png_riffle_palette_neon(png_structrp png_ptr) { png_const_colorp palette = png_ptr->palette; png_bytep riffled_palette = png_ptr->riffled_palette; @@ -30,6 +30,8 @@ png_riffle_palette_rgba(png_structrp png_ptr, png_row_infop row_info) int num_trans = png_ptr->num_trans; int i; + png_debug(1, "in png_riffle_palette_neon"); + /* Initially black, opaque. */ uint8x16x4_t w = {{ vdupq_n_u8(0x00), @@ -38,16 +40,10 @@ png_riffle_palette_rgba(png_structrp png_ptr, png_row_infop row_info) vdupq_n_u8(0xff), }}; - if (row_info->bit_depth != 8) - { - png_error(png_ptr, "bit_depth must be 8 for png_riffle_palette_rgba"); - return; - } - - /* First, riffle the RGB colours into a RGBA palette, the A value is - * set to opaque for now. + /* First, riffle the RGB colours into an RGBA8 palette. + * The alpha component is set to opaque for now. */ - for (i = 0; i < (1 << row_info->bit_depth); i += 16) + for (i = 0; i < 256; i += 16) { uint8x16x3_t v = vld3q_u8((png_const_bytep)(palette + i)); w.val[0] = v.val[0]; @@ -61,9 +57,9 @@ png_riffle_palette_rgba(png_structrp png_ptr, png_row_infop row_info) riffled_palette[(i << 2) + 3] = trans_alpha[i]; } -/* Expands a palettized row into RGBA. */ +/* Expands a palettized row into RGBA8. */ int -png_do_expand_palette_neon_rgba(png_structrp png_ptr, png_row_infop row_info, +png_do_expand_palette_rgba8_neon(png_structrp png_ptr, png_row_infop row_info, png_const_bytep row, png_bytepp ssp, png_bytepp ddp) { png_uint_32 row_width = row_info->width; @@ -72,6 +68,8 @@ png_do_expand_palette_neon_rgba(png_structrp png_ptr, png_row_infop row_info, const png_int_32 pixels_per_chunk = 4; int i; + png_debug(1, "in png_do_expand_palette_rgba8_neon"); + if (row_width < pixels_per_chunk) return 0; @@ -103,9 +101,9 @@ png_do_expand_palette_neon_rgba(png_structrp png_ptr, png_row_infop row_info, return i; } -/* Expands a palettized row into RGB format. */ +/* Expands a palettized row into RGB8. */ int -png_do_expand_palette_neon_rgb(png_structrp png_ptr, png_row_infop row_info, +png_do_expand_palette_rgb8_neon(png_structrp png_ptr, png_row_infop row_info, png_const_bytep row, png_bytepp ssp, png_bytepp ddp) { png_uint_32 row_width = row_info->width; @@ -113,6 +111,8 @@ png_do_expand_palette_neon_rgb(png_structrp png_ptr, png_row_infop row_info, const png_uint_32 pixels_per_chunk = 8; int i; + png_debug(1, "in png_do_expand_palette_rgb8_neon"); + if (row_width <= pixels_per_chunk) return 0; diff --git a/thirdparty/libpng/png.c b/thirdparty/libpng/png.c index 3dce191d17..757c755f97 100644 --- a/thirdparty/libpng/png.c +++ b/thirdparty/libpng/png.c @@ -1,7 +1,7 @@ /* png.c - location for general purpose libpng functions * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -14,7 +14,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_36 Your_png_h_is_not_version_1_6_36; +typedef png_libpng_version_1_6_37 Your_png_h_is_not_version_1_6_37; #ifdef __GNUC__ /* The version tests may need to be added to, but the problem warning has @@ -815,8 +815,8 @@ png_get_copyright(png_const_structrp png_ptr) return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.36" PNG_STRING_NEWLINE \ - "Copyright (c) 2018 Cosmin Truta" PNG_STRING_NEWLINE \ + "libpng version 1.6.37" PNG_STRING_NEWLINE \ + "Copyright (c) 2018-2019 Cosmin Truta" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \ PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ @@ -4588,8 +4588,7 @@ png_image_free(png_imagep image) if (image != NULL && image->opaque != NULL && image->opaque->error_buf == NULL) { - /* Ignore errors here: */ - (void)png_safe_execute(image, png_image_free_function, image); + png_image_free_function(image); image->opaque = NULL; } } diff --git a/thirdparty/libpng/png.h b/thirdparty/libpng/png.h index 8e272a0553..b12174ba35 100644 --- a/thirdparty/libpng/png.h +++ b/thirdparty/libpng/png.h @@ -1,9 +1,9 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.36 - December 1, 2018 + * libpng version 1.6.37 - April 14, 2019 * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -14,8 +14,9 @@ * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.97, January 1998, through 1.6.35, July 2018: - * Glenn Randers-Pehrson. - * libpng version 1.6.36, December 1, 2018: Cosmin Truta + * Glenn Randers-Pehrson + * libpng versions 1.6.36, December 2018, through 1.6.37, April 2019: + * Cosmin Truta * See also "Contributing Authors", below. */ @@ -26,8 +27,8 @@ * PNG Reference Library License version 2 * --------------------------------------- * - * * Copyright (c) 1995-2018 The PNG Reference Library Authors. - * * Copyright (c) 2018 Cosmin Truta. + * * Copyright (c) 1995-2019 The PNG Reference Library Authors. + * * Copyright (c) 2018-2019 Cosmin Truta. * * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * * Copyright (c) 1996-1997 Andreas Dilger. * * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -35,7 +36,7 @@ * The software is supplied "as is", without warranty of any kind, * express or implied, including, without limitation, the warranties * of merchantability, fitness for a particular purpose, title, and - * non-infringement. In no even shall the Copyright owners, or + * non-infringement. In no event shall the Copyright owners, or * anyone distributing the software, be liable for any damages or * other liability, whether in contract, tort or otherwise, arising * from, out of, or in connection with the software, or the use or @@ -61,7 +62,7 @@ * PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) * ----------------------------------------------------------------------- * - * libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are + * libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are * derived from libpng-1.0.6, and are distributed according to the same * disclaimer and license as libpng-1.0.6 with the following individuals @@ -238,7 +239,7 @@ * ... * 1.5.30 15 10530 15.so.15.30[.0] * ... - * 1.6.36 16 10636 16.so.16.36[.0] + * 1.6.37 16 10637 16.so.16.37[.0] * * Henceforth the source version will match the shared-library major and * minor numbers; the shared-library major version number will be used for @@ -277,8 +278,8 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.36" -#define PNG_HEADER_VERSION_STRING " libpng version 1.6.36 - December 1, 2018\n" +#define PNG_LIBPNG_VER_STRING "1.6.37" +#define PNG_HEADER_VERSION_STRING " libpng version 1.6.37 - April 14, 2019\n" #define PNG_LIBPNG_VER_SONUM 16 #define PNG_LIBPNG_VER_DLLNUM 16 @@ -286,12 +287,11 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 36 +#define PNG_LIBPNG_VER_RELEASE 37 -/* This should match the numeric part of the final component of - * PNG_LIBPNG_VER_STRING, omitting any leading zero: +/* This should be zero for a public release, or non-zero for a + * development version. [Deprecated] */ - #define PNG_LIBPNG_VER_BUILD 0 /* Release Status */ @@ -318,7 +318,7 @@ * From version 1.0.1 it is: * XXYYZZ, where XX=major, YY=minor, ZZ=release */ -#define PNG_LIBPNG_VER 10636 /* 1.6.36 */ +#define PNG_LIBPNG_VER 10637 /* 1.6.37 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -330,6 +330,10 @@ # include "pnglibconf.h" #endif +#define PNG_APNG_SUPPORTED +#define PNG_READ_APNG_SUPPORTED +#define PNG_WRITE_APNG_SUPPORTED + #ifndef PNG_VERSION_INFO_ONLY /* Machine specific configuration. */ # include "pngconf.h" @@ -425,10 +429,21 @@ extern "C" { * See pngconf.h for base types that vary by machine/system */ +#ifdef PNG_APNG_SUPPORTED +/* dispose_op flags from inside fcTL */ +#define PNG_DISPOSE_OP_NONE 0x00U +#define PNG_DISPOSE_OP_BACKGROUND 0x01U +#define PNG_DISPOSE_OP_PREVIOUS 0x02U + +/* blend_op flags from inside fcTL */ +#define PNG_BLEND_OP_SOURCE 0x00U +#define PNG_BLEND_OP_OVER 0x01U +#endif /* PNG_APNG_SUPPORTED */ + /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_36; +typedef char* png_libpng_version_1_6_37; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -746,6 +761,10 @@ typedef png_unknown_chunk * * png_unknown_chunkpp; #define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */ #define PNG_INFO_IDAT 0x8000U /* ESR, 1.0.6 */ #define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */ +#ifdef PNG_APNG_SUPPORTED +#define PNG_INFO_acTL 0x20000U +#define PNG_INFO_fcTL 0x40000U +#endif /* This is used for the transformation routines, as some of them * change these values for the row. It also should enable using @@ -783,6 +802,10 @@ typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, #ifdef PNG_PROGRESSIVE_READ_SUPPORTED typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); +#ifdef PNG_APNG_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp, + png_uint_32)); +#endif /* The following callback receives png_uint_32 row_number, int pass for the * png_bytep data of the row. When transforming an interlaced image the @@ -3226,6 +3249,74 @@ PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, /******************************************************************************* * END OF HARDWARE AND SOFTWARE OPTIONS ******************************************************************************/ +#ifdef PNG_APNG_SUPPORTED +PNG_EXPORT(250, png_uint_32, png_get_acTL, (png_structp png_ptr, + png_infop info_ptr, png_uint_32 *num_frames, png_uint_32 *num_plays)); + +PNG_EXPORT(251, png_uint_32, png_set_acTL, (png_structp png_ptr, + png_infop info_ptr, png_uint_32 num_frames, png_uint_32 num_plays)); + +PNG_EXPORT(252, png_uint_32, png_get_num_frames, (png_structp png_ptr, + png_infop info_ptr)); + +PNG_EXPORT(253, png_uint_32, png_get_num_plays, (png_structp png_ptr, + png_infop info_ptr)); + +PNG_EXPORT(254, png_uint_32, png_get_next_frame_fcTL, + (png_structp png_ptr, png_infop info_ptr, png_uint_32 *width, + png_uint_32 *height, png_uint_32 *x_offset, png_uint_32 *y_offset, + png_uint_16 *delay_num, png_uint_16 *delay_den, png_byte *dispose_op, + png_byte *blend_op)); + +PNG_EXPORT(255, png_uint_32, png_set_next_frame_fcTL, + (png_structp png_ptr, png_infop info_ptr, png_uint_32 width, + png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op)); + +PNG_EXPORT(256, png_uint_32, png_get_next_frame_width, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(257, png_uint_32, png_get_next_frame_height, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(258, png_uint_32, png_get_next_frame_x_offset, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(259, png_uint_32, png_get_next_frame_y_offset, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(260, png_uint_16, png_get_next_frame_delay_num, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(261, png_uint_16, png_get_next_frame_delay_den, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(262, png_byte, png_get_next_frame_dispose_op, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(263, png_byte, png_get_next_frame_blend_op, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(264, png_byte, png_get_first_frame_is_hidden, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(265, png_uint_32, png_set_first_frame_is_hidden, + (png_structp png_ptr, png_infop info_ptr, png_byte is_hidden)); + +#ifdef PNG_READ_APNG_SUPPORTED +PNG_EXPORT(266, void, png_read_frame_head, (png_structp png_ptr, + png_infop info_ptr)); +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXPORT(267, void, png_set_progressive_frame_fn, (png_structp png_ptr, + png_progressive_frame_ptr frame_info_fn, + png_progressive_frame_ptr frame_end_fn)); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +#endif /* PNG_READ_APNG_SUPPORTED */ + +#ifdef PNG_WRITE_APNG_SUPPORTED +PNG_EXPORT(268, void, png_write_frame_head, (png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op)); + +PNG_EXPORT(269, void, png_write_frame_tail, (png_structp png_ptr, + png_infop info_ptr)); +#endif /* PNG_WRITE_APNG_SUPPORTED */ +#endif /* PNG_APNG_SUPPORTED */ /* Maintainer: Put new public prototypes here ^, in libpng.3, in project * defs, and in scripts/symbols.def. @@ -3235,7 +3326,11 @@ PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, * one to use is one more than this.) */ #ifdef PNG_EXPORT_LAST_ORDINAL +#ifdef PNG_APNG_SUPPORTED + PNG_EXPORT_LAST_ORDINAL(269); +#else PNG_EXPORT_LAST_ORDINAL(249); +#endif /* PNG_APNG_SUPPORTED */ #endif #ifdef __cplusplus diff --git a/thirdparty/libpng/pngconf.h b/thirdparty/libpng/pngconf.h index 5e641b2509..927a769dbe 100644 --- a/thirdparty/libpng/pngconf.h +++ b/thirdparty/libpng/pngconf.h @@ -1,9 +1,9 @@ -/* pngconf.h - machine configurable file for libpng +/* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.36 + * libpng version 1.6.37 * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/thirdparty/libpng/pngget.c b/thirdparty/libpng/pngget.c index 5abf1efd9f..9ed101aedc 100644 --- a/thirdparty/libpng/pngget.c +++ b/thirdparty/libpng/pngget.c @@ -1246,4 +1246,166 @@ png_get_palette_max(png_const_structp png_ptr, png_const_infop info_ptr) # endif #endif +#ifdef PNG_APNG_SUPPORTED +png_uint_32 PNGAPI +png_get_acTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *num_frames, png_uint_32 *num_plays) +{ + png_debug1(1, "in %s retrieval function", "acTL"); + + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_acTL) && + num_frames != NULL && num_plays != NULL) + { + *num_frames = info_ptr->num_frames; + *num_plays = info_ptr->num_plays; + return (1); + } + + return (0); +} + +png_uint_32 PNGAPI +png_get_num_frames(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_num_frames()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->num_frames); + return (0); +} + +png_uint_32 PNGAPI +png_get_num_plays(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_num_plays()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->num_plays); + return (0); +} + +png_uint_32 PNGAPI +png_get_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *width, png_uint_32 *height, + png_uint_32 *x_offset, png_uint_32 *y_offset, + png_uint_16 *delay_num, png_uint_16 *delay_den, + png_byte *dispose_op, png_byte *blend_op) +{ + png_debug1(1, "in %s retrieval function", "fcTL"); + + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_fcTL) && + width != NULL && height != NULL && + x_offset != NULL && y_offset != NULL && + delay_num != NULL && delay_den != NULL && + dispose_op != NULL && blend_op != NULL) + { + *width = info_ptr->next_frame_width; + *height = info_ptr->next_frame_height; + *x_offset = info_ptr->next_frame_x_offset; + *y_offset = info_ptr->next_frame_y_offset; + *delay_num = info_ptr->next_frame_delay_num; + *delay_den = info_ptr->next_frame_delay_den; + *dispose_op = info_ptr->next_frame_dispose_op; + *blend_op = info_ptr->next_frame_blend_op; + return (1); + } + + return (0); +} + +png_uint_32 PNGAPI +png_get_next_frame_width(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_width()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_width); + return (0); +} + +png_uint_32 PNGAPI +png_get_next_frame_height(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_height()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_height); + return (0); +} + +png_uint_32 PNGAPI +png_get_next_frame_x_offset(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_x_offset()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_x_offset); + return (0); +} + +png_uint_32 PNGAPI +png_get_next_frame_y_offset(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_y_offset()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_y_offset); + return (0); +} + +png_uint_16 PNGAPI +png_get_next_frame_delay_num(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_delay_num()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_delay_num); + return (0); +} + +png_uint_16 PNGAPI +png_get_next_frame_delay_den(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_delay_den()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_delay_den); + return (0); +} + +png_byte PNGAPI +png_get_next_frame_dispose_op(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_dispose_op()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_dispose_op); + return (0); +} + +png_byte PNGAPI +png_get_next_frame_blend_op(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_blend_op()"); + + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_blend_op); + return (0); +} + +png_byte PNGAPI +png_get_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_first_frame_is_hidden()"); + + if (png_ptr != NULL) + return (png_byte)(png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN); + + PNG_UNUSED(info_ptr) + + return 0; +} +#endif /* PNG_APNG_SUPPORTED */ #endif /* READ || WRITE */ diff --git a/thirdparty/libpng/pnginfo.h b/thirdparty/libpng/pnginfo.h index 1f98dedc42..ac7b269132 100644 --- a/thirdparty/libpng/pnginfo.h +++ b/thirdparty/libpng/pnginfo.h @@ -263,5 +263,18 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) png_bytepp row_pointers; /* the image bits */ #endif +#ifdef PNG_APNG_SUPPORTED + png_uint_32 num_frames; /* including default image */ + png_uint_32 num_plays; + png_uint_32 next_frame_width; + png_uint_32 next_frame_height; + png_uint_32 next_frame_x_offset; + png_uint_32 next_frame_y_offset; + png_uint_16 next_frame_delay_num; + png_uint_16 next_frame_delay_den; + png_byte next_frame_dispose_op; + png_byte next_frame_blend_op; +#endif + }; #endif /* PNGINFO_H */ diff --git a/thirdparty/libpng/pnglibconf.h b/thirdparty/libpng/pnglibconf.h index 00340c678b..e1e27e957e 100644 --- a/thirdparty/libpng/pnglibconf.h +++ b/thirdparty/libpng/pnglibconf.h @@ -1,8 +1,8 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.36 */ +/* libpng version 1.6.37 */ -/* Copyright (c) 2018 Cosmin Truta */ +/* Copyright (c) 2018-2019 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ /* This code is released under the libpng license. */ diff --git a/thirdparty/libpng/pngpread.c b/thirdparty/libpng/pngpread.c index e283627b77..2eaeca08f7 100644 --- a/thirdparty/libpng/pngpread.c +++ b/thirdparty/libpng/pngpread.c @@ -195,6 +195,106 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) chunk_name = png_ptr->chunk_name; +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->num_frames_read > 0 && + png_ptr->num_frames_read < info_ptr->num_frames) + { + if (chunk_name == png_IDAT) + { + /* Discard trailing IDATs for the first frame */ + if (png_ptr->mode & PNG_HAVE_fcTL || png_ptr->num_frames_read > 1) + png_error(png_ptr, "out of place IDAT"); + + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } + else if (chunk_name == png_fdAT) + { + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_ensure_sequence_number(png_ptr, 4); + + if (!(png_ptr->mode & PNG_HAVE_fcTL)) + { + /* Discard trailing fdATs for frames other than the first */ + if (png_ptr->num_frames_read < 2) + png_error(png_ptr, "out of place fdAT"); + + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } + + else + { + /* frame data follows */ + png_ptr->idat_size = png_ptr->push_length - 4; + png_ptr->mode |= PNG_HAVE_IDAT; + png_ptr->process_mode = PNG_READ_IDAT_MODE; + + return; + } + } + + else if (chunk_name == png_fcTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_read_reset(png_ptr); + png_ptr->mode &= ~PNG_HAVE_fcTL; + + png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length); + + if (!(png_ptr->mode & PNG_HAVE_fcTL)) + png_error(png_ptr, "missing required fcTL chunk"); + + png_read_reinit(png_ptr, info_ptr); + png_progressive_read_reset(png_ptr); + + if (png_ptr->frame_info_fn != NULL) + (*(png_ptr->frame_info_fn))(png_ptr, png_ptr->num_frames_read); + + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + + return; + } + + else + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + png_warning(png_ptr, "Skipped (ignored) a chunk " + "between APNG chunks"); + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } + + return; + } +#endif /* PNG_READ_APNG_SUPPORTED */ + if (chunk_name == png_IDAT) { if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) @@ -261,6 +361,9 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) else if (chunk_name == png_IDAT) { +#ifdef PNG_READ_APNG_SUPPORTED + png_have_info(png_ptr, info_ptr); +#endif png_ptr->idat_size = png_ptr->push_length; png_ptr->process_mode = PNG_READ_IDAT_MODE; png_push_have_info(png_ptr, info_ptr); @@ -406,6 +509,30 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); } #endif +#ifdef PNG_READ_APNG_SUPPORTED + else if (chunk_name == png_acTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_acTL(png_ptr, info_ptr, png_ptr->push_length); + } + + else if (chunk_name == png_fcTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif /* PNG_READ_APNG_SUPPORTED */ else { @@ -539,7 +666,11 @@ png_push_read_IDAT(png_structrp png_ptr) png_byte chunk_tag[4]; /* TODO: this code can be commoned up with the same code in push_read */ +#ifdef PNG_READ_APNG_SUPPORTED + PNG_PUSH_SAVE_BUFFER_IF_LT(12) +#else PNG_PUSH_SAVE_BUFFER_IF_LT(8) +#endif png_push_fill_buffer(png_ptr, chunk_length, 4); png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); png_reset_crc(png_ptr); @@ -547,17 +678,64 @@ png_push_read_IDAT(png_structrp png_ptr) png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->chunk_name != png_fdAT && png_ptr->num_frames_read > 0) + { + if (png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) + { + png_ptr->process_mode = PNG_READ_CHUNK_MODE; + if (png_ptr->frame_end_fn != NULL) + (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read); + png_ptr->num_frames_read++; + return; + } + else + { + if (png_ptr->chunk_name == png_IEND) + png_error(png_ptr, "Not enough image data"); + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + png_warning(png_ptr, "Skipping (ignoring) a chunk between " + "APNG chunks"); + png_crc_finish(png_ptr, png_ptr->push_length); + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } + } + else +#endif +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->chunk_name != png_IDAT && png_ptr->num_frames_read == 0) +#else if (png_ptr->chunk_name != png_IDAT) +#endif { png_ptr->process_mode = PNG_READ_CHUNK_MODE; if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) png_error(png_ptr, "Not enough compressed data"); +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->frame_end_fn != NULL) + (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read); + png_ptr->num_frames_read++; +#endif + return; } png_ptr->idat_size = png_ptr->push_length; + +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->num_frames_read > 0) + { + png_ensure_sequence_number(png_ptr, 4); + png_ptr->idat_size -= 4; + } +#endif } if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0) @@ -631,6 +809,15 @@ png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer, if (!(buffer_length > 0) || buffer == NULL) png_error(png_ptr, "No IDAT data (internal error)"); +#ifdef PNG_READ_APNG_SUPPORTED + /* If the app is not APNG-aware, decode only the first frame */ + if (!(png_ptr->apng_flags & PNG_APNG_APP) && png_ptr->num_frames_read > 0) + { + png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; + return; + } +#endif + /* This routine must process all the data it has been given * before returning, calling the row callback as required to * handle the uncompressed results. @@ -1085,6 +1272,18 @@ png_set_progressive_read_fn(png_structrp png_ptr, png_voidp progressive_ptr, png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); } +#ifdef PNG_READ_APNG_SUPPORTED +void PNGAPI +png_set_progressive_frame_fn(png_structp png_ptr, + png_progressive_frame_ptr frame_info_fn, + png_progressive_frame_ptr frame_end_fn) +{ + png_ptr->frame_info_fn = frame_info_fn; + png_ptr->frame_end_fn = frame_end_fn; + png_ptr->apng_flags |= PNG_APNG_APP; +} +#endif + png_voidp PNGAPI png_get_progressive_ptr(png_const_structrp png_ptr) { diff --git a/thirdparty/libpng/pngpriv.h b/thirdparty/libpng/pngpriv.h index 973c3eac1f..57e1bf989b 100644 --- a/thirdparty/libpng/pngpriv.h +++ b/thirdparty/libpng/pngpriv.h @@ -1,7 +1,7 @@ /* pngpriv.h - private declarations for use inside libpng * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -637,6 +637,10 @@ #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000U /* Have another chunk after IDAT */ /* 0x4000U (unused) */ #define PNG_IS_READ_STRUCT 0x8000U /* Else is a write struct */ +#ifdef PNG_APNG_SUPPORTED +#define PNG_HAVE_acTL 0x10000U +#define PNG_HAVE_fcTL 0x20000U +#endif /* Flags for the transformations the PNG library does on the image data */ #define PNG_BGR 0x0001U @@ -873,6 +877,16 @@ #define png_tRNS PNG_U32(116, 82, 78, 83) #define png_zTXt PNG_U32(122, 84, 88, 116) +#ifdef PNG_APNG_SUPPORTED +#define png_acTL PNG_U32( 97, 99, 84, 76) +#define png_fcTL PNG_U32(102, 99, 84, 76) +#define png_fdAT PNG_U32(102, 100, 65, 84) + +/* For png_struct.apng_flags: */ +#define PNG_FIRST_FRAME_HIDDEN 0x0001U +#define PNG_APNG_APP 0x0002U +#endif + /* The following will work on (signed char*) strings, whereas the get_uint_32 * macro will fail on top-bit-set values because of the sign extension. */ @@ -1644,6 +1658,47 @@ PNG_INTERNAL_FUNCTION(void,png_colorspace_sync,(png_const_structrp png_ptr, */ #endif +#ifdef PNG_APNG_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_ensure_fcTL_is_valid,(png_structp png_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, + png_byte dispose_op, png_byte blend_op), PNG_EMPTY); + +#ifdef PNG_READ_APNG_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_handle_acTL,(png_structp png_ptr, png_infop info_ptr, + png_uint_32 length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_handle_fcTL,(png_structp png_ptr, png_infop info_ptr, + png_uint_32 length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_handle_fdAT,(png_structp png_ptr, png_infop info_ptr, + png_uint_32 length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_have_info,(png_structp png_ptr, png_infop info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_ensure_sequence_number,(png_structp png_ptr, + png_uint_32 length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_reset,(png_structp png_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_reinit,(png_structp png_ptr, + png_infop info_ptr),PNG_EMPTY); +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_progressive_read_reset,(png_structp png_ptr),PNG_EMPTY); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +#endif /* PNG_READ_APNG_SUPPORTED */ + +#ifdef PNG_WRITE_APNG_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_write_acTL,(png_structp png_ptr, + png_uint_32 num_frames, png_uint_32 num_plays),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_fcTL,(png_structp png_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, + png_byte dispose_op, png_byte blend_op),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_fdAT,(png_structp png_ptr, + png_const_bytep data, png_size_t length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_reset,(png_structp png_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_reinit,(png_structp png_ptr, + png_infop info_ptr, png_uint_32 width, png_uint_32 height),PNG_EMPTY); +#endif /* PNG_WRITE_APNG_SUPPORTED */ +#endif /* PNG_APNG_SUPPORTED */ + /* Added at libpng version 1.4.0 */ #ifdef PNG_COLORSPACE_SUPPORTED /* These internal functions are for maintaining the colorspace structure within @@ -2119,11 +2174,11 @@ PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, #if PNG_ARM_NEON_IMPLEMENTATION == 1 PNG_INTERNAL_FUNCTION(void, - png_riffle_palette_rgba, - (png_structrp, png_row_infop), + png_riffle_palette_neon, + (png_structrp), PNG_EMPTY); PNG_INTERNAL_FUNCTION(int, - png_do_expand_palette_neon_rgba, + png_do_expand_palette_rgba8_neon, (png_structrp, png_row_infop, png_const_bytep, @@ -2131,7 +2186,7 @@ PNG_INTERNAL_FUNCTION(int, const png_bytepp), PNG_EMPTY); PNG_INTERNAL_FUNCTION(int, - png_do_expand_palette_neon_rgb, + png_do_expand_palette_rgb8_neon, (png_structrp, png_row_infop, png_const_bytep, diff --git a/thirdparty/libpng/pngread.c b/thirdparty/libpng/pngread.c index f8e762196e..fa44d5a8e4 100644 --- a/thirdparty/libpng/pngread.c +++ b/thirdparty/libpng/pngread.c @@ -1,7 +1,7 @@ /* pngread.c - read a PNG file * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -161,6 +161,9 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr) else if (chunk_name == png_IDAT) { +#ifdef PNG_READ_APNG_SUPPORTED + png_have_info(png_ptr, info_ptr); +#endif png_ptr->idat_size = length; break; } @@ -255,6 +258,17 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr) png_handle_iTXt(png_ptr, info_ptr, length); #endif +#ifdef PNG_READ_APNG_SUPPORTED + else if (chunk_name == png_acTL) + png_handle_acTL(png_ptr, info_ptr, length); + + else if (chunk_name == png_fcTL) + png_handle_fcTL(png_ptr, info_ptr, length); + + else if (chunk_name == png_fdAT) + png_handle_fdAT(png_ptr, info_ptr, length); +#endif + else png_handle_unknown(png_ptr, info_ptr, length, PNG_HANDLE_CHUNK_AS_DEFAULT); @@ -262,6 +276,72 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr) } #endif /* SEQUENTIAL_READ */ +#ifdef PNG_READ_APNG_SUPPORTED +void PNGAPI +png_read_frame_head(png_structp png_ptr, png_infop info_ptr) +{ + png_byte have_chunk_after_DAT; /* after IDAT or after fdAT */ + + png_debug(0, "Reading frame head"); + + if (!(png_ptr->mode & PNG_HAVE_acTL)) + png_error(png_ptr, "attempt to png_read_frame_head() but " + "no acTL present"); + + /* do nothing for the main IDAT */ + if (png_ptr->num_frames_read == 0) + return; + + png_read_reset(png_ptr); + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; + png_ptr->mode &= ~PNG_HAVE_fcTL; + + have_chunk_after_DAT = 0; + for (;;) + { + png_uint_32 length = png_read_chunk_header(png_ptr); + + if (png_ptr->chunk_name == png_IDAT) + { + /* discard trailing IDATs for the first frame */ + if (have_chunk_after_DAT || png_ptr->num_frames_read > 1) + png_error(png_ptr, "png_read_frame_head(): out of place IDAT"); + png_crc_finish(png_ptr, length); + } + + else if (png_ptr->chunk_name == png_fcTL) + { + png_handle_fcTL(png_ptr, info_ptr, length); + have_chunk_after_DAT = 1; + } + + else if (png_ptr->chunk_name == png_fdAT) + { + png_ensure_sequence_number(png_ptr, length); + + /* discard trailing fdATs for frames other than the first */ + if (!have_chunk_after_DAT && png_ptr->num_frames_read > 1) + png_crc_finish(png_ptr, length - 4); + else if(png_ptr->mode & PNG_HAVE_fcTL) + { + png_ptr->idat_size = length - 4; + png_ptr->mode |= PNG_HAVE_IDAT; + + break; + } + else + png_error(png_ptr, "png_read_frame_head(): out of place fdAT"); + } + else + { + png_warning(png_ptr, "Skipped (ignored) a chunk " + "between APNG chunks"); + png_crc_finish(png_ptr, length); + } + } +} +#endif /* PNG_READ_APNG_SUPPORTED */ + /* Optional call to update the users info_ptr structure */ void PNGAPI png_read_update_info(png_structrp png_ptr, png_inforp info_ptr) @@ -994,6 +1074,12 @@ png_read_destroy(png_structrp png_ptr) png_ptr->chunk_list = NULL; #endif +#if defined(PNG_READ_EXPAND_SUPPORTED) && \ + defined(PNG_ARM_NEON_IMPLEMENTATION) + png_free(png_ptr, png_ptr->riffled_palette); + png_ptr->riffled_palette = NULL; +#endif + /* NOTE: the 'setjmp' buffer may still be allocated and the memory and error * callbacks are still set at this point. They are required to complete the * destruction of the png_struct itself. diff --git a/thirdparty/libpng/pngrtran.c b/thirdparty/libpng/pngrtran.c index ccc58ce6f1..9a8fad9f4a 100644 --- a/thirdparty/libpng/pngrtran.c +++ b/thirdparty/libpng/pngrtran.c @@ -1,7 +1,7 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -1182,20 +1182,20 @@ png_init_palette_transformations(png_structrp png_ptr) png_ptr->palette[png_ptr->background.index].blue; #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0) - { - if ((png_ptr->transformations & PNG_EXPAND_tRNS) == 0) - { - /* Invert the alpha channel (in tRNS) unless the pixels are - * going to be expanded, in which case leave it for later - */ - int i, istop = png_ptr->num_trans; - - for (i=0; i<istop; i++) - png_ptr->trans_alpha[i] = (png_byte)(255 - - png_ptr->trans_alpha[i]); - } - } + if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0) + { + if ((png_ptr->transformations & PNG_EXPAND_tRNS) == 0) + { + /* Invert the alpha channel (in tRNS) unless the pixels are + * going to be expanded, in which case leave it for later + */ + int i, istop = png_ptr->num_trans; + + for (i = 0; i < istop; i++) + png_ptr->trans_alpha[i] = + (png_byte)(255 - png_ptr->trans_alpha[i]); + } + } #endif /* READ_INVERT_ALPHA */ } } /* background expand and (therefore) no alpha association. */ @@ -4320,9 +4320,11 @@ png_do_expand_palette(png_structrp png_ptr, png_row_infop row_info, * but sometimes row_info->bit_depth has been changed to 8. * In these cases, the palette hasn't been riffled. */ - i = png_do_expand_palette_neon_rgba(png_ptr, row_info, row, + i = png_do_expand_palette_rgba8_neon(png_ptr, row_info, row, &sp, &dp); } +#else + PNG_UNUSED(png_ptr) #endif for (; i < row_width; i++) @@ -4349,8 +4351,10 @@ png_do_expand_palette(png_structrp png_ptr, png_row_infop row_info, dp = row + (size_t)(row_width * 3) - 1; i = 0; #ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE - i = png_do_expand_palette_neon_rgb(png_ptr, row_info, row, + i = png_do_expand_palette_rgb8_neon(png_ptr, row_info, row, &sp, &dp); +#else + PNG_UNUSED(png_ptr) #endif for (; i < row_width; i++) @@ -4770,19 +4774,17 @@ png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info) #ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE if ((png_ptr->num_trans > 0) && (png_ptr->bit_depth == 8)) { - /* Allocate space for the decompressed full palette. */ if (png_ptr->riffled_palette == NULL) { - png_ptr->riffled_palette = png_malloc(png_ptr, 256*4); - if (png_ptr->riffled_palette == NULL) - png_error(png_ptr, "NULL row buffer"); - /* Build the RGBA palette. */ - png_riffle_palette_rgba(png_ptr, row_info); + /* Initialize the accelerated palette expansion. */ + png_ptr->riffled_palette = + (png_bytep)png_malloc(png_ptr, 256 * 4); + png_riffle_palette_neon(png_ptr); } } #endif png_do_expand_palette(png_ptr, row_info, png_ptr->row_buf + 1, - png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans); + png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans); } else diff --git a/thirdparty/libpng/pngrutil.c b/thirdparty/libpng/pngrutil.c index d5fa08c397..ae66a48a83 100644 --- a/thirdparty/libpng/pngrutil.c +++ b/thirdparty/libpng/pngrutil.c @@ -865,6 +865,11 @@ png_handle_IHDR(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) filter_type = buf[11]; interlace_type = buf[12]; +#ifdef PNG_READ_APNG_SUPPORTED + png_ptr->first_frame_width = width; + png_ptr->first_frame_height = height; +#endif + /* Set internal variables */ png_ptr->width = width; png_ptr->height = height; @@ -2857,6 +2862,179 @@ png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif +#ifdef PNG_READ_APNG_SUPPORTED +void /* PRIVATE */ +png_handle_acTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte data[8]; + png_uint_32 num_frames; + png_uint_32 num_plays; + png_uint_32 didSet; + + png_debug(1, "in png_handle_acTL"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + { + png_error(png_ptr, "Missing IHDR before acTL"); + } + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid acTL after IDAT skipped"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_acTL) + { + png_warning(png_ptr, "Duplicate acTL skipped"); + png_crc_finish(png_ptr, length); + return; + } + else if (length != 8) + { + png_warning(png_ptr, "acTL with invalid length skipped"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, data, 8); + png_crc_finish(png_ptr, 0); + + num_frames = png_get_uint_31(png_ptr, data); + num_plays = png_get_uint_31(png_ptr, data + 4); + + /* the set function will do error checking on num_frames */ + didSet = png_set_acTL(png_ptr, info_ptr, num_frames, num_plays); + if(didSet) + png_ptr->mode |= PNG_HAVE_acTL; +} + +void /* PRIVATE */ +png_handle_fcTL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte data[22]; + png_uint_32 width; + png_uint_32 height; + png_uint_32 x_offset; + png_uint_32 y_offset; + png_uint_16 delay_num; + png_uint_16 delay_den; + png_byte dispose_op; + png_byte blend_op; + + png_debug(1, "in png_handle_fcTL"); + + png_ensure_sequence_number(png_ptr, length); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + { + png_error(png_ptr, "Missing IHDR before fcTL"); + } + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + /* for any frames other then the first this message may be misleading, + * but correct. PNG_HAVE_IDAT is unset before the frame head is read + * i can't think of a better message */ + png_warning(png_ptr, "Invalid fcTL after IDAT skipped"); + png_crc_finish(png_ptr, length-4); + return; + } + else if (png_ptr->mode & PNG_HAVE_fcTL) + { + png_warning(png_ptr, "Duplicate fcTL within one frame skipped"); + png_crc_finish(png_ptr, length-4); + return; + } + else if (length != 26) + { + png_warning(png_ptr, "fcTL with invalid length skipped"); + png_crc_finish(png_ptr, length-4); + return; + } + + png_crc_read(png_ptr, data, 22); + png_crc_finish(png_ptr, 0); + + width = png_get_uint_31(png_ptr, data); + height = png_get_uint_31(png_ptr, data + 4); + x_offset = png_get_uint_31(png_ptr, data + 8); + y_offset = png_get_uint_31(png_ptr, data + 12); + delay_num = png_get_uint_16(data + 16); + delay_den = png_get_uint_16(data + 18); + dispose_op = data[20]; + blend_op = data[21]; + + if (png_ptr->num_frames_read == 0 && (x_offset != 0 || y_offset != 0)) + { + png_warning(png_ptr, "fcTL for the first frame must have zero offset"); + return; + } + + if (info_ptr != NULL) + { + if (png_ptr->num_frames_read == 0 && + (width != info_ptr->width || height != info_ptr->height)) + { + png_warning(png_ptr, "size in first frame's fcTL must match " + "the size in IHDR"); + return; + } + + /* The set function will do more error checking */ + png_set_next_frame_fcTL(png_ptr, info_ptr, width, height, + x_offset, y_offset, delay_num, delay_den, + dispose_op, blend_op); + + png_read_reinit(png_ptr, info_ptr); + + png_ptr->mode |= PNG_HAVE_fcTL; + } +} + +void /* PRIVATE */ +png_have_info(png_structp png_ptr, png_infop info_ptr) +{ + if((info_ptr->valid & PNG_INFO_acTL) && !(info_ptr->valid & PNG_INFO_fcTL)) + { + png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN; + info_ptr->num_frames++; + } +} + +void /* PRIVATE */ +png_handle_fdAT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_ensure_sequence_number(png_ptr, length); + + /* This function is only called from png_read_end(), png_read_info(), + * and png_push_read_chunk() which means that: + * - the user doesn't want to read this frame + * - or this is an out-of-place fdAT + * in either case it is safe to ignore the chunk with a warning */ + png_warning(png_ptr, "ignoring fdAT chunk"); + png_crc_finish(png_ptr, length - 4); + PNG_UNUSED(info_ptr) +} + +void /* PRIVATE */ +png_ensure_sequence_number(png_structp png_ptr, png_uint_32 length) +{ + png_byte data[4]; + png_uint_32 sequence_number; + + if (length < 4) + png_error(png_ptr, "invalid fcTL or fdAT chunk found"); + + png_crc_read(png_ptr, data, 4); + sequence_number = png_get_uint_31(png_ptr, data); + + if (sequence_number != png_ptr->next_seq_num) + png_error(png_ptr, "fcTL or fdAT chunk with out-of-order sequence " + "number found"); + + png_ptr->next_seq_num++; +} +#endif /* PNG_READ_APNG_SUPPORTED */ + #ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED /* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */ static int @@ -4165,7 +4343,38 @@ png_read_IDAT_data(png_structrp png_ptr, png_bytep output, { uInt avail_in; png_bytep buffer; +#ifdef PNG_READ_APNG_SUPPORTED + png_uint_32 bytes_to_skip = 0; + + while (png_ptr->idat_size == 0 || bytes_to_skip != 0) + { + png_crc_finish(png_ptr, bytes_to_skip); + bytes_to_skip = 0; + + png_ptr->idat_size = png_read_chunk_header(png_ptr); + if (png_ptr->num_frames_read == 0) + { + if (png_ptr->chunk_name != png_IDAT) + png_error(png_ptr, "Not enough image data"); + } + else + { + if (png_ptr->chunk_name == png_IEND) + png_error(png_ptr, "Not enough image data"); + if (png_ptr->chunk_name != png_fdAT) + { + png_warning(png_ptr, "Skipped (ignored) a chunk " + "between APNG chunks"); + bytes_to_skip = png_ptr->idat_size; + continue; + } + + png_ensure_sequence_number(png_ptr, png_ptr->idat_size); + png_ptr->idat_size -= 4; + } + } +#else while (png_ptr->idat_size == 0) { png_crc_finish(png_ptr, 0); @@ -4177,7 +4386,7 @@ png_read_IDAT_data(png_structrp png_ptr, png_bytep output, if (png_ptr->chunk_name != png_IDAT) png_error(png_ptr, "Not enough image data"); } - +#endif /* PNG_READ_APNG_SUPPORTED */ avail_in = png_ptr->IDAT_read_size; if (avail_in > png_ptr->idat_size) @@ -4240,6 +4449,9 @@ png_read_IDAT_data(png_structrp png_ptr, png_bytep output, png_ptr->mode |= PNG_AFTER_IDAT; png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; +#ifdef PNG_READ_APNG_SUPPORTED + png_ptr->num_frames_read++; +#endif if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0) png_chunk_benign_error(png_ptr, "Extra compressed data"); @@ -4678,4 +4890,80 @@ defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) png_ptr->flags |= PNG_FLAG_ROW_INIT; } + +#ifdef PNG_READ_APNG_SUPPORTED +/* This function is to be called after the main IDAT set has been read and + * before a new IDAT is read. It resets some parts of png_ptr + * to make them usable by the read functions again */ +void /* PRIVATE */ +png_read_reset(png_structp png_ptr) +{ + png_ptr->mode &= ~PNG_HAVE_IDAT; + png_ptr->mode &= ~PNG_AFTER_IDAT; + png_ptr->row_number = 0; + png_ptr->pass = 0; +} + +void /* PRIVATE */ +png_read_reinit(png_structp png_ptr, png_infop info_ptr) +{ + png_ptr->width = info_ptr->next_frame_width; + png_ptr->height = info_ptr->next_frame_height; + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->width); + png_ptr->info_rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, + png_ptr->width); + if (png_ptr->prev_row) + memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); +} + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* same as png_read_reset() but for the progressive reader */ +void /* PRIVATE */ +png_progressive_read_reset(png_structp png_ptr) +{ +#ifdef PNG_READ_INTERLACING_SUPPORTED + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + const int png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + const int png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + const int png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + const int png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; + + if (png_ptr->interlaced) + { + if (!(png_ptr->transformations & PNG_INTERLACE)) + png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - + png_pass_ystart[0]) / png_pass_yinc[0]; + else + png_ptr->num_rows = png_ptr->height; + + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; + } + else +#endif /* PNG_READ_INTERLACING_SUPPORTED */ + { + png_ptr->num_rows = png_ptr->height; + png_ptr->iwidth = png_ptr->width; + } + png_ptr->flags &= ~PNG_FLAG_ZSTREAM_ENDED; + if (inflateReset(&(png_ptr->zstream)) != Z_OK) + png_error(png_ptr, "inflateReset failed"); + png_ptr->zstream.avail_in = 0; + png_ptr->zstream.next_in = 0; + png_ptr->zstream.next_out = png_ptr->row_buf; + png_ptr->zstream.avail_out = (uInt)PNG_ROWBYTES(png_ptr->pixel_depth, + png_ptr->iwidth) + 1; +} +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +#endif /* PNG_READ_APNG_SUPPORTED */ #endif /* READ */ diff --git a/thirdparty/libpng/pngset.c b/thirdparty/libpng/pngset.c index ec75dbe369..a281db58ae 100644 --- a/thirdparty/libpng/pngset.c +++ b/thirdparty/libpng/pngset.c @@ -288,6 +288,11 @@ png_set_IHDR(png_const_structrp png_ptr, png_inforp info_ptr, info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth); info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width); + +#ifdef PNG_APNG_SUPPORTED + /* for non-animated png. this may be overwritten from an acTL chunk later */ + info_ptr->num_frames = 1; +#endif } #ifdef PNG_oFFs_SUPPORTED @@ -1158,6 +1163,147 @@ png_set_sPLT(png_const_structrp png_ptr, } #endif /* sPLT */ +#ifdef PNG_APNG_SUPPORTED +png_uint_32 PNGAPI +png_set_acTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 num_frames, png_uint_32 num_plays) +{ + png_debug1(1, "in %s storage function", "acTL"); + + if (png_ptr == NULL || info_ptr == NULL) + { + png_warning(png_ptr, + "Call to png_set_acTL() with NULL png_ptr " + "or info_ptr ignored"); + return (0); + } + if (num_frames == 0) + { + png_warning(png_ptr, + "Ignoring attempt to set acTL with num_frames zero"); + return (0); + } + if (num_frames > PNG_UINT_31_MAX) + { + png_warning(png_ptr, + "Ignoring attempt to set acTL with num_frames > 2^31-1"); + return (0); + } + if (num_plays > PNG_UINT_31_MAX) + { + png_warning(png_ptr, + "Ignoring attempt to set acTL with num_plays " + "> 2^31-1"); + return (0); + } + + info_ptr->num_frames = num_frames; + info_ptr->num_plays = num_plays; + + info_ptr->valid |= PNG_INFO_acTL; + + return (1); +} + +/* delay_num and delay_den can hold any 16-bit values including zero */ +png_uint_32 PNGAPI +png_set_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, + png_byte dispose_op, png_byte blend_op) +{ + png_debug1(1, "in %s storage function", "fcTL"); + + if (png_ptr == NULL || info_ptr == NULL) + { + png_warning(png_ptr, + "Call to png_set_fcTL() with NULL png_ptr or info_ptr " + "ignored"); + return (0); + } + + png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); + + if (blend_op == PNG_BLEND_OP_OVER) + { + if (!(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) && + !(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))) + { + png_warning(png_ptr, "PNG_BLEND_OP_OVER is meaningless " + "and wasteful for opaque images, ignored"); + blend_op = PNG_BLEND_OP_SOURCE; + } + } + + info_ptr->next_frame_width = width; + info_ptr->next_frame_height = height; + info_ptr->next_frame_x_offset = x_offset; + info_ptr->next_frame_y_offset = y_offset; + info_ptr->next_frame_delay_num = delay_num; + info_ptr->next_frame_delay_den = delay_den; + info_ptr->next_frame_dispose_op = dispose_op; + info_ptr->next_frame_blend_op = blend_op; + + info_ptr->valid |= PNG_INFO_fcTL; + + return (1); +} + +void /* PRIVATE */ +png_ensure_fcTL_is_valid(png_structp png_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, + png_byte dispose_op, png_byte blend_op) +{ + if (width == 0 || width > PNG_UINT_31_MAX) + png_error(png_ptr, "invalid width in fcTL (> 2^31-1)"); + if (height == 0 || height > PNG_UINT_31_MAX) + png_error(png_ptr, "invalid height in fcTL (> 2^31-1)"); + if (x_offset > PNG_UINT_31_MAX) + png_error(png_ptr, "invalid x_offset in fcTL (> 2^31-1)"); + if (y_offset > PNG_UINT_31_MAX) + png_error(png_ptr, "invalid y_offset in fcTL (> 2^31-1)"); + if (width + x_offset > png_ptr->first_frame_width || + height + y_offset > png_ptr->first_frame_height) + png_error(png_ptr, "dimensions of a frame are greater than" + "the ones in IHDR"); + + if (dispose_op != PNG_DISPOSE_OP_NONE && + dispose_op != PNG_DISPOSE_OP_BACKGROUND && + dispose_op != PNG_DISPOSE_OP_PREVIOUS) + png_error(png_ptr, "invalid dispose_op in fcTL"); + + if (blend_op != PNG_BLEND_OP_SOURCE && + blend_op != PNG_BLEND_OP_OVER) + png_error(png_ptr, "invalid blend_op in fcTL"); + + PNG_UNUSED(delay_num) + PNG_UNUSED(delay_den) +} + +png_uint_32 PNGAPI +png_set_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr, + png_byte is_hidden) +{ + png_debug(1, "in png_first_frame_is_hidden()"); + + if (png_ptr == NULL) + return 0; + + if (is_hidden) + png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN; + else + png_ptr->apng_flags &= ~PNG_FIRST_FRAME_HIDDEN; + + PNG_UNUSED(info_ptr) + + return 1; +} +#endif /* PNG_APNG_SUPPORTED */ + #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED static png_byte check_location(png_const_structrp png_ptr, int location) diff --git a/thirdparty/libpng/pngstruct.h b/thirdparty/libpng/pngstruct.h index 94a6d041ff..2a2236f92e 100644 --- a/thirdparty/libpng/pngstruct.h +++ b/thirdparty/libpng/pngstruct.h @@ -1,7 +1,7 @@ /* pngstruct.h - header file for PNG reference library * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -228,10 +228,6 @@ struct png_struct_def * big_row_buf; while writing it is separately * allocated. */ -#ifdef PNG_READ_EXPAND_SUPPORTED - /* Buffer to accelerate palette transformations. */ - png_bytep riffled_palette; -#endif #ifdef PNG_WRITE_FILTER_SUPPORTED png_bytep try_row; /* buffer to save trial row when filtering */ png_bytep tst_row; /* buffer to save best trial row when filtering */ @@ -396,6 +392,12 @@ struct png_struct_def /* deleted in 1.5.5: rgb_to_gray_blue_coeff; */ #endif +/* New member added in libpng-1.6.36 */ +#if defined(PNG_READ_EXPAND_SUPPORTED) && \ + defined(PNG_ARM_NEON_IMPLEMENTATION) + png_bytep riffled_palette; /* buffer for accelerated palette expansion */ +#endif + /* New member added in libpng-1.0.4 (renamed in 1.0.9) */ #if defined(PNG_MNG_FEATURES_SUPPORTED) /* Changed from png_byte to png_uint_32 at version 1.2.0 */ @@ -407,6 +409,27 @@ struct png_struct_def png_byte filter_type; #endif +#ifdef PNG_APNG_SUPPORTED + png_uint_32 apng_flags; + png_uint_32 next_seq_num; /* next fcTL/fdAT chunk sequence number */ + png_uint_32 first_frame_width; + png_uint_32 first_frame_height; + +#ifdef PNG_READ_APNG_SUPPORTED + png_uint_32 num_frames_read; /* incremented after all image data of */ + /* a frame is read */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + png_progressive_frame_ptr frame_info_fn; /* frame info read callback */ + png_progressive_frame_ptr frame_end_fn; /* frame data read callback */ +#endif +#endif + +#ifdef PNG_WRITE_APNG_SUPPORTED + png_uint_32 num_frames_to_write; + png_uint_32 num_frames_written; +#endif +#endif /* PNG_APNG_SUPPORTED */ + /* New members added in libpng-1.2.0 */ /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ diff --git a/thirdparty/libpng/pngwrite.c b/thirdparty/libpng/pngwrite.c index 160c877d38..5e68032378 100644 --- a/thirdparty/libpng/pngwrite.c +++ b/thirdparty/libpng/pngwrite.c @@ -1,7 +1,7 @@ /* pngwrite.c - general routines to write a PNG file * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -128,6 +128,10 @@ png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) * the application continues writing the PNG. So check the 'invalid' * flag here too. */ +#ifdef PNG_WRITE_APNG_SUPPORTED + if (info_ptr->valid & PNG_INFO_acTL) + png_write_acTL(png_ptr, info_ptr->num_frames, info_ptr->num_plays); +#endif #ifdef PNG_GAMMA_SUPPORTED # ifdef PNG_WRITE_gAMA_SUPPORTED if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && @@ -370,6 +374,11 @@ png_write_end(png_structrp png_ptr, png_inforp info_ptr) png_benign_error(png_ptr, "Wrote palette index exceeding num_palette"); #endif +#ifdef PNG_WRITE_APNG_SUPPORTED + if (png_ptr->num_frames_written != png_ptr->num_frames_to_write) + png_error(png_ptr, "Not enough frames written"); +#endif + /* See if user wants us to write information chunks */ if (info_ptr != NULL) { @@ -948,10 +957,6 @@ png_write_destroy(png_structrp png_ptr) png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list); png_free(png_ptr, png_ptr->row_buf); png_ptr->row_buf = NULL; -#ifdef PNG_READ_EXPANDED_SUPPORTED - png_free(png_ptr, png_ptr->riffled_palette); - png_ptr->riffled_palette = NULL; -#endif #ifdef PNG_WRITE_FILTER_SUPPORTED png_free(png_ptr, png_ptr->prev_row); png_free(png_ptr, png_ptr->try_row); @@ -1465,6 +1470,43 @@ png_write_png(png_structrp png_ptr, png_inforp info_ptr, } #endif +#ifdef PNG_WRITE_APNG_SUPPORTED +void PNGAPI +png_write_frame_head(png_structp png_ptr, png_infop info_ptr, + png_bytepp row_pointers, png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op) +{ + png_debug(1, "in png_write_frame_head"); + + /* there is a chance this has been set after png_write_info was called, + * so it would be set but not written. is there a way to be sure? */ + if (!(info_ptr->valid & PNG_INFO_acTL)) + png_error(png_ptr, "png_write_frame_head(): acTL not set"); + + png_write_reset(png_ptr); + + png_write_reinit(png_ptr, info_ptr, width, height); + + if ( !(png_ptr->num_frames_written == 0 && + (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) ) ) + png_write_fcTL(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); + + PNG_UNUSED(row_pointers) +} + +void PNGAPI +png_write_frame_tail(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_write_frame_tail"); + + png_ptr->num_frames_written++; + + PNG_UNUSED(info_ptr) +} +#endif /* PNG_WRITE_APNG_SUPPORTED */ #ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED /* Initialize the write structure - general purpose utility. */ diff --git a/thirdparty/libpng/pngwutil.c b/thirdparty/libpng/pngwutil.c index 16345e4c0b..b4809cda6b 100644 --- a/thirdparty/libpng/pngwutil.c +++ b/thirdparty/libpng/pngwutil.c @@ -821,6 +821,11 @@ png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height, /* Write the chunk */ png_write_complete_chunk(png_ptr, png_IHDR, buf, 13); +#ifdef PNG_WRITE_APNG_SUPPORTED + png_ptr->first_frame_width = width; + png_ptr->first_frame_height = height; +#endif + if ((png_ptr->do_filter) == PNG_NO_FILTERS) { if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || @@ -1002,8 +1007,17 @@ png_compress_IDAT(png_structrp png_ptr, png_const_bytep input, optimize_cmf(data, png_image_size(png_ptr)); #endif - if (size > 0) - png_write_complete_chunk(png_ptr, png_IDAT, data, size); + if (size > 0) +#ifdef PNG_WRITE_APNG_SUPPORTED + { + if (png_ptr->num_frames_written == 0) +#endif + png_write_complete_chunk(png_ptr, png_IDAT, data, size); +#ifdef PNG_WRITE_APNG_SUPPORTED + else + png_write_fdAT(png_ptr, data, size); + } +#endif /* PNG_WRITE_APNG_SUPPORTED */ png_ptr->mode |= PNG_HAVE_IDAT; png_ptr->zstream.next_out = data; @@ -1050,7 +1064,17 @@ png_compress_IDAT(png_structrp png_ptr, png_const_bytep input, #endif if (size > 0) +#ifdef PNG_WRITE_APNG_SUPPORTED + { + if (png_ptr->num_frames_written == 0) +#endif png_write_complete_chunk(png_ptr, png_IDAT, data, size); +#ifdef PNG_WRITE_APNG_SUPPORTED + else + png_write_fdAT(png_ptr, data, size); + } +#endif /* PNG_WRITE_APNG_SUPPORTED */ + png_ptr->zstream.avail_out = 0; png_ptr->zstream.next_out = NULL; png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT; @@ -1885,6 +1909,82 @@ png_write_tIME(png_structrp png_ptr, png_const_timep mod_time) } #endif +#ifdef PNG_WRITE_APNG_SUPPORTED +void /* PRIVATE */ +png_write_acTL(png_structp png_ptr, + png_uint_32 num_frames, png_uint_32 num_plays) +{ + png_byte buf[8]; + + png_debug(1, "in png_write_acTL"); + + png_ptr->num_frames_to_write = num_frames; + + if (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) + num_frames--; + + png_save_uint_32(buf, num_frames); + png_save_uint_32(buf + 4, num_plays); + + png_write_complete_chunk(png_ptr, png_acTL, buf, (png_size_t)8); +} + +void /* PRIVATE */ +png_write_fcTL(png_structp png_ptr, png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op) +{ + png_byte buf[26]; + + png_debug(1, "in png_write_fcTL"); + + if (png_ptr->num_frames_written == 0 && (x_offset != 0 || y_offset != 0)) + png_error(png_ptr, "x and/or y offset for the first frame aren't 0"); + if (png_ptr->num_frames_written == 0 && + (width != png_ptr->first_frame_width || + height != png_ptr->first_frame_height)) + png_error(png_ptr, "width and/or height in the first frame's fcTL " + "don't match the ones in IHDR"); + + /* more error checking */ + png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); + + png_save_uint_32(buf, png_ptr->next_seq_num); + png_save_uint_32(buf + 4, width); + png_save_uint_32(buf + 8, height); + png_save_uint_32(buf + 12, x_offset); + png_save_uint_32(buf + 16, y_offset); + png_save_uint_16(buf + 20, delay_num); + png_save_uint_16(buf + 22, delay_den); + buf[24] = dispose_op; + buf[25] = blend_op; + + png_write_complete_chunk(png_ptr, png_fcTL, buf, (png_size_t)26); + + png_ptr->next_seq_num++; +} + +void /* PRIVATE */ +png_write_fdAT(png_structp png_ptr, + png_const_bytep data, png_size_t length) +{ + png_byte buf[4]; + + png_write_chunk_header(png_ptr, png_fdAT, (png_uint_32)(4 + length)); + + png_save_uint_32(buf, png_ptr->next_seq_num); + png_write_chunk_data(png_ptr, buf, 4); + + png_write_chunk_data(png_ptr, data, length); + + png_write_chunk_end(png_ptr); + + png_ptr->next_seq_num++; +} +#endif /* PNG_WRITE_APNG_SUPPORTED */ + /* Initializes the row writing capability of libpng */ void /* PRIVATE */ png_write_start_row(png_structrp png_ptr) @@ -2778,4 +2878,39 @@ png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row, } #endif /* WRITE_FLUSH */ } + +#ifdef PNG_WRITE_APNG_SUPPORTED +void /* PRIVATE */ +png_write_reset(png_structp png_ptr) +{ + png_ptr->row_number = 0; + png_ptr->pass = 0; + png_ptr->mode &= ~PNG_HAVE_IDAT; +} + +void /* PRIVATE */ +png_write_reinit(png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height) +{ + if (png_ptr->num_frames_written == 0 && + (width != png_ptr->first_frame_width || + height != png_ptr->first_frame_height)) + png_error(png_ptr, "width and/or height in the first frame's fcTL " + "don't match the ones in IHDR"); + if (width > png_ptr->first_frame_width || + height > png_ptr->first_frame_height) + png_error(png_ptr, "width and/or height for a frame greater than" + "the ones in IHDR"); + + png_set_IHDR(png_ptr, info_ptr, width, height, + info_ptr->bit_depth, info_ptr->color_type, + info_ptr->interlace_type, info_ptr->compression_type, + info_ptr->filter_type); + + png_ptr->width = width; + png_ptr->height = height; + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width); + png_ptr->usr_width = png_ptr->width; +} +#endif /* PNG_WRITE_APNG_SUPPORTED */ #endif /* WRITE */ |