diff options
123 files changed, 3754 insertions, 2223 deletions
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index aa954ed300..8b8aff3e9e 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -524,10 +524,6 @@ bool ProjectSettings::has_setting(String p_var) const { return props.has(p_var); } -void ProjectSettings::set_registering_order(bool p_enable) { - registering_order = p_enable; -} - Error ProjectSettings::_load_settings_binary(const String &p_path) { Error err; FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err); diff --git a/core/config/project_settings.h b/core/config/project_settings.h index a8c9adc587..5a16248c76 100644 --- a/core/config/project_settings.h +++ b/core/config/project_settings.h @@ -76,7 +76,6 @@ protected: } }; - bool registering_order = true; int last_order = NO_BUILTIN_ORDER_BASE; int last_builtin_order = 0; Map<StringName, VariantContainer> props; @@ -160,8 +159,6 @@ public: bool is_using_datapack() const; - void set_registering_order(bool p_enable); - bool has_custom_feature(const String &p_feature) const; Map<StringName, AutoloadInfo> get_autoload_list() const; diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp index 70edcd48c2..d54e223a99 100644 --- a/core/variant/variant_utility.cpp +++ b/core/variant/variant_utility.cpp @@ -537,7 +537,7 @@ struct VariantUtilityFunctions { str += p_args[i]->operator String(); } - print_error(str); + print_line(str); r_error.error = Callable::CallError::CALL_OK; } @@ -554,7 +554,7 @@ struct VariantUtilityFunctions { str += p_args[i]->operator String(); } - print_error(str); + print_line(str); r_error.error = Callable::CallError::CALL_OK; } diff --git a/doc/classes/AspectRatioContainer.xml b/doc/classes/AspectRatioContainer.xml new file mode 100644 index 0000000000..7b41133139 --- /dev/null +++ b/doc/classes/AspectRatioContainer.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="AspectRatioContainer" inherits="Container" version="4.0"> + <brief_description> + Container that preserves its child controls' aspect ratio. + </brief_description> + <description> + Arranges child controls in a way to preserve their aspect ratio automatically whenever the container is resized. Solves the problem where the container size is dynamic and the contents' size needs to adjust accordingly without losing proportions. + </description> + <tutorials> + </tutorials> + <methods> + </methods> + <members> + <member name="alignment_horizontal" type="int" setter="set_alignment_horizontal" getter="get_alignment_horizontal" enum="AspectRatioContainer.AlignMode" default="1"> + Specifies the horizontal relative position of child controls. + </member> + <member name="alignment_vertical" type="int" setter="set_alignment_vertical" getter="get_alignment_vertical" enum="AspectRatioContainer.AlignMode" default="1"> + Specifies the vertical relative position of child controls. + </member> + <member name="ratio" type="float" setter="set_ratio" getter="get_ratio" default="1.0"> + The aspect ratio to enforce on child controls. This is the width divided by the height. The ratio depends on the [member stretch_mode]. + </member> + <member name="stretch_mode" type="int" setter="set_stretch_mode" getter="get_stretch_mode" enum="AspectRatioContainer.StretchMode" default="2"> + The stretch mode used to align child controls. + </member> + </members> + <constants> + <constant name="STRETCH_WIDTH_CONTROLS_HEIGHT" value="0" enum="StretchMode"> + The height of child controls is automatically adjusted based on the width of the container. + </constant> + <constant name="STRETCH_HEIGHT_CONTROLS_WIDTH" value="1" enum="StretchMode"> + The width of child controls is automatically adjusted based on the height of the container. + </constant> + <constant name="STRETCH_FIT" value="2" enum="StretchMode"> + The bounding rectangle of child controls is automatically adjusted to fit inside the container while keeping the aspect ratio. + </constant> + <constant name="STRETCH_COVER" value="3" enum="StretchMode"> + The width and height of child controls is automatically adjusted to make their bounding rectangle cover the entire area of the container while keeping the aspect ratio. + When the bounding rectangle of child controls exceed the container's size and [member Control.rect_clip_content] is enabled, this allows to show only the container's area restricted by its own bounding rectangle. + </constant> + <constant name="ALIGN_BEGIN" value="0" enum="AlignMode"> + Aligns child controls with the beginning (left or top) of the container. + </constant> + <constant name="ALIGN_CENTER" value="1" enum="AlignMode"> + Aligns child controls with the center of the container. + </constant> + <constant name="ALIGN_END" value="2" enum="AlignMode"> + Aligns child controls with the end (right or bottom) of the container. + </constant> + </constants> +</class> diff --git a/doc/classes/File.xml b/doc/classes/File.xml index ada57a8114..2f7ac551cf 100644 --- a/doc/classes/File.xml +++ b/doc/classes/File.xml @@ -6,7 +6,8 @@ <description> File type. This is used to permanently store data into the user device's file system and to read from it. This can be used to store game save data or player configuration files, for example. Here's a sample on how to write and read from a file: - [codeblock] + [codeblocks] + [gdscript] func save(content): var file = File.new() file.open("user://save_game.dat", File.WRITE) @@ -19,7 +20,26 @@ var content = file.get_as_text() file.close() return content - [/codeblock] + [/gdscript] + [csharp] + public void Save(string content) + { + var file = new File(); + file.Open("user://save_game.dat", File.ModeFlags.Write); + file.StoreString(content); + file.Close(); + } + + public string Load() + { + var file = new File(); + file.Open("user://save_game.dat", File.ModeFlags.Read); + string content = file.GetAsText(); + file.Close(); + return content; + } + [/csharp] + [/codeblocks] In the example above, the file will be saved in the user data folder as specified in the [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]Data paths[/url] documentation. [b]Note:[/b] To access project resources once exported, it is recommended to use [ResourceLoader] instead of the [File] API, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. </description> @@ -303,7 +323,8 @@ Stores an integer as 16 bits in the file. [b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 2^16 - 1][/code]. Any other value will overflow and wrap around. To store a signed integer, use [method store_64] or store a signed integer from the interval [code][-2^15, 2^15 - 1][/code] (i.e. keeping one bit for the signedness) and compute its sign manually when reading. For example: - [codeblock] + [codeblocks] + [gdscript] const MAX_15B = 1 << 15 const MAX_16B = 1 << 16 @@ -320,7 +341,22 @@ var read2 = f.get_16() # 121 var converted1 = unsigned16_to_signed(read1) # -42 var converted2 = unsigned16_to_signed(read2) # 121 - [/codeblock] + [/gdscript] + [csharp] + public override void _Ready() + { + var f = new File(); + f.Open("user://file.dat", File.ModeFlags.WriteRead); + f.Store16(unchecked((ushort)-42)); // This wraps around and stores 65494 (2^16 - 42). + f.Store16(121); // In bounds, will store 121. + f.Seek(0); // Go back to start to read the stored value. + ushort read1 = f.Get16(); // 65494 + ushort read2 = f.Get16(); // 121 + short converted1 = BitConverter.ToInt16(BitConverter.GetBytes(read1), 0); // -42 + short converted2 = BitConverter.ToInt16(BitConverter.GetBytes(read2), 0); // 121 + } + [/csharp] + [/codeblocks] </description> </method> <method name="store_32"> diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml index a6bcc1301b..4ff54d15ce 100644 --- a/doc/classes/Geometry2D.xml +++ b/doc/classes/Geometry2D.xml @@ -201,12 +201,21 @@ Each polygon's vertices will be rounded as determined by [code]join_type[/code], see [enum PolyJoinType]. The operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise]. [b]Note:[/b] To translate the polygon's vertices specifically, multiply them to a [Transform2D]: - [codeblock] + [codeblocks] + [gdscript] var polygon = PackedVector2Array([Vector2(0, 0), Vector2(100, 0), Vector2(100, 100), Vector2(0, 100)]) var offset = Vector2(50, 50) polygon = Transform2D(0, offset) * polygon print(polygon) # prints [Vector2(50, 50), Vector2(150, 50), Vector2(150, 150), Vector2(50, 150)] - [/codeblock] + [/gdscript] + [csharp] + var polygon = new Vector2[] { new Vector2(0, 0), new Vector2(100, 0), new Vector2(100, 100), new Vector2(0, 100) }; + var offset = new Vector2(50, 50); + // TODO: This code is not valid right now. Ping @aaronfranke about it before Godot 4.0 is out. + //polygon = (Vector2[]) new Transform2D(0, offset).Xform(polygon); + //GD.Print(polygon); // prints [Vector2(50, 50), Vector2(150, 50), Vector2(150, 150), Vector2(50, 150)] + [/csharp] + [/codeblocks] </description> </method> <method name="offset_polyline"> diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml index ec8ca7456a..b6594aac39 100644 --- a/doc/classes/HTTPClient.xml +++ b/doc/classes/HTTPClient.xml @@ -112,17 +112,31 @@ </argument> <description> Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.: - [codeblock] + [codeblocks] + [gdscript] var fields = {"username": "user", "password": "pass"} var query_string = http_client.query_string_from_dict(fields) # Returns "username=user&password=pass" - [/codeblock] + [/gdscript] + [csharp] + var fields = new Godot.Collections.Dictionary { { "username", "user" }, { "password", "pass" } }; + string queryString = new HTTPClient().QueryStringFromDict(fields); + // Returns "username=user&password=pass" + [/csharp] + [/codeblocks] Furthermore, if a key has a [code]null[/code] value, only the key itself is added, without equal sign and value. If the value is an array, for each value in it a pair with the same key is added. - [codeblock] + [codeblocks] + [gdscript] var fields = {"single": 123, "not_valued": null, "multiple": [22, 33, 44]} var query_string = http_client.query_string_from_dict(fields) # Returns "single=123&not_valued&multiple=22&multiple=33&multiple=44" - [/codeblock] + [/gdscript] + [csharp] + var fields = new Godot.Collections.Dictionary{{"single", 123}, {"notValued", null}, {"multiple", new Godot.Collections.Array{22, 33, 44}}}; + string queryString = new HTTPClient().QueryStringFromDict(fields); + // Returns "single=123&not_valued&multiple=22&multiple=33&multiple=44" + [/csharp] + [/codeblocks] </description> </method> <method name="read_response_body_chunk"> @@ -147,12 +161,20 @@ Sends a request to the connected host. The URL parameter is just the part after the host, so for [code]http://somehost.com/index.php[/code], it is [code]index.php[/code]. Headers are HTTP request headers. For available HTTP methods, see [enum Method]. To create a POST request with query strings to push to the server, do: - [codeblock] + [codeblocks] + [gdscript] var fields = {"username" : "user", "password" : "pass"} var query_string = http_client.query_string_from_dict(fields) var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(query_string.length())] var result = http_client.request(http_client.METHOD_POST, "index.php", headers, query_string) - [/codeblock] + [/gdscript] + [csharp] + var fields = new Godot.Collections.Dictionary { { "username", "user" }, { "password", "pass" } }; + string queryString = new HTTPClient().QueryStringFromDict(fields); + string[] headers = {"Content-Type: application/x-www-form-urlencoded", "Content-Length: " + queryString.Length}; + var result = new HTTPClient().Request(HTTPClient.Method.Post, "index.php", headers, queryString); + [/csharp] + [/codeblocks] [b]Note:[/b] The [code]request_data[/code] parameter is ignored if [code]method[/code] is [constant HTTPClient.METHOD_GET]. This is because GET methods can't contain request data. As a workaround, you can pass request data as a query string in the URL. See [method String.http_escape] for an example. </description> </method> diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index 6eae881ffe..f2ab93033a 100644 --- a/doc/classes/HTTPRequest.xml +++ b/doc/classes/HTTPRequest.xml @@ -7,7 +7,8 @@ A node with the ability to send HTTP requests. Uses [HTTPClient] internally. Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP. [b]Example of contacting a REST API and printing one of its returned fields:[/b] - [codeblock] + [codeblocks] + [gdscript] func _ready(): # Create an HTTP request node and connect its completion signal. var http_request = HTTPRequest.new() @@ -34,9 +35,48 @@ # Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org). print(response.headers["User-Agent"]) - [/codeblock] + [/gdscript] + [csharp] + public override void _Ready() + { + // Create an HTTP request node and connect its completion signal. + var httpRequest = new HTTPRequest(); + AddChild(httpRequest); + httpRequest.Connect("request_completed", this, nameof(HttpRequestCompleted)); + + // Perform a GET request. The URL below returns JSON as of writing. + Error error = httpRequest.Request("https://httpbin.org/get"); + if (error != Error.Ok) + { + GD.PushError("An error occurred in the HTTP request."); + } + + // Perform a POST request. The URL below returns JSON as of writing. + // Note: Don't make simultaneous requests using a single HTTPRequest node. + // The snippet below is provided for reference only. + string[] body = { "name", "Godette" }; + // GDScript to_json is non existent, so we use JSON.Print() here. + error = httpRequest.Request("https://httpbin.org/post", null, true, HTTPClient.Method.Post, JSON.Print(body)); + if (error != Error.Ok) + { + GD.PushError("An error occurred in the HTTP request."); + } + } + + + // Called when the HTTP request is completed. + private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body) + { + // GDScript parse_json is non existent so we have to use JSON.parse, which has a slightly different syntax. + var response = JSON.Parse(body.GetStringFromUTF8()).Result as Godot.Collections.Dictionary; + // Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org). + GD.Print((response["headers"] as Godot.Collections.Dictionary)["User-Agent"]); + } + [/csharp] + [/codeblocks] [b]Example of loading and displaying an image using HTTPRequest:[/b] - [codeblock] + [codeblocks] + [gdscript] func _ready(): # Create an HTTP request node and connect its completion signal. var http_request = HTTPRequest.new() @@ -51,6 +91,9 @@ # Called when the HTTP request is completed. func _http_request_completed(result, response_code, headers, body): + if result != HTTPRequest.RESULT_SUCCESS: + push_error("Image couldn't be downloaded. Try a different image.") + var image = Image.new() var error = image.load_png_from_buffer(body) if error != OK: @@ -63,7 +106,48 @@ var texture_rect = TextureRect.new() add_child(texture_rect) texture_rect.texture = texture - [/codeblock] + [/gdscript] + [csharp] + public override void _Ready() + { + // Create an HTTP request node and connect its completion signal. + var httpRequest = new HTTPRequest(); + AddChild(httpRequest); + httpRequest.Connect("request_completed", this, nameof(HttpRequestCompleted)); + + // Perform the HTTP request. The URL below returns a PNG image as of writing. + Error error = httpRequest.Request("https://via.placeholder.com/512"); + if (error != Error.Ok) + { + GD.PushError("An error occurred in the HTTP request."); + } + } + + + // Called when the HTTP request is completed. + private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body) + { + if (result != (int)HTTPRequest.Result.Success) + { + GD.PushError("Image couldn't be downloaded. Try a different image."); + } + var image = new Image(); + Error error = image.LoadPngFromBuffer(body); + if (error != Error.Ok) + { + GD.PushError("Couldn't load the image."); + } + + var texture = new ImageTexture(); + texture.CreateFromImage(image); + + // Display the image in a TextureRect node. + var textureRect = new TextureRect(); + AddChild(textureRect); + textureRect.Texture = texture; + } + [/csharp] + [/codeblocks] [b]Gzipped response bodies[/b]: HTTPRequest will automatically handle decompression of response bodies. A [code]Accept-Encoding[/code] header will be automatically added to each of your requests, unless one is already specified. Any response with a [code]Content-Encoding: gzip[/code] header will automatically be decompressed and delivered to you as uncompressed bytes. [b]Note:[/b] When performing HTTP requests from a project exported to HTML5, keep in mind the remote server may not allow requests from foreign origins due to [url=https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS]CORS[/url]. If you host the server in question, you should modify its backend to allow requests from foreign origins by adding the [code]Access-Control-Allow-Origin: *[/code] HTTP header. diff --git a/doc/classes/HashingContext.xml b/doc/classes/HashingContext.xml index f8152c813e..e020293d76 100644 --- a/doc/classes/HashingContext.xml +++ b/doc/classes/HashingContext.xml @@ -6,8 +6,9 @@ <description> The HashingContext class provides an interface for computing cryptographic hashes over multiple iterations. This is useful for example when computing hashes of big files (so you don't have to load them all in memory), network streams, and data streams in general (so you don't have to hold buffers). The [enum HashType] enum shows the supported hashing algorithms. - [codeblock] - const CHUNK_SIZE = 1024 + [codeblocks] + [gdscript] + const CHUNK_SIZE = 102 func hash_file(path): var ctx = HashingContext.new() @@ -26,7 +27,36 @@ var res = ctx.finish() # Print the result as hex string and array. printt(res.hex_encode(), Array(res)) - [/codeblock] + [/gdscript] + [csharp] + public const int ChunkSize = 1024; + + public void HashFile(string path) + { + var ctx = new HashingContext(); + var file = new File(); + // Start a SHA-256 context. + ctx.Start(HashingContext.HashType.Sha256); + // Check that file exists. + if (!file.FileExists(path)) + { + return; + } + // Open the file to hash. + file.Open(path, File.ModeFlags.Read); + // Update the context after reading each chunk. + while (!file.EofReached()) + { + ctx.Update(file.GetBuffer(ChunkSize)); + } + // Get the computed hash. + byte[] res = ctx.Finish(); + // Print the result as hex string and array. + + GD.PrintT(res.HexEncode(), res); + } + [/csharp] + [/codeblocks] [b]Note:[/b] Not available in HTML5 exports. </description> <tutorials> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index 2e619802e3..5d1d763ae3 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -299,12 +299,20 @@ <description> Feeds an [InputEvent] to the game. Can be used to artificially trigger input events from code. Also generates [method Node._input] calls. Example: - [codeblock] - var a = InputEventAction.new() - a.action = "ui_cancel" - a.pressed = true - Input.parse_input_event(a) - [/codeblock] + [codeblocks] + [gdscript] + var cancel_event = InputEventAction.new() + cancel_event.action = "ui_cancel" + cancel_event.pressed = true + Input.parse_input_event(cancel_event) + [/gdscript] + [csharp] + var cancelEvent = new InputEventAction(); + cancelEvent.Action = "ui_cancel"; + cancelEvent.Pressed = true; + Input.ParseInputEvent(cancelEvent); + [/csharp] + [/codeblocks] </description> </method> <method name="remove_joy_mapping"> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index 25420bd77b..fd8bfb4ece 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -247,11 +247,16 @@ <argument index="1" name="custom_bg_color" type="Color"> </argument> <description> - Sets the background color of the item specified by [code]idx[/code] index to the specified [Color]. - [codeblock] - var some_string = "Some text" - some_string.set_item_custom_bg_color(0,Color(1, 0, 0, 1) # This will set the background color of the first item of the control to red. - [/codeblock] + [codeblocks] + [gdscript] + var itemList = ItemList.new() + some_string.set_item_custom_bg_color(0, Color.red) # This will set the background color of the first item of the control to red. + [/gdscript] + [csharp] + var itemList = new ItemList(); + itemList.SetItemCustomBgColor(0, Colors.Red); // This will set the background color of the first item of the control to red. + [/csharp] + [/codeblocks] </description> </method> <method name="set_item_custom_fg_color"> @@ -263,10 +268,16 @@ </argument> <description> Sets the foreground color of the item specified by [code]idx[/code] index to the specified [Color]. - [codeblock] - var some_string = "Some text" - some_string.set_item_custom_fg_color(0,Color(1, 0, 0, 1) # This will set the foreground color of the first item of the control to red. - [/codeblock] + [codeblocks] + [gdscript] + var item_list = ItemList.new() + item_list.set_item_custom_fg_color(0, Color.red) # This will set the foreground color of the first item of the control to red. + [/gdscript] + [csharp] + var itemList = new ItemList(); + itemList.SetItemCustomFgColor(0, Colors.Red); // This will set the foreground color of the first item of the control to red. + [/csharp] + [/codeblocks] </description> </method> <method name="set_item_disabled"> diff --git a/doc/classes/JSONParseResult.xml b/doc/classes/JSONParseResult.xml index 4dbceb35e9..991ebcd7a0 100644 --- a/doc/classes/JSONParseResult.xml +++ b/doc/classes/JSONParseResult.xml @@ -24,13 +24,26 @@ A [Variant] containing the parsed JSON. Use [method @GDScript.typeof] or the [code]is[/code] keyword to check if it is what you expect. For example, if the JSON source starts with curly braces ([code]{}[/code]), a [Dictionary] will be returned. If the JSON source starts with brackets ([code][][/code]), an [Array] will be returned. [b]Note:[/b] The JSON specification does not define integer or float types, but only a [i]number[/i] type. Therefore, parsing a JSON text will convert all numerical values to [float] types. [b]Note:[/b] JSON objects do not preserve key order like Godot dictionaries, thus, you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements: - [codeblock] + [codeblocks] + [gdscript] var p = JSON.parse('["hello", "world", "!"]') if typeof(p.result) == TYPE_ARRAY: print(p.result[0]) # Prints "hello" else: push_error("Unexpected results.") - [/codeblock] + [/gdscript] + [csharp] + JSONParseResult p = JSON.Parse("[\"hello\"], \"world\", \"!\"]"); + if (p.Result is Godot.Collections.Array) + { + GD.Print((p.Result as Godot.Collections.Array)[0]); // Prints "hello" + } + else + { + GD.PushError("Unexpected results."); + } + [/csharp] + [/codeblocks] </member> </members> <constants> diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml index 425df00b6f..476b64a336 100644 --- a/doc/classes/KinematicBody2D.xml +++ b/doc/classes/KinematicBody2D.xml @@ -37,11 +37,20 @@ <description> Returns a [KinematicCollision2D], which contains information about a collision that occurred during the last call to [method move_and_slide] or [method move_and_slide_with_snap]. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1). [b]Example usage:[/b] - [codeblock] + [codeblocks] + [gdscript] for i in get_slide_count(): var collision = get_slide_collision(i) print("Collided with: ", collision.collider.name) - [/codeblock] + [/gdscript] + [csharp] + for (int i = 0; i < GetSlideCount(); i++) + { + KinematicCollision2D collision = GetSlideCollision(i); + GD.Print("Collided with: ", (collision.Collider as Node).Name); + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_slide_count" qualifiers="const"> diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index 5c2dffd538..b7211419e4 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -103,12 +103,20 @@ </argument> <description> Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/code]. By default, [code]from[/code] is at the beginning and [code]to[/code] at the end. - [codeblock] + [codeblocks] + [gdscript] text = "Welcome" select() # Will select "Welcome". select(4) # Will select "ome". select(2, 5) # Will select "lco". - [/codeblock] + [/gdscript] + [csharp] + Text = "Welcome"; + Select(); // Will select "Welcome". + Select(4); // Will select "ome". + Select(2, 5); // Will select "lco". + [/csharp] + [/codeblocks] </description> </method> <method name="select_all"> diff --git a/doc/classes/int.xml b/doc/classes/int.xml index 5ac9f8405a..b0d0a4bd7b 100644 --- a/doc/classes/int.xml +++ b/doc/classes/int.xml @@ -7,18 +7,34 @@ Signed 64-bit integer type. It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. [int] is a [Variant] type, and will thus be used when assigning an integer value to a [Variant]. It can also be enforced with the [code]: int[/code] type hint. - [codeblock] + [codeblocks] + [gdscript] var my_variant = 0 # int, value 0. my_variant += 4.2 # float, value 4.2. var my_int: int = 1 # int, value 1. my_int = 4.2 # int, value 4, the right value is implicitly cast to int. my_int = int("6.7") # int, value 6, the String is explicitly cast with int. - var max_int = 9223372036854775807 print(max_int) # 9223372036854775807, OK. max_int += 1 print(max_int) # -9223372036854775808, we overflowed and wrapped around. - [/codeblock] + [/gdscript] + [csharp] + int myInt = (int)"6.7".ToFloat(); // int, value 6, the String is explicitly cast with int. + // We have to use `long` here, because GDSript's `int` + // is 64 bits long while C#'s `int` is only 32 bits. + long maxInt = 9223372036854775807; + GD.Print(maxInt); // 9223372036854775807, OK. + maxInt++; + GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped around. + + // Alternatively, if we used C#'s 32-bit `int` type, the maximum value is much smaller: + int halfInt = 2147483647; + GD.Print(halfInt); // 2147483647, OK. + halfInt++; + GD.Print(halfInt); // -2147483648, we overflowed and wrapped around. + [/csharp] + [/codeblocks] </description> <tutorials> </tutorials> diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 9fcb5fff35..977bb4b813 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -511,6 +511,11 @@ void EditorNode::_notification(int p_what) { scene_root->set_snap_2d_transforms_to_pixel(snap_2d_transforms); bool snap_2d_vertices = GLOBAL_GET("rendering/quality/2d/snap_2d_vertices_to_pixel"); scene_root->set_snap_2d_vertices_to_pixel(snap_2d_vertices); + + Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_GET("rendering/quality/2d_sdf/oversize"))); + scene_root->set_sdf_oversize(sdf_oversize); + Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_GET("rendering/quality/2d_sdf/scale"))); + scene_root->set_sdf_scale(sdf_scale); } ResourceImporterTexture::get_singleton()->update_imports(); diff --git a/editor/icons/AspectRatioContainer.svg b/editor/icons/AspectRatioContainer.svg new file mode 100644 index 0000000000..a7aef8e028 --- /dev/null +++ b/editor/icons/AspectRatioContainer.svg @@ -0,0 +1 @@ +<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m5 1c-1.1046 0-2 .89543-2 2h2zm2 0v2h2v-2zm4 0v2h2c0-1.1046-.89543-2-2-2zm-8 4v2h2v-2zm8 0v2h2v-2zm-8 4v2h2v-2zm8 0v2h2v-2zm-8 4c0 1.1046.89543 2 2 2v-2zm4 0v2h2v-2zm4 0v2c1.1046 0 2-.89543 2-2z" fill="#a5efac"/></svg> diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index f3fc22b313..0b0231de64 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -102,7 +102,6 @@ void VisualShaderGraphPlugin::_bind_methods() { ClassDB::bind_method("disconnect_nodes", &VisualShaderGraphPlugin::disconnect_nodes); ClassDB::bind_method("set_node_position", &VisualShaderGraphPlugin::set_node_position); ClassDB::bind_method("set_node_size", &VisualShaderGraphPlugin::set_node_size); - ClassDB::bind_method("show_port_preview", &VisualShaderGraphPlugin::show_port_preview); ClassDB::bind_method("update_node", &VisualShaderGraphPlugin::update_node); ClassDB::bind_method("update_node_deferred", &VisualShaderGraphPlugin::update_node_deferred); ClassDB::bind_method("set_input_port_default_value", &VisualShaderGraphPlugin::set_input_port_default_value); @@ -1558,8 +1557,8 @@ void VisualShaderEditor::_preview_select_port(int p_node, int p_port) { undo_redo->create_action(p_port == -1 ? TTR("Hide Port Preview") : TTR("Show Port Preview")); undo_redo->add_do_method(node.ptr(), "set_output_port_for_preview", p_port); undo_redo->add_undo_method(node.ptr(), "set_output_port_for_preview", prev_port); - undo_redo->add_do_method(graph_plugin.ptr(), "show_port_preview", (int)type, p_node, p_port); - undo_redo->add_undo_method(graph_plugin.ptr(), "show_port_preview", (int)type, p_node, prev_port); + undo_redo->add_do_method(graph_plugin.ptr(), "update_node", (int)type, p_node); + undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", (int)type, p_node); undo_redo->commit_action(); } @@ -1959,6 +1958,8 @@ void VisualShaderEditor::_connection_request(const String &p_from, int p_from_in undo_redo->add_undo_method(visual_shader.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index); undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index); undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index); + undo_redo->add_do_method(graph_plugin.ptr(), "update_node", (int)type, to); + undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", (int)type, to); undo_redo->commit_action(); } @@ -1975,6 +1976,8 @@ void VisualShaderEditor::_disconnection_request(const String &p_from, int p_from undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index); undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index); undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index); + undo_redo->add_do_method(graph_plugin.ptr(), "update_node", (int)type, to); + undo_redo->add_undo_method(graph_plugin.ptr(), "update_node", (int)type, to); undo_redo->commit_action(); } diff --git a/editor/translations/af.po b/editor/translations/af.po index 08b8a7cc53..3a699cee71 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -8429,10 +8429,25 @@ msgstr "Skep Nuwe" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Skep Nuwe" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Skep Intekening" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Skrap gekose lêers?" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12088,10 +12103,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12137,22 +12148,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 24356c9a1c..ff705883d5 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -16,7 +16,7 @@ # Rached Noureddine <rached.noureddine@gmail.com>, 2018. # Rex_sa <asd1234567890m@gmail.com>, 2017, 2018, 2019. # Wajdi Feki <wajdi.feki@gmail.com>, 2017. -# Omar Aglan <omar.aglan91@yahoo.com>, 2018, 2019. +# Omar Aglan <omar.aglan91@yahoo.com>, 2018, 2019, 2020. # Codes Otaku <ilyas.gamerz@gmail.com>, 2018, 2019. # Takai Eddine Kennouche <takai.kenn@gmail.com>, 2018. # Mohamed El-Baz <albaz2000eg@gmail.com>, 2018. @@ -50,8 +50,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-08 10:26+0000\n" -"Last-Translator: bruvzg <bruvzg13@gmail.com>\n" +"PO-Revision-Date: 2020-11-25 14:09+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" @@ -60,12 +60,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "معامل خاطئ لدالة ()Convert, استخدم اØدى الثوابت من مجموعة TYPE_*." +msgstr "معامل خاطئ لدالة ()ConvertØŒ استخدم اØدى الثوابت من مجموعة TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -934,9 +934,8 @@ msgid "Signals" msgstr "الإشارات" #: editor/connections_dialog.cpp -#, fuzzy msgid "Filter signals" -msgstr "تنقية البلاطات" +msgstr "تنقية الإشارات" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -1064,11 +1063,12 @@ msgid "Owners Of:" msgstr "ملاك:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Ø¥Ù…Ø³Ø Ø§Ù„Ù…Ù„Ùات المختارة من المشروع؟ (لا يمكن استعادتها)" +msgstr "" +"Øذ٠الملÙات المختارة من المشروع؟ (لا يمكن استعادتها)\n" +"يمكنك إيجاد الملÙات المØذوÙØ© ÙÙŠ سلة مهملات النظام Øيث يمكنك إسترجاعها." #: editor/dependency_editor.cpp #, fuzzy @@ -3021,7 +3021,7 @@ msgstr "المجتمع" #: editor/editor_node.cpp msgid "About" -msgstr "عن هذا التطبيق" +msgstr "Øول" #: editor/editor_node.cpp msgid "Play the project." @@ -8332,10 +8332,25 @@ msgid "Create a new rectangle." msgstr "إنشاء مستطيل جديد." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "مستطيل الطلاء" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "إنشاء Ù…Ùضلع جديد." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "تØريك المÙضلع" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Øذ٠المÙختار" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "إبقاء المÙضلع داخل مستطيل المنطقة." @@ -12077,10 +12092,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12134,22 +12145,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 537a5fd7d3..bbf679961c 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -8153,10 +8153,25 @@ msgstr "Създай нови възли." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Ðова Ñцена" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Създай нов полигон от нулата." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "ПремеÑтване на полигона" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Изтриване на избран(и) ключ(ове)" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11774,10 +11789,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11822,22 +11833,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 4e960d8d50..0ff139a1f1 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-22 19:41+0000\n" -"Last-Translator: Sagen Soren <sagensoren03@gmail.com>\n" +"PO-Revision-Date: 2020-11-26 08:43+0000\n" +"Last-Translator: Mokarrom Hossain <mhb2016.bzs@gmail.com>\n" "Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/" "godot/bn/>\n" "Language: bn\n" @@ -23,10 +23,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.3.1\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp +#, fuzzy msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "অবৈধ পà§à¦°à¦•à¦¾à¦° রূপানà§à¦¤à¦° করার যà§à¦•à§à¦¤à¦¿(),use TYPE_* constants." @@ -38,7 +39,7 @@ msgstr "১ (à¦à¦•à¦Ÿà¦¿ অকà§à¦·à¦°) দৈরà§à¦˜à§à¦¯ à¦à¦° সà§à¦ #: 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" @@ -117,14 +118,12 @@ msgid "Value:" msgstr "মান:" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Insert Key Here" -msgstr "চাবি সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করà§à¦¨" +msgstr "চাবি ইনà§à¦¸à¦¾à¦°à§à¦Ÿ করà§à¦¨" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Duplicate Selected Key(s)" -msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অনà§à¦²à¦¿à¦ªà¦¿ করà§à¦¨" +msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ key সমূহ অনà§à¦²à¦¿à¦ªà¦¿ করà§à¦¨" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" @@ -147,9 +146,8 @@ msgid "Anim Delete Keys" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° (Anim) চাবিগà§à¦²à§‹ অপসারণ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) à¦à§à¦¯à¦¾à¦²à§ পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim)কীফà§à¦°à§‡à¦® time পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" @@ -168,34 +166,28 @@ msgid "Anim Change Call" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) কল পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) à¦à§à¦¯à¦¾à¦²à§ পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) কীফà§à¦°à§‡à¦®à§‡à¦° সময় পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨ পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨ পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à¦¾à¦¨à§à¦¸à¦«à¦°à§à¦® পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à¦¾à¦¨à§à¦¸à¦«à¦°à§à¦® পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) à¦à§à¦¯à¦¾à¦²à§ পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) à¦à§à¦¯à¦¾à¦²à§ পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) কল পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) কল পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° লà§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° বà§à¦¯à¦¾à¦ªà§à¦¤à¦¿à¦•à¦¾à¦² পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -203,51 +195,44 @@ msgid "Change Animation Loop" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° লà§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Property Track" -msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:" +msgstr "বৈশিষà§à¦Ÿà§à¦¯ টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp -#, fuzzy msgid "3D Transform Track" -msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°à§‡à¦° ধরণ" +msgstr "3D রূপানà§à¦¤à¦° টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "" +msgstr "কল মেথড টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "বেজিয়ার কারà§à¦ টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "" +msgstr "অডিও পà§à¦²à§‡à¦¬à§à¦¯à¦¾à¦• টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Playback Track" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° চালনা বনà§à¦§ করà§à¦¨à¥¤ (S)" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦²à§‡à¦¬à§à¦¯à¦¾à¦• টà§à¦°à§à¦¯à¦¾à¦•" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation length (frames)" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° (Animation) দৈরà§à¦˜à§à¦¯ (সময় সেকেনà§à¦¡à§‡)।" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° (Animation) দৈরà§à¦˜à§à¦¯ (ফà§à¦°à§‡à¦®à§‡)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation length (seconds)" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° (Animation) দৈরà§à¦˜à§à¦¯ (সময় সেকেনà§à¦¡à§‡)।" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° (Animation) দৈরà§à¦˜à§à¦¯ (সেকেনà§à¦¡à§‡)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦• যোগ করà§à¦¨" +msgstr "টà§à¦°à§à¦¯à¦¾à¦• যোগ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Looping" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Animation) জà§à¦® (zoom) করà§à¦¨à¥¤" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Animation) লà§à¦ªà¦¿à¦‚" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -255,33 +240,28 @@ msgid "Functions:" msgstr "ফাংশনগà§à¦²à¦¿:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Audio Clips:" -msgstr "অডিও শà§à¦°à§‹à¦¤à¦¾" +msgstr "অডিও কà§à¦²à¦¿à¦ªà¦¸:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Clips:" -msgstr "কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ :" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Track Path" -msgstr "শà§à¦°à§‡à¦£à§€à¦¬à¦¿à¦¨à§à¦¯à¦¾à¦¸/সারির মান পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "টà§à¦°à§à¦¯à¦¾à¦• পাথ (পথ) পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Toggle this track on/off." -msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড" +msgstr "à¦à¦‡ টà§à¦°à§à¦¯à¦¾à¦•à¦Ÿà¦¿ চালৠ/ বনà§à¦§ টগল করà§à¦¨à¥¤" #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "" +msgstr "আপডেট মোড (কীà¦à¦¾à¦¬à§‡ à¦à¦‡ সমà§à¦ªà¦¤à§à¦¤à¦¿ সেট করা আছে)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Interpolation Mode" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নোড" +msgstr "ইনà§à¦Ÿà¦¾à¦°à¦ªà§‹à¦²à§‡à¦¶à¦¨ মোড" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" @@ -293,9 +273,8 @@ msgid "Remove this track." msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ টà§à¦°à§à¦¯à¦¾à¦•/পথ অপসারণ করà§à¦¨à¥¤" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Time (s): " -msgstr "X-ফেড/বিলীন সময় (সেঃ):" +msgstr "সময় (সেঃ): " #: editor/animation_track_editor.cpp #, fuzzy @@ -315,13 +294,12 @@ msgid "Trigger" msgstr "টà§à¦°à¦¿à¦—ার/চালনা করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy 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 @@ -330,45 +308,40 @@ msgstr "রৈখিক/লিনিয়ার" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "ঘন" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "" +msgstr "কà§à¦²à§à¦¯à¦¾à¦®à§à¦ª লà§à¦ª ইনà§à¦Ÿà¦¾à¦°à¦ª" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "" +msgstr "Wrap লà§à¦ª ইনà§à¦Ÿà¦¾à¦°à¦ª" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "চাবি সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করà§à¦¨" +msgstr "চাবি ইনà§à¦¸à¦¾à¦°à§à¦Ÿ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Duplicate Key(s)" -msgstr "নোড(সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨" +msgstr "কী (সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Key(s)" -msgstr "নোড(সমূহ) অপসারণ করà§à¦¨" +msgstr "কী (সমূহ) অপসারণ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Update Mode" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নাম পরিবরà§à¦¤à¦¨ করà§à¦¨:" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ আপডেট মোড পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Interpolation Mode" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নোড" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ ইনà§à¦Ÿà¦¾à¦°à¦ªà§‹à¦²à§‡à¦¶à¦¨ মোড পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Loop Mode" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° লà§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° লà§à¦ª মোড পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" @@ -400,7 +373,7 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡ (Anim) অনà§à¦¤à¦°à§à¦à§à¦•à§à #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." -msgstr "" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦ªà§à¦²à§‡à¦¯à¦¼à¦¾à¦° নিজেই অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦Ÿ করতে পারে না, কেবল অনà§à¦¯ পà§à¦²à§‡à§Ÿà¦¾à¦°à¥¤" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" @@ -415,14 +388,12 @@ msgid "Anim Insert Key" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡ (Anim) চাবি যোগ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Step" -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° FPS পরিবরà§à¦¤à¦¨ করà§à¦¨" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° ধাপ পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Rearrange Tracks" -msgstr "Autoload সমূহ পà§à¦¨à¦°à§à¦¬à¦¿à¦¨à§à¦¯à¦¸à§à¦¤ করà§à¦¨" +msgstr "টà§à¦°à§à¦¯à¦¾à¦•à¦—à§à¦²à¦¿ পà§à¦¨à¦°à§à¦¬à¦¿à¦¨à§à¦¯à¦¸à§à¦¤ করà§à¦¨" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." @@ -442,7 +413,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." -msgstr "" +msgstr "à¦à¦•à¦Ÿà¦¿ অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦²à§‡à¦¯à¦¼à¦¾à¦° নিজেই অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦Ÿ করতে পারে না, কেবল অনà§à¦¯ পà§à¦²à§‡à§Ÿà¦¾à¦°à¥¤" #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -494,9 +465,8 @@ msgid "Anim Move Keys" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡ (Anim) চাবি/কী-সমà§à¦¹ সরান" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Clipboard is empty" -msgstr "রিসোরà§à¦¸à§‡à¦° কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡ খালি!" +msgstr "কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡ খালি" #: editor/animation_track_editor.cpp #, fuzzy @@ -555,12 +525,12 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° তালিকাটি কারà #: editor/animation_track_editor.cpp msgid "Seconds" -msgstr "" +msgstr "সেকেনà§à¦¡" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "FPS" -msgstr "à¦à¦« পি à¦à¦¸" +msgstr "à¦à¦«à¦ªà¦¿à¦à¦¸" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -573,9 +543,8 @@ msgid "Edit" msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ বৈশিষà§à¦Ÿà§à¦¯" #: editor/animation_track_editor.cpp #, fuzzy @@ -604,12 +573,10 @@ msgid "Delete Selection" 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 "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ধাপে যান" @@ -8952,10 +8919,25 @@ msgstr "নতà§à¦¨ তৈরি করà§à¦¨" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "রেকà§à¦Ÿà§à¦¯à¦¾à¦™à§à¦—ল পেইনà§à¦Ÿ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "আরমà§à¦ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "পলিগন সরান" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12874,10 +12856,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12923,22 +12901,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index f8a9c61806..36f6096591 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -8518,11 +8518,26 @@ msgid "Create a new rectangle." msgstr "Crear un nou rectangle." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Pinta Rectangle" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Crear un nou polÃgon." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Polygon" +msgstr "Mou el PolÃgon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Elimina Seleccionats" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Keep polygon inside region Rect." msgstr "Mantenir polÃgon dins de la regió Rect." @@ -12442,10 +12457,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp #, fuzzy msgid "" "Android build template not installed in the project. Install it from the " @@ -12493,22 +12504,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index dbe18d831b..fc0a47e554 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -28,7 +28,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Václav Blažej <vaclavblazej@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" @@ -1047,14 +1047,14 @@ msgid "Owners Of:" msgstr "VlastnÃci:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Odebrat vybrané soubory z projektu? (Nelze vrátit zpÄ›t)" +msgstr "" +"Odebrat vybrané soubory z projektu? (Nelze vrátit zpÄ›t)\n" +"Odebrané soubory budou v systémovém koÅ¡i a obnovit je." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1062,7 +1062,8 @@ msgid "" "You can find the removed files in the system trash to restore them." msgstr "" "Soubory ke smazánà potÅ™ebujà jiné zdroje ke své Äinnosti.\n" -"PÅ™esto je chcete smazat? (nelze vrátit zpÄ›t)" +"PÅ™esto je chcete smazat? (nelze vrátit zpÄ›t)\n" +"Odebrané soubory budou v systémovém koÅ¡i a obnovit je." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2322,6 +2323,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"PÅ™i pokusu o uloženà rozloženà editoru doÅ¡lo k chybÄ›.\n" +"UjistÄ›te se, že cesta k uživatelským datům editoru je zapisovatelná." #: editor/editor_node.cpp msgid "" @@ -2329,13 +2332,15 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Výchozà rozloženà editoru bylo pÅ™epsáno.\n" +"Chcete-li obnovit výchozà rozloženà do výchozÃho nastavenÃ, použijte možnost " +"Odstranit rozloženà a odstraňte výchozà rozloženÃ." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Jméno rozloženà nenalezeno!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." msgstr "Obnoveno výchozà rozloženà na základnà nastavenÃ." @@ -3764,9 +3769,8 @@ msgid "Move To..." msgstr "PÅ™esunout do..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "PÅ™emÃstit Autoload" +msgstr "PÅ™esunout do koÅ¡e" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -7054,7 +7058,7 @@ msgstr "Breakpointy" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "JÃt do" +msgstr "PÅ™ejÃt na" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -8301,10 +8305,25 @@ msgid "Create a new rectangle." msgstr "VytvoÅ™it nový obdélnÃk." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Nakreslit obdélnÃk" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "VytvoÅ™it nový polygon." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "PÅ™esunout polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Smazat vybraný" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Udržovat mnohoúhelnÃk uvnitÅ™ obdélnÃku." @@ -12025,11 +12044,7 @@ msgstr "Nesprávná cesta Android SDK pro vlastnà sestavenà v Nastavenà edito #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Chybà složka \"platform-tools\"!" #: platform/android/export/export.cpp msgid "" @@ -12089,22 +12104,6 @@ msgstr "" "vlastnà sestavu\"." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "Neplatné jméno souboru! Android App Bundle vyžaduje pÅ™Ãponu *.aab." @@ -12904,6 +12903,21 @@ msgstr "OdliÅ¡nosti mohou být pÅ™iÅ™azeny pouze ve vertex funkci." msgid "Constants cannot be modified." msgstr "Konstanty nenà možné upravovat." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Chybà složka \"build-tools\"!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Nelze najÃt nástroj zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Zarovnávánà APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Nelze dokonÄit zarovnánà APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Nelze odstranit nezarovnané APK." + #~ msgid "Error trying to save layout!" #~ msgstr "Chyba pÅ™i pokusu uložit rozloženÃ!" diff --git a/editor/translations/da.po b/editor/translations/da.po index f96f3c5905..d9f131db67 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -8610,10 +8610,25 @@ msgstr "Opret Ny %s" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Ny Scene" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Opret Poly" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Rediger Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Slet Valgte" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12359,10 +12374,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12408,22 +12419,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/de.po b/editor/translations/de.po index 9800366eb2..2e7b01f9bb 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -66,8 +66,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-17 11:07+0000\n" -"Last-Translator: Artur Schönfeld <schoenfeld.artur@ymail.com>\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" +"Last-Translator: Günther Bohn <ciscouser@gmx.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -1089,16 +1089,16 @@ msgid "Owners Of:" msgstr "Besitzer von:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" "Ausgewählte Dateien aus dem Projekt entfernen? (Kann nicht rückgängig " -"gemacht werden)" +"gemacht werden.)\n" +"Die Dateien können möglicherweise aus dem Papierkorb des Betriebssystems " +"wiederhergestellt werden." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1107,7 +1107,9 @@ msgid "" msgstr "" "Andere Ressourcen benötigen die zu entfernenden Dateien, um richtig zu " "funktionieren.\n" -"Trotzdem entfernen? (Kann nicht rückgängig gemacht werden)" +"Trotzdem entfernen? (Kann nicht rückgängig gemacht werden.)\n" +"Die Dateien können möglicherweise aus dem Papierkorb des Betriebssystems " +"wiederhergestellt werden." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2377,6 +2379,9 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Ein Fehler ist beim Speichern des Editorlayouts aufgetreten.\n" +"Möglicherweise ist der Ordner für persönliche Einstellungen des Editors " +"nicht schreibbar." #: editor/editor_node.cpp msgid "" @@ -2384,15 +2389,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Standardlayout wurde überschrieben.\n" +"Um das Standardlayout auf Werkseinstellungen zurückzusetzen, sollte das " +"Standardlayout über die Option „Layout löschen“ gelöscht werden." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Layout-Name nicht gefunden!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Layout wurde auf die Standardeinstellungen zurückgesetzt." +msgstr "Standardlayout wurde auf Werkseinstellungen zurückgesetzt." #: editor/editor_node.cpp msgid "" @@ -3840,9 +3847,8 @@ msgid "Move To..." msgstr "Verschiebe zu..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Autoload verschieben" +msgstr "In Papierkorb werfen" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5766,7 +5772,7 @@ msgstr "" "oder skaliert werden (basierend auf Maske).\n" "Schlüsselbilder werden nur in existierende Spuren eingefügt, es werden keine " "neuen Spuren angelegt.\n" -"Beim ersten Mal müssen Schlüsselbilder manuell eingefügt werden." +"Das erste Mal müssen Schlüsselbilder manuell eingefügt werden." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Auto Insert Key" @@ -6309,7 +6315,7 @@ msgstr "Aufwärts-Achse des Meshs:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "Zufällige Drehung:" +msgstr "Zufälliges Drehen:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" @@ -8415,10 +8421,25 @@ msgid "Create a new rectangle." msgstr "Neues Rechteck erstellen." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Rechteck zeichnen" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Neues Polygon erstellen." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Polygon verschieben" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Auswahl löschen" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Polygon im Rechteck Bereich halten." @@ -9513,9 +9534,8 @@ msgid "" "Returns falloff based on the dot product of surface normal and view " "direction of camera (pass associated inputs to it)." msgstr "" -"Gibt den Abfall basierend auf dem Punktprodukt der Oberflächennormalen und " -"der Blickrichtung der Kamera zurück (übergeben Sie die zugehörigen Eingaben " -"an diese)." +"Gibt den Abfall abgeleitet aus dem Skalarprodukt zwischen Flächennormale und " +"Kamerablickrichtung zurück (zugeordnete Eingänge müssen übergeben werden)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -12182,11 +12202,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "‚platform-tools‘-Verzeichnis fehlt!" #: platform/android/export/export.cpp msgid "" @@ -12244,22 +12260,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "„Export AAB“ ist nur gültig wenn „Use Custom Build“ aktiviert ist." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" "Ungültiger Dateiname. Android App Bundles benötigen .aab als " @@ -13105,6 +13105,21 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." msgid "Constants cannot be modified." msgstr "Konstanten können nicht verändert werden." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "‚build-tools‘-Verzeichnis fehlt!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Das zipalign Hilfswerkzeug konnte nicht gefunden werden." + +#~ msgid "Aligning APK..." +#~ msgstr "Richte APK aus..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "APK konnte nicht ausgerichtet werden." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Nicht ausgerichtetes APK konnte nicht gelöscht werden." + #~ msgid "Error trying to save layout!" #~ msgstr "Fehler beim Speichern des Layouts!" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 818ad7ea7a..bb04c064f0 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -8035,10 +8035,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11570,10 +11582,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11618,22 +11626,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index 1a8e7501ee..0b2c2fa7b4 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -8382,10 +8382,25 @@ msgid "Create a new rectangle." msgstr "ΔημιουÏγία νÎου οÏθογωνίου." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "ΧÏωματοσμός οÏθογωνίου" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "ΔημιουÏγία νÎου πολυγώνου." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Μετακίνηση πολυγώνου" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "ΔιαγÏαφή επιλεγμÎνου" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "ΔιατήÏηση πολυγώνου μÎσα σε οÏθογώνια πεÏιοχή." @@ -12157,10 +12172,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12216,22 +12227,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 8f1b586a9a..671c2e1c6d 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -9,18 +9,19 @@ # Alejandro Sánchez Medina <alejandrosanchzmedina@gmail.com>, 2019. # Sr Half <flavio05@outlook.com>, 2020. # Cristian Yepez <cristianyepez@gmail.com>, 2020. +# BinotaLIU <me@binota.org>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2020-05-22 21:01+0000\n" -"Last-Translator: Cristian Yepez <cristianyepez@gmail.com>\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" +"Last-Translator: BinotaLIU <me@binota.org>\n" "Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/" "godot/eo/>\n" "Language: eo\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -135,56 +136,51 @@ msgstr "Movi Bezier-punktojn" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Animado Duplikati Åœlosilojn" +msgstr "Duplikati Åœlosilojn de Animado" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "Animado Forigi Åœlosilojn" +msgstr "Forigi Åœlosilojn de Animado" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "Animado Aliigi Kernakadron Fojon" +msgstr "Aliigi Kernakadron Fojon de Animado" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "Animado Aliigi Transiron" +msgstr "Aliigi Transiron de Animado" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "Animado Aliigi Transformon" +msgstr "Aliigi Transformon de Animado" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "Animado Aliigi Kernakadron Valoron" +msgstr "Aliigi Kernakadron Valoron de Animado" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "Animado Aliigi Alvokon" +msgstr "Aliigi Alvokon de Animado" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "Animado Aliigi Kernakadron Fojon" +msgstr "Aliigi Kernakadron Fojon de Animadoj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Animado Aliigi Transiron" +msgstr "Aliigi Transiron de Animadoj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Animado Aliigi Transformon" +msgstr "Aliigi Transformon de Animadoj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "Animado Aliigi Kernakadron Valoron" +msgstr "Aliigi Kernakadron Valoron de Animadoj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "Animado Aliigi Alvokon" +msgstr "Aliigi Alvokon de Animadoj" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -8169,10 +8165,24 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Nova sceno" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Forigi Elektita(j)n Åœlosilo(j)n" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11749,10 +11759,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11797,22 +11803,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/es.po b/editor/translations/es.po index 2922f2f4cf..aea60effae 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -52,12 +52,14 @@ # Jonatan <arandajonatan94@tuta.io>, 2020. # ACM <albertocm@tuta.io>, 2020. # José Manuel Jurado Bujalance <darkbird@vivaldi.net>, 2020. +# Skarline <lihue-molina@hotmail.com>, 2020. +# Oxixes <oxixes@protonmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-15 12:43+0000\n" -"Last-Translator: Victor S. <victorstancioiu@gmail.com>\n" +"PO-Revision-Date: 2020-11-24 16:44+0000\n" +"Last-Translator: Skarline <lihue-molina@hotmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -630,7 +632,7 @@ msgstr "Ir al Siguiente Paso" #: editor/animation_track_editor.cpp msgid "Go to Previous Step" -msgstr "Ir al Anterior Paso" +msgstr "Ir al Paso Anterior" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -650,7 +652,7 @@ msgstr "Usar Curvas Bezier" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" -msgstr "Optimizar Animación" +msgstr "Optimizador de Animación" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" @@ -1085,15 +1087,15 @@ msgid "Owners Of:" msgstr "Propietarios De:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"¿Eliminar los archivos seleccionados del proyecto? (No puede ser restaurado)" +"¿Eliminar los archivos seleccionados del proyecto? (irreversible)\n" +"Puedes encontrar los archivos eliminados en la papelera de reciclaje del " +"sistema para restaurarlos." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1102,7 +1104,9 @@ msgid "" msgstr "" "Otros recursos necesitan los archivos que estás intentando quitar para " "funcionar.\n" -"¿Eliminarlos de todos modos? (irreversible)" +"¿Eliminarlos de todos modos? (irreversible)\n" +"Puedes encontrar los archivos eliminados en la papelera de reciclaje del " +"sistema para restaurarlos." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2370,6 +2374,9 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Un error ha ocurrido mientras se intentaba guardar el diseño del editor.\n" +"Asegurate de que se puede escribir en la ubicación de datos del editor del " +"usuario." #: editor/editor_node.cpp msgid "" @@ -2383,9 +2390,8 @@ msgid "Layout name not found!" msgstr "¡Nombre de layout no encontrado!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Se restauró el layout por defecto a su configuración básica." +msgstr "Se restauró el diseño por defecto a su configuración básica." #: editor/editor_node.cpp msgid "" @@ -3838,9 +3844,8 @@ msgid "Move To..." msgstr "Mover a..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Mover Autoload" +msgstr "Mover a la papelera" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5365,8 +5370,8 @@ msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" -"Cuando está activo, el movimiento de los nodos de Control cambian sus " -"anclajes en lugar de sus márgenes." +"Cuando está activo, al mover los nodos de Control se cambian sus anclajes en " +"lugar de sus márgenes." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Top Left" @@ -8405,10 +8410,25 @@ msgid "Create a new rectangle." msgstr "Cree un nuevo rectángulo." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Dibujar Rectángulo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Crear un nuevo polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Mover PolÃgono" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Eliminar Seleccionados" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Mantener el polÃgono dentro del region Rect." @@ -12174,11 +12194,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "¡No se encontró el directorio 'platform-tools'!" #: platform/android/export/export.cpp msgid "" @@ -12235,22 +12251,6 @@ msgstr "" "\"Export AAB\" sólo es válido cuando \"Use Custom Build\" está activado." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" "¡Nombre de archivo inválido! Android App Bundle requiere la extensión *.aab." @@ -13089,6 +13089,18 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "¡No se encontró el directorio 'build-tools'!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "No se pudo encontrar la herramienta zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Alineando APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "No se pudo completar el alineamiento del APK." + #~ msgid "Error trying to save layout!" #~ msgstr "¡Error al guardar el layout!" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index c6a8ad8db4..83a1334dd6 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -15,12 +15,13 @@ # Francisco José Carllinni <panchopepe@protonmail.com>, 2019. # Nicolas Zirulnik <nicolaszirulnik@gmail.com>, 2020. # Cristian Yepez <cristianyepez@gmail.com>, 2020. +# Skarline <lihue-molina@hotmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-07-31 03:47+0000\n" -"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" +"Last-Translator: Skarline <lihue-molina@hotmail.com>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" "Language: es_AR\n" @@ -28,7 +29,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -915,9 +916,8 @@ msgid "Signals" msgstr "Señales" #: editor/connections_dialog.cpp -#, fuzzy msgid "Filter signals" -msgstr "Filtrar tiles" +msgstr "Filtrar señales" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -8375,10 +8375,25 @@ msgid "Create a new rectangle." msgstr "Crear un rectángulo nuevo." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Pintar Rectángulo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Crear un nuevo polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Mover PolÃgono" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Eliminar Seleccionados" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Mantener el polÃgono dentro del region Rect." @@ -12151,10 +12166,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12208,22 +12219,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/et.po b/editor/translations/et.po index 9cdb0999bc..9c886f42d4 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -8091,10 +8091,24 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Uus stseen" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Kustuta valitud võti (võtmed)" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11630,10 +11644,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11678,22 +11688,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index c203c37d43..8a0aab6f15 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -8056,10 +8056,23 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Ezabatu hautatutako gakoak" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11600,10 +11613,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11648,22 +11657,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index b20b7732fb..bdbb10725c 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -8428,10 +8428,25 @@ msgstr "ساختن %s جدید" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "صØنه جدید" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "انتخاب شده را تغییر مقیاس بده" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "ویرایش سیگنال" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Øذ٠انتخاب شده" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12205,10 +12220,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12254,22 +12265,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 8dca6b5cb1..2c5d6290f7 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-30 10:21+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -24,7 +24,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1029,23 +1029,25 @@ msgid "Owners Of:" msgstr "Omistajat kohteelle:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Poista valitut tiedostot projektista? (Ei voida palauttaa)" +msgstr "" +"Poista valitut tiedostot projektista? (ei voida kumota)\n" +"Löydät poistetut tiedostot järjestelmän roskakorista, mikäli haluat " +"palauttaa ne." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Poistettavaksi merkittyjä tiedostoja tarvitaan muiden resurssien " -"toimivuuteen.\n" -"Poistetaanko silti? (ei mahdollisuutta kumota)" +"Poistettavia tiedostoja tarvitaan muiden resurssien toimivuuteen.\n" +"Poistetaanko silti? (ei voida kumota)\n" +"Löydät poistetut tiedostot järjestelmän roskakorista, mikäli haluat " +"palauttaa ne." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2311,6 +2313,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Editorin asettelua tallentaessa tapahtui virhe.\n" +"Varmista, että editorin käyttäjädatapolku on kirjoituskelpoinen." #: editor/editor_node.cpp msgid "" @@ -2318,13 +2322,15 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Ylikirjoitettiin editorin oletusasettelu.\n" +"Palauttaaksesi oletusasettelun alkuperäisiin asetuksiinsa, käytä Poista " +"asettelu -valintaa ja poista oletusasettelu." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Asettelun nimeä ei löytynyt!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." msgstr "Palautettiin oletusasettelu alkuperäisiin asetuksiinsa." @@ -3754,9 +3760,8 @@ msgid "Move To..." msgstr "Siirrä..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Siirrä automaattisesti ladattavaa" +msgstr "Siirrä roskakoriin" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8311,10 +8316,25 @@ msgid "Create a new rectangle." msgstr "Luo uusi suorakulmio." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Suorakaidetäyttö" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Luo uusi polygoni." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Siirrä polygonia" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Poista valitut" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Pidä polygoni alueen suorakulmion sisällä." @@ -12060,11 +12080,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "'platform-tools' hakemisto puuttuu!" #: platform/android/export/export.cpp msgid "" @@ -12125,22 +12141,6 @@ msgstr "" "päällä." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" "Virheellinen tiedostonimi! Android App Bundle tarvitsee *.aab " @@ -12957,6 +12957,21 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." msgid "Constants cannot be modified." msgstr "Vakioita ei voi muokata." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "'build-tools' hakemisto puuttuu!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "zipalign työkalua ei löydy." + +#~ msgid "Aligning APK..." +#~ msgstr "Tasataan APK:ta..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "APK:n tasausta ei saatu suoritettua loppuun." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Tasaamattoman APK:n poisto ei onnistu." + #~ msgid "Error trying to save layout!" #~ msgstr "Virhe tallennettaessa asettelua!" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 6377bee04a..542596ed45 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -8058,10 +8058,23 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Burahin ang (mga) Napiling Key" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11601,10 +11614,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11649,22 +11658,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index c898ea3c96..b5bb7cbdcd 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -76,12 +76,13 @@ # Nathan <bonnemainsnathan@gmail.com>, 2020. # Léo Vincent <l009.vincent@gmail.com>, 2020. # Joseph Boudou <joseph.boudou@matabio.net>, 2020. +# Vincent Foulon <vincent.foulon80@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-15 12:43+0000\n" -"Last-Translator: Joseph Boudou <joseph.boudou@matabio.net>\n" +"PO-Revision-Date: 2020-11-26 08:43+0000\n" +"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -1108,15 +1109,15 @@ msgid "Owners Of:" msgstr "Propriétaires de :" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Supprimer les fichiers sélectionnés du projet ? (restauration impossible)" +"Supprimer les fichiers sélectionnés du projet ? (annulation impossible)\n" +"Vous pouvez retrouver les fichiers supprimés dans la corbeille du système " +"pour les restaurer." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1125,7 +1126,9 @@ msgid "" msgstr "" "Les fichiers qui vont être supprimés sont utilisés par d'autres ressources " "pour leur fonctionnement.\n" -"Les supprimer tout de même ? (annulation impossible)" +"Les supprimer tout de même ? (annulation impossible)\n" +"Vous pouvez retrouver les fichiers supprimés dans la corbeille du système " +"pour les restaurer." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2391,6 +2394,10 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Une erreur s'est produite lors de l'enregistrement de la disposition de " +"l'éditeur.\n" +"Assurez-vous que le chemin de données utilisateur de l'éditeur est " +"accessible en écriture." #: editor/editor_node.cpp msgid "" @@ -2398,15 +2405,18 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Mise en page par défaut de l'éditeur modifiée.\n" +"Pour rétablir la mise en page par défaut dans ses paramètres de base, " +"utilisez l'option Supprimer la mise en page et supprimez la mise en page par " +"défaut." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Nom de la disposition non trouvé !" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Disposition par défaut remise à zéro." +msgstr "Disposition par défaut remise à ses paramètres de base." #: editor/editor_node.cpp msgid "" @@ -3865,9 +3875,8 @@ msgid "Move To..." msgstr "Déplacer vers…" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Déplacer l'AutoLoad" +msgstr "Déplacer vers la corbeille" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5341,53 +5350,44 @@ msgid "Create Horizontal and Vertical Guides" msgstr "Créer de nouveaux guides horizontaux et verticaux" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" msgstr "Décalage pivot du CanvasItem « %s » défini à (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Pivoter l'élément de canevas" +msgstr "Pivoter %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate CanvasItem \"%s\" to %d degrees" msgstr "Pivoter le CanvasItem \"%s\" de %d degrés" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Déplacer l'ancre \"%s\" du CanvasItem" +msgstr "Déplacer l'ancre du CanvasItem « %s »" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "Mettre à l'échelle Node2D \"%s\" vers (%s, %s)" +msgstr "Mettre à l'échelle le Node2D « %s » vers (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "Redimensionner le Contrôle \"%s\" vers (%d, %d)" +msgstr "Redimensionner le Contrôle « %s » vers (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Mise à l'échelle de CanvasItem" +msgstr "Mettre à l'échelle le CanvasItem %d" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Mise à l'échelle de CanvasItem" +msgstr "Mettre à l'échelle le CanvasItem « %s » vers (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Déplacer l'élément de canevas" +msgstr "Déplacer %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Déplacer l'élément de canevas" +msgstr "Déplacer le CanvasItem « %s » vers (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6740,14 +6740,12 @@ msgid "Radius:" msgstr "Rayon :" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Copier le polygone dans UV" +msgstr "Copier le polygone dans l'UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Copier UV dans le polygone" +msgstr "Copier l'UV dans le polygone" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8299,13 +8297,12 @@ msgid "Paint Tile" msgstr "Peindre la tuile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" -"Shift+LMB : Dessiner une ligne\n" -"Shift+Commande+LMB : Dessiner un rectangle" +"Maj + Clic droit : Dessiner une ligne\n" +"Maj + Commande + Clic droit : Dessiner un rectangle" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8460,12 +8457,24 @@ msgid "Create a new rectangle." msgstr "Créer un nouveau rectangle." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "Nouveau rectangle" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Créer un nouveau polygone." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "Nouveau polygone" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "Supprimer la forme sélectionée" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "Circonscrire le polygone dans le Rect de région." +msgstr "Circonscrire le polygone dans le rectangle de région." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." @@ -8856,7 +8865,6 @@ msgid "Visual Shader Input Type Changed" msgstr "Type d’entrée Visual Shader changée" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" msgstr "Nom UniformRef modifié" @@ -9579,7 +9587,6 @@ msgstr "" "constantes." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "A reference to an existing uniform." msgstr "Une référence à un uniform existant." @@ -12242,11 +12249,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Dossier « platform-tools » manquant !" #: platform/android/export/export.cpp msgid "" @@ -12299,27 +12302,10 @@ msgstr "" "Xr » est « Oculus Mobile VR »." #: platform/android/export/export.cpp -#, fuzzy msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" -"« Exportation AAB » est valide uniquement lorsque l'option « Utiliser une " -"build personnalisée » est activée." - -#: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" +"« Export AAB » est valide uniquement lorsque l'option « Use Custom Build » " +"est activée." #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." @@ -12375,9 +12361,8 @@ msgstr "" "Android." #: platform/android/export/export.cpp -#, fuzzy msgid "Moving output" -msgstr "Sortie de déplacement" +msgstr "Déplacement du résultat" #: platform/android/export/export.cpp msgid "" @@ -13171,6 +13156,21 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." msgid "Constants cannot be modified." msgstr "Les constantes ne peuvent être modifiées." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Dossier « build-tools » manquant !" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Impossible de trouver l'outil zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Alignement de l'APK…" + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Impossible d'effectuer l'alignement de l'APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Impossible de supprimer l'APK non aligné." + #~ msgid "Error trying to save layout!" #~ msgstr "Erreur d'enregistrement de la disposition !" diff --git a/editor/translations/ga.po b/editor/translations/ga.po index d7f5165300..025d5778f8 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -8053,10 +8053,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11598,10 +11610,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11646,22 +11654,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/he.po b/editor/translations/he.po index 66fc99c39d..5ac3e3f060 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"PO-Revision-Date: 2020-11-25 14:10+0000\n" "Last-Translator: Ziv D <wizdavid@gmail.com>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/" "godot/he/>\n" @@ -4976,138 +4976,127 @@ msgstr "×ין תגובה מהמ×רח:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" -msgstr "" +msgstr "×œ× × ×ž×¦××” כתובת המ×רח:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "" +msgstr "בקשה × ×›×©×œ×”, הוחזר קוד:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." msgstr "הבקשה × ×›×©×œ×”." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "×œ× × ×™×ª×Ÿ להסיר:" +msgstr "×œ× × ×™×ª×Ÿ לשמור התגובה ל:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." -msgstr "" +msgstr "שגי×ת כתיבה." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "" +msgstr "הבקשה × ×›×©×œ×”, יותר מדי ×”×¤× ×™×•×ª מחדש" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." -msgstr "לול×ת ×”×¤× ×™×•×ª." +msgstr "לול×ת ×”×¤× ×™×•×ª מחדש." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "הבקשה × ×›×©×œ×”." +msgstr "הבקשה × ×›×©×œ×”, עבר הזמן" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "זמן" +msgstr "עבר הזמן." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "" +msgstr "×”×”×ש (hash) שירד ×œ× ×˜×•×‘, ×›× ×¨××” שהקובץ ×©×•× ×”." #: 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 msgid "Error making request" -msgstr "" +msgstr "שגי××” בביצוע בקשה" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "" +msgstr "סרק" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -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 "Recently Updated" -msgstr "" +msgstr "עודכן ל××—×¨×•× ×”" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Least Recently Updated" -msgstr "" +msgstr "×”×›×™ פחות מעודכן" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (A-Z)" -msgstr "" +msgstr "×©× (×-ת)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Name (Z-A)" -msgstr "" +msgstr "×©× (ת-×)" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (A-Z)" -msgstr "רישיון" +msgstr "רישיון (×-ת)" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "License (Z-A)" -msgstr "רישיון" +msgstr "רישיון (ת-×)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" -msgstr "" +msgstr "ר×שון" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Previous" -msgstr "×”×œ×©×•× ×™×ª הקודמת" +msgstr "הקוד×" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Next" @@ -5115,33 +5104,32 @@ msgstr "הב×" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "" +msgstr "×חרון" #: editor/plugins/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "הכל" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "×ין תוצ×ות עבור \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "ייבו×" +msgstr "ייבו×..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." -msgstr "" +msgstr "תוספי×..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" -msgstr "" +msgstr "מיון:" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Category:" -msgstr "" +msgstr "קטגוריה:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Site:" @@ -8450,10 +8438,25 @@ msgstr "יצירת %s חדש" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "×¡×¦× ×” חדשה" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "יצירת מצולע" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "הזזת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "מחיקת ×”× ×‘×—×¨" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12112,10 +12115,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12165,22 +12164,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index c880a097f4..de3b8630ab 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -11,12 +11,13 @@ # Devashishsingh98 <devashishsingh98@gmail.com>, 2019. # Shirious <sad3119823@gmail.com>, 2020. # Abhay Patel <Traumaticbean@protonmail.com>, 2020. +# Bishwajeet Parhi <bishwajeet.techmaster@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-04-24 06:48+0000\n" -"Last-Translator: Shirious <sad3119823@gmail.com>\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" +"Last-Translator: Bishwajeet Parhi <bishwajeet.techmaster@gmail.com>\n" "Language-Team: Hindi <https://hosted.weblate.org/projects/godot-engine/godot/" "hi/>\n" "Language: hi\n" @@ -24,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -6649,14 +6650,12 @@ msgid "Error Saving" msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme." -msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" +msgstr "थिम लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Importing" -msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" +msgstr "इंपोरà¥à¤Ÿ लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" #: editor/plugins/script_editor_plugin.cpp msgid "New Text File..." @@ -6883,9 +6882,8 @@ msgid "Debugger" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "खोज कर:" +msgstr "खोज के परिणाम" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Scripts" @@ -6915,9 +6913,8 @@ msgid "[Ignore]" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "रेखा:" +msgstr "रेखा" #: editor/plugins/script_text_editor.cpp #, fuzzy @@ -8234,10 +8231,25 @@ msgstr "à¤à¤• नया बनाà¤à¤‚" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "नया दृशà¥à¤¯" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "चयनित फ़ाइलें हटाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -8534,9 +8546,8 @@ msgid "(GLES3 only)" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "पसंदीदा:" +msgstr "परिणाम डालो" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8555,9 +8566,8 @@ msgid "Sampler" msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add input port" -msgstr "पसंदीदा:" +msgstr "à¤à¤¡ इनपà¥à¤Ÿ पोरà¥à¤Ÿ" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" @@ -11856,10 +11866,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11905,22 +11911,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index c3d47c9a8c..3b79d58af0 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -8061,10 +8061,23 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Brisanje Odabranih KljuÄeva" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11613,10 +11626,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11661,22 +11670,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index c61d953f31..dfa4c1255c 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -8258,10 +8258,25 @@ msgid "Create a new rectangle." msgstr "Új téglalap létrehozása." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Új Scene" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Új sokszög létrehozása." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Sokszög Mozgatása" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Kijelöltek törlése" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11828,10 +11843,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11876,22 +11887,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/id.po b/editor/translations/id.po index 7545e813a7..153df872de 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -8349,10 +8349,25 @@ msgid "Create a new rectangle." msgstr "Buat persegi panjang baru." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Cat Persegi Panjang" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Buat poligon baru." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Geser Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Hapus yang Dipilih" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Jaga poligon agar tetap di dalam wilayah Rect." @@ -12125,10 +12140,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12175,22 +12186,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/is.po b/editor/translations/is.po index 6edc7afbd6..c478090e4d 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -2,15 +2,15 @@ # Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. -# Jóhannes G. Þorsteinsson <johannesg@johannesg.com>, 2017, 2018. +# Jóhannes G. Þorsteinsson <johannesg@johannesg.com>, 2017, 2018, 2020. # Kaan Gül <qaantum@hotmail.com>, 2018. # Einar Magnús Einarsson <einar.m.einarsson@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-04-16 11:03+0000\n" -"Last-Translator: Einar Magnús Einarsson <einar.m.einarsson@gmail.com>\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" +"Last-Translator: Jóhannes G. Þorsteinsson <johannesg@johannesg.com>\n" "Language-Team: Icelandic <https://hosted.weblate.org/projects/godot-engine/" "godot/is/>\n" "Language: is\n" @@ -18,12 +18,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Ógild breyta send til convert(), notaðu TYPE_ * fasti." +msgstr "Ógild breytutegund send til convert(), notaðu TYPE_ * fasta." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -8141,10 +8141,24 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Breyta Viðbót" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Afrita val" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11721,10 +11735,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11769,22 +11779,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index f7e3badb73..03396bfa1f 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -59,8 +59,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-10 11:28+0000\n" -"Last-Translator: Micila Micillotto <micillotto@gmail.com>\n" +"PO-Revision-Date: 2020-11-23 21:42+0000\n" +"Last-Translator: Lorenzo Cerqua <lorenzocerqua@tutanota.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -72,6 +72,7 @@ msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp +#, fuzzy msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Argomento tipo non valido per convert(), usare le costanti TYPE_*." @@ -82,6 +83,7 @@ msgstr "Prevista una stringa di lunghezza 1 (un singolo carattere)." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp +#, fuzzy msgid "Not enough bytes for decoding bytes, or invalid format." msgstr "" "Non ci sono abbastanza byte per riuscire a decodificarli, oppure il formato " @@ -165,21 +167,23 @@ msgstr "Valore:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "Inserisci chiave" +msgstr "Inserisci una chiave" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "Duplicare la(e) chiave selezionata(e)" +msgstr "Duplica le chiavi selezionate" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "Eliminare la(e) chiave(i) selezionata(e)" +msgstr "Elimina le chiavi selezionate" #: editor/animation_bezier_editor.cpp +#, fuzzy msgid "Add Bezier Point" msgstr "Aggiungi punto Bézier" #: editor/animation_bezier_editor.cpp +#, fuzzy msgid "Move Bezier Points" msgstr "Sposta punto Bézier" @@ -1080,11 +1084,12 @@ msgid "Owners Of:" msgstr "Proprietari di:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Rimuovere i file selezionati dal progetto? (Non può essere annullato)" +msgstr "" +"Rimuovere i file selezionati dal progetto? (Non può essere annullato)\n" +"Puoi trovare i file rimossi nel cestino di sistema per ripristinarli." #: editor/dependency_editor.cpp #, fuzzy @@ -2372,6 +2377,9 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Layout predefinito dell'editor sovrascritto.\n" +"Per ripristinare il layout predefinito alle impostazioni di base, usa " +"l'opzione elimina layout ed elimina il layout predefinito." #: editor/editor_node.cpp msgid "Layout name not found!" @@ -3829,9 +3837,8 @@ msgid "Move To..." msgstr "Sposta in..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Sposta Autoload" +msgstr "Sposta nel cestino" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -6529,11 +6536,11 @@ msgstr "Rimuovi Punto In-Control" #: editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "Spezza Segmento (in curva)" +msgstr "Dividere segmento (in curva)" #: editor/plugins/physical_bone_plugin.cpp msgid "Move Joint" -msgstr "Sposta articolazione" +msgstr "Spostare il giunto" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" @@ -6542,7 +6549,7 @@ msgstr "La proprietà scheletro del Polygon2D non punta ad un nodo Skeleton2D" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Sync Bones" -msgstr "Sincronizza Ossa" +msgstr "Sincronizza ossa" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" @@ -6550,61 +6557,63 @@ msgid "" "Set a texture to be able to edit UV." msgstr "" "Nessuna texture in questo poligono.\n" -"Imposta una texture per poter modificare UV." +"Impostare una texture per poter modificare UV." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "Crea UV Map" +msgstr "Creare mappa UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." msgstr "" -"Polygon2D possiede vertici interni, non può più essere modificato dalla " -"finestra principale." +"Polygon2D ha vertici interni, quindi non può più essere modificato nella " +"vista." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" -msgstr "Crea Poligono e UV" +msgstr "Crea poligono e UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Internal Vertex" -msgstr "Crea Vertice Interno" +msgstr "Crea vertice interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Remove Internal Vertex" -msgstr "Rimuovi Vertice Interno" +msgstr "Rimuovi vertice interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "Poligono Non Valido (sono necessari 3 vertici non coincidenti)" +msgstr "Poligono non valido (sono necessari 3 vertici differenti)" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Add Custom Polygon" -msgstr "Aggiungi Poligono Personalizzato" +msgstr "Aggiungi poligono personalizzato" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Remove Custom Polygon" -msgstr "Rimuovi Poligono Personalizzato" +msgstr "Rimuovi poligono personalizzato" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" -msgstr "Trasla UV Map" +msgstr "Trasforma la mappa UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform Polygon" -msgstr "Trasforma Poligono" +msgstr "Trasforma il poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" msgstr "Dipingi peso delle ossa" #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Open Polygon 2D UV editor." msgstr "Apri editor Poligono 2D UV." #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Polygon 2D UV Editor" msgstr "Polygon 2D UV Editor" @@ -6626,7 +6635,7 @@ msgstr "Ossa" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Points" -msgstr "Sposta Punti" +msgstr "Sposta punti" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Command: Rotate" @@ -6634,7 +6643,7 @@ msgstr "Command: Ruota" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "Shift: Muovi Tutti" +msgstr "Shift: Muovi tutti" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Command: Scale" @@ -6650,15 +6659,15 @@ msgstr "Shift+Ctrl: Scala" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" -msgstr "Sposta Poligono" +msgstr "Sposta poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Rotate Polygon" -msgstr "Ruota Poligono" +msgstr "Ruota poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Scale Polygon" -msgstr "Scala Poligono" +msgstr "Scala poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." @@ -6676,11 +6685,11 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." -msgstr "Colora i pesi con l'intensità specificata." +msgstr "Dipingi i pesi con l'intensità specificata." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Unpaint weights with specified intensity." -msgstr "Rimuovi i pesi con le intensità specificate." +msgstr "Rimuovi i pesi con l'intensità specificata." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" @@ -6688,11 +6697,11 @@ msgstr "Raggio:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Copy Polygon to UV" -msgstr "Copia Poligono su UV" +msgstr "Copia il poligono su UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Copy UV to Polygon" -msgstr "Copia UV su Poligono" +msgstr "Copia l'UV sul poligono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -6700,15 +6709,17 @@ msgstr "Cancella UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Settings" -msgstr "Impostazioni Griglia" +msgstr "Impostazioni griglia" #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Snap" msgstr "Snap" #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Enable Snap" -msgstr "Abilita Snap" +msgstr "Abilita snap" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" @@ -6716,19 +6727,19 @@ msgstr "Griglia" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Show Grid" -msgstr "Mostra Griglia" +msgstr "Mostra la griglia" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Configure Grid:" -msgstr "Configura Griglia:" +msgstr "Configura la griglia:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset X:" -msgstr "Offset X Griglia:" +msgstr "Scostamento X della griglia:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset Y:" -msgstr "Offset Y Griglia:" +msgstr "Scostamento Y della griglia:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Step X:" @@ -6740,32 +6751,33 @@ msgstr "Passo Y della griglia:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Sync Bones to Polygon" -msgstr "Sincronizza Ossa a Poligono" +msgstr "Sincronizza le ossa al poligono" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" -msgstr "ERROERE: Impossibile caricare la risorsa!" +msgstr "ERRORE: Non è stato possibile caricare la risorsa!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" -msgstr "Aggiungi Risorsa" +msgstr "Aggiungi risorsa" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Rename Resource" -msgstr "Rinomina Risorsa" +msgstr "Rinomina risorsa" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Resource" -msgstr "Elimina Risorsa" +msgstr "Elimina risorsa" #: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy msgid "Resource clipboard is empty!" -msgstr "Clipboard risorse vuota!" +msgstr "Gli appunti risorse sono vuoti!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "Incolla Risorsa" +msgstr "Incolla risorsa" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/scene_tree_editor.cpp @@ -6782,11 +6794,11 @@ msgstr "Tipo:" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp msgid "Open in Editor" -msgstr "Apri nell Editor" +msgstr "Apri nell'editor" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Load Resource" -msgstr "Carica Risorsa" +msgstr "Carica risorsa" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ResourcePreloader" @@ -6798,11 +6810,11 @@ msgstr "AnimationTree non ha nessun percorso impostato ad un AnimationPlayer" #: editor/plugins/root_motion_editor_plugin.cpp msgid "Path to AnimationPlayer is invalid" -msgstr "Percorso per AnimationPlayer non è valido" +msgstr "Il percorso per AnimationPlayer non è valido" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" -msgstr "Elimina File recenti" +msgstr "Elimina i file recenti" #: editor/plugins/script_editor_plugin.cpp msgid "Close and save changes?" @@ -6814,11 +6826,11 @@ msgstr "Errore scrittura TextFile:" #: editor/plugins/script_editor_plugin.cpp msgid "Could not load file at:" -msgstr "Impossibile caricare il file:" +msgstr "Non è stato possibile caricare il file a:" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving file!" -msgstr "Errore nel salvataggio file!" +msgstr "Errore nel salvataggio del file!" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme." @@ -6826,7 +6838,7 @@ msgstr "Errore durante il salvataggio del tema." #: editor/plugins/script_editor_plugin.cpp msgid "Error Saving" -msgstr "Errore di Salvataggio" +msgstr "Errore di salvataggio" #: editor/plugins/script_editor_plugin.cpp msgid "Error importing theme." @@ -6834,19 +6846,19 @@ msgstr "Errore di importazione del tema." #: editor/plugins/script_editor_plugin.cpp msgid "Error Importing" -msgstr "Errore di Importazione" +msgstr "Errore di importazione" #: editor/plugins/script_editor_plugin.cpp msgid "New Text File..." -msgstr "Nuovo Text File…" +msgstr "Nuovo file di testo..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" -msgstr "Apri File" +msgstr "Apri file" #: editor/plugins/script_editor_plugin.cpp msgid "Save File As..." -msgstr "Salva File Come..." +msgstr "Salva file come..." #: editor/plugins/script_editor_plugin.cpp msgid "Can't obtain the script for running." @@ -6854,7 +6866,8 @@ msgstr "Impossibile ottenere lo script per l'esecuzione." #: editor/plugins/script_editor_plugin.cpp msgid "Script failed reloading, check console for errors." -msgstr "Ricaricando lo script fallito, controlla la console per gli errori." +msgstr "" +"Ricaricamento dello script fallito, controlla la console per gli errori." #: editor/plugins/script_editor_plugin.cpp msgid "Script is not in tool mode, will not be able to run." @@ -6864,12 +6877,12 @@ msgstr "Lo script non è in modalità tool, non sarà possibile eseguirlo." msgid "" "To run this script, it must inherit EditorScript and be set to tool mode." msgstr "" -"Per eseguire questo script, bisogna ereditare EditorScript ed impostarlo in " -"modalità tool." +"Per eseguire questo script, esso deve ereditare EditorScript ed essere " +"impostato in modalità tool." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "Importa Tema" +msgstr "Importa tema" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -6881,11 +6894,11 @@ msgstr "Errore di salvataggio" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As..." -msgstr "Salva Tema Come..." +msgstr "Salva tema come..." #: editor/plugins/script_editor_plugin.cpp msgid "%s Class Reference" -msgstr "%s Riferimento di Classe" +msgstr "%s Riferimento di classe" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -6899,11 +6912,12 @@ msgstr "Trova precedente" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" -msgstr "Filtra script" +msgstr "Filtra gli script" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid "Toggle alphabetical sorting of the method list." -msgstr "Ordina in ordine alfabetico la lista dei metodi." +msgstr "Attiva/Disattiva l'ordinazione alfabetica della lista dei metodi." #: editor/plugins/script_editor_plugin.cpp msgid "Filter methods" @@ -6917,13 +6931,13 @@ msgstr "Ordina" #: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Move Up" -msgstr "Sposta in su" +msgstr "Sposta su" #: 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 "Sposta in giù" +msgstr "Sposta giù" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" @@ -6931,7 +6945,7 @@ msgstr "Script successivo" #: editor/plugins/script_editor_plugin.cpp msgid "Previous script" -msgstr "Script Precedente" +msgstr "Script precedente" #: editor/plugins/script_editor_plugin.cpp msgid "File" @@ -6951,11 +6965,11 @@ msgstr "Salva tutto" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "Ricarica Soft Script" +msgstr "Ricarica parziale dello script" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" -msgstr "Copia Percorso Script" +msgstr "Copia il percorso dello script" #: editor/plugins/script_editor_plugin.cpp msgid "History Previous" @@ -6963,7 +6977,7 @@ msgstr "Cronologia Precedente" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" -msgstr "Cronologia Successiva" +msgstr "Cronologia successiva" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -6972,23 +6986,23 @@ msgstr "Tema" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme..." -msgstr "Importa Tema..." +msgstr "Importa tema..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "Ricarica Tema" +msgstr "Ricarica tema" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "Salva Tema" +msgstr "Salva tema" #: editor/plugins/script_editor_plugin.cpp msgid "Close All" -msgstr "Chiudi Tutto" +msgstr "Chiudi tutto" #: editor/plugins/script_editor_plugin.cpp msgid "Close Docs" -msgstr "Chiudi Documentazione" +msgstr "Chiudi la documentazione" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" @@ -7013,11 +7027,11 @@ msgstr "Continua" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "Mantieni Debugger Aperto" +msgstr "Mantieni il debugger aperto" #: editor/plugins/script_editor_plugin.cpp msgid "Debug with External Editor" -msgstr "Debug con Editor Esterno" +msgstr "Debug con un editor esterno" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation." @@ -7063,13 +7077,14 @@ msgstr "Debugger" #: editor/plugins/script_editor_plugin.cpp msgid "Search Results" -msgstr "Cerca Risultati" +msgstr "Cerca risultati" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Scripts" msgstr "Rimuovi Script Recenti" #: editor/plugins/script_text_editor.cpp +#, fuzzy msgid "Connections to method:" msgstr "Connessioni al metodo:" @@ -7082,14 +7097,15 @@ msgid "Target" msgstr "Target" #: editor/plugins/script_text_editor.cpp +#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." msgstr "" -"Manca il metodo '%s' connesso per il segnale '%s' dal nodo '%s' al nodo '%s'." +"Manca il metodo connesso '%s' per il segnale '%s' dal nodo '%s' al nodo '%s'." #: editor/plugins/script_text_editor.cpp msgid "[Ignore]" -msgstr "[ignora]" +msgstr "[Ignora]" #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -7107,19 +7123,21 @@ msgstr "Solo le risorse dal filesystem possono essere eliminate." #: modules/visual_script/visual_script_editor.cpp msgid "Can't drop nodes because script '%s' is not used in this scene." msgstr "" -"Impossibile lasciare i nodi perché lo script '%s' non è usato nella scena." +"Impossibile rilasciare i nodi perché lo script '%s' non è usato in questa " +"scena." #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "Ricerca Simbolo" +msgstr "Ricerca simbolo" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" -msgstr "Scegli Colore" +msgstr "Scegli un colore" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +#, fuzzy msgid "Convert Case" -msgstr "Converti Maiuscole/Minuscole" +msgstr "Converti capitalizzazione" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Uppercase" @@ -7131,11 +7149,11 @@ msgstr "Minuscolo" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Capitalize" -msgstr "Rendi prima lettera maiuscola" +msgstr "Rendi la prima lettera maiuscola" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Syntax Highlighter" -msgstr "Evidenziatore di Sintassi" +msgstr "Evidenziatore di sintassi" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp @@ -7144,7 +7162,7 @@ msgstr "Segnalibri" #: editor/plugins/script_text_editor.cpp msgid "Breakpoints" -msgstr "Breakpoint" +msgstr "Punti di interruzione" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp @@ -7167,27 +7185,28 @@ msgstr "Elimina linea" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "Indenta Sinistra" +msgstr "Indenta a sinistra" #: editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "Indenta Destra" +msgstr "Indenta a destra" #: editor/plugins/script_text_editor.cpp +#, fuzzy msgid "Toggle Comment" -msgstr "Commuta commento" +msgstr "Attiva/Disattiva commento" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" -msgstr "Espandi/comprimi linea" +msgstr "Espandi/Comprimi linea" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "Piegare Tutte le Linee" +msgstr "Comprimi tutte le linee" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "Dispiegare Tutte le Linee" +msgstr "Espandi tutte le linee" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" @@ -7195,7 +7214,7 @@ msgstr "Clona sotto" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "Completa simbolo" +msgstr "Completa il simbolo" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" @@ -7219,7 +7238,7 @@ msgstr "Indenta automaticamente" #: editor/plugins/script_text_editor.cpp msgid "Find in Files..." -msgstr "Cerca nei File..." +msgstr "Trova nei file..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" @@ -7227,44 +7246,45 @@ msgstr "Aiuto contestuale" #: editor/plugins/script_text_editor.cpp msgid "Toggle Bookmark" -msgstr "Abilita/Disabilita segnalibri" +msgstr "Abilita/Disabilita i segnalibri" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Bookmark" -msgstr "Va' al segnalibro successivo" +msgstr "Vai al segnalibro successivo" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Bookmark" -msgstr "Va' al segnalibro precedente" +msgstr "Vai al segnalibro precedente" #: editor/plugins/script_text_editor.cpp msgid "Remove All Bookmarks" -msgstr "Rimuovi tutti i Segnalibri" +msgstr "Rimuovi tutti i segnalibri" #: editor/plugins/script_text_editor.cpp msgid "Go to Function..." -msgstr "Vai a Funzione..." +msgstr "Vai alla funzione..." #: editor/plugins/script_text_editor.cpp msgid "Go to Line..." -msgstr "Vai a Linea..." +msgstr "Vai alla linea..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Toggle Breakpoint" -msgstr "Commuta breakpoint" +msgstr "Attiva/Disattiva punti di interruzione" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Rimuovi tutti i breakpoint" +msgstr "Rimuovi tutti i punti di interruzione" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Breakpoint" -msgstr "Vai al breakpoint successivo" +msgstr "Vai al punto di interruzione successivo" #: editor/plugins/script_text_editor.cpp msgid "Go to Previous Breakpoint" -msgstr "Vai al breakpoint precedente" +msgstr "Vai al punto di interruzione precedente" #: editor/plugins/shader_editor_plugin.cpp msgid "" @@ -7280,25 +7300,29 @@ msgstr "Shader" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "Questo scheletro non ha ossa, crea dei figli nodo Bone2D." +msgstr "Questo scheletro non ha ossa, crea dei nodi figlio Bone2D." #: editor/plugins/skeleton_2d_editor_plugin.cpp +#, fuzzy msgid "Create Rest Pose from Bones" msgstr "Crea Posizione di Riposo dalle Ossa" #: editor/plugins/skeleton_2d_editor_plugin.cpp +#, fuzzy msgid "Set Rest Pose to Bones" msgstr "Imposta Ossa in Posizione di Riposo" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" -msgstr "Scheletro2D" +msgstr "Skeleton2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp +#, fuzzy msgid "Make Rest Pose (From Bones)" msgstr "Crea Posizione di Riposo (Dalle Ossa)" #: editor/plugins/skeleton_2d_editor_plugin.cpp +#, fuzzy msgid "Set Bones to Rest Pose" msgstr "Imposta Ossa in Posizione di Riposo" @@ -7332,19 +7356,19 @@ msgstr "Transform Abortito." #: editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Transform Asse-X." +msgstr "Trasformazione asse X." #: editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Transform Asse-Y." +msgstr "Trasformazione asse Y." #: editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Transform Asse-Z." +msgstr "Trasformazione asse Z." #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "Visualizza Tranform del Piano." +msgstr "Visualizza la trasformazione del piano." #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " @@ -7352,7 +7376,7 @@ msgstr "Scalatura: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "Spostamento: " +msgstr "Traslazione: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." @@ -7360,11 +7384,11 @@ msgstr "Ruotando di %s gradi." #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." -msgstr "Keying disabilitato (nessun key inserito)." +msgstr "Inserimento di chiavi disabilitato (nessuna chiave inserita)." #: editor/plugins/spatial_editor_plugin.cpp msgid "Animation Key Inserted." -msgstr "Key d'Animazione Inserito." +msgstr "Chiave d'animazione inserita." #: editor/plugins/spatial_editor_plugin.cpp msgid "Pitch" @@ -7376,19 +7400,19 @@ msgstr "Imbardata" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" -msgstr "Oggetti Disegnati" +msgstr "Oggetti disegnati" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" -msgstr "Cambiamenti dei Materiali" +msgstr "Cambiamenti dei materiali" #: editor/plugins/spatial_editor_plugin.cpp msgid "Shader Changes" -msgstr "Cambiamenti delle Shader" +msgstr "Cambiamenti degli shader" #: editor/plugins/spatial_editor_plugin.cpp msgid "Surface Changes" -msgstr "Cambiamenti delle Superfici" +msgstr "Cambiamenti delle superfici" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" @@ -7400,11 +7424,11 @@ msgstr "Vertici" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "Vista dall'Alto." +msgstr "Vista dall'alto." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vista dal Basso." +msgstr "Vista dal basso." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -7412,7 +7436,7 @@ msgstr "Basso" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View." -msgstr "Vista Sinistra." +msgstr "Vista da sinistra." #: editor/plugins/spatial_editor_plugin.cpp msgid "Left" @@ -7420,7 +7444,7 @@ msgstr "Sinistra" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View." -msgstr "Vista Destra." +msgstr "Vista da destra." #: editor/plugins/spatial_editor_plugin.cpp msgid "Right" @@ -7428,7 +7452,7 @@ msgstr "Destra" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "Vista Frontale." +msgstr "Vista frontale." #: editor/plugins/spatial_editor_plugin.cpp msgid "Front" @@ -7436,7 +7460,7 @@ msgstr "Fronte" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View." -msgstr "Vista dal Retro." +msgstr "Vista dal retro." #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear" @@ -7444,11 +7468,11 @@ msgstr "Retro" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Transform with View" -msgstr "Allinea trasformazione con la vista" +msgstr "Allinea la trasformazione con la vista" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Rotation with View" -msgstr "Allinea rotazione con la vista" +msgstr "Allinea la rotazione con la vista" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -8401,10 +8425,25 @@ msgid "Create a new rectangle." msgstr "Crea un nuovo rettangolo." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Riempi Rettangolo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Crea un nuovo poligono." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Sposta poligono" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Elimina selezionati" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Mantieni il poligono all'interno dell'area del rettangolo." @@ -12170,10 +12209,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12229,22 +12264,6 @@ msgstr "" "\"Export AAB\" è valido soltanto quanto \"Use Custom Build\" è abilitato." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "Nome file invalido! Il Bundle Android App richiede l'estensione *.aab." @@ -13072,6 +13091,7 @@ msgid "Assignment to uniform." msgstr "Assegnazione all'uniforme." #: servers/visual/shader_language.cpp +#, fuzzy msgid "Varyings can only be assigned in vertex function." msgstr "Varyings può essere assegnato soltanto nella funzione del vertice." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 1ea454e2f4..4b107d82e1 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-04 02:39+0000\n" +"PO-Revision-Date: 2020-11-24 16:44+0000\n" "Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" @@ -45,7 +45,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -54,7 +54,7 @@ msgstr "convert() ã®å¼•æ•°ã®åž‹ãŒç„¡åŠ¹ã§ã™ã€‚TYPE_* 定数を使ã£ã¦ãã #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "é•·ã•1ã®æ–‡å—列(æ–‡å—)ãŒå¿…è¦ã§ã™ã€‚" +msgstr "é•·ã•ãŒ 1 ã®æ–‡å—列 (æ–‡å—) ãŒå¿…è¦ã§ã™ã€‚" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -68,15 +68,15 @@ msgstr "å¼ä¸ã®ç„¡åŠ¹ãªå…¥åŠ› %i (渡ã•ã‚Œã¦ã„ã¾ã›ã‚“)" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "インスタンスãŒnull(渡ã•ã‚Œãªã„)ã§ã‚ã‚‹ãŸã‚ã€selfã¯ä½¿ç”¨ã§ãã¾ã›ã‚“" +msgstr "インスタンス㌠null (渡ã•ã‚Œãªã„) ã§ã‚ã‚‹ãŸã‚ã€self ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "演算å %s ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªã‚ªãƒšãƒ©ãƒ³ãƒ‰ã§ã™ã€%s åŠã³ %s。" +msgstr "演算å %s ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªã‚ªãƒšãƒ©ãƒ³ãƒ‰ã§ã™: %s 㨠%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" @@ -120,7 +120,7 @@ msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" -msgstr "解放" +msgstr "自由" #: editor/animation_bezier_editor.cpp msgid "Balanced" @@ -1056,14 +1056,14 @@ msgid "Owners Of:" msgstr "次ã®ã‚ªãƒ¼ãƒŠãƒ¼:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’プãƒã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)" +msgstr "" +"é¸æŠžã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’プãƒã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ(å–り消ã—ã¯ã§ãã¾ã›ã‚“)\n" +"削除ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã®ã‚´ãƒŸç®±ã«ã‚ã‚‹ã®ã§å¾©å…ƒã§ãã¾ã™ã€‚" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1071,7 +1071,8 @@ msgid "" "You can find the removed files in the system trash to restore them." msgstr "" "除去ã—よã†ã¨ã—ã¦ã„るファイルã¯ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã®å‹•ä½œã«å¿…è¦ã§ã™ã€‚\n" -"無視ã—ã¦é™¤åŽ»ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)" +"無視ã—ã¦é™¤åŽ»ã—ã¾ã™ã‹ï¼Ÿ(å–り消ã—ã¯ã§ãã¾ã›ã‚“)\n" +"削除ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã®ã‚´ãƒŸç®±ã«ã‚ã‚‹ã®ã§å¾©å…ƒã§ãã¾ã™ã€‚" #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1703,7 +1704,7 @@ msgstr "インãƒãƒ¼ãƒˆãƒ‰ãƒƒã‚¯" #: editor/editor_feature_profile.cpp msgid "Erase profile '%s'? (no undo)" -msgstr "プãƒãƒ•ã‚¡ã‚¤ãƒ« '%s'を消去ã—ã¾ã™ã‹? (å…ƒã«æˆ»ã›ã¾ã›ã‚“)" +msgstr "プãƒãƒ•ã‚¡ã‚¤ãƒ« '%s' を消去ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" @@ -1985,7 +1986,7 @@ msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" msgstr "" -"ファイル%sã‚’ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„ã‚‹ç•°ãªã‚‹ã‚¿ã‚¤ãƒ—ã®è¤‡æ•°ã®ã‚¤ãƒ³ãƒãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã™ã€‚イン" +"ファイル %s ã‚’ãƒã‚¤ãƒ³ãƒˆã—ã¦ã„ã‚‹ç•°ãªã‚‹ã‚¿ã‚¤ãƒ—ã®è¤‡æ•°ã®ã‚¤ãƒ³ãƒãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã™ã€‚イン" "ãƒãƒ¼ãƒˆã¯ä¸æ–ã•ã‚Œã¾ã—ãŸ" #: editor/editor_file_system.cpp @@ -2337,6 +2338,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"エディタã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ä¿å˜ã—よã†ã¨ã—ãŸéš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n" +"エディタã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ‡ãƒ¼ã‚¿ç”¨ãƒ‘スãŒæ›¸ãè¾¼ã¿å¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。" #: editor/editor_node.cpp msgid "" @@ -2344,15 +2347,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"既定ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒä¸Šæ›¸ãã•ã‚Œã¾ã—ãŸã€‚\n" +"既定ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’基本è¨å®šã«æˆ»ã™ã«ã¯ã€[レイアウトã®å‰Šé™¤] オプションを使用ã—" +"ã¦ã€æ—¢å®šã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’削除ã—ã¾ã™ã€‚" #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "レイアウトåãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ï¼" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "デフォルトã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’基本è¨å®šã«æˆ»ã—ã¾ã—ãŸã€‚" +msgstr "既定ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’基本è¨å®šã«æˆ»ã—ã¾ã—ãŸã€‚" #: editor/editor_node.cpp msgid "" @@ -3783,9 +3788,8 @@ msgid "Move To..." msgstr "移動..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "自動èªè¾¼ã¿ã‚’移動" +msgstr "ã”ã¿ç®±ã¸ç§»å‹•" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5246,7 +5250,7 @@ msgstr "水平垂直ガイドを作æˆ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "CanvasItem \"%s\" ã® Pivot Offset ã‚’ (%d, %d) ã«è¨å®šã—ã¾ã™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate %d CanvasItems" @@ -5257,37 +5261,32 @@ msgid "Rotate CanvasItem \"%s\" to %d degrees" msgstr "CanvasItem \"%s\" ã‚’ %d 度回転" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "CanvasItemを移動" +msgstr "CanvasItem \"%s\" ã®ã‚¢ãƒ³ã‚«ãƒ¼ã‚’移動" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Node2D \"%s\" ã‚’ (%s, %s) ã«ã‚¹ã‚±ãƒ¼ãƒ«ã—ã¾ã™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Control \"%s\" ã‚’ (%d, %d) ã«ãƒªã‚µã‚¤ã‚ºã—ã¾ã™" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "ã‚ャンãƒã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æ‹¡å¤§/縮å°" +msgstr "%d 個㮠CanvasItem を拡大 / 縮å°" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "ã‚ャンãƒã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æ‹¡å¤§/縮å°" +msgstr "CanvasItem \"%s\" ã‚’ (%s, %s) ã«æ‹¡å¤§ / 縮å°" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "CanvasItemを移動" +msgstr "%d 個㮠CanvasItem を移動" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "CanvasItemを移動" +msgstr "CanvasItem \"%s\" ã‚’ (%d, %d) ã«ç§»å‹•" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6564,18 +6563,16 @@ msgid "Move Points" msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’移動" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "ドラッグ: 回転" +msgstr "Command: 回転" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: ã™ã¹ã¦ç§»å‹•" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: スケール" +msgstr "Shift+Command: スケール" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6622,14 +6619,12 @@ msgid "Radius:" msgstr "åŠå¾„:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "ãƒãƒªã‚´ãƒ³ã¨UVを生æˆ" +msgstr "Polygonã‚’UVã«ã‚³ãƒ”ー" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Polygon2Dã«å¤‰æ›ã™ã‚‹" +msgstr "UVã‚’Polygon2Dã«ã‚³ãƒ”ー" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8178,13 +8173,12 @@ msgid "Paint Tile" msgstr "タイルをペイント" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+左マウスボタン: ç›´ç·šã«æã\n" -"Shift+Ctrl+左マウスボタン: 長方形ペイント" +"Shift+Command+左マウスボタン: 長方形ペイント" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8339,10 +8333,25 @@ msgid "Create a new rectangle." msgstr "æ–°ã—ã長方形を作æˆã€‚" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "長方形ペイント" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "æ–°è¦ãƒãƒªã‚´ãƒ³ã‚’生æˆã€‚" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "ãƒãƒªã‚´ãƒ³ã‚’移動" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "é¸æŠžå¯¾è±¡ã‚’削除" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "é ˜åŸŸRect内ã®ãƒãƒªã‚´ãƒ³ã‚’ä¿æŒã—ã¾ã™ã€‚" @@ -8712,9 +8721,8 @@ msgid "Add Node to Visual Shader" msgstr "ビジュアルシェーダã«ãƒŽãƒ¼ãƒ‰ã‚’è¿½åŠ " #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "ノードを移動" +msgstr "ノードã®ç§»å‹•" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8734,9 +8742,8 @@ msgid "Visual Shader Input Type Changed" msgstr "ビジュアルシェーダã®å…¥åŠ›ã‚¿ã‚¤ãƒ—ãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "統一åã‚’è¨å®š" +msgstr "UniformRef ã®å称変更" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9443,7 +9450,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "æ—¢å˜ã® uniform ã¸ã®å‚ç…§ã§ã™ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12076,11 +12083,7 @@ msgstr "エディタè¨å®šã®ã‚«ã‚¹ã‚¿ãƒ ビルドã®Android SDKパスãŒç„¡åŠ¹ã #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "'platform-tools' ディレクトリãŒã‚ã‚Šã¾ã›ã‚“ï¼" #: platform/android/export/export.cpp msgid "" @@ -12137,22 +12140,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" +"\"Export AAB\" 㯠\"Use Custom Build\" ãŒæœ‰åŠ¹ã§ã‚ã‚‹å ´åˆã«ã®ã¿æœ‰åŠ¹ã«ãªã‚Šã¾ã™ã€‚" #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." @@ -12203,7 +12191,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "出力çµæžœã®ç§»å‹•ä¸" #: platform/android/export/export.cpp msgid "" @@ -12970,6 +12958,21 @@ msgstr "Varying変数ã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã msgid "Constants cannot be modified." msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "'build-tools' ディレクトリãŒã‚ã‚Šã¾ã›ã‚“ï¼" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "zipalign ツールãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" + +#~ msgid "Aligning APK..." +#~ msgstr "APKを最é©åŒ–..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "APKã®æœ€é©åŒ–を完了ã§ãã¾ã›ã‚“。" + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "未最é©åŒ–ã®APKを削除ã§ãã¾ã›ã‚“。" + #~ msgid "Error trying to save layout!" #~ msgstr "レイアウトã®ä¿å˜ã‚¨ãƒ©ãƒ¼ï¼" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index 63bd2b2d6e..55895c0e5e 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -8317,10 +8317,25 @@ msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "შექმნáƒ" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "წáƒáƒ•áƒ¨áƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11952,10 +11967,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12001,22 +12012,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 24d0eed7f2..9d1ccc2440 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -8296,10 +8296,25 @@ msgid "Create a new rectangle." msgstr "새로운 사ê°í˜•ì„ 만ë“니다." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "ì‚¬ê° ì˜ì— ì¹ í•˜ê¸°" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "새로운 í´ë¦¬ê³¤ì„ 만ë“니다." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "í´ë¦¬ê³¤ ì´ë™" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "ì„ íƒ í•ëª© ì‚ì œ" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "사ê°í˜• ë‚´ë¶€ì— í´ë¦¬ê³¤ì„ ìœ ì§€." @@ -11999,10 +12014,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12056,22 +12067,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "\"Export AAB\"는 \"Use Custom Build\"ê°€ 활성화 ëœ ê²½ìš°ì—만 ìœ íš¨í•©ë‹ˆë‹¤." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "ìž˜ëª»ëœ íŒŒì¼ëª…! Android App Bundleì—는 * .aab 확장ìžê°€ 필요합니다." diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 505f8a7f64..28cb35e017 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -8290,10 +8290,25 @@ msgstr "Sukurti NaujÄ…" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Sukurti NaujÄ…" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Keisti Poligono SkalÄ™" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Keisti Poligono SkalÄ™" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "IÅ¡trinti pasirinktus raktažodžius" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11923,10 +11938,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11972,22 +11983,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index e6f01427dd..2284a0fe02 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -8130,10 +8130,25 @@ msgid "Create a new rectangle." msgstr "Izveidot jaunu taisnstÅ«ri." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Izveidot jaunu taisnstÅ«ri." + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Izveidot jaunu daudzstÅ«ri." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Izveidot" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "IzdzÄ“st IzvÄ“lÄ“to(Äs) AtslÄ“gu(as)" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11722,10 +11737,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11770,22 +11781,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/mi.po b/editor/translations/mi.po index 992701c61d..adae136a19 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -8033,10 +8033,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11568,10 +11580,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11616,22 +11624,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index b7d56c64a0..f09e381719 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -8049,10 +8049,23 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "സൂചികകൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11585,10 +11598,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11633,22 +11642,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po index f0658923ed..8ea8dc7027 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -8040,10 +8040,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11576,10 +11588,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11624,22 +11632,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 2db5b0bd78..01affc2669 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -8167,10 +8167,24 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Semua Pilihan" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Padam Kunci Terpilih" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11720,10 +11734,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11768,22 +11778,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 20037160d2..4028e7b357 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -8797,10 +8797,25 @@ msgstr "Lag ny %s" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Ny Scene" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Lag en ny polygon fra bunnen." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Flytt Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Slett Valgte" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12580,10 +12595,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12629,22 +12640,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 485dca4cf3..9311078bae 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -8385,10 +8385,25 @@ msgid "Create a new rectangle." msgstr "Creëer nieuwe driehoek." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Teken Driehoek" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Nieuwe veelhoek aanmaken." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Beweeg Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Geselecteerde Verwijderen" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Houd de veelhoek binnen het rechthoekige gebied." @@ -12157,10 +12172,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12215,22 +12226,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/or.po b/editor/translations/or.po index c54279ee27..e5c61be021 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -8039,10 +8039,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11574,10 +11586,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11622,22 +11630,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index ad95b4fc23..580715c76d 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -48,7 +48,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-27 18:26+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" @@ -58,7 +58,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 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1067,22 +1067,23 @@ msgid "Owners Of:" msgstr "WÅ‚aÅ›ciciele:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Usunąć wybrane pliki z projektu? (Nie można ich przywrócić)" +msgstr "" +"Usunąć wybrane pliki z projektu? (nie można tego cofnąć)\n" +"Możesz znaleźć usuniÄ™te pliki w systemowym koszu, by je przywrócić." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Usuwany plik jest wymagany przez inne zasoby do dziaÅ‚ania.\n" -"Usunąć mimo to? (Nie można tego cofnąć)" +"Usuwane pliki sÄ… wymagane przez inne zasoby, żeby mogÅ‚y one dziaÅ‚ać.\n" +"Usunąć mimo to? (nie można tego cofnąć)\n" +"Możesz znaleźć usuniÄ™te pliki w systemowym koszu, by je przywrócić." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1635,34 +1636,31 @@ msgstr "" "Enabled\"." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Platforma docelowa wymaga dla GLES2 kompresji tekstur \"ETC\". WÅ‚Ä…cz " -"\"Import Etc\" w Ustawieniach Projektu." +"Platforma docelowa wymaga dla GLES2 kompresji tekstur \"PVRTC\". WÅ‚Ä…cz " +"\"Import Pvrtc\" w Ustawieniach Projektu." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Platforma docelowa wymaga dla GLES3 kompresji tekstur \"ETC2\". WÅ‚Ä…cz " -"\"Import Etc 2\" w Ustawieniach Projektu." +"Platforma docelowa wymaga dla GLES3 kompresji tekstur \"ETC2\" lub \"PVRTC" +"\". WÅ‚Ä…cz \"Import Etc 2\" lub \"Import Pvrtc\" w Ustawieniach Projektu." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for the driver fallback " "to GLES2.\n" "Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" -"Platforma docelowa wymaga kompresji tekstur \"ETC\", by sterownik awaryjny " +"Platforma docelowa wymaga kompresji tekstur \"PVRTC\", by sterownik awaryjny " "GLES2 mógÅ‚ zadziaÅ‚ać.\n" -"WÅ‚Ä…cz \"Import Etc\" w Ustawieniach Projektu lub wyÅ‚Ä…cz \"Driver Fallback " +"WÅ‚Ä…cz \"Import Pvrtc\" w Ustawieniach Projektu lub wyÅ‚Ä…cz \"Driver Fallback " "Enabled\"." #: editor/editor_export.cpp platform/android/export/export.cpp @@ -2344,6 +2342,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"WystÄ…piÅ‚ bÅ‚Ä…d podczas próby zapisu ukÅ‚adu edytora.\n" +"Upewnij siÄ™, że Å›cieżka ustawieÅ„ użytkownika edytora ma możliwość zapisu." #: editor/editor_node.cpp msgid "" @@ -2351,15 +2351,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"DomyÅ›lny ukÅ‚ad edytora nadpisany.\n" +"By przywrócić DomyÅ›lny ukÅ‚ad do bazowych ustawieÅ„, użyj opcji UsuÅ„ ukÅ‚ad i " +"usuÅ„ DomyÅ›lny ukÅ‚ad." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Nie znaleziono nazwy ukÅ‚adu!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Przywrócono domyÅ›lny ukÅ‚ad do ustawieÅ„ bazowych." +msgstr "Przywrócono DomyÅ›lny ukÅ‚ad do ustawieÅ„ bazowych." #: editor/editor_node.cpp msgid "" @@ -3791,9 +3793,8 @@ msgid "Move To..." msgstr "PrzenieÅ› do..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Przemieść Autoload" +msgstr "PrzenieÅ› do kosza" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5260,50 +5261,43 @@ msgstr "Utwórz poziomÄ…Â i pionowÄ… prowadnicÄ™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Ustaw Pivot Offset dla CanvasItem \"%s\" na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Obróć CanvasItem" +msgstr "Obróć %d wÄ™złów CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Obróć CanvasItem" +msgstr "Obróć CanvasItem \"%s\" do %d stopni" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "PrzesuÅ„ CanvasItem" +msgstr "PrzesuÅ„ Anchor dla CanvasItem \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Przeskaluj Node2D \"%s\" do (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "ZmieÅ„ rozmiar Control \"%s\" na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Skaluj CanvasItem" +msgstr "Przeskaluj %d wÄ™złów CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Skaluj CanvasItem" +msgstr "Przeskaluj CanvasItem \"%s\" do (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "PrzesuÅ„ CanvasItem" +msgstr "PrzesuÅ„ %d wÄ™złów CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "PrzesuÅ„ CanvasItem" +msgstr "PrzesuÅ„ CanvasItem \"%s\" na (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6585,18 +6579,16 @@ msgid "Move Points" msgstr "PrzesuÅ„ punkty" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "PrzeciÄ…gnij: Obróć" +msgstr "Command: Obróć" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: PrzesuÅ„ wszystko" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: Skaluj" +msgstr "Shift+Command: Skaluj" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6643,14 +6635,12 @@ msgid "Radius:" msgstr "PromieÅ„:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Utwórz wielokÄ…t i UV" +msgstr "Kopiuj wielokÄ…t do UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "ZamieÅ„ na Polygon2D" +msgstr "Kopiuj UV do wielokÄ…ta" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8198,13 +8188,12 @@ msgid "Paint Tile" msgstr "Maluj kafelek" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+LPM: Rysowanie linii\n" -"Shift+Ctrl+LPM: Malowanie prostokÄ…ta" +"Shift+Command+LPM: Malowanie prostokÄ…ta" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8359,10 +8348,25 @@ msgid "Create a new rectangle." msgstr "Utwórz nowy prostokÄ…t." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Malowanie prostokÄ…tne" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Utwórz nowy wielokÄ…t." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "PrzesuÅ„ WielokÄ…t" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "UsuÅ„ zaznaczone" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Trzymaj wielokÄ…t wewnÄ…trz regionu ProstokÄ…ta." @@ -8730,9 +8734,8 @@ msgid "Add Node to Visual Shader" msgstr "Dodaj WÄ™zeÅ‚ do Wizualnego Shadera" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "WÄ™zeÅ‚ przesuniÄ™ty" +msgstr "WÄ™zeÅ‚/y przesuniÄ™te" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8752,9 +8755,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Typ wejÅ›cia shadera wizualnego zmieniony" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Ustaw nazwÄ™ uniformu" +msgstr "Nazwa UniformRef zmieniona" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9471,7 +9473,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Referencja do istniejÄ…cego uniformu." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12108,11 +12110,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Folder \"platform-tools\" nie istnieje!" #: platform/android/export/export.cpp msgid "" @@ -12167,34 +12165,20 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" +"\"Eksportuj AAB\" jest ważne tylko gdy \"Use Custom Build\" jest wÅ‚Ä…czone." #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"NieprawidÅ‚owa nazwa pliku! Android App Bundle wymaga rozszerzenia *.aab." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "APK Expansion nie jest kompatybilne z Android App Bundle." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "" +msgstr "NieprawidÅ‚owa nazwa pliku! APK Androida wymaga rozszerzenia *.apk." #: platform/android/export/export.cpp msgid "" @@ -12231,13 +12215,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Przesuwam wyjÅ›cie" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Nie udaÅ‚o siÄ™ skopiować i przemianować pliku eksportu, sprawdź folder " +"projektu gradle po informacje." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13004,6 +12990,21 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchoÅ‚ków." msgid "Constants cannot be modified." msgstr "StaÅ‚e nie mogÄ… być modyfikowane." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Brakuje folderu \"build-tools\"!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Nie udaÅ‚o siÄ™ znaleźć narzÄ™dzia zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Uzgadnianie APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Nie udaÅ‚o siÄ™ ukoÅ„czyć uzgadniania APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Nie udaÅ‚o siÄ™ usunąć nieuzgodnionego APK." + #~ msgid "Error trying to save layout!" #~ msgstr "BÅ‚Ä…d podczas zapisu ukÅ‚adu!" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index 715962a2c0..740aaabb1e 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -8320,10 +8320,25 @@ msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Ye be fixin' Signal:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12005,10 +12020,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12054,22 +12065,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/pt.po b/editor/translations/pt.po index f21cb0cb6d..c114c09299 100644 --- a/editor/translations/pt.po +++ b/editor/translations/pt.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-19 21:08+0000\n" +"PO-Revision-Date: 2020-11-24 16:44+0000\n" "Last-Translator: João Lopes <linux-man@hotmail.com>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/" "godot/pt/>\n" @@ -31,7 +31,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.1-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -695,7 +695,7 @@ msgstr "Mudar valor do Array" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "Vai para linha" +msgstr "Vai para Linha" #: editor/code_editor.cpp msgid "Line Number:" @@ -740,7 +740,7 @@ msgstr "Padrão" #: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "Alternar painel de Scripts" +msgstr "Alternar Painel de Scripts" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -1043,14 +1043,14 @@ msgid "Owners Of:" msgstr "Proprietários de:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Remover ficheiros selecionados do Projeto? (Sem desfazer)" +msgstr "" +"Remover ficheiros selecionados do Projeto? (sem desfazer)\n" +"Pode encontrar os ficheiros removidos na Reciclagem do sistema." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1059,7 +1059,8 @@ msgid "" msgstr "" "Os ficheiros a serem removidos são necessários para que outros recursos " "funcionem.\n" -"Remover mesmo assim? (sem anular)" +"Remover mesmo assim? (sem desfazer)\n" +"Pode encontrar os ficheiros removidos na Reciclagem do sistema." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1332,7 +1333,7 @@ msgstr "Opções de barramento" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "Duplicado" +msgstr "Duplicar" #: editor/editor_audio_buses.cpp msgid "Reset Volume" @@ -1613,35 +1614,32 @@ msgstr "" "Recurso ativo'." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Plataforma Alvo exige compressão de textura 'ETC' para GLES2. Ative " -"'Importar Etc' nas Configurações do Projeto." +"Plataforma Alvo exige compressão de textura 'PVRTC' para GLES2. Ative " +"'Importar Pvrtc' nas Configurações do Projeto." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Plataforma Alvo exige compressão de textura 'ETC2' para GLES3. Ative " -"'Importar Etc 2' nas Configurações do Projeto." +"Plataforma Alvo exige compressão de textura 'ETC2' ou 'PVRTC' para GLES3. " +"Ative 'Importar Etc 2' ou 'Importar Pvrtc' nas Configurações do Projeto." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for the driver fallback " "to GLES2.\n" "Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" -"Plataforma Alvo exige compressão de textura 'ETC' para o driver de recurso " +"Plataforma Alvo exige compressão de textura 'PVRTC' para o driver de recurso " "em GLES2.\n" -"Ative 'Importar Etc' nas Configurações do Projeto, ou desative 'Driver de " -"Recurso ativo'." +"Ative 'Importar Pvrtc' nas Configurações do Projeto, ou desative 'Driver de " +"Recurso Ativo'." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1893,19 +1891,19 @@ msgstr "Subir" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "Alternar Ficheiros escondidos" +msgstr "Alternar Ficheiros Escondidos" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "Alternar favorito" +msgstr "Alternar Favorito" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "Alternar modo" +msgstr "Alternar Modo" #: editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "Focar Caminho" +msgstr "Caminho de Foco" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" @@ -2326,6 +2324,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Ocorreu um erro ao tentar guardar o layout do editor.\n" +"Confirme que o caminho dos dados do utilizador é gravável." #: editor/editor_node.cpp msgid "" @@ -2333,15 +2333,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Layout predefinido do editor anulado.\n" +"Para restaurar o layout predefinido nas configurações base, use a opção " +"Apagar Layout e remova o layout Predefinido." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Nome do Modelo não encontrado!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Modelo predefinido restaurado para as configurações base." +msgstr "Modelo Predefinido restaurado para as configurações base." #: editor/editor_node.cpp msgid "" @@ -2694,7 +2696,7 @@ msgstr "Posição do Painel" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "Modo livre de distrações" +msgstr "Modo Livre de Distrações" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." @@ -2825,7 +2827,7 @@ msgstr "Explorador de Recursos Órfãos..." #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "Sair para a lista de Projetos" +msgstr "Sair para a Lista de Projetos" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp @@ -2854,7 +2856,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Small Deploy with Network Filesystem" -msgstr "Distribuição pequena com Sistema de Ficheiros em Rede" +msgstr "Pequena Distribuição com Sistema de Ficheiros de Rede" #: editor/editor_node.cpp msgid "" @@ -2880,8 +2882,8 @@ msgid "" "When this option is enabled, collision shapes and raycast nodes (for 2D and " "3D) will be visible in the running project." msgstr "" -"Com esta opção ativa, formas de colisão e nós raycast (para 2D e 3D) serão " -"visÃveis no projeto em execução." +"Quando esta opção está ativada, as formas de colisões e nós raycast (para 2D " +"e 3D) serão visÃveis no projeto em execução." #: editor/editor_node.cpp msgid "Visible Navigation" @@ -2941,7 +2943,7 @@ msgstr "Apresentação do Editor" #: editor/editor_node.cpp msgid "Take Screenshot" -msgstr "Captura do ecrã" +msgstr "Captura do Ecrã" #: editor/editor_node.cpp msgid "Screenshots are stored in the Editor Data/Settings Folder." @@ -3011,7 +3013,7 @@ msgstr "Comunidade" #: editor/editor_node.cpp msgid "About" -msgstr "Sobre Nós" +msgstr "Sobre" #: editor/editor_node.cpp msgid "Play the project." @@ -3174,7 +3176,7 @@ msgstr "Abrir Editor 3D" #: editor/editor_node.cpp msgid "Open Script Editor" -msgstr "Abrir Editor de Scripts" +msgstr "Abrir Editor de Script" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" @@ -3779,9 +3781,8 @@ msgid "Move To..." msgstr "Mover para..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Mover Carregamento Automático" +msgstr "Mover para Reciclagem" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -5242,50 +5243,43 @@ msgstr "Criar Guias Horizontais e Verticais" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Definir CanvasItem \"%s\" Pivot Offset para (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Rodar CanvasItem" +msgstr "Rodar %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Rodar CanvasItem" +msgstr "Rodar CanvasItem \"%s\" para %d graus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Mover CanvasItem" +msgstr "Mover CanvasItem \"%s\" Âncora" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Escalar Node2D \"%s\" para (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "Redimensionar Controlo \"%s\" para (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "Escalar CanvasItem" +msgstr "Escalar %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "Escalar CanvasItem" +msgstr "Escalar CanvasItem \"%s\" para (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "Mover CanvasItem" +msgstr "Mover %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "Mover CanvasItem" +msgstr "Mover CanvasItem \"%s\" para (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5466,7 +5460,7 @@ msgstr "Reposição do Zoom" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode" -msgstr "Modo seleção" +msgstr "Modo Seleção" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -5488,12 +5482,12 @@ msgstr "Alt+RMB: seleção da lista de profundidade" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode" -msgstr "Modo mover" +msgstr "Modo Mover" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode" -msgstr "Modo rodar" +msgstr "Modo Rodar" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5637,7 +5631,7 @@ msgstr "Mostrar Grelha Sempre" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Mostrar ajudantes" +msgstr "Mostrar Ajudantes" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5645,7 +5639,7 @@ msgstr "Mostrar réguas" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Mostrar guias" +msgstr "Mostrar Guias" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5661,7 +5655,7 @@ msgstr "Mostrar Grupo e Bloquear Ãcones" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "Centrar seleção" +msgstr "Centrar Seleção" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" @@ -5718,7 +5712,7 @@ msgstr "Copiar pose" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "Limpar pose" +msgstr "Limpar Pose" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" @@ -6561,18 +6555,16 @@ msgid "Move Points" msgstr "Mover Ponto" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Arrastar: Rotação" +msgstr "Comando: Rodar" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "Shift: Mover tudo" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "Shift+Ctrl: Escalar" +msgstr "Shift+Comando: Escalar" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6621,14 +6613,12 @@ msgid "Radius:" msgstr "Raio:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Criar PolÃgono & UV" +msgstr "Copiar PolÃgono para UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Converter para Polygon2D" +msgstr "Copiar UV para PolÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -6883,7 +6873,7 @@ msgstr "Reabrir Script Fechado" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "Guardar tudo" +msgstr "Guardar Tudo" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" @@ -6932,11 +6922,11 @@ msgstr "Executar" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" -msgstr "Passar dentro" +msgstr "Passar Dentro" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "Passar sobre" +msgstr "Passar Sobre" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" @@ -7093,11 +7083,11 @@ msgstr "Cortar" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "Selecionar tudo" +msgstr "Selecionar Tudo" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" -msgstr "Apagar linha" +msgstr "Apagar Linha" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" @@ -7109,7 +7099,7 @@ msgstr "Indentar à direita" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "Alternar comentário" +msgstr "Alternar Comentário" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" @@ -7125,11 +7115,11 @@ msgstr "Mostrar todas as linhas" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "Clonar abaixo" +msgstr "Clonar Abaixo" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "Completar sÃmbolo" +msgstr "Completar SÃmbolo" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" @@ -7137,7 +7127,7 @@ msgstr "Avaliar Seleção" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "Apagar espaços nos limites" +msgstr "Apagar Espaços nos Limites" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Spaces" @@ -7149,7 +7139,7 @@ msgstr "Converter Indentação em Tabulação" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" -msgstr "Indentação automática" +msgstr "Indentação Automática" #: editor/plugins/script_text_editor.cpp msgid "Find in Files..." @@ -7157,7 +7147,7 @@ msgstr "Localizar em Ficheiros..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "Ajuda contextual" +msgstr "Ajuda Contextual" #: editor/plugins/script_text_editor.cpp msgid "Toggle Bookmark" @@ -7190,7 +7180,7 @@ msgstr "Alternar Breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Remover todos os Breakpoints" +msgstr "Remover Todos os Breakpoints" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Breakpoint" @@ -7454,35 +7444,35 @@ msgstr "Não disponÃvel para o renderizador GLES2." #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "Vista livre esquerda" +msgstr "Freelook Esquerda" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "Vista livre direita" +msgstr "Freelook Direita" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Forward" -msgstr "Vista livre frente" +msgstr "Freelook Frente" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "Vista livre trás" +msgstr "Freelook Trás" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "Vista livre cima" +msgstr "Freelook Cima" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Down" -msgstr "Vista livre baixo" +msgstr "Freelook Baixo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "Modificador de velocidade Freelook" +msgstr "Freelook Modificador de Velocidade" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Slow Modifier" -msgstr "Modificador de Velocidade Freelook" +msgstr "Freelook Modificador de Lentidão" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Rotation Locked" @@ -7543,27 +7533,27 @@ msgstr "Usar Ajuste" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "Vista de fundo" +msgstr "Vista de Fundo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "Vista de topo" +msgstr "Vista de Topo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "Vista de trás" +msgstr "Vista de Trás" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "Vista de frente" +msgstr "Vista de Frente" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "Vista esquerda" +msgstr "Vista Esquerda" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "Vista direita" +msgstr "Vista Direita" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal View" @@ -7575,11 +7565,11 @@ msgstr "Inserir Chave de Animação" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "Focar na origem" +msgstr "Focar na Origem" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "Focar na seleção" +msgstr "Focar na Seleção" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -8111,7 +8101,7 @@ msgstr "Ficheiro Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" -msgstr "Apagar seleção" +msgstr "Apagar Seleção" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Fix Invalid Tiles" @@ -8136,7 +8126,7 @@ msgstr "Pintar retângulo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket Fill" -msgstr "Preencher" +msgstr "Balde de Enchimento" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" @@ -8171,13 +8161,12 @@ msgid "Paint Tile" msgstr "Pintar Tile" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+LMB: Desenho de Linha\n" -"Shift+Ctrl+LMB: Pintura de Retângulo" +"Shift+Comando+LMB: Pintura de Retângulo" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8332,10 +8321,25 @@ msgid "Create a new rectangle." msgstr "Criar novo retângulo." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Pintar retângulo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Criar um novo polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Mover PolÃgono" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Apagar Selecionado" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Manter polÃgono dentro da região Rect." @@ -8703,9 +8707,8 @@ msgid "Add Node to Visual Shader" msgstr "Adicionar Nó ao Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Nó Movido" +msgstr "Nó(s) Movido(s)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8725,9 +8728,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Alterado Tipo de Entrada do Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Definir Nome do Uniform" +msgstr "Nome de UniformRef Alterado" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9440,7 +9442,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Uma referência para um uniforme existente." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9577,15 +9579,15 @@ msgstr "Recursos" #: editor/project_export.cpp msgid "Export all resources in the project" -msgstr "Exportar todos os recursos do Projeto" +msgstr "Exportar todos os recursos do projeto" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "Exportar cenas (e dependências) selecionadas" +msgstr "Exportar cenas selecionadas (e dependências)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" -msgstr "Exportar recursos (e dependências) selecionados" +msgstr "Exportar recursos selecionados (e dependências)" #: editor/project_export.cpp msgid "Export Mode:" @@ -10411,7 +10413,7 @@ msgstr "Selecione Método" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp msgid "Batch Rename" -msgstr "Renomear em massa" +msgstr "Renomear em Massa" #: editor/rename_dialog.cpp msgid "Replace:" @@ -11629,7 +11631,7 @@ msgstr "" #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "O nó retornou uma sequência de saÃda (output) incorreta: " +msgstr "O nó retornou uma sequência de saÃda incorreta: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" @@ -11923,7 +11925,7 @@ msgstr "Selecionar ou criar uma função para editar o gráfico." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "Apagar Selecionados" +msgstr "Apagar Selecionado" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" @@ -11947,7 +11949,7 @@ msgstr "Atualizar Gráfico" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" -msgstr "Editar Membros" +msgstr "Editar Membro" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -12081,11 +12083,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Diretoria 'platform-tools' em falta!" #: platform/android/export/export.cpp msgid "" @@ -12140,34 +12138,21 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" +"\"Exportar AAB\" só é válido quando \"Usar Compilação Personalizada\" está " +"ativa." #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" +"Nome de ficheiro inválido! O Pacote Android App exige a extensão *.aab." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "Expansão APK não compatÃvel com Pacote Android App." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "" +msgstr "Nome de ficheiro inválido! APK Android exige a extensão *.apk." #: platform/android/export/export.cpp msgid "" @@ -12204,13 +12189,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "A mover saÃda" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Incapaz de copiar e renomear ficheiro de exportação, verifique diretoria de " +"projeto gradle por resultados." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -12967,6 +12954,21 @@ msgstr "Variações só podem ser atribuÃdas na função vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem ser modificadas." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Diretoria 'build-tools' em falta!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Incapaz de localizar a ferramenta zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "A alinhar APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Incapaz de completar o alinhamento APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Incapaz de apagar o APK não-alinhado." + #~ msgid "Error trying to save layout!" #~ msgstr "Erro ao tentar guardar o Modelo!" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index a4bc29327b..8e2b759cec 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -8430,10 +8430,25 @@ msgid "Create a new rectangle." msgstr "Criar um novo retângulo." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Pintura Retângular" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Criar um novo polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Mover PolÃgono" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Excluir Selecionados" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Mantenha o polÃgono dentro da região Rect." @@ -12188,10 +12203,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12246,22 +12257,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 182c978ee8..a36099f15d 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -8461,10 +8461,25 @@ msgstr "CreaÈ›i un dreptunghi nou." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Scenă Nouă" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Creează un nou poligon de la zero." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Deplasare poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "ÅžtergeÈ›i Cheile Selectate" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12128,10 +12143,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12176,22 +12187,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 0a0c72a78f..1ed11041e2 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -92,7 +92,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-08 10:26+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -102,7 +102,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1112,22 +1112,23 @@ msgid "Owners Of:" msgstr "Владельцы:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Удалить выбранные файлы из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð²Ð¾ÑÑтановить)" +msgstr "" +"Удалить выбранные файлы из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð²Ð¾ÑÑтановить)\n" +"Ð’Ñ‹ можете найти удалённые файлы в Корзине, чтобы воÑÑтановить их." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"УдалÑемый файл требуетÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ работы других реÑурÑов.\n" -"Ð’ÑÑ‘ равно удалить его? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)" +"УдалÑемые файлы требуютÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ работы других реÑурÑов.\n" +"Ð’ÑÑ‘ равно удалить их? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)\n" +"Ð’Ñ‹ можете найти удалённые файлы в Корзине, чтобы воÑÑтановить их." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2391,6 +2392,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Произошла ошибка при попытке Ñохранить макет редактора.\n" +"УбедитеÑÑŒ, что путь к пользовательÑким данным редактора доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." #: editor/editor_node.cpp msgid "" @@ -2398,15 +2401,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Макет редактора по умолчанию перезапиÑан.\n" +"Чтобы воÑÑтановить базовые наÑтройки макета по умолчанию, воÑпользуйтеÑÑŒ " +"опцией «Удалить макет» и удалите макет по умолчанию." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Ðазвание макета не найдено!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Вернуть макет по умолчанию к Ñтандартному." +msgstr "Макет по умолчанию воÑÑтановлен к его базовым наÑтройкам." #: editor/editor_node.cpp msgid "" @@ -3841,9 +3846,8 @@ msgid "Move To..." msgstr "ПеремеÑтить в..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "ПеремеÑтить автозагрузку" +msgstr "Удалить в Корзину" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8391,10 +8395,25 @@ msgid "Create a new rectangle." msgstr "Создать новый прÑмоугольник." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "ПрÑÐ¼Ð¾ÑƒÐ³Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾ÐºÑ€Ð°Ñка" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Создать новый полигон." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Передвинуть полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Удалить выделенное" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Держать полигон внутри облаÑти Rect." @@ -12140,11 +12159,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Â«platform-tools» отÑутÑтвует!" #: platform/android/export/export.cpp msgid "" @@ -12202,22 +12217,6 @@ msgstr "" "пользовательÑкую Ñборку»." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android App Bundle требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.aab." @@ -13028,6 +13027,21 @@ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только Ð msgid "Constants cannot be modified." msgstr "КонÑтанты не могут быть изменены." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Â«build-tools» отÑутÑтвует!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Ðе удалоÑÑŒ найти инÑтрумент zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Выравнивание APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Ðевозможно завершить выравнивание APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Ðе удалоÑÑŒ удалить невыровненный APK." + #~ msgid "Error trying to save layout!" #~ msgstr "Ошибка при попытке Ñохранить макет!" diff --git a/editor/translations/si.po b/editor/translations/si.po index a37f322236..5afc820f33 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -8104,10 +8104,23 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "à¶à·à¶»à·à¶œà¶à·Š යà¶à·”රු මක෠දමන්න" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11668,10 +11681,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11716,22 +11725,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 2ea30329d5..bfffcb5afc 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -8346,10 +8346,25 @@ msgstr "VytvoriÅ¥ adresár" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Nová Scéna" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "VytvoriÅ¥ adresár" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Signály:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "ZmazaÅ¥ oznaÄené kľúÄ(e)" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12022,10 +12037,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12071,22 +12082,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 018ffe7b03..8e123095e3 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -8673,10 +8673,25 @@ msgstr "Ustvari Nov %s" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Nov Prizor" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Ustvarite Poligon" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Uredi Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "IzbriÅ¡i Izbrano" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12409,10 +12424,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12458,22 +12469,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index f9b1341f29..4cd813a759 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -8383,10 +8383,25 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Skenë e Re" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Krijo një Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Fshi Çelësat e Zgjedhur" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12010,10 +12025,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12058,22 +12069,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 06298476d6..b941a7097c 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -9159,11 +9159,26 @@ msgstr "Ðаправи нов" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Цртање правоугаоником" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Ðаправи нови полигон од почетка." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Polygon" +msgstr "Помери полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Обриши одабрани Кључ/еве" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Keep polygon inside region Rect." msgstr "Задржи многоугао унутар региона Четвороугла." @@ -13610,10 +13625,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp #, fuzzy msgid "" "Android build template not installed in the project. Install it from the " @@ -13663,22 +13674,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 2f3379ec14..db169729e3 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -8161,10 +8161,25 @@ msgstr "Napravi" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Napravi" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11757,10 +11772,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11805,22 +11816,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index a3c1c190dc..3d2eea1ceb 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -8558,10 +8558,25 @@ msgstr "Skapa Ny" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Ny Scen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Skapa Prenumeration" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Redigera Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Ta bort valda nycklar" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12295,10 +12310,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12344,22 +12355,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index cf3e8a2cc3..4a056fc781 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -8105,10 +8105,24 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•à®³à¯" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11667,10 +11681,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11715,22 +11725,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index 235f63fdcc..8d186752d1 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -8042,10 +8042,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11578,10 +11590,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11626,22 +11634,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 84b8d405b5..60db227d35 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-31 23:15+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Thanachart Monpassorn <nunf_2539@hotmail.com>\n" "Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/" "th/>\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1020,22 +1020,23 @@ msgid "Owners Of:" msgstr "เจ้าขà¸à¸‡à¸‚à¸à¸‡:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "ลบไฟล์ที่เลืà¸à¸à¸à¸à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•à¹Œ? (à¸à¸¹à¹‰à¸„ืนไม่ได้)" +msgstr "" +"ลบไฟล์ที่เลืà¸à¸à¸à¸à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•à¹Œ? (ย้à¸à¸™à¸à¸¥à¸±à¸šà¹„ม่ได้)\n" +"คุณสามารถหาไฟล์ที่ลบได้จาà¸à¸–ังขยะเพื่à¸à¸—ี่จะà¸à¸¹à¹‰à¸„ืน" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸¥à¸š จำเป็นสำหรับใช้งานโดยทรัพยาà¸à¸£à¸à¸±à¸™à¸à¸·à¹ˆà¸™\n" -"จะทำà¸à¸²à¸£à¸¥à¸šà¸«à¸£à¸·à¸à¹„ม่? (คืนà¸à¸¥à¸±à¸šà¹„ม่ได้)" +"ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸¥à¸š ถูà¸à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹‚ดยทรัพยาà¸à¸£à¸à¸±à¸™à¸à¸·à¹ˆà¸™\n" +"จะทำà¸à¸²à¸£à¸¥à¸šà¸«à¸£à¸·à¸à¹„ม่? (ย้à¸à¸™à¸à¸¥à¸±à¸šà¹„ม่ได้)\n" +"คุณสามารถหาไฟล์ที่ลบà¹à¸¥à¹‰à¸§à¹ƒà¸™à¸–ังขยะเพื่à¸à¸—ี่จะà¸à¸¹à¹‰à¸„ืน" #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2280,6 +2281,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"เà¸à¸´à¸”ข้à¸à¸œà¸´à¸”พลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸à¹€à¸¥à¹€à¸à¸²à¸•à¹Œà¸‚à¸à¸‡à¹€à¸à¸”ิเตà¸à¸£à¹Œ\n" +"ตรวจสà¸à¸šà¹ƒà¸«à¹‰à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸—ี่à¸à¸¢à¸¹à¹ˆà¸‚้à¸à¸¡à¸¹à¸¥à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹€à¸à¸”ิเตà¸à¸£à¹Œà¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸à¹‰à¹„ขได้" #: editor/editor_node.cpp msgid "" @@ -2287,15 +2290,16 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"เลเà¸à¸²à¸•à¹Œà¹€à¸à¸”ิเตà¸à¸£à¹Œà¸”ั้งเดิมถูà¸à¹€à¸‚ียนทับ\n" +"เพื่à¸à¸—ี่จะà¸à¸¹à¹‰à¸„ืนเลเà¸à¸²à¸•à¹Œà¸”ั้งเดิมไปยังà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพื้นà¸à¸²à¸™ ใช้à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า Delete Layout à¹à¸¥à¸°à¸¥à¸šà¹€à¸¥à¹€à¸à¸²à¸•à¹Œà¸•à¸±à¹‰à¸‡à¹€à¸”ิม" #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "ไม่พบชื่à¸à¹€à¸¥à¸¢à¹Œà¹€à¸à¸²à¸•à¹Œ!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "คืนเลย์เà¸à¸²à¸•à¹Œà¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น" +msgstr "คืนเลย์เà¸à¸²à¸•à¹Œà¸”ั้งเดิมไปยังà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพื้นà¸à¸²à¸™" #: editor/editor_node.cpp msgid "" @@ -3690,9 +3694,8 @@ msgid "Move To..." msgstr "ย้ายไป..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "เลื่à¸à¸™à¸à¸à¹‚ต้โหลด" +msgstr "ย้ายไปถังขยะ" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8198,10 +8201,25 @@ msgid "Create a new rectangle." msgstr "สร้างสี่เหลี่ยมใหม่" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "วาดสี่เหลี่ยม" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "สร้างรูปหลายเหลี่ยมใหม่" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "ย้ายรูปหลายเหลี่ยม" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "ลบสิ่งที่เลืà¸à¸" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "ให้รูปหลายเหลี่ยมà¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸‚à¸à¸šà¹€à¸‚ตขà¸à¸‡à¸ªà¸µà¹ˆà¹€à¸«à¸¥à¸µà¹ˆà¸¢à¸¡" @@ -11859,11 +11877,7 @@ msgstr "ที่à¸à¸¢à¸¹à¹ˆ Android SDK ผิดพลาดสำหรัภ#: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "ไดเร็à¸à¸—à¸à¸£à¸µ 'platform-tools' หายไป!" #: platform/android/export/export.cpp msgid "" @@ -11914,22 +11928,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "\"Export AAB\" จะใช้ได้เฉพาะเมื่à¸à¹€à¸›à¸´à¸”ใช้งาน \"Use Custom Build\"" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "ชื่à¸à¹„ฟล์ผิดพลาด! à¹à¸à¸™à¸”รà¸à¸¢à¸”์à¹à¸à¸›à¸šà¸±à¸™à¹€à¸”ิลจำเป็นต้à¸à¸‡à¸¡à¸µà¸™à¸²à¸¡à¸ªà¸à¸¸à¸¥ *.aab" @@ -12683,6 +12681,21 @@ msgstr "Varyings สามารถà¸à¸³à¸«à¸™à¸”ในังà¸à¹Œà¸Šà¸±à¸™à¹€ msgid "Constants cannot be modified." msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได้" +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "ไดเร็à¸à¸—à¸à¸£à¸µ 'build-tools' หายไป!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "ไม่สามารถหา zipalign tool" + +#~ msgid "Aligning APK..." +#~ msgstr "จัดเรียง APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "ไม่สามารถจัดเรียง APK ได้สำเร็จ" + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "ไม่สามารถลบ APK ที่ยังไม่จัดเรียง" + #~ msgid "Error trying to save layout!" #~ msgstr "ผิดพลาดขณะบันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸à¸²à¸•à¹Œ!" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index a9608e8771..61eb8819f9 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -59,8 +59,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-12 09:28+0000\n" -"Last-Translator: Suleyman Poyraz <zaryob.dev@gmail.com>\n" +"PO-Revision-Date: 2020-11-25 14:10+0000\n" +"Last-Translator: Zsosu Ktosu <zktosu@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -68,7 +68,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1078,22 +1078,25 @@ msgid "Owners Of:" msgstr "Åžunların sahipleri:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "Seçili dosyaları projeden kaldır? (Geri alınamaz)" +msgstr "" +"Seçilen dosyalar kaldırılsın mı? (geri alınamaz)\n" +"Kaldırılan dosyaları sistemin geri dönüşüm kutusunda bulabilir ve geri " +"yükleyebilirsiniz." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Kaldırılmakta olan dosyalar baÅŸka kaynakların çalışması için gerekli.\n" -"Yine de kaldırmak istiyor musunuz? (geri alınamaz)" +"DiÄŸer kimi dosyaların çalışması için kaldırdığınız dosyalar gerekli " +"görülmekte.\n" +"Yine de kaldırılsın mı? (geri alınamaz)\n" +"Kaldırılan dosyaların sistemin geri dönüşüm kutusunda bulabilirsiniz." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1647,16 +1650,14 @@ msgstr "" "Fallback Enabled' seçeneÄŸini devre dışı bırakın." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for GLES2. Enable " "'Import Pvrtc' in Project Settings." msgstr "" -"Hedef platform GLES2 için 'ETC' doku sıkıştırma gerekiyor. Proje " -"Ayarları'nda 'Import Etc' etkinleÅŸtirin." +"Hedef platform GLES2 için 'PVRTC' sıkıştırma biçimini gerektirmekte.. Proje " +"Ayarlarındaki 'Pvrtc içe aktar' seçeneÄŸini etkinleÅŸtirin." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." @@ -1665,7 +1666,6 @@ msgstr "" "Ayarları'nda 'Import Etc 2' etkinleÅŸtirin." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for the driver fallback " "to GLES2.\n" @@ -2358,6 +2358,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Düzenleyici arayüzünü kaydederken hata meydana geldi.\n" +"Düzenleyici için kullanıcı veri yolunun yazma izninin olduÄŸundan emin olunuz." #: editor/editor_node.cpp msgid "" @@ -2365,13 +2367,15 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Varsayılan arayüz deÄŸiÅŸtirildi.\n" +"Varsayılan arayüz temel ayarlarını geri yüklemek için, Arayüz silme " +"seçeneÄŸini kullanarak Varsayılan Arayüz'ü silin." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "YerleÅŸim Düzeni adı bulunamadı!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." msgstr "Varsayılan yerleÅŸim düzeni temel ayarlarına geri döndürüldü." @@ -3809,9 +3813,8 @@ msgid "Move To..." msgstr "Åžuraya Taşı..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "KendindenYüklenme'yi Taşı" +msgstr "Çöpe At" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -4580,7 +4583,7 @@ msgstr "Sonraki DeÄŸiÅŸeni Karıştır" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "OluÅŸturma Süresini DeÄŸiÅŸtir" +msgstr "Harmanlama Süresini DeÄŸiÅŸtir" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" @@ -5277,50 +5280,43 @@ msgstr "Yeni yatay ve dikey kılavuzlar oluÅŸtur" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "CanvasItem \"%s\" Pivot Ofset'i (%d, %d) olarak ayarlayın" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "CanvasItem Döndür" +msgstr "CanvasItems'i %d döndür" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "CanvasItem Döndür" +msgstr "CanvasItem \"% s\"'i %d dereceye döndürün" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "CanvasItem Taşı" +msgstr "CanvasItem \"%s\" BaÄŸlayıcısını Taşı" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Node2D \"%s\"'i (%s, %s)'a boyutlandır" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" -msgstr "" +msgstr "\"%s\" denetimini (%d, %d)'a boyutlandır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale %d CanvasItems" -msgstr "CanvasItem Esnet" +msgstr "CanvasItems'i %d boyutlandır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem \"%s\" to (%s, %s)" -msgstr "CanvasItem Esnet" +msgstr "CanvasItem \"%s\" öğesini (%s,%s) olarak boyutlandır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move %d CanvasItems" -msgstr "CanvasItem Taşı" +msgstr "CanvasItems'i %d kadar taşı" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" to (%d, %d)" -msgstr "CanvasItem Taşı" +msgstr "CanvasItem \"%s\" öğesini (%d,%d) konumuna taşı" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -6597,18 +6593,16 @@ msgid "Move Points" msgstr "Noktaları Taşı" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Command: Rotate" -msgstr "Sürükle: Döndürür" +msgstr "Ctrl: Döndür" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" msgstr "ÃœstKrkt: Tümünü Taşı" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Shift+Command: Scale" -msgstr "ÃœstKrkt+Ctrl: Ölçek" +msgstr "ÃœstKrkt+Ctrl: Ölçeklendir" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6655,14 +6649,12 @@ msgid "Radius:" msgstr "Yarıçap:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy Polygon to UV" -msgstr "Çokgen & UV OluÅŸtur" +msgstr "Çokgeni UV'ye kopyala" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Copy UV to Polygon" -msgstr "Çokgen2D'ye dönüştür" +msgstr "UV'yi çokgene kopyala" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" @@ -8209,13 +8201,12 @@ msgid "Paint Tile" msgstr "Karo Boya" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Command+LMB: Rectangle Paint" msgstr "" "Shift+SFT: Çizgi Çiz\n" -"Shift+Ctrl+SFT: Dkidörtgen Boya" +"Shift+Ctrl+SFT: Dolu Dkidörtgen" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -8370,10 +8361,25 @@ msgid "Create a new rectangle." msgstr "Yeni dikdörtgen oluÅŸtur." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Dikdörtgen Boya" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Yeni bir çokgen oluÅŸturun." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Çokgeni Taşı" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Seçilenleri Sil" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Çokgeni Dikdörtgen bölgesinde tut." @@ -8744,9 +8750,8 @@ msgid "Add Node to Visual Shader" msgstr "Visual Shader'a düğüm ekle" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node(s) Moved" -msgstr "Düğüm Taşındı" +msgstr "Düğüm(ler) Taşındı" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Duplicate Nodes" @@ -8766,9 +8771,8 @@ msgid "Visual Shader Input Type Changed" msgstr "Visual Shader giriÅŸ Türü DeÄŸiÅŸti" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "UniformRef Name Changed" -msgstr "Uniform ismi ayarla" +msgstr "UniformRef Adı DeÄŸiÅŸtirildi" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vertex" @@ -9478,7 +9482,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "A reference to an existing uniform." -msgstr "" +msgstr "Varolan bir üniformaya bir referans." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -12108,11 +12112,7 @@ msgstr "Editör Ayarlarında özel derleme için geçersiz Android SDK yolu." #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Eksik 'platform araçları' dizini!" #: platform/android/export/export.cpp msgid "" @@ -12167,34 +12167,20 @@ msgstr "" #: platform/android/export/export.cpp msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" +"\"AAB Dışa Aktar\" yalnızca \"Özel Yapı Kullan\" etkinleÅŸtirildiÄŸinde " +"geçerlidir." #: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." -msgstr "" +msgstr "Geçersiz dosya adı! Android Uygulama Paketi *.aab uzantısı gerektirir." #: platform/android/export/export.cpp msgid "APK Expansion not compatible with Android App Bundle." -msgstr "" +msgstr "APK GeniÅŸletme, Android Uygulama Paketi ile uyumlu deÄŸildir." #: platform/android/export/export.cpp msgid "Invalid filename! Android APK requires the *.apk extension." -msgstr "" +msgstr "Geçersiz dosya adı! Android APK, * .apk uzantısını gerektirir." #: platform/android/export/export.cpp msgid "" @@ -12232,13 +12218,15 @@ msgstr "" #: platform/android/export/export.cpp msgid "Moving output" -msgstr "" +msgstr "Çıktı taşınıyor" #: platform/android/export/export.cpp msgid "" "Unable to copy and rename export file, check gradle project directory for " "outputs." msgstr "" +"Dışa aktarma dosyası kopyalanamıyor ve yeniden adlandırılamıyor, çıktılar " +"için gradle proje dizinini kontrol edin." #: platform/iphone/export/export.cpp msgid "Identifier is missing." @@ -13000,6 +12988,21 @@ msgstr "varyings yalnızca vertex iÅŸlevinde atanabilir." msgid "Constants cannot be modified." msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Eksik 'inÅŸa-araçları' dizini!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Zipalign aracı bulunamıyor." + +#~ msgid "Aligning APK..." +#~ msgstr "APK hizalanıyor ..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "APK hizalaması tamamlanamıyor." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Hizalanmamış APK silinemiyor." + #~ msgid "Error trying to save layout!" #~ msgstr "YerleÅŸim Düzeni kaydedilmeye çalışılırken hata!" diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po index 0ea50916b6..6d0b1ff421 100644 --- a/editor/translations/tzm.po +++ b/editor/translations/tzm.po @@ -8040,10 +8040,22 @@ msgid "Create a new rectangle." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Rectangle" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete Selected Shape" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11575,10 +11587,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11623,22 +11631,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 14771ef010..19d0cee9a7 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -15,12 +15,13 @@ # Tymofij Lytvynenko <till.svit@gmail.com>, 2020. # Vladislav Glinsky <cl0ne@mithril.org.ua>, 2020. # Микола Тимошенко <9081@ukr.net>, 2020. +# Miroslav <zinmirx@gmail.com>, 2020. msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-30 10:21+0000\n" -"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" +"PO-Revision-Date: 2020-11-23 21:42+0000\n" +"Last-Translator: Miroslav <zinmirx@gmail.com>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" "Language: uk\n" @@ -29,7 +30,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.3.2-dev\n" +"X-Generator: Weblate 4.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -1047,24 +1048,24 @@ msgid "Owners Of:" msgstr "ВлаÑники:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Вилучити позначені файли з проєкту? (Вилучені файли не вдаÑÑ‚ÑŒÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸)" +"Вилучити позначені файли з проєкту? (без можливоÑÑ‚Ñ– ÑкаÑувати)\n" +"Вилучені файли можна буде знайти Ñ– відновити у теці Ñмітника ÑиÑтеми." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" "Remove them anyway? (no undo)\n" "You can find the removed files in the system trash to restore them." msgstr "" -"Файли, що видалÑÑŽÑ‚ÑŒÑÑ, вимагаютьÑÑ Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ реÑурÑами, щоб вони могли " -"працювати.\n" -"Видалити Ñ—Ñ… у будь-Ñкому разі? (ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ)" +"Файли, Ñкі ви вилучаєте, потрібні Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾ÑÑ‚Ñ– інших " +"реÑурÑів.\n" +"Вилучити Ñ—Ñ… попри це? (без ÑкаÑуваннÑ)\n" +"Вилучені файли можна знайти Ñ– відновити у теці Ñмітника ÑиÑтеми." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1775,7 +1776,7 @@ msgstr "Ðовий" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Імпортувати" +msgstr "Імпорт" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" @@ -2328,6 +2329,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Під Ñ‡Ð°Ñ Ñпроби зберегти ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°.\n" +"ПереконайтеÑÑ, що каталог даних кориÑтувача Ñ” придатним до запиÑу." #: editor/editor_node.cpp msgid "" @@ -2335,15 +2338,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Параметри типового ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° перевизначено.\n" +"Щоб відновити початкові параметри типово компонуваннÑ, ÑкориÑтайтеÑÑ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð¼ " +"«Вилучити компонуваннÑ» Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ компонуваннÑ." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Ðазву ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ знайдено!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Відновлено типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° базовими параметрами." +msgstr "Відновлено початкові параметри типового компонуваннÑ." #: editor/editor_node.cpp msgid "" @@ -3785,9 +3790,8 @@ msgid "Move To..." msgstr "ПереміÑтити до..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "ПереміÑтити автозавантаженнÑ" +msgstr "ПереÑунути до Ñмітника" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8345,10 +8349,25 @@ msgid "Create a new rectangle." msgstr "Створити прÑмокутник." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "Ðамалювати прÑмокутник" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "Створити новий полігон." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "ПереміÑтити полігон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Вилучити вибране" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "Утримувати полігон вÑередині Rect облаÑÑ‚Ñ–." @@ -12104,11 +12123,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "Ðе знайдено каталогу «platform-tools»!" #: platform/android/export/export.cpp msgid "" @@ -12169,22 +12184,6 @@ msgstr "" "нетипове збираннÑ»." #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" "Ðекоректна назва файла! Пакет програми Android повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *." @@ -13019,6 +13018,21 @@ msgstr "Змінні величини можна пов'Ñзувати лише msgid "Constants cannot be modified." msgstr "Сталі не можна змінювати." +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "Ðе знайдено каталогу «build-tools»!" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ програму zipalign." + +#~ msgid "Aligning APK..." +#~ msgstr "Вирівнюємо APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ APK." + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ невирівнÑний APK." + #~ msgid "Error trying to save layout!" #~ msgstr "Помилка при Ñпробі зберегти компонуваннÑ!" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index c8eaf85501..33902a4398 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -8236,10 +8236,25 @@ msgstr "سب سکریپشن بنائیں" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "سب سکریپشن بنائیں" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr ".تمام کا انتخاب" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -11873,10 +11888,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -11921,22 +11932,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 8198ca9ba7..500ad127b4 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -8386,10 +8386,25 @@ msgstr "Tạo hình chữ nháºt má»›i." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "Tạo Cảnh Má»›i" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "Tạo" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "Tạo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "Xoá lá»±a chá»n" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12105,10 +12120,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12156,22 +12167,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index c40aea356f..3bf38ece6c 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -76,7 +76,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2020-11-13 22:59+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" @@ -1084,14 +1084,14 @@ msgid "Owners Of:" msgstr "拥有者:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "是å¦ä»Žé¡¹ç›®ä¸åˆ é™¤é€‰å®šæ–‡ä»¶ï¼Ÿï¼ˆæ— æ³•æ¢å¤ï¼‰" +msgstr "" +"是å¦ä»Žé¡¹ç›®ä¸åˆ é™¤æ‰€é€‰æ–‡ä»¶ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼‰\n" +"ä½ å¯ä»¥åœ¨ç³»ç»Ÿå›žæ”¶ç«™ä¸æ¢å¤è¢«åˆ 除的文件。" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1099,7 +1099,8 @@ msgid "" "You can find the removed files in the system trash to restore them." msgstr "" "è¦åˆ 除的文件被其他资æºæ‰€ä¾èµ–。\n" -"ä»ç„¶è¦åˆ 除å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼‰" +"ä»ç„¶è¦åˆ 除å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼‰\n" +"ä½ å¯ä»¥åœ¨ç³»ç»Ÿå›žæ”¶ç«™ä¸æ¢å¤è¢«åˆ 除的文件。" #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2343,6 +2344,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"ä¿å˜ç¼–辑器布局时出错。\n" +"请确认编辑器的用户数æ®è·¯å¾„å¯å†™ã€‚" #: editor/editor_node.cpp msgid "" @@ -2350,15 +2353,16 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"已覆盖默认编辑器布局。\n" +"如需æ¢å¤é»˜è®¤å¸ƒå±€è‡³åŽŸå§‹å†…容,å¯ä½¿ç”¨åˆ é™¤å¸ƒå±€é€‰é¡¹å°†é»˜è®¤å¸ƒå±€åˆ é™¤ã€‚" #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "布局å称未找到ï¼" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "é‡ç½®ä¸ºé»˜è®¤å¸ƒå±€è®¾ç½®ã€‚" +msgstr "已将默认布局æ¢å¤ä¸ºåŽŸå§‹å†…容。" #: editor/editor_node.cpp msgid "" @@ -3745,9 +3749,8 @@ msgid "Move To..." msgstr "移动..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "移动 Autoload" +msgstr "移动至回收站" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8251,10 +8254,25 @@ msgid "Create a new rectangle." msgstr "创建新矩形。" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "绘制矩形" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "创建新多边形。" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "移动多边形" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "åˆ é™¤é€‰ä¸é¡¹" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "ä¿æŒå¤šè¾¹å½¢ä½äºŽçº¹ç†åŒºåŸŸä¸ã€‚" @@ -11903,11 +11921,7 @@ msgstr "用于 “编辑器设置†ä¸è‡ªå®šä¹‰æž„建的 Android SDK 路径是 #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "缺失“platform-toolsâ€ç›®å½•ï¼" #: platform/android/export/export.cpp msgid "" @@ -11957,22 +11971,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "“Export AAB†åªæœ‰åœ¨å½“å¯ç”¨ “Use Custom Build†时æ‰æœ‰æ•ˆã€‚" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "æ— æ•ˆæ–‡ä»¶åï¼Android App Bundle 必须有 *.aab 扩展。" @@ -12729,6 +12727,21 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸æŒ‡å®šã€‚" msgid "Constants cannot be modified." msgstr "ä¸å…许修改常é‡ã€‚" +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "缺失“build-toolsâ€ç›®å½•ï¼" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "未找到 zipalign 工具。" + +#~ msgid "Aligning APK..." +#~ msgstr "å¯¹é½ APK..." + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "æ— æ³•å®Œæˆ APK 对é½ã€‚" + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "æ— æ³•åˆ é™¤æœªå¯¹é½ APK。" + #~ msgid "Error trying to save layout!" #~ msgstr "ä¿å˜å¸ƒå±€å‡ºé”™ï¼" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 1104fb0ee9..5ed91fb436 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -8620,10 +8620,25 @@ msgstr "新增" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Rectangle" +msgstr "æ–°å¢žå ´æ™¯" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create a new polygon." msgstr "縮放selection" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "æ’件" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "刪除é¸ä¸æª”案" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "" @@ -12381,10 +12396,6 @@ msgid "Missing 'platform-tools' directory!" msgstr "" #: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." @@ -12430,22 +12441,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 1174e8f484..1c9d2b77c1 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-11-17 11:07+0000\n" +"PO-Revision-Date: 2020-11-20 23:08+0000\n" "Last-Translator: BinotaLIU <me@binota.org>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" @@ -1037,14 +1037,14 @@ msgid "Owners Of:" msgstr "為下列之æ“有者:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Remove selected files from the project? (no undo)\n" "You can find the removed files in the system trash to restore them." -msgstr "確定è¦å°‡æ‰€é¸æª”案自專案ä¸ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰" +msgstr "" +"確定è¦å°‡æ‰€é¸æª”案自專案ä¸ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰\n" +"移除的檔案å¯åœ¨ç¨å¾Œæ–¼ç³»çµ±è³‡æºå›žæ”¶æ¡¶å…§æ‰¾åˆ°ã€‚" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1052,7 +1052,8 @@ msgid "" "You can find the removed files in the system trash to restore them." msgstr "" "有其他資æºéœ€è¦æ£åœ¨åˆªé™¤çš„檔案æ‰èƒ½æ£å¸¸é‹ä½œã€‚\n" -"ä¾ç„¶è¦ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰" +"ä¾ç„¶è¦ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•å¾©åŽŸï¼‰\n" +"移除的檔案å¯åœ¨ç¨å¾Œæ–¼ç³»çµ±è³‡æºå›žæ”¶æ¡¶å…§æ‰¾åˆ°ã€‚" #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -2298,6 +2299,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"ä¿å˜ç·¨è¼¯å™¨ç•«é¢é…置時發生錯誤。\n" +"請確èªç·¨è¼¯å™¨çš„使用者資料路徑是å¦å¯å¯«å…¥ã€‚" #: editor/editor_node.cpp msgid "" @@ -2305,13 +2308,14 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"é è¨ç·¨è¼¯å™¨ç•«é¢é…置已被複寫。\n" +"è‹¥è¦æ¢å¾©é è¨çš„ç•«é¢é…置,請使用 [刪除é…ç½®] é¸é …,並刪除é è¨ç•«é¢é…置。" #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "找ä¸åˆ°é…ç½®å稱ï¼" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." msgstr "已將é è¨é…置還原至基本è¨å®šã€‚" @@ -3700,9 +3704,8 @@ msgid "Move To..." msgstr "移動至..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "移動 Autoload" +msgstr "移動至資æºå›žæ”¶æ¡¶" #: editor/filesystem_dock.cpp msgid "New Scene..." @@ -8207,10 +8210,25 @@ msgid "Create a new rectangle." msgstr "建立新矩形。" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Rectangle" +msgstr "矩形繪製" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." msgstr "建立新多邊形。" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Polygon" +msgstr "移動多邊形" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Delete Selected Shape" +msgstr "刪除所é¸" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." msgstr "ä¿æŒå¤šé‚Šå½¢åœ¨å€åŸŸçŸ©å½¢ (Rect) 內。" @@ -11858,11 +11876,7 @@ msgstr "編輯器è¨å®šä¸ç”¨æ–¼è‡ªå®šç¾©è¨å®šä¹‹ Android SDK 路徑無效。" #: platform/android/export/export.cpp msgid "Missing 'platform-tools' directory!" -msgstr "" - -#: platform/android/export/export.cpp -msgid "Missing 'build-tools' directory!" -msgstr "" +msgstr "缺少「platform-toolsã€è³‡æ–™å¤¾ï¼" #: platform/android/export/export.cpp msgid "" @@ -11917,22 +11931,6 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled." msgstr "「Export AABã€åƒ…於「Use Custom Buildã€å•Ÿç”¨æ™‚å¯ç”¨ã€‚" #: platform/android/export/export.cpp -msgid "Unable to find the zipalign tool." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Aligning APK..." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to complete APK alignment." -msgstr "" - -#: platform/android/export/export.cpp -msgid "Unable to delete unaligned APK." -msgstr "" - -#: platform/android/export/export.cpp msgid "Invalid filename! Android App Bundle requires the *.aab extension." msgstr "無效的檔案å稱ï¼Android App Bundle å¿…é ˆè¦æœ‰ *.aab 副檔å。" @@ -12689,6 +12687,21 @@ msgstr "Varying 變數åªå¯åœ¨é ‚點函å¼ä¸æŒ‡æ´¾ã€‚" msgid "Constants cannot be modified." msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚" +#~ msgid "Missing 'build-tools' directory!" +#~ msgstr "缺少「build-toolsã€è³‡æ–™å¤¾ï¼" + +#~ msgid "Unable to find the zipalign tool." +#~ msgstr "找ä¸åˆ° zipalign 工具。" + +#~ msgid "Aligning APK..." +#~ msgstr "æ£åœ¨å°é½Š APK…" + +#~ msgid "Unable to complete APK alignment." +#~ msgstr "ç„¡æ³•å®Œæˆ APK å°é½Šã€‚" + +#~ msgid "Unable to delete unaligned APK." +#~ msgstr "無法刪除未å°é½Šçš„ APK。" + #~ msgid "Error trying to save layout!" #~ msgstr "嘗試ä¿å˜é…置時出錯ï¼" diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 4d9d01b261..628b6895da 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -2029,9 +2029,17 @@ void GDScriptAnalyzer::reduce_get_node(GDScriptParser::GetNodeNode *p_get_node) p_get_node->set_datatype(result); } -GDScriptParser::DataType GDScriptAnalyzer::make_global_class_meta_type(const StringName &p_class_name) { +GDScriptParser::DataType GDScriptAnalyzer::make_global_class_meta_type(const StringName &p_class_name, const GDScriptParser::Node *p_source) { Ref<GDScriptParserRef> ref = get_parser_for(ScriptServer::get_global_class_path(p_class_name)); - ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED); + Error err = ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED); + + if (err) { + push_error(vformat(R"(Could not resolve class "%s", because of a parser error.)", p_class_name), p_source); + GDScriptParser::DataType type; + type.type_source = GDScriptParser::DataType::UNDETECTED; + type.kind = GDScriptParser::DataType::VARIANT; + return type; + } GDScriptParser::DataType type; type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT; @@ -2303,7 +2311,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident } if (ScriptServer::is_global_class(name)) { - p_identifier->set_datatype(make_global_class_meta_type(name)); + p_identifier->set_datatype(make_global_class_meta_type(name, p_identifier)); return; } @@ -3312,7 +3320,6 @@ Error GDScriptAnalyzer::resolve_program() { } depended_parsers[E->get()]->raise_status(GDScriptParserRef::FULLY_SOLVED); } - depended_parsers.clear(); return parser->errors.empty() ? OK : ERR_PARSE_ERROR; } diff --git a/modules/gdscript/gdscript_analyzer.h b/modules/gdscript/gdscript_analyzer.h index 7a06a61239..9925167856 100644 --- a/modules/gdscript/gdscript_analyzer.h +++ b/modules/gdscript/gdscript_analyzer.h @@ -96,7 +96,7 @@ class GDScriptAnalyzer { GDScriptParser::DataType type_from_variant(const Variant &p_value, const GDScriptParser::Node *p_source); GDScriptParser::DataType type_from_metatype(const GDScriptParser::DataType &p_meta_type) const; GDScriptParser::DataType type_from_property(const PropertyInfo &p_property) const; - GDScriptParser::DataType make_global_class_meta_type(const StringName &p_class_name); + GDScriptParser::DataType make_global_class_meta_type(const StringName &p_class_name, const GDScriptParser::Node *p_source); bool get_function_signature(GDScriptParser::Node *p_source, GDScriptParser::DataType base_type, const StringName &p_function, GDScriptParser::DataType &r_return_type, List<GDScriptParser::DataType> &r_par_types, int &r_default_arg_count, bool &r_static, bool &r_vararg); bool function_signature_from_info(const MethodInfo &p_info, GDScriptParser::DataType &r_return_type, List<GDScriptParser::DataType> &r_par_types, int &r_default_arg_count, bool &r_static, bool &r_vararg); bool validate_call_arg(const List<GDScriptParser::DataType> &p_par_types, int p_default_args_count, bool p_is_vararg, const GDScriptParser::CallNode *p_call); diff --git a/modules/gdscript/gdscript_disassembler.cpp b/modules/gdscript/gdscript_disassembler.cpp index c918251772..92a44c57f8 100644 --- a/modules/gdscript/gdscript_disassembler.cpp +++ b/modules/gdscript/gdscript_disassembler.cpp @@ -360,15 +360,12 @@ void GDScriptFunction::disassemble(const Vector<String> &p_code_lines) const { incr += 4; } break; case OPCODE_CAST_TO_NATIVE: { - Variant class_name = _constants_ptr[_code_ptr[ip + 1]]; - GDScriptNativeClass *nc = Object::cast_to<GDScriptNativeClass>(class_name.operator Object *()); - text += "cast native "; text += DADDR(2); text += " = "; text += DADDR(1); text += " as "; - text += nc->get_name(); + text += DADDR(3); incr += 4; } break; diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py index a1bc5867c5..a8bc3a09f6 100644 --- a/platform/linuxbsd/detect.py +++ b/platform/linuxbsd/detect.py @@ -129,7 +129,6 @@ def configure(env): if "clang++" not in os.path.basename(env["CXX"]): env["CC"] = "clang" env["CXX"] = "clang++" - env.Append(CPPDEFINES=["TYPED_METHOD_BIND"]) env.extra_suffix = ".llvm" + env.extra_suffix if env["use_lld"]: diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp index 5fa737af8e..74c69c0823 100644 --- a/platform/linuxbsd/display_server_x11.cpp +++ b/platform/linuxbsd/display_server_x11.cpp @@ -552,6 +552,60 @@ String DisplayServerX11::clipboard_get() const { return ret; } +Bool DisplayServerX11::_predicate_clipboard_save_targets(Display *display, XEvent *event, XPointer arg) { + if (event->xany.window == *(Window *)arg) { + return (event->type == SelectionRequest) || + (event->type == SelectionNotify); + } else { + return False; + } +} + +void DisplayServerX11::_clipboard_transfer_ownership(Atom p_source, Window x11_window) const { + _THREAD_SAFE_METHOD_ + + Window selection_owner = XGetSelectionOwner(x11_display, p_source); + + if (selection_owner != x11_window) { + return; + } + + // Block events polling while processing selection events. + MutexLock mutex_lock(events_mutex); + + Atom clipboard_manager = XInternAtom(x11_display, "CLIPBOARD_MANAGER", False); + Atom save_targets = XInternAtom(x11_display, "SAVE_TARGETS", False); + XConvertSelection(x11_display, clipboard_manager, save_targets, None, + x11_window, CurrentTime); + + // Process events from the queue. + while (true) { + if (!_wait_for_events()) { + // Error or timeout, abort. + break; + } + + // Non-blocking wait for next event and remove it from the queue. + XEvent ev; + while (XCheckIfEvent(x11_display, &ev, _predicate_clipboard_save_targets, (XPointer)&x11_window)) { + switch (ev.type) { + case SelectionRequest: + _handle_selection_request_event(&(ev.xselectionrequest)); + break; + + case SelectionNotify: { + if (ev.xselection.target == save_targets) { + // Once SelectionNotify is received, we're done whether it succeeded or not. + return; + } + + break; + } + } + } + } +} + int DisplayServerX11::get_screen_count() const { _THREAD_SAFE_METHOD_ @@ -2291,53 +2345,105 @@ void DisplayServerX11::_handle_key_event(WindowID p_window, XKeyEvent *p_event, Input::get_singleton()->accumulate_input_event(k); } -void DisplayServerX11::_handle_selection_request_event(XSelectionRequestEvent *p_event) { - XEvent respond; - if (p_event->target == XInternAtom(x11_display, "UTF8_STRING", 0) || - p_event->target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) || - p_event->target == XInternAtom(x11_display, "TEXT", 0) || - p_event->target == XA_STRING || - p_event->target == XInternAtom(x11_display, "text/plain;charset=utf-8", 0) || - p_event->target == XInternAtom(x11_display, "text/plain", 0)) { - // Directly using internal clipboard because we know our window - // is the owner during a selection request. - CharString clip = internal_clipboard.utf8(); - XChangeProperty(x11_display, - p_event->requestor, - p_event->property, - p_event->target, - 8, - PropModeReplace, - (unsigned char *)clip.get_data(), - clip.length()); - respond.xselection.property = p_event->property; - } else if (p_event->target == XInternAtom(x11_display, "TARGETS", 0)) { - Atom data[7]; +Atom DisplayServerX11::_process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property) const { + if (p_target == XInternAtom(x11_display, "TARGETS", 0)) { + // Request to list all supported targets. + Atom data[9]; data[0] = XInternAtom(x11_display, "TARGETS", 0); - data[1] = XInternAtom(x11_display, "UTF8_STRING", 0); - data[2] = XInternAtom(x11_display, "COMPOUND_TEXT", 0); - data[3] = XInternAtom(x11_display, "TEXT", 0); - data[4] = XA_STRING; - data[5] = XInternAtom(x11_display, "text/plain;charset=utf-8", 0); - data[6] = XInternAtom(x11_display, "text/plain", 0); + data[1] = XInternAtom(x11_display, "SAVE_TARGETS", 0); + data[2] = XInternAtom(x11_display, "MULTIPLE", 0); + data[3] = XInternAtom(x11_display, "UTF8_STRING", 0); + data[4] = XInternAtom(x11_display, "COMPOUND_TEXT", 0); + data[5] = XInternAtom(x11_display, "TEXT", 0); + data[6] = XA_STRING; + data[7] = XInternAtom(x11_display, "text/plain;charset=utf-8", 0); + data[8] = XInternAtom(x11_display, "text/plain", 0); XChangeProperty(x11_display, - p_event->requestor, - p_event->property, + p_requestor, + p_property, XA_ATOM, 32, PropModeReplace, (unsigned char *)&data, sizeof(data) / sizeof(data[0])); - respond.xselection.property = p_event->property; - + return p_property; + } else if (p_target == XInternAtom(x11_display, "SAVE_TARGETS", 0)) { + // Request to check if SAVE_TARGETS is supported, nothing special to do. + XChangeProperty(x11_display, + p_requestor, + p_property, + XInternAtom(x11_display, "NULL", False), + 32, + PropModeReplace, + nullptr, + 0); + return p_property; + } else if (p_target == XInternAtom(x11_display, "UTF8_STRING", 0) || + p_target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) || + p_target == XInternAtom(x11_display, "TEXT", 0) || + p_target == XA_STRING || + p_target == XInternAtom(x11_display, "text/plain;charset=utf-8", 0) || + p_target == XInternAtom(x11_display, "text/plain", 0)) { + // Directly using internal clipboard because we know our window + // is the owner during a selection request. + CharString clip = internal_clipboard.utf8(); + XChangeProperty(x11_display, + p_requestor, + p_property, + p_target, + 8, + PropModeReplace, + (unsigned char *)clip.get_data(), + clip.length()); + return p_property; } else { - char *targetname = XGetAtomName(x11_display, p_event->target); - printf("No Target '%s'\n", targetname); - if (targetname) { - XFree(targetname); + char *target_name = XGetAtomName(x11_display, p_target); + printf("Target '%s' not supported.\n", target_name); + if (target_name) { + XFree(target_name); } + return None; + } +} + +void DisplayServerX11::_handle_selection_request_event(XSelectionRequestEvent *p_event) const { + XEvent respond; + if (p_event->target == XInternAtom(x11_display, "MULTIPLE", 0)) { + // Request for multiple target conversions at once. + Atom atom_pair = XInternAtom(x11_display, "ATOM_PAIR", False); respond.xselection.property = None; + + Atom type; + int format; + unsigned long len; + unsigned long remaining; + unsigned char *data = nullptr; + if (XGetWindowProperty(x11_display, p_event->requestor, p_event->property, 0, LONG_MAX, False, atom_pair, &type, &format, &len, &remaining, &data) == Success) { + if ((len >= 2) && data) { + Atom *targets = (Atom *)data; + for (uint64_t i = 0; i < len; i += 2) { + Atom target = targets[i]; + Atom &property = targets[i + 1]; + property = _process_selection_request_target(target, p_event->requestor, property); + } + + XChangeProperty(x11_display, + p_event->requestor, + p_event->property, + atom_pair, + 32, + PropModeReplace, + (unsigned char *)targets, + len); + + respond.xselection.property = p_event->property; + } + XFree(data); + } + } else { + // Request for target conversion. + respond.xselection.property = _process_selection_request_target(p_event->target, p_event->requestor, p_event->property); } respond.xselection.type = SelectionNotify; @@ -2473,32 +2579,43 @@ Bool DisplayServerX11::_predicate_all_events(Display *display, XEvent *event, XP return True; } -void DisplayServerX11::_poll_events() { +bool DisplayServerX11::_wait_for_events() const { int x11_fd = ConnectionNumber(x11_display); fd_set in_fds; - while (!events_thread_done) { - XFlush(x11_display); + XFlush(x11_display); + + FD_ZERO(&in_fds); + FD_SET(x11_fd, &in_fds); - FD_ZERO(&in_fds); - FD_SET(x11_fd, &in_fds); + struct timeval tv; + tv.tv_usec = 0; + tv.tv_sec = 1; - struct timeval tv; - tv.tv_usec = 0; - tv.tv_sec = 1; + // Wait for next event or timeout. + int num_ready_fds = select(x11_fd + 1, &in_fds, NULL, NULL, &tv); - // Wait for next event or timeout. - int num_ready_fds = select(x11_fd + 1, &in_fds, NULL, NULL, &tv); + if (num_ready_fds > 0) { + // Event received. + return true; + } else { + // Error or timeout. if (num_ready_fds < 0) { - ERR_PRINT("_poll_events: select error: " + itos(errno)); + ERR_PRINT("_wait_for_events: select error: " + itos(errno)); } + return false; + } +} + +void DisplayServerX11::_poll_events() { + while (!events_thread_done) { + _wait_for_events(); // Process events from the queue. { MutexLock mutex_lock(events_mutex); - // Non-blocking wait for next event - // and remove it from the queue. + // Non-blocking wait for next event and remove it from the queue. XEvent ev; while (XCheckIfEvent(x11_display, &ev, _predicate_all_events, nullptr)) { // Check if the input manager wants to process the event. @@ -4068,6 +4185,11 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode } DisplayServerX11::~DisplayServerX11() { + // Send owned clipboard data to clipboard manager before exit. + Window x11_main_window = windows[MAIN_WINDOW_ID].x11_window; + _clipboard_transfer_ownership(XA_PRIMARY, x11_main_window); + _clipboard_transfer_ownership(XInternAtom(x11_display, "CLIPBOARD", 0), x11_main_window); + events_thread_done = true; Thread::wait_to_finish(events_thread); memdelete(events_thread); diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h index 9ff28b9ed2..682f1c8ef3 100644 --- a/platform/linuxbsd/display_server_x11.h +++ b/platform/linuxbsd/display_server_x11.h @@ -204,10 +204,13 @@ class DisplayServerX11 : public DisplayServer { Point2i center; void _handle_key_event(WindowID p_window, XKeyEvent *p_event, LocalVector<XEvent> &p_events, uint32_t &p_event_index, bool p_echo = false); - void _handle_selection_request_event(XSelectionRequestEvent *p_event); + + Atom _process_selection_request_target(Atom p_target, Window p_requestor, Atom p_property) const; + void _handle_selection_request_event(XSelectionRequestEvent *p_event) const; String _clipboard_get_impl(Atom p_source, Window x11_window, Atom target) const; String _clipboard_get(Atom p_source, Window x11_window) const; + void _clipboard_transfer_ownership(Atom p_source, Window x11_window) const; //bool minimized; //bool window_has_focus; @@ -262,10 +265,12 @@ class DisplayServerX11 : public DisplayServer { bool events_thread_done = false; LocalVector<XEvent> polled_events; static void _poll_events_thread(void *ud); + bool _wait_for_events() const; void _poll_events(); static Bool _predicate_all_events(Display *display, XEvent *event, XPointer arg); static Bool _predicate_clipboard_selection(Display *display, XEvent *event, XPointer arg); + static Bool _predicate_clipboard_save_targets(Display *display, XEvent *event, XPointer arg); protected: void _window_changed(XEvent *event); diff --git a/platform/server/detect.py b/platform/server/detect.py index a3f60b0710..d9ac357679 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -94,7 +94,6 @@ def configure(env): if "clang++" not in os.path.basename(env["CXX"]): env["CC"] = "clang" env["CXX"] = "clang++" - env.Append(CPPDEFINES=["TYPED_METHOD_BIND"]) env.extra_suffix = ".llvm" + env.extra_suffix if env["use_coverage"]: diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp index 0e4b1836da..f5d13fd641 100644 --- a/scene/2d/joints_2d.cpp +++ b/scene/2d/joints_2d.cpp @@ -47,29 +47,53 @@ void Joint2D::_update_joint(bool p_only_free) { } if (p_only_free || !is_inside_tree()) { + warning = String(); return; } Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)nullptr; Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)nullptr; - if (!node_a || !node_b) { + PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a); + PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b); + + if (node_a && !body_a && node_b && !body_b) { + warning = TTR("Node A and Node B must be PhysicsBody2Ds"); + update_configuration_warning(); return; } - PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a); - PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b); + if (node_a && !body_a) { + warning = TTR("Node A must be a PhysicsBody2D"); + update_configuration_warning(); + return; + } - if (!body_a || !body_b) { + if (node_b && !body_b) { + warning = TTR("Node B must be a PhysicsBody2D"); + update_configuration_warning(); return; } - joint = _configure_joint(body_a, body_b); + if (!body_a || !body_b) { + warning = TTR("Joint is not connected to two PhysicsBody2Ds"); + update_configuration_warning(); + return; + } - if (!joint.is_valid()) { + if (body_a == body_b) { + warning = TTR("Node A and Node B must be different PhysicsBody2Ds"); + update_configuration_warning(); return; } + warning = String(); + update_configuration_warning(); + + joint = _configure_joint(body_a, body_b); + + ERR_FAIL_COND_MSG(!joint.is_valid(), "Failed to configure the joint."); + PhysicsServer2D::get_singleton()->get_singleton()->joint_set_param(joint, PhysicsServer2D::JOINT_PARAM_BIAS, bias); ba = body_a->get_rid(); @@ -141,6 +165,19 @@ bool Joint2D::get_exclude_nodes_from_collision() const { return exclude_from_collision; } +String Joint2D::get_configuration_warning() const { + String node_warning = Node2D::get_configuration_warning(); + + if (!warning.empty()) { + if (!node_warning.empty()) { + node_warning += "\n\n"; + } + node_warning += warning; + } + + return node_warning; +} + void Joint2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_node_a", "node"), &Joint2D::set_node_a); ClassDB::bind_method(D_METHOD("get_node_a"), &Joint2D::get_node_a); @@ -154,8 +191,8 @@ void Joint2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_exclude_nodes_from_collision", "enable"), &Joint2D::set_exclude_nodes_from_collision); ClassDB::bind_method(D_METHOD("get_exclude_nodes_from_collision"), &Joint2D::get_exclude_nodes_from_collision); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_a", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject2D"), "set_node_a", "get_node_a"); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_b", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject2D"), "set_node_b", "get_node_b"); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_a", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "PhysicsBody2D"), "set_node_a", "get_node_a"); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_b", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "PhysicsBody2D"), "set_node_b", "get_node_b"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "bias", PROPERTY_HINT_RANGE, "0,0.9,0.001"), "set_bias", "get_bias"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_collision"), "set_exclude_nodes_from_collision", "get_exclude_nodes_from_collision"); } diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h index 60534cae65..759e7de8a0 100644 --- a/scene/2d/joints_2d.h +++ b/scene/2d/joints_2d.h @@ -46,6 +46,7 @@ class Joint2D : public Node2D { real_t bias; bool exclude_from_collision; + String warning; protected: void _update_joint(bool p_only_free = false); @@ -56,6 +57,8 @@ protected: static void _bind_methods(); public: + virtual String get_configuration_warning() const override; + void set_node_a(const NodePath &p_node_a); NodePath get_node_a() const; diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp index 0531762ed8..6908fbeada 100644 --- a/scene/2d/light_occluder_2d.cpp +++ b/scene/2d/light_occluder_2d.cpp @@ -265,6 +265,14 @@ String LightOccluder2D::get_configuration_warning() const { return warning; } +void LightOccluder2D::set_as_sdf_collision(bool p_enable) { + sdf_collision = p_enable; + RS::get_singleton()->canvas_light_occluder_set_as_sdf_collision(occluder, sdf_collision); +} +bool LightOccluder2D::is_set_as_sdf_collision() const { + return sdf_collision; +} + void LightOccluder2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_occluder_polygon", "polygon"), &LightOccluder2D::set_occluder_polygon); ClassDB::bind_method(D_METHOD("get_occluder_polygon"), &LightOccluder2D::get_occluder_polygon); @@ -272,14 +280,20 @@ void LightOccluder2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_occluder_light_mask", "mask"), &LightOccluder2D::set_occluder_light_mask); ClassDB::bind_method(D_METHOD("get_occluder_light_mask"), &LightOccluder2D::get_occluder_light_mask); + ClassDB::bind_method(D_METHOD("set_as_sdf_collision", "enable"), &LightOccluder2D::set_as_sdf_collision); + ClassDB::bind_method(D_METHOD("is_set_as_sdf_collision"), &LightOccluder2D::is_set_as_sdf_collision); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "occluder", PROPERTY_HINT_RESOURCE_TYPE, "OccluderPolygon2D"), "set_occluder_polygon", "get_occluder_polygon"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdf_collision"), "set_as_sdf_collision", "is_set_as_sdf_collision"); ADD_PROPERTY(PropertyInfo(Variant::INT, "light_mask", PROPERTY_HINT_LAYERS_2D_RENDER), "set_occluder_light_mask", "get_occluder_light_mask"); } LightOccluder2D::LightOccluder2D() { occluder = RS::get_singleton()->canvas_light_occluder_create(); mask = 1; + set_notify_transform(true); + set_as_sdf_collision(true); } LightOccluder2D::~LightOccluder2D() { diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h index 694097f985..97574af542 100644 --- a/scene/2d/light_occluder_2d.h +++ b/scene/2d/light_occluder_2d.h @@ -84,7 +84,7 @@ class LightOccluder2D : public Node2D { bool enabled; int mask; Ref<OccluderPolygon2D> occluder_polygon; - + bool sdf_collision; void _poly_changed(); protected: @@ -103,6 +103,9 @@ public: void set_occluder_light_mask(int p_mask); int get_occluder_light_mask() const; + void set_as_sdf_collision(bool p_enable); + bool is_set_as_sdf_collision() const; + String get_configuration_warning() const override; LightOccluder2D(); diff --git a/scene/3d/physics_joint_3d.cpp b/scene/3d/physics_joint_3d.cpp index af4d6ae152..ab9cdb9fd8 100644 --- a/scene/3d/physics_joint_3d.cpp +++ b/scene/3d/physics_joint_3d.cpp @@ -43,6 +43,7 @@ void Joint3D::_update_joint(bool p_only_free) { } if (p_only_free || !is_inside_tree()) { + warning = String(); return; } @@ -52,20 +53,47 @@ void Joint3D::_update_joint(bool p_only_free) { PhysicsBody3D *body_a = Object::cast_to<PhysicsBody3D>(node_a); PhysicsBody3D *body_b = Object::cast_to<PhysicsBody3D>(node_b); - if (!body_a && body_b) { - SWAP(body_a, body_b); + if (node_a && !body_a && node_b && !body_b) { + warning = TTR("Node A and Node B must be PhysicsBody3Ds"); + update_configuration_warning(); + return; } - if (!body_a) { + if (node_a && !body_a) { + warning = TTR("Node A must be a PhysicsBody3D"); + update_configuration_warning(); return; } - joint = _configure_joint(body_a, body_b); + if (node_b && !body_b) { + warning = TTR("Node B must be a PhysicsBody3D"); + update_configuration_warning(); + return; + } - if (!joint.is_valid()) { + if (!body_a && !body_b) { + warning = TTR("Joint is not connected to any PhysicsBody3Ds"); + update_configuration_warning(); return; } + if (body_a == body_b) { + warning = TTR("Node A and Node B must be different PhysicsBody3Ds"); + update_configuration_warning(); + return; + } + + if (!body_a) { + SWAP(body_a, body_b); + } + + warning = String(); + update_configuration_warning(); + + joint = _configure_joint(body_a, body_b); + + ERR_FAIL_COND_MSG(!joint.is_valid(), "Failed to configure the joint."); + PhysicsServer3D::get_singleton()->joint_set_solver_priority(joint, solver_priority); ba = body_a->get_rid(); @@ -137,6 +165,19 @@ bool Joint3D::get_exclude_nodes_from_collision() const { return exclude_from_collision; } +String Joint3D::get_configuration_warning() const { + String node_warning = Node3D::get_configuration_warning(); + + if (!warning.empty()) { + if (!node_warning.empty()) { + node_warning += "\n\n"; + } + node_warning += warning; + } + + return node_warning; +} + void Joint3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_node_a", "node"), &Joint3D::set_node_a); ClassDB::bind_method(D_METHOD("get_node_a"), &Joint3D::get_node_a); @@ -150,8 +191,8 @@ void Joint3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_exclude_nodes_from_collision", "enable"), &Joint3D::set_exclude_nodes_from_collision); ClassDB::bind_method(D_METHOD("get_exclude_nodes_from_collision"), &Joint3D::get_exclude_nodes_from_collision); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "nodes/node_a", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject3D"), "set_node_a", "get_node_a"); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "nodes/node_b", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "CollisionObject3D"), "set_node_b", "get_node_b"); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "nodes/node_a", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "PhysicsBody3D"), "set_node_a", "get_node_a"); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "nodes/node_b", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "PhysicsBody3D"), "set_node_b", "get_node_b"); ADD_PROPERTY(PropertyInfo(Variant::INT, "solver/priority", PROPERTY_HINT_RANGE, "1,8,1"), "set_solver_priority", "get_solver_priority"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collision/exclude_nodes"), "set_exclude_nodes_from_collision", "get_exclude_nodes_from_collision"); diff --git a/scene/3d/physics_joint_3d.h b/scene/3d/physics_joint_3d.h index d1a375ca5d..a65f6db3bf 100644 --- a/scene/3d/physics_joint_3d.h +++ b/scene/3d/physics_joint_3d.h @@ -46,6 +46,7 @@ class Joint3D : public Node3D { int solver_priority; bool exclude_from_collision; + String warning; protected: void _update_joint(bool p_only_free = false); @@ -57,6 +58,8 @@ protected: static void _bind_methods(); public: + virtual String get_configuration_warning() const override; + void set_node_a(const NodePath &p_node_a); NodePath get_node_a() const; diff --git a/scene/gui/aspect_ratio_container.cpp b/scene/gui/aspect_ratio_container.cpp new file mode 100644 index 0000000000..9f60131186 --- /dev/null +++ b/scene/gui/aspect_ratio_container.cpp @@ -0,0 +1,167 @@ +/*************************************************************************/ +/* aspect_ratio_container.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#include "aspect_ratio_container.h" + +Size2 AspectRatioContainer::get_minimum_size() const { + Size2 ms; + for (int i = 0; i < get_child_count(); i++) { + Control *c = Object::cast_to<Control>(get_child(i)); + if (!c) { + continue; + } + if (c->is_set_as_top_level()) { + continue; + } + if (!c->is_visible()) { + continue; + } + Size2 minsize = c->get_combined_minimum_size(); + ms.width = MAX(ms.width, minsize.width); + ms.height = MAX(ms.height, minsize.height); + } + return ms; +} + +void AspectRatioContainer::set_ratio(float p_ratio) { + ratio = p_ratio; + queue_sort(); +} + +void AspectRatioContainer::set_stretch_mode(StretchMode p_mode) { + stretch_mode = p_mode; + queue_sort(); +} + +void AspectRatioContainer::set_alignment_horizontal(AlignMode p_alignment_horizontal) { + alignment_horizontal = p_alignment_horizontal; + queue_sort(); +} + +void AspectRatioContainer::set_alignment_vertical(AlignMode p_alignment_vertical) { + alignment_vertical = p_alignment_vertical; + queue_sort(); +} + +void AspectRatioContainer::_notification(int p_what) { + switch (p_what) { + case NOTIFICATION_SORT_CHILDREN: { + Size2 size = get_size(); + for (int i = 0; i < get_child_count(); i++) { + Control *c = Object::cast_to<Control>(get_child(i)); + if (!c) { + continue; + } + if (c->is_set_as_top_level()) { + continue; + } + Size2 child_minsize = c->get_combined_minimum_size(); + Size2 child_size = Size2(ratio, 1.0); + float scale_factor = 1.0; + + switch (stretch_mode) { + case STRETCH_WIDTH_CONTROLS_HEIGHT: { + scale_factor = size.x / child_size.x; + } break; + case STRETCH_HEIGHT_CONTROLS_WIDTH: { + scale_factor = size.y / child_size.y; + } break; + case STRETCH_FIT: { + scale_factor = MIN(size.x / child_size.x, size.y / child_size.y); + } break; + case STRETCH_COVER: { + scale_factor = MAX(size.x / child_size.x, size.y / child_size.y); + } break; + } + child_size *= scale_factor; + child_size.x = MAX(child_size.x, child_minsize.x); + child_size.y = MAX(child_size.y, child_minsize.y); + + float align_x = 0.5; + switch (alignment_horizontal) { + case ALIGN_BEGIN: { + align_x = 0.0; + } break; + case ALIGN_CENTER: { + align_x = 0.5; + } break; + case ALIGN_END: { + align_x = 1.0; + } break; + } + float align_y = 0.5; + switch (alignment_vertical) { + case ALIGN_BEGIN: { + align_y = 0.0; + } break; + case ALIGN_CENTER: { + align_y = 0.5; + } break; + case ALIGN_END: { + align_y = 1.0; + } break; + } + Vector2 offset = (size - child_size) * Vector2(align_x, align_y); + + fit_child_in_rect(c, Rect2(offset, child_size)); + } + } break; + } +} + +void AspectRatioContainer::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_ratio", "ratio"), &AspectRatioContainer::set_ratio); + ClassDB::bind_method(D_METHOD("get_ratio"), &AspectRatioContainer::get_ratio); + + ClassDB::bind_method(D_METHOD("set_stretch_mode", "stretch_mode"), &AspectRatioContainer::set_stretch_mode); + ClassDB::bind_method(D_METHOD("get_stretch_mode"), &AspectRatioContainer::get_stretch_mode); + + ClassDB::bind_method(D_METHOD("set_alignment_horizontal", "alignment_horizontal"), &AspectRatioContainer::set_alignment_horizontal); + ClassDB::bind_method(D_METHOD("get_alignment_horizontal"), &AspectRatioContainer::get_alignment_horizontal); + + ClassDB::bind_method(D_METHOD("set_alignment_vertical", "alignment_vertical"), &AspectRatioContainer::set_alignment_vertical); + ClassDB::bind_method(D_METHOD("get_alignment_vertical"), &AspectRatioContainer::get_alignment_vertical); + + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ratio"), "set_ratio", "get_ratio"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "stretch_mode", PROPERTY_HINT_ENUM, "Width controls height,Height controls width,Fit,Cover"), "set_stretch_mode", "get_stretch_mode"); + + ADD_GROUP("Alignment", "alignment_"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment_horizontal", PROPERTY_HINT_ENUM, "Begin,Center,End"), "set_alignment_horizontal", "get_alignment_horizontal"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment_vertical", PROPERTY_HINT_ENUM, "Begin,Center,End"), "set_alignment_vertical", "get_alignment_vertical"); + + BIND_ENUM_CONSTANT(STRETCH_WIDTH_CONTROLS_HEIGHT); + BIND_ENUM_CONSTANT(STRETCH_HEIGHT_CONTROLS_WIDTH); + BIND_ENUM_CONSTANT(STRETCH_FIT); + BIND_ENUM_CONSTANT(STRETCH_COVER); + + BIND_ENUM_CONSTANT(ALIGN_BEGIN); + BIND_ENUM_CONSTANT(ALIGN_CENTER); + BIND_ENUM_CONSTANT(ALIGN_END); +} diff --git a/scene/gui/aspect_ratio_container.h b/scene/gui/aspect_ratio_container.h new file mode 100644 index 0000000000..8ffc4363c3 --- /dev/null +++ b/scene/gui/aspect_ratio_container.h @@ -0,0 +1,80 @@ +/*************************************************************************/ +/* aspect_ratio_container.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#ifndef ASPECT_RATIO_CONTAINER_H +#define ASPECT_RATIO_CONTAINER_H + +#include "scene/gui/container.h" + +class AspectRatioContainer : public Container { + GDCLASS(AspectRatioContainer, Container); + +protected: + void _notification(int p_what); + static void _bind_methods(); + virtual Size2 get_minimum_size() const override; + +public: + enum StretchMode { + STRETCH_WIDTH_CONTROLS_HEIGHT, + STRETCH_HEIGHT_CONTROLS_WIDTH, + STRETCH_FIT, + STRETCH_COVER, + }; + enum AlignMode { + ALIGN_BEGIN, + ALIGN_CENTER, + ALIGN_END, + }; + +private: + float ratio = 1.0; + StretchMode stretch_mode = STRETCH_FIT; + AlignMode alignment_horizontal = ALIGN_CENTER; + AlignMode alignment_vertical = ALIGN_CENTER; + +public: + void set_ratio(float p_ratio); + float get_ratio() const { return ratio; } + + void set_stretch_mode(StretchMode p_mode); + StretchMode get_stretch_mode() const { return stretch_mode; } + + void set_alignment_horizontal(AlignMode p_alignment_horizontal); + AlignMode get_alignment_horizontal() const { return alignment_horizontal; } + + void set_alignment_vertical(AlignMode p_alignment_vertical); + AlignMode get_alignment_vertical() const { return alignment_vertical; } +}; + +VARIANT_ENUM_CAST(AspectRatioContainer::StretchMode); +VARIANT_ENUM_CAST(AspectRatioContainer::AlignMode); + +#endif // ASPECT_RATIO_CONTAINER_H diff --git a/scene/gui/control.h b/scene/gui/control.h index 85b3227884..e4fe0bb25d 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -157,8 +157,6 @@ private: Vector2 scale; Vector2 pivot_offset; - bool pending_resize; - int h_size_flags; int v_size_flags; float expand; diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index cc5f4e9598..304e8b9c6d 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -1397,6 +1397,14 @@ SceneTree::SceneTree() { bool snap_2d_vertices = GLOBAL_DEF("rendering/quality/2d/snap_2d_vertices_to_pixel", false); root->set_snap_2d_vertices_to_pixel(snap_2d_vertices); + Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_DEF("rendering/quality/2d_sdf/oversize", 1))); + root->set_sdf_oversize(sdf_oversize); + Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_DEF("rendering/quality/2d_sdf/scale", 1))); + root->set_sdf_scale(sdf_scale); + + ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/2d_sdf/oversize", PropertyInfo(Variant::INT, "rendering/quality/2d_sdf/oversize", PROPERTY_HINT_ENUM, "100%,120%,150%,200%")); + ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/2d_sdf/scale", PropertyInfo(Variant::INT, "rendering/quality/2d_sdf/scale", PROPERTY_HINT_ENUM, "100%,50%,25%")); + { //load default fallback environment //get possible extensions List<String> exts; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index f4498507f1..5be5c1b266 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -3383,6 +3383,24 @@ void Viewport::pass_mouse_focus_to(Viewport *p_viewport, Control *p_control) { } } +void Viewport::set_sdf_oversize(SDFOversize p_sdf_oversize) { + ERR_FAIL_INDEX(p_sdf_oversize, SDF_OVERSIZE_MAX); + sdf_oversize = p_sdf_oversize; + RS::get_singleton()->viewport_set_sdf_oversize_and_scale(viewport, RS::ViewportSDFOversize(sdf_oversize), RS::ViewportSDFScale(sdf_scale)); +} +Viewport::SDFOversize Viewport::get_sdf_oversize() const { + return sdf_oversize; +} + +void Viewport::set_sdf_scale(SDFScale p_sdf_scale) { + ERR_FAIL_INDEX(p_sdf_scale, SDF_SCALE_MAX); + sdf_scale = p_sdf_scale; + RS::get_singleton()->viewport_set_sdf_oversize_and_scale(viewport, RS::ViewportSDFOversize(sdf_oversize), RS::ViewportSDFScale(sdf_scale)); +} +Viewport::SDFScale Viewport::get_sdf_scale() const { + return sdf_scale; +} + void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("set_world_2d", "world_2d"), &Viewport::set_world_2d); ClassDB::bind_method(D_METHOD("get_world_2d"), &Viewport::get_world_2d); @@ -3482,6 +3500,12 @@ void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("set_default_canvas_item_texture_repeat", "mode"), &Viewport::set_default_canvas_item_texture_repeat); ClassDB::bind_method(D_METHOD("get_default_canvas_item_texture_repeat"), &Viewport::get_default_canvas_item_texture_repeat); + ClassDB::bind_method(D_METHOD("set_sdf_oversize", "oversize"), &Viewport::set_sdf_oversize); + ClassDB::bind_method(D_METHOD("get_sdf_oversize"), &Viewport::get_sdf_oversize); + + ClassDB::bind_method(D_METHOD("set_sdf_scale", "scale"), &Viewport::set_sdf_scale); + ClassDB::bind_method(D_METHOD("get_sdf_scale"), &Viewport::get_sdf_scale); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world_3d"), "set_use_own_world_3d", "is_using_own_world_3d"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_3d", PROPERTY_HINT_RESOURCE_TYPE, "World3D"), "set_world_3d", "get_world_3d"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_2d", PROPERTY_HINT_RESOURCE_TYPE, "World2D", 0), "set_world_2d", "get_world_2d"); @@ -3506,6 +3530,9 @@ void Viewport::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_disable_input"), "set_disable_input", "is_input_disabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_snap_controls_to_pixels"), "set_snap_controls_to_pixels", "is_snap_controls_to_pixels_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gui_embed_subwindows"), "set_embed_subwindows_hint", "get_embed_subwindows_hint"); + ADD_GROUP("SDF", "sdf_"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "sdf_oversize", PROPERTY_HINT_ENUM, "100%,120%,150%,200%"), "set_sdf_oversize", "get_sdf_oversize"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "sdf_scale", PROPERTY_HINT_ENUM, "100%,50%,25%"), "set_sdf_scale", "get_sdf_scale"); ADD_GROUP("Shadow Atlas", "shadow_atlas_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_atlas_size"), "set_shadow_atlas_size", "get_shadow_atlas_size"); ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_0", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 0); @@ -3575,6 +3602,17 @@ void Viewport::_bind_methods() { BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED); BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR); BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX); + + BIND_ENUM_CONSTANT(SDF_OVERSIZE_100_PERCENT); + BIND_ENUM_CONSTANT(SDF_OVERSIZE_120_PERCENT); + BIND_ENUM_CONSTANT(SDF_OVERSIZE_150_PERCENT); + BIND_ENUM_CONSTANT(SDF_OVERSIZE_200_PERCENT); + BIND_ENUM_CONSTANT(SDF_OVERSIZE_MAX); + + BIND_ENUM_CONSTANT(SDF_SCALE_100_PERCENT); + BIND_ENUM_CONSTANT(SDF_SCALE_50_PERCENT); + BIND_ENUM_CONSTANT(SDF_SCALE_25_PERCENT); + BIND_ENUM_CONSTANT(SDF_SCALE_MAX); } Viewport::Viewport() { @@ -3661,6 +3699,10 @@ Viewport::Viewport() { default_canvas_item_texture_filter = DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR; default_canvas_item_texture_repeat = DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED; + + sdf_oversize = SDF_OVERSIZE_120_PERCENT; + sdf_scale = SDF_SCALE_50_PERCENT; + set_sdf_oversize(SDF_OVERSIZE_120_PERCENT); //set to server } Viewport::~Viewport() { diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 4be66ae79f..7ce202d27c 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -159,6 +159,21 @@ public: DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX, }; + enum SDFOversize { + SDF_OVERSIZE_100_PERCENT, + SDF_OVERSIZE_120_PERCENT, + SDF_OVERSIZE_150_PERCENT, + SDF_OVERSIZE_200_PERCENT, + SDF_OVERSIZE_MAX + }; + + enum SDFScale { + SDF_SCALE_100_PERCENT, + SDF_SCALE_50_PERCENT, + SDF_SCALE_25_PERCENT, + SDF_SCALE_MAX + }; + enum { SUBWINDOW_CANVAS_LAYER = 1024 }; @@ -285,6 +300,9 @@ private: Ref<ViewportTexture> default_texture; Set<ViewportTexture *> viewport_textures; + SDFOversize sdf_oversize; + SDFScale sdf_scale; + enum SubWindowDrag { SUB_WINDOW_DRAG_DISABLED, SUB_WINDOW_DRAG_MOVE, @@ -572,6 +590,12 @@ public: bool gui_is_dragging() const; + void set_sdf_oversize(SDFOversize p_sdf_oversize); + SDFOversize get_sdf_oversize() const; + + void set_sdf_scale(SDFScale p_sdf_scale); + SDFScale get_sdf_scale() const; + void set_default_canvas_item_texture_filter(DefaultCanvasItemTextureFilter p_filter); DefaultCanvasItemTextureFilter get_default_canvas_item_texture_filter() const; @@ -650,6 +674,8 @@ VARIANT_ENUM_CAST(Viewport::ShadowAtlasQuadrantSubdiv); VARIANT_ENUM_CAST(Viewport::MSAA); VARIANT_ENUM_CAST(Viewport::ScreenSpaceAA); VARIANT_ENUM_CAST(Viewport::DebugDraw); +VARIANT_ENUM_CAST(Viewport::SDFScale); +VARIANT_ENUM_CAST(Viewport::SDFOversize); VARIANT_ENUM_CAST(SubViewport::ClearMode); VARIANT_ENUM_CAST(Viewport::RenderInfo); VARIANT_ENUM_CAST(Viewport::DefaultCanvasItemTextureFilter); diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 7997dc12e1..3ca4e6db3a 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -77,6 +77,7 @@ #include "scene/animation/tween.h" #include "scene/audio/audio_stream_player.h" #include "scene/debugger/scene_debugger.h" +#include "scene/gui/aspect_ratio_container.h" #include "scene/gui/box_container.h" #include "scene/gui/button.h" #include "scene/gui/center_container.h" @@ -324,6 +325,7 @@ void register_scene_types() { ClassDB::register_class<ColorRect>(); ClassDB::register_class<NinePatchRect>(); ClassDB::register_class<ReferenceRect>(); + ClassDB::register_class<AspectRatioContainer>(); ClassDB::register_class<TabContainer>(); ClassDB::register_class<Tabs>(); ClassDB::register_virtual_class<Separator>(); diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp index 704d1b2ea8..a3358ea8c7 100644 --- a/scene/resources/visual_shader_nodes.cpp +++ b/scene/resources/visual_shader_nodes.cpp @@ -724,6 +724,10 @@ Vector<StringName> VisualShaderNodeTexture::get_editable_properties() const { } String VisualShaderNodeTexture::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const { + if (is_input_port_connected(2) && source != SOURCE_PORT) { + return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'."); + } + if (source == SOURCE_TEXTURE) { return String(); // all good } @@ -980,6 +984,10 @@ void VisualShaderNodeSample3D::_bind_methods() { } String VisualShaderNodeSample3D::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const { + if (is_input_port_connected(2) && source != SOURCE_PORT) { + return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'."); + } + if (source == SOURCE_TEXTURE) { return String(); // all good } @@ -1276,6 +1284,13 @@ Vector<StringName> VisualShaderNodeCubemap::get_editable_properties() const { return props; } +String VisualShaderNodeCubemap::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const { + if (is_input_port_connected(2) && source != SOURCE_PORT) { + return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'."); + } + return String(); +} + void VisualShaderNodeCubemap::_bind_methods() { ClassDB::bind_method(D_METHOD("set_source", "value"), &VisualShaderNodeCubemap::set_source); ClassDB::bind_method(D_METHOD("get_source"), &VisualShaderNodeCubemap::get_source); diff --git a/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h index d4d6540baf..4b39c76388 100644 --- a/scene/resources/visual_shader_nodes.h +++ b/scene/resources/visual_shader_nodes.h @@ -448,6 +448,7 @@ public: TextureType get_texture_type() const; virtual Vector<StringName> get_editable_properties() const override; + virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; VisualShaderNodeCubemap(); }; diff --git a/servers/rendering/rasterizer.h b/servers/rendering/rasterizer.h index 01c957e242..4df140f8c3 100644 --- a/servers/rendering/rasterizer.h +++ b/servers/rendering/rasterizer.h @@ -752,6 +752,9 @@ public: virtual void render_target_disable_clear_request(RID p_render_target) = 0; virtual void render_target_do_clear_request(RID p_render_target) = 0; + virtual void render_target_set_sdf_size_and_scale(RID p_render_target, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale) = 0; + virtual Rect2i render_target_get_sdf_rect(RID p_render_target) const = 0; + virtual RS::InstanceType get_base_type(RID p_rid) const = 0; virtual bool free(RID p_rid) = 0; @@ -1324,7 +1327,7 @@ public: } }; - virtual void canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_list, const Transform2D &p_canvas_transform, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel) = 0; + virtual void canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_list, const Transform2D &p_canvas_transform, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, bool &r_sdf_used) = 0; virtual void canvas_debug_viewport_shadows(Light *p_lights_with_shadow) = 0; struct LightOccluderInstance { @@ -1336,12 +1339,14 @@ public: Transform2D xform; Transform2D xform_cache; int light_mask; + bool sdf_collision; RS::CanvasOccluderPolygonCullMode cull_cache; LightOccluderInstance *next; LightOccluderInstance() { enabled = true; + sdf_collision = false; next = nullptr; light_mask = 1; cull_cache = RS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED; @@ -1354,8 +1359,10 @@ public: virtual void light_update_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, LightOccluderInstance *p_occluders) = 0; virtual void light_update_directional_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_cull_distance, const Rect2 &p_clip_rect, LightOccluderInstance *p_occluders) = 0; + virtual void render_sdf(RID p_render_target, LightOccluderInstance *p_occluders) = 0; + virtual RID occluder_polygon_create() = 0; - virtual void occluder_polygon_set_shape_as_lines(RID p_occluder, const Vector<Vector2> &p_lines) = 0; + virtual void occluder_polygon_set_shape(RID p_occluder, const Vector<Vector2> &p_points, bool p_closed) = 0; virtual void occluder_polygon_set_cull_mode(RID p_occluder, RS::CanvasOccluderPolygonCullMode p_mode) = 0; virtual void set_shadow_texture_size(int p_size) = 0; diff --git a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp index 174f2d0e58..921a7b966e 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp @@ -30,6 +30,7 @@ #include "rasterizer_canvas_rd.h" #include "core/config/project_settings.h" +#include "core/math/geometry_2d.h" #include "core/math/math_funcs.h" #include "rasterizer_rd.h" @@ -1051,10 +1052,19 @@ RID RasterizerCanvasRD::_create_base_uniform_set(RID p_to_render_target, bool p_ } { + RD::Uniform u; + u.type = RD::UNIFORM_TYPE_TEXTURE; + u.binding = 7; + RID sdf = storage->render_target_get_sdf_texture(p_to_render_target); + u.ids.push_back(sdf); + uniforms.push_back(u); + } + + { //needs samplers for the material (uses custom textures) create them RD::Uniform u; u.type = RD::UNIFORM_TYPE_SAMPLER; - u.binding = 7; + u.binding = 8; u.ids.resize(12); RID *ids_ptr = u.ids.ptrw(); ids_ptr[0] = storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED); @@ -1075,7 +1085,7 @@ RID RasterizerCanvasRD::_create_base_uniform_set(RID p_to_render_target, bool p_ { RD::Uniform u; u.type = RD::UNIFORM_TYPE_STORAGE_BUFFER; - u.binding = 8; + u.binding = 9; u.ids.push_back(storage->global_variables_get_storage_buffer()); uniforms.push_back(u); } @@ -1182,7 +1192,8 @@ void RasterizerCanvasRD::_render_items(RID p_to_render_target, int p_item_count, RD::get_singleton()->draw_list_end(); } -void RasterizerCanvasRD::canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_light_list, const Transform2D &p_canvas_transform, RenderingServer::CanvasItemTextureFilter p_default_filter, RenderingServer::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel) { +void RasterizerCanvasRD::canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_light_list, const Transform2D &p_canvas_transform, RenderingServer::CanvasItemTextureFilter p_default_filter, RenderingServer::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, bool &r_sdf_used) { + r_sdf_used = false; int item_count = 0; //setup canvas state uniforms if needed @@ -1365,6 +1376,25 @@ void RasterizerCanvasRD::canvas_render_items(RID p_to_render_target, Item *p_ite state_buffer.directional_light_count = directional_light_count; + Vector2 canvas_scale = p_canvas_transform.get_scale(); + + state_buffer.sdf_to_screen[0] = render_target_size.width / canvas_scale.x; + state_buffer.sdf_to_screen[1] = render_target_size.height / canvas_scale.y; + + state_buffer.screen_to_sdf[0] = 1.0 / state_buffer.sdf_to_screen[0]; + state_buffer.screen_to_sdf[1] = 1.0 / state_buffer.sdf_to_screen[1]; + + Rect2 sdf_rect = storage->render_target_get_sdf_rect(p_to_render_target); + Rect2 sdf_tex_rect(sdf_rect.position / canvas_scale, sdf_rect.size / canvas_scale); + + state_buffer.sdf_to_tex[0] = 1.0 / sdf_tex_rect.size.width; + state_buffer.sdf_to_tex[1] = 1.0 / sdf_tex_rect.size.height; + state_buffer.sdf_to_tex[2] = -sdf_tex_rect.position.x / sdf_tex_rect.size.width; + state_buffer.sdf_to_tex[3] = -sdf_tex_rect.position.y / sdf_tex_rect.size.height; + + //print_line("w: " + itos(ssize.width) + " s: " + rtos(canvas_scale)); + state_buffer.tex_to_sdf = 1.0 / ((canvas_scale.x + canvas_scale.y) * 0.5); + RD::get_singleton()->buffer_update(state.canvas_state_buffer, 0, sizeof(State::Buffer), &state_buffer, true); } @@ -1402,6 +1432,9 @@ void RasterizerCanvasRD::canvas_render_items(RID p_to_render_target, Item *p_ite } } + if (md->shader_data->uses_sdf) { + r_sdf_used = true; + } if (md->last_frame != RasterizerRD::singleton->get_frame_number()) { md->last_frame = RasterizerRD::singleton->get_frame_number(); if (!RD::get_singleton()->uniform_set_is_valid(md->uniform_set)) { @@ -1687,18 +1720,102 @@ void RasterizerCanvasRD::light_update_directional_shadow(RID p_rid, int p_shadow cl->shadow.directional_xform = to_shadow * to_light_xform; } +void RasterizerCanvasRD::render_sdf(RID p_render_target, LightOccluderInstance *p_occluders) { + RID fb = storage->render_target_get_sdf_framebuffer(p_render_target); + Rect2i rect = storage->render_target_get_sdf_rect(p_render_target); + + Transform2D to_sdf; + to_sdf.elements[0] *= rect.size.width; + to_sdf.elements[1] *= rect.size.height; + to_sdf.elements[2] = rect.position; + + Transform2D to_clip; + to_clip.elements[0] *= 2.0; + to_clip.elements[1] *= 2.0; + to_clip.elements[2] = -Vector2(1.0, 1.0); + + to_clip = to_clip * to_sdf.affine_inverse(); + + Vector<Color> cc; + cc.push_back(Color(0, 0, 0, 0)); + + RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(fb, RD::INITIAL_ACTION_CLEAR, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_CLEAR, RD::FINAL_ACTION_DISCARD, cc); + + CameraMatrix projection; + + ShadowRenderPushConstant push_constant; + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 4; x++) { + push_constant.projection[y * 4 + x] = projection.matrix[y][x]; + } + } + + push_constant.direction[0] = 0.0; + push_constant.direction[1] = 0.0; + push_constant.z_far = 0; + push_constant.pad = 0; + + LightOccluderInstance *instance = p_occluders; + + while (instance) { + OccluderPolygon *co = occluder_polygon_owner.getornull(instance->occluder); + + if (!co || co->sdf_index_array.is_null()) { + instance = instance->next; + continue; + } + + _update_transform_2d_to_mat2x4(to_clip * instance->xform_cache, push_constant.modelview); + + RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, shadow_render.sdf_render_pipelines[co->sdf_is_lines ? SHADOW_RENDER_SDF_LINES : SHADOW_RENDER_SDF_TRIANGLES]); + RD::get_singleton()->draw_list_bind_vertex_array(draw_list, co->sdf_vertex_array); + RD::get_singleton()->draw_list_bind_index_array(draw_list, co->sdf_index_array); + RD::get_singleton()->draw_list_set_push_constant(draw_list, &push_constant, sizeof(ShadowRenderPushConstant)); + + RD::get_singleton()->draw_list_draw(draw_list, true); + + instance = instance->next; + } + + RD::get_singleton()->draw_list_end(); + + storage->render_target_sdf_process(p_render_target); //done rendering, process it +} + RID RasterizerCanvasRD::occluder_polygon_create() { OccluderPolygon occluder; - occluder.point_count = 0; + occluder.line_point_count = 0; + occluder.sdf_point_count = 0; + occluder.sdf_index_count = 0; occluder.cull_mode = RS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED; return occluder_polygon_owner.make_rid(occluder); } -void RasterizerCanvasRD::occluder_polygon_set_shape_as_lines(RID p_occluder, const Vector<Vector2> &p_lines) { +void RasterizerCanvasRD::occluder_polygon_set_shape(RID p_occluder, const Vector<Vector2> &p_points, bool p_closed) { OccluderPolygon *oc = occluder_polygon_owner.getornull(p_occluder); ERR_FAIL_COND(!oc); - if (oc->point_count != p_lines.size() && oc->vertex_array.is_valid()) { + Vector<Vector2> lines; + int lc = p_points.size() * 2; + + lines.resize(lc - (p_closed ? 0 : 2)); + { + Vector2 *w = lines.ptrw(); + const Vector2 *r = p_points.ptr(); + + int max = lc / 2; + if (!p_closed) { + max--; + } + for (int i = 0; i < max; i++) { + Vector2 a = r[i]; + Vector2 b = r[(i + 1) % (lc / 2)]; + w[i * 2 + 0] = a; + w[i * 2 + 1] = b; + } + } + + if (oc->line_point_count != lines.size() && oc->vertex_array.is_valid()) { RD::get_singleton()->free(oc->vertex_array); RD::get_singleton()->free(oc->vertex_buffer); RD::get_singleton()->free(oc->index_array); @@ -1708,12 +1825,14 @@ void RasterizerCanvasRD::occluder_polygon_set_shape_as_lines(RID p_occluder, con oc->vertex_buffer = RID(); oc->index_array = RID(); oc->index_buffer = RID(); + + oc->line_point_count = lines.size(); } - if (p_lines.size()) { + if (lines.size()) { Vector<uint8_t> geometry; Vector<uint8_t> indices; - int lc = p_lines.size(); + lc = lines.size(); geometry.resize(lc * 6 * sizeof(float)); indices.resize(lc * 3 * sizeof(uint16_t)); @@ -1724,7 +1843,7 @@ void RasterizerCanvasRD::occluder_polygon_set_shape_as_lines(RID p_occluder, con uint8_t *iw = indices.ptrw(); uint16_t *iwptr = (uint16_t *)iw; - const Vector2 *lr = p_lines.ptr(); + const Vector2 *lr = lines.ptr(); const int POLY_HEIGHT = 16384; @@ -1778,6 +1897,62 @@ void RasterizerCanvasRD::occluder_polygon_set_shape_as_lines(RID p_occluder, con RD::get_singleton()->buffer_update(oc->index_buffer, 0, indices.size(), ir); } } + + // sdf + + Vector<int> sdf_indices; + + if (p_closed) { + sdf_indices = Geometry2D::triangulate_polygon(p_points); + oc->sdf_is_lines = false; + } else { + int max = p_points.size(); + sdf_indices.resize(max * 2); + + int *iw = sdf_indices.ptrw(); + for (int i = 0; i < max; i++) { + iw[i * 2 + 0] = i; + iw[i * 2 + 1] = (i + 1) % max; + } + oc->sdf_is_lines = true; + } + + if (oc->sdf_index_count != sdf_indices.size() && oc->sdf_point_count != p_points.size() && oc->sdf_vertex_array.is_valid()) { + RD::get_singleton()->free(oc->sdf_vertex_array); + RD::get_singleton()->free(oc->sdf_vertex_buffer); + RD::get_singleton()->free(oc->sdf_index_array); + RD::get_singleton()->free(oc->sdf_index_buffer); + + oc->sdf_vertex_array = RID(); + oc->sdf_vertex_buffer = RID(); + oc->sdf_index_array = RID(); + oc->sdf_index_buffer = RID(); + + oc->sdf_index_count = sdf_indices.size(); + oc->sdf_point_count = p_points.size(); + + oc->sdf_is_lines = false; + } + + if (sdf_indices.size()) { + if (oc->sdf_vertex_array.is_null()) { + //create from scratch + //vertices + oc->sdf_vertex_buffer = RD::get_singleton()->vertex_buffer_create(p_points.size() * 2 * sizeof(real_t), p_points.to_byte_array()); + oc->sdf_index_buffer = RD::get_singleton()->index_buffer_create(sdf_indices.size(), RD::INDEX_BUFFER_FORMAT_UINT32, sdf_indices.to_byte_array()); + oc->sdf_index_array = RD::get_singleton()->index_array_create(oc->sdf_index_buffer, 0, sdf_indices.size()); + + Vector<RID> buffer; + buffer.push_back(oc->sdf_vertex_buffer); + oc->sdf_vertex_array = RD::get_singleton()->vertex_array_create(p_points.size(), shadow_render.sdf_vertex_format, buffer); + //indices + + } else { + //update existing + RD::get_singleton()->buffer_update(oc->vertex_buffer, 0, sizeof(real_t) * 2 * p_points.size(), p_points.ptr()); + RD::get_singleton()->buffer_update(oc->index_buffer, 0, sdf_indices.size() * sizeof(int32_t), sdf_indices.ptr()); + } + } } void RasterizerCanvasRD::occluder_polygon_set_cull_mode(RID p_occluder, RS::CanvasOccluderPolygonCullMode p_mode) { @@ -1794,6 +1969,7 @@ void RasterizerCanvasRD::ShaderData::set_code(const String &p_code) { ubo_size = 0; uniforms.clear(); uses_screen_texture = false; + uses_sdf = false; if (code == String()) { return; //just invalid, but no error @@ -1801,7 +1977,6 @@ void RasterizerCanvasRD::ShaderData::set_code(const String &p_code) { ShaderCompilerRD::GeneratedCode gen_code; - int light_mode = LIGHT_MODE_NORMAL; int blend_mode = BLEND_MODE_MIX; uses_screen_texture = false; @@ -1814,10 +1989,8 @@ void RasterizerCanvasRD::ShaderData::set_code(const String &p_code) { actions.render_mode_values["blend_premul_alpha"] = Pair<int *, int>(&blend_mode, BLEND_MODE_PMALPHA); actions.render_mode_values["blend_disabled"] = Pair<int *, int>(&blend_mode, BLEND_MODE_DISABLED); - actions.render_mode_values["unshaded"] = Pair<int *, int>(&light_mode, LIGHT_MODE_UNSHADED); - actions.render_mode_values["light_only"] = Pair<int *, int>(&light_mode, LIGHT_MODE_LIGHT_ONLY); - actions.usage_flag_pointers["SCREEN_TEXTURE"] = &uses_screen_texture; + actions.usage_flag_pointers["texture_sdf"] = &uses_sdf; actions.uniforms = &uniforms; @@ -2038,6 +2211,7 @@ Variant RasterizerCanvasRD::ShaderData::get_default_parameter(const StringName & RasterizerCanvasRD::ShaderData::ShaderData() { valid = false; uses_screen_texture = false; + uses_sdf = false; } RasterizerCanvasRD::ShaderData::~ShaderData() { @@ -2302,6 +2476,11 @@ RasterizerCanvasRD::RasterizerCanvasRD(RasterizerStorageRD *p_storage) { actions.renames["LIGHT"] = "light"; actions.renames["SHADOW_MODULATE"] = "shadow_modulate"; + actions.renames["texture_sdf"] = "texture_sdf"; + actions.renames["texture_sdf_normal"] = "texture_sdf_normal"; + actions.renames["sdf_to_screen_uv"] = "sdf_to_screen_uv"; + actions.renames["screen_uv_to_sdf"] = "screen_uv_to_sdf"; + actions.usage_defines["COLOR"] = "#define COLOR_USED\n"; actions.usage_defines["SCREEN_TEXTURE"] = "#define SCREEN_TEXTURE_USED\n"; actions.usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n"; @@ -2311,6 +2490,8 @@ RasterizerCanvasRD::RasterizerCanvasRD(RasterizerStorageRD *p_storage) { actions.usage_defines["LIGHT"] = "#define LIGHT_SHADER_CODE_USED\n"; actions.render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n"; + actions.render_mode_defines["unshaded"] = "#define MODE_UNSHADED\n"; + actions.render_mode_defines["light_only"] = "#define MODE_LIGHT_ONLY\n"; actions.custom_samplers["TEXTURE"] = "texture_sampler"; actions.custom_samplers["NORMAL_TEXTURE"] = "texture_sampler"; @@ -2331,7 +2512,8 @@ RasterizerCanvasRD::RasterizerCanvasRD(RasterizerStorageRD *p_storage) { { //shadow rendering Vector<String> versions; - versions.push_back(String()); //no versions + versions.push_back("\n#define MODE_SHADOW\n"); //shadow + versions.push_back("\n#define MODE_SDF\n"); //sdf shadow_render.shader.initialize(versions); { @@ -2352,16 +2534,34 @@ RasterizerCanvasRD::RasterizerCanvasRD(RasterizerStorageRD *p_storage) { shadow_render.framebuffer_format = RD::get_singleton()->framebuffer_format_create(attachments); } + { + Vector<RD::AttachmentFormat> attachments; + + RD::AttachmentFormat af_color; + af_color.format = RD::DATA_FORMAT_R8_UNORM; + af_color.usage_flags = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT; + + attachments.push_back(af_color); + + shadow_render.sdf_framebuffer_format = RD::get_singleton()->framebuffer_format_create(attachments); + } + //pipelines Vector<RD::VertexAttribute> vf; RD::VertexAttribute vd; - vd.format = RD::DATA_FORMAT_R32G32B32_SFLOAT; + vd.format = sizeof(real_t) == sizeof(float) ? RD::DATA_FORMAT_R32G32B32_SFLOAT : RD::DATA_FORMAT_R64G64B64_SFLOAT; vd.location = 0; vd.offset = 0; - vd.stride = sizeof(float) * 3; + vd.stride = sizeof(real_t) * 3; vf.push_back(vd); shadow_render.vertex_format = RD::get_singleton()->vertex_format_create(vf); + vd.format = sizeof(real_t) == sizeof(float) ? RD::DATA_FORMAT_R32G32_SFLOAT : RD::DATA_FORMAT_R64G64_SFLOAT; + vd.stride = sizeof(real_t) * 2; + + vf.write[0] = vd; + shadow_render.sdf_vertex_format = RD::get_singleton()->vertex_format_create(vf); + shadow_render.shader_version = shadow_render.shader.version_create(); for (int i = 0; i < 3; i++) { @@ -2371,7 +2571,11 @@ RasterizerCanvasRD::RasterizerCanvasRD(RasterizerStorageRD *p_storage) { ds.enable_depth_write = true; ds.enable_depth_test = true; ds.depth_compare_operator = RD::COMPARE_OP_LESS; - shadow_render.render_pipelines[i] = RD::get_singleton()->render_pipeline_create(shadow_render.shader.version_get_shader(shadow_render.shader_version, 0), shadow_render.framebuffer_format, shadow_render.vertex_format, RD::RENDER_PRIMITIVE_TRIANGLES, rs, RD::PipelineMultisampleState(), ds, RD::PipelineColorBlendState::create_disabled(), 0); + shadow_render.render_pipelines[i] = RD::get_singleton()->render_pipeline_create(shadow_render.shader.version_get_shader(shadow_render.shader_version, SHADOW_RENDER_MODE_SHADOW), shadow_render.framebuffer_format, shadow_render.vertex_format, RD::RENDER_PRIMITIVE_TRIANGLES, rs, RD::PipelineMultisampleState(), ds, RD::PipelineColorBlendState::create_disabled(), 0); + } + + for (int i = 0; i < 2; i++) { + shadow_render.sdf_render_pipelines[i] = RD::get_singleton()->render_pipeline_create(shadow_render.shader.version_get_shader(shadow_render.shader_version, SHADOW_RENDER_MODE_SDF), shadow_render.sdf_framebuffer_format, shadow_render.sdf_vertex_format, i == 0 ? RD::RENDER_PRIMITIVE_TRIANGLES : RD::RENDER_PRIMITIVE_LINES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0); } } @@ -2482,7 +2686,7 @@ bool RasterizerCanvasRD::free(RID p_rid) { light_set_use_shadow(p_rid, false); canvas_light_owner.free(p_rid); } else if (occluder_polygon_owner.owns(p_rid)) { - occluder_polygon_set_shape_as_lines(p_rid, Vector<Vector2>()); + occluder_polygon_set_shape(p_rid, Vector<Vector2>(), false); occluder_polygon_owner.free(p_rid); } else { return false; diff --git a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.h b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.h index b516f63cbf..b09d6578f3 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.h +++ b/servers/rendering/rasterizer_rd/rasterizer_canvas_rd.h @@ -161,12 +161,6 @@ class RasterizerCanvasRD : public RasterizerCanvas { BLEND_MODE_DISABLED, }; - enum LightMode { - LIGHT_MODE_NORMAL, - LIGHT_MODE_UNSHADED, - LIGHT_MODE_LIGHT_ONLY - }; - bool valid; RID version; PipelineVariants pipeline_variants; @@ -181,7 +175,8 @@ class RasterizerCanvasRD : public RasterizerCanvas { String code; Map<StringName, RID> default_texture_params; - bool uses_screen_texture; + bool uses_screen_texture = false; + bool uses_sdf = false; virtual void set_code(const String &p_Code); virtual void set_default_texture_param(const StringName &p_name, RID p_texture); @@ -284,11 +279,19 @@ class RasterizerCanvasRD : public RasterizerCanvas { struct OccluderPolygon { RS::CanvasOccluderPolygonCullMode cull_mode; - int point_count; + int line_point_count; RID vertex_buffer; RID vertex_array; RID index_buffer; RID index_array; + + int sdf_point_count; + int sdf_index_count; + RID sdf_vertex_buffer; + RID sdf_vertex_array; + RID sdf_index_buffer; + RID sdf_index_array; + bool sdf_is_lines; }; struct LightUniform { @@ -310,12 +313,25 @@ class RasterizerCanvasRD : public RasterizerCanvas { RID_Owner<OccluderPolygon> occluder_polygon_owner; + enum ShadowRenderMode { + SHADOW_RENDER_MODE_SHADOW, + SHADOW_RENDER_MODE_SDF, + }; + + enum { + SHADOW_RENDER_SDF_TRIANGLES, + SHADOW_RENDER_SDF_LINES, + }; + struct { CanvasOcclusionShaderRD shader; RID shader_version; RID render_pipelines[3]; + RID sdf_render_pipelines[2]; RD::VertexFormatID vertex_format; + RD::VertexFormatID sdf_vertex_format; RD::FramebufferFormatID framebuffer_format; + RD::FramebufferFormatID sdf_framebuffer_format; } shadow_render; /***************/ @@ -336,8 +352,14 @@ class RasterizerCanvasRD : public RasterizerCanvas { float time; uint32_t use_pixel_snap; + float sdf_to_tex[4]; + float sdf_to_screen[2]; + float screen_to_sdf[2]; + uint32_t directional_light_count; - uint32_t pad[3]; + float tex_to_sdf; + uint32_t pad1; + uint32_t pad2; }; LightUniform *light_uniforms; @@ -423,11 +445,13 @@ public: void light_update_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, LightOccluderInstance *p_occluders); void light_update_directional_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_cull_distance, const Rect2 &p_clip_rect, LightOccluderInstance *p_occluders); + virtual void render_sdf(RID p_render_target, LightOccluderInstance *p_occluders); + RID occluder_polygon_create(); - void occluder_polygon_set_shape_as_lines(RID p_occluder, const Vector<Vector2> &p_lines); + void occluder_polygon_set_shape(RID p_occluder, const Vector<Vector2> &p_points, bool p_closed); void occluder_polygon_set_cull_mode(RID p_occluder, RS::CanvasOccluderPolygonCullMode p_mode); - void canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_light_list, const Transform2D &p_canvas_transform, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel); + void canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_light_list, const Transform2D &p_canvas_transform, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, bool &r_sdf_used); void canvas_debug_viewport_shadows(Light *p_lights_with_shadow) {} diff --git a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp index 5fd8003f8f..444ef9c49a 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp +++ b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.cpp @@ -6029,6 +6029,8 @@ void RasterizerStorageRD::_clear_render_target(RenderTarget *rt) { rt->backbuffer_uniform_set = RID(); //chain deleted } + _render_target_clear_sdf(rt); + rt->framebuffer = RID(); rt->color = RID(); } @@ -6299,6 +6301,275 @@ void RasterizerStorageRD::render_target_do_clear_request(RID p_render_target) { rt->clear_requested = false; } +void RasterizerStorageRD::render_target_set_sdf_size_and_scale(RID p_render_target, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale) { + RenderTarget *rt = render_target_owner.getornull(p_render_target); + ERR_FAIL_COND(!rt); + if (rt->sdf_oversize == p_size && rt->sdf_scale == p_scale) { + return; + } + + rt->sdf_oversize = p_size; + rt->sdf_scale = p_scale; + + _render_target_clear_sdf(rt); +} + +Rect2i RasterizerStorageRD::_render_target_get_sdf_rect(const RenderTarget *rt) const { + Size2i margin; + int scale; + switch (rt->sdf_oversize) { + case RS::VIEWPORT_SDF_OVERSIZE_100_PERCENT: { + scale = 100; + } break; + case RS::VIEWPORT_SDF_OVERSIZE_120_PERCENT: { + scale = 120; + } break; + case RS::VIEWPORT_SDF_OVERSIZE_150_PERCENT: { + scale = 150; + } break; + case RS::VIEWPORT_SDF_OVERSIZE_200_PERCENT: { + scale = 200; + } break; + default: { + } + } + + margin = (rt->size * scale / 100) - rt->size; + + Rect2i r(Vector2i(), rt->size); + r.position -= margin; + r.size += margin * 2; + + return r; +} + +Rect2i RasterizerStorageRD::render_target_get_sdf_rect(RID p_render_target) const { + const RenderTarget *rt = render_target_owner.getornull(p_render_target); + ERR_FAIL_COND_V(!rt, Rect2i()); + + return _render_target_get_sdf_rect(rt); +} + +RID RasterizerStorageRD::render_target_get_sdf_texture(RID p_render_target) { + RenderTarget *rt = render_target_owner.getornull(p_render_target); + ERR_FAIL_COND_V(!rt, RID()); + if (rt->sdf_buffer_read.is_null()) { + // no texture, create a dummy one for the 2D uniform set + RD::TextureFormat tformat; + tformat.format = RD::DATA_FORMAT_R8G8B8A8_UNORM; + tformat.width = 4; + tformat.height = 4; + tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT; + tformat.type = RD::TEXTURE_TYPE_2D; + + Vector<uint8_t> pv; + pv.resize(16 * 4); + zeromem(pv.ptrw(), 16 * 4); + Vector<Vector<uint8_t>> vpv; + + rt->sdf_buffer_read = RD::get_singleton()->texture_create(tformat, RD::TextureView(), vpv); + } + + return rt->sdf_buffer_read; +} + +void RasterizerStorageRD::_render_target_allocate_sdf(RenderTarget *rt) { + ERR_FAIL_COND(rt->sdf_buffer_write_fb.is_valid()); + if (rt->sdf_buffer_read.is_valid()) { + RD::get_singleton()->free(rt->sdf_buffer_read); + rt->sdf_buffer_read = RID(); + } + + Size2i size = _render_target_get_sdf_rect(rt).size; + + RD::TextureFormat tformat; + tformat.format = RD::DATA_FORMAT_R8_UNORM; + tformat.width = size.width; + tformat.height = size.height; + tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT; + tformat.type = RD::TEXTURE_TYPE_2D; + + rt->sdf_buffer_write = RD::get_singleton()->texture_create(tformat, RD::TextureView()); + + { + Vector<RID> write_fb; + write_fb.push_back(rt->sdf_buffer_write); + rt->sdf_buffer_write_fb = RD::get_singleton()->framebuffer_create(write_fb); + } + + int scale; + switch (rt->sdf_scale) { + case RS::VIEWPORT_SDF_SCALE_100_PERCENT: { + scale = 100; + } break; + case RS::VIEWPORT_SDF_SCALE_50_PERCENT: { + scale = 50; + } break; + case RS::VIEWPORT_SDF_SCALE_25_PERCENT: { + scale = 25; + } break; + default: { + scale = 100; + } break; + } + + rt->process_size = size * scale / 100; + rt->process_size.x = MAX(rt->process_size.x, 1); + rt->process_size.y = MAX(rt->process_size.y, 1); + + tformat.format = RD::DATA_FORMAT_R16G16_UINT; + tformat.width = rt->process_size.width; + tformat.height = rt->process_size.height; + tformat.usage_bits = RD::TEXTURE_USAGE_STORAGE_BIT; + + rt->sdf_buffer_process[0] = RD::get_singleton()->texture_create(tformat, RD::TextureView()); + rt->sdf_buffer_process[1] = RD::get_singleton()->texture_create(tformat, RD::TextureView()); + + tformat.format = RD::DATA_FORMAT_R16_UNORM; + tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT; + + rt->sdf_buffer_read = RD::get_singleton()->texture_create(tformat, RD::TextureView()); + + { + Vector<RD::Uniform> uniforms; + { + RD::Uniform u; + u.type = RD::UNIFORM_TYPE_IMAGE; + u.binding = 1; + u.ids.push_back(rt->sdf_buffer_write); + uniforms.push_back(u); + } + { + RD::Uniform u; + u.type = RD::UNIFORM_TYPE_IMAGE; + u.binding = 2; + u.ids.push_back(rt->sdf_buffer_read); + uniforms.push_back(u); + } + { + RD::Uniform u; + u.type = RD::UNIFORM_TYPE_IMAGE; + u.binding = 3; + u.ids.push_back(rt->sdf_buffer_process[0]); + uniforms.push_back(u); + } + { + RD::Uniform u; + u.type = RD::UNIFORM_TYPE_IMAGE; + u.binding = 4; + u.ids.push_back(rt->sdf_buffer_process[1]); + uniforms.push_back(u); + } + + rt->sdf_buffer_process_uniform_sets[0] = RD::get_singleton()->uniform_set_create(uniforms, rt_sdf.shader.version_get_shader(rt_sdf.shader_version, 0), 0); + SWAP(uniforms.write[2].ids.write[0], uniforms.write[3].ids.write[0]); + rt->sdf_buffer_process_uniform_sets[1] = RD::get_singleton()->uniform_set_create(uniforms, rt_sdf.shader.version_get_shader(rt_sdf.shader_version, 0), 0); + } +} + +void RasterizerStorageRD::_render_target_clear_sdf(RenderTarget *rt) { + if (rt->sdf_buffer_read.is_valid()) { + RD::get_singleton()->free(rt->sdf_buffer_read); + rt->sdf_buffer_read = RID(); + } + if (rt->sdf_buffer_write_fb.is_valid()) { + RD::get_singleton()->free(rt->sdf_buffer_write); + RD::get_singleton()->free(rt->sdf_buffer_process[0]); + RD::get_singleton()->free(rt->sdf_buffer_process[1]); + rt->sdf_buffer_write = RID(); + rt->sdf_buffer_write_fb = RID(); + rt->sdf_buffer_process[0] = RID(); + rt->sdf_buffer_process[1] = RID(); + rt->sdf_buffer_process_uniform_sets[0] = RID(); + rt->sdf_buffer_process_uniform_sets[1] = RID(); + } +} + +RID RasterizerStorageRD::render_target_get_sdf_framebuffer(RID p_render_target) { + RenderTarget *rt = render_target_owner.getornull(p_render_target); + ERR_FAIL_COND_V(!rt, RID()); + + if (rt->sdf_buffer_write_fb.is_null()) { + _render_target_allocate_sdf(rt); + } + + return rt->sdf_buffer_write_fb; +} +void RasterizerStorageRD::render_target_sdf_process(RID p_render_target) { + RenderTarget *rt = render_target_owner.getornull(p_render_target); + ERR_FAIL_COND(!rt); + ERR_FAIL_COND(rt->sdf_buffer_write_fb.is_null()); + + RenderTargetSDF::PushConstant push_constant; + + Rect2i r = _render_target_get_sdf_rect(rt); + + push_constant.size[0] = r.size.width; + push_constant.size[1] = r.size.height; + push_constant.stride = 0; + push_constant.shift = 0; + push_constant.base_size[0] = r.size.width; + push_constant.base_size[1] = r.size.height; + + bool shrink = false; + + switch (rt->sdf_scale) { + case RS::VIEWPORT_SDF_SCALE_50_PERCENT: { + push_constant.size[0] >>= 1; + push_constant.size[1] >>= 1; + push_constant.shift = 1; + shrink = true; + } break; + case RS::VIEWPORT_SDF_SCALE_25_PERCENT: { + push_constant.size[0] >>= 2; + push_constant.size[1] >>= 2; + push_constant.shift = 2; + shrink = true; + } break; + default: { + }; + } + + RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin(); + + /* Load */ + + RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, rt_sdf.pipelines[shrink ? RenderTargetSDF::SHADER_LOAD_SHRINK : RenderTargetSDF::SHADER_LOAD]); + RD::get_singleton()->compute_list_bind_uniform_set(compute_list, rt->sdf_buffer_process_uniform_sets[1], 0); //fill [0] + RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(RenderTargetSDF::PushConstant)); + + RD::get_singleton()->compute_list_dispatch_threads(compute_list, push_constant.size[0], push_constant.size[1], 1, 8, 8, 1); + + /* Process */ + + int stride = nearest_power_of_2_templated(MAX(push_constant.size[0], push_constant.size[1]) / 2); + + RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, rt_sdf.pipelines[RenderTargetSDF::SHADER_PROCESS]); + + RD::get_singleton()->compute_list_add_barrier(compute_list); + bool swap = false; + + //jumpflood + while (stride > 0) { + RD::get_singleton()->compute_list_bind_uniform_set(compute_list, rt->sdf_buffer_process_uniform_sets[swap ? 1 : 0], 0); + push_constant.stride = stride; + RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(RenderTargetSDF::PushConstant)); + RD::get_singleton()->compute_list_dispatch_threads(compute_list, push_constant.size[0], push_constant.size[1], 1, 8, 8, 1); + stride /= 2; + swap = !swap; + RD::get_singleton()->compute_list_add_barrier(compute_list); + } + + /* Store */ + + RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, rt_sdf.pipelines[shrink ? RenderTargetSDF::SHADER_STORE_SHRINK : RenderTargetSDF::SHADER_STORE]); + RD::get_singleton()->compute_list_bind_uniform_set(compute_list, rt->sdf_buffer_process_uniform_sets[swap ? 1 : 0], 0); + RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(RenderTargetSDF::PushConstant)); + RD::get_singleton()->compute_list_dispatch_threads(compute_list, push_constant.size[0], push_constant.size[1], 1, 8, 8, 1); + + RD::get_singleton()->compute_list_end(); +} + void RasterizerStorageRD::render_target_copy_to_back_buffer(RID p_render_target, const Rect2i &p_region, bool p_gen_mipmaps) { RenderTarget *rt = render_target_owner.getornull(p_render_target); ERR_FAIL_COND(!rt); @@ -8155,6 +8426,24 @@ RasterizerStorageRD::RasterizerStorageRD() { particles_shader.copy_pipelines[i] = RD::get_singleton()->compute_pipeline_create(particles_shader.copy_shader.version_get_shader(particles_shader.copy_shader_version, i)); } } + + { + Vector<String> sdf_modes; + sdf_modes.push_back("\n#define MODE_LOAD\n"); + sdf_modes.push_back("\n#define MODE_LOAD_SHRINK\n"); + sdf_modes.push_back("\n#define MODE_PROCESS\n"); + sdf_modes.push_back("\n#define MODE_PROCESS_OPTIMIZED\n"); + sdf_modes.push_back("\n#define MODE_STORE\n"); + sdf_modes.push_back("\n#define MODE_STORE_SHRINK\n"); + + rt_sdf.shader.initialize(sdf_modes); + + rt_sdf.shader_version = rt_sdf.shader.version_create(); + + for (int i = 0; i < RenderTargetSDF::SHADER_MAX; i++) { + rt_sdf.pipelines[i] = RD::get_singleton()->compute_pipeline_create(rt_sdf.shader.version_get_shader(rt_sdf.shader_version, i)); + } + } } RasterizerStorageRD::~RasterizerStorageRD() { diff --git a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.h b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.h index b7ad931149..4a708fc94f 100644 --- a/servers/rendering/rasterizer_rd/rasterizer_storage_rd.h +++ b/servers/rendering/rasterizer_rd/rasterizer_storage_rd.h @@ -35,6 +35,7 @@ #include "servers/rendering/rasterizer.h" #include "servers/rendering/rasterizer_rd/rasterizer_effects_rd.h" #include "servers/rendering/rasterizer_rd/shader_compiler_rd.h" +#include "servers/rendering/rasterizer_rd/shaders/canvas_sdf.glsl.gen.h" #include "servers/rendering/rasterizer_rd/shaders/giprobe_sdf.glsl.gen.h" #include "servers/rendering/rasterizer_rd/shaders/particles.glsl.gen.h" #include "servers/rendering/rasterizer_rd/shaders/particles_copy.glsl.gen.h" @@ -1003,6 +1004,15 @@ private: RID framebuffer_uniform_set; RID backbuffer_uniform_set; + RID sdf_buffer_write; + RID sdf_buffer_write_fb; + RID sdf_buffer_process[2]; + RID sdf_buffer_read; + RID sdf_buffer_process_uniform_sets[2]; + RS::ViewportSDFOversize sdf_oversize = RS::VIEWPORT_SDF_OVERSIZE_120_PERCENT; + RS::ViewportSDFScale sdf_scale = RS::VIEWPORT_SDF_SCALE_50_PERCENT; + Size2i process_size; + //texture generated for this owner (nor RD). RID texture; bool was_used; @@ -1012,11 +1022,38 @@ private: Color clear_color; }; - RID_Owner<RenderTarget> render_target_owner; + mutable RID_Owner<RenderTarget> render_target_owner; void _clear_render_target(RenderTarget *rt); void _update_render_target(RenderTarget *rt); void _create_render_target_backbuffer(RenderTarget *rt); + void _render_target_allocate_sdf(RenderTarget *rt); + void _render_target_clear_sdf(RenderTarget *rt); + Rect2i _render_target_get_sdf_rect(const RenderTarget *rt) const; + + struct RenderTargetSDF { + enum { + SHADER_LOAD, + SHADER_LOAD_SHRINK, + SHADER_PROCESS, + SHADER_PROCESS_OPTIMIZED, + SHADER_STORE, + SHADER_STORE_SHRINK, + SHADER_MAX + }; + + struct PushConstant { + int32_t size[2]; + int32_t stride; + int32_t shift; + int32_t base_size[2]; + int32_t pad[2]; + }; + + CanvasSdfShaderRD shader; + RID shader_version; + RID pipelines[SHADER_MAX]; + } rt_sdf; /* GLOBAL SHADER VARIABLES */ @@ -1930,6 +1967,12 @@ public: virtual void render_target_disable_clear_request(RID p_render_target); virtual void render_target_do_clear_request(RID p_render_target); + virtual void render_target_set_sdf_size_and_scale(RID p_render_target, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale); + RID render_target_get_sdf_texture(RID p_render_target); + RID render_target_get_sdf_framebuffer(RID p_render_target); + void render_target_sdf_process(RID p_render_target); + virtual Rect2i render_target_get_sdf_rect(RID p_render_target) const; + Size2 render_target_get_size(RID p_render_target); RID render_target_get_rd_framebuffer(RID p_render_target); RID render_target_get_rd_texture(RID p_render_target); diff --git a/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp b/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp index 08f4eb6aa0..df5513435a 100644 --- a/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp +++ b/servers/rendering/rasterizer_rd/shader_compiler_rd.cpp @@ -1072,6 +1072,11 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge } else if (onode->op == SL::OP_CONSTRUCT) { code += String(vnode->name); } else { + if (p_actions.usage_flag_pointers.has(vnode->name) && !used_flag_pointers.has(vnode->name)) { + *p_actions.usage_flag_pointers[vnode->name] = true; + used_flag_pointers.insert(vnode->name); + } + if (internal_functions.has(vnode->name)) { code += vnode->name; is_texture_func = texture_functions.has(vnode->name); diff --git a/servers/rendering/rasterizer_rd/shaders/SCsub b/servers/rendering/rasterizer_rd/shaders/SCsub index 9d531d63ad..4cddf0f685 100644 --- a/servers/rendering/rasterizer_rd/shaders/SCsub +++ b/servers/rendering/rasterizer_rd/shaders/SCsub @@ -5,6 +5,7 @@ Import("env") if "RD_GLSL" in env["BUILDERS"]: env.RD_GLSL("canvas.glsl") env.RD_GLSL("canvas_occlusion.glsl") + env.RD_GLSL("canvas_sdf.glsl") env.RD_GLSL("copy.glsl") env.RD_GLSL("copy_to_fb.glsl") env.RD_GLSL("cubemap_roughness.glsl") diff --git a/servers/rendering/rasterizer_rd/shaders/canvas.glsl b/servers/rendering/rasterizer_rd/shaders/canvas.glsl index 2a0f94e733..51d7193a03 100644 --- a/servers/rendering/rasterizer_rd/shaders/canvas.glsl +++ b/servers/rendering/rasterizer_rd/shaders/canvas.glsl @@ -233,6 +233,30 @@ MATERIAL_UNIFORMS } material; #endif +vec2 screen_uv_to_sdf(vec2 p_uv) { + return canvas_data.screen_to_sdf * p_uv; +} + +float texture_sdf(vec2 p_sdf) { + vec2 uv = p_sdf * canvas_data.sdf_to_tex.xy + canvas_data.sdf_to_tex.zw; + float d = texture(sampler2D(sdf_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), uv).r; + d = d * SDF_MAX_LENGTH - 1.0; + return d * canvas_data.tex_to_sdf; +} + +vec2 texture_sdf_normal(vec2 p_sdf) { + vec2 uv = p_sdf * canvas_data.sdf_to_tex.xy + canvas_data.sdf_to_tex.zw; + + const float EPSILON = 0.001; + return normalize(vec2( + texture(sampler2D(sdf_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), uv + vec2(EPSILON, 0.0)).r - texture(sampler2D(sdf_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), uv - vec2(EPSILON, 0.0)).r, + texture(sampler2D(sdf_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), uv + vec2(0.0, EPSILON)).r - texture(sampler2D(sdf_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), uv - vec2(0.0, EPSILON)).r)); +} + +vec2 sdf_to_screen_uv(vec2 p_sdf) { + return p_sdf * canvas_data.sdf_to_screen; +} + /* clang-format off */ FRAGMENT_SHADER_GLOBALS /* clang-format on */ @@ -500,8 +524,13 @@ FRAGMENT_SHADER_CODE color = vec4(0.0); //invisible by default due to using light mask } +#ifdef MODE_LIGHT_ONLY + color = vec4(0.0); +#else color *= canvas_data.canvas_modulation; -#ifdef USE_LIGHTING +#endif + +#if defined(USE_LIGHTING) && !defined(MODE_UNSHADED) // Directional Lights diff --git a/servers/rendering/rasterizer_rd/shaders/canvas_occlusion.glsl b/servers/rendering/rasterizer_rd/shaders/canvas_occlusion.glsl index 421282cd4d..5c25235c58 100644 --- a/servers/rendering/rasterizer_rd/shaders/canvas_occlusion.glsl +++ b/servers/rendering/rasterizer_rd/shaders/canvas_occlusion.glsl @@ -2,6 +2,8 @@ #version 450 +VERSION_DEFINES + layout(location = 0) in highp vec3 vertex; layout(push_constant, binding = 0, std430) uniform Constants { @@ -13,12 +15,16 @@ layout(push_constant, binding = 0, std430) uniform Constants { } constants; +#ifdef MODE_SHADOW layout(location = 0) out highp float depth; +#endif void main() { highp vec4 vtx = vec4(vertex, 1.0) * mat4(constants.modelview[0], constants.modelview[1], vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); - depth = dot(constants.direction, vtx.xy); +#ifdef MODE_SHADOW + depth = dot(constants.direction, vtx.xy); +#endif gl_Position = constants.projection * vtx; } @@ -26,6 +32,8 @@ void main() { #version 450 +VERSION_DEFINES + layout(push_constant, binding = 0, std430) uniform Constants { mat4 projection; mat2x4 modelview; @@ -35,9 +43,17 @@ layout(push_constant, binding = 0, std430) uniform Constants { } constants; +#ifdef MODE_SHADOW layout(location = 0) in highp float depth; layout(location = 0) out highp float distance_buf; +#else +layout(location = 0) out highp float sdf_buf; +#endif void main() { +#ifdef MODE_SHADOW distance_buf = depth / constants.z_far; +#else + sdf_buf = 1.0; +#endif } diff --git a/servers/rendering/rasterizer_rd/shaders/canvas_sdf.glsl b/servers/rendering/rasterizer_rd/shaders/canvas_sdf.glsl new file mode 100644 index 0000000000..302ad03b41 --- /dev/null +++ b/servers/rendering/rasterizer_rd/shaders/canvas_sdf.glsl @@ -0,0 +1,135 @@ +#[compute] + +#version 450 + +VERSION_DEFINES + +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +layout(r8, set = 0, binding = 1) uniform restrict readonly image2D src_pixels; +layout(r16, set = 0, binding = 2) uniform restrict writeonly image2D dst_sdf; + +layout(rg16i, set = 0, binding = 3) uniform restrict readonly iimage2D src_process; +layout(rg16i, set = 0, binding = 4) uniform restrict writeonly iimage2D dst_process; + +layout(push_constant, binding = 0, std430) uniform Params { + ivec2 size; + int stride; + int shift; + ivec2 base_size; + uvec2 pad; +} +params; + +#define SDF_MAX_LENGTH 16384.0 + +void main() { + ivec2 pos = ivec2(gl_GlobalInvocationID.xy); + if (any(greaterThanEqual(pos, params.size))) { //too large, do nothing + return; + } + +#ifdef MODE_LOAD + + bool solid = imageLoad(src_pixels, pos).r > 0.5; + imageStore(dst_process, pos, solid ? ivec4(pos, 0, 0) : ivec4(ivec2(32767), 0, 0)); +#endif + +#ifdef MODE_LOAD_SHRINK + + int s = 1 << params.shift; + ivec2 base = pos << params.shift; + ivec2 center = base + ivec2(params.shift); + + ivec2 rel = ivec2(32767); + float d = 1e20; + for (int i = 0; i < s; i++) { + for (int j = 0; j < s; j++) { + ivec2 src_pos = base + ivec2(i, j); + if (any(greaterThanEqual(src_pos, params.base_size))) { + continue; + } + bool solid = imageLoad(src_pixels, src_pos).r > 0.5; + if (solid) { + float dist = length(vec2(src_pos - center)); + if (dist < d) { + d = dist; + rel = src_pos; + } + } + } + } + + imageStore(dst_process, pos, ivec4(rel, 0, 0)); +#endif + +#ifdef MODE_PROCESS + + ivec2 base = pos << params.shift; + ivec2 center = base + ivec2(params.shift); + + ivec2 rel = imageLoad(src_process, pos).xy; + + if (center != rel) { + //only process if it does not point to itself + const int ofs_table_size = 8; + const ivec2 ofs_table[ofs_table_size] = ivec2[]( + ivec2(-1, -1), + ivec2(0, -1), + ivec2(+1, -1), + + ivec2(-1, 0), + ivec2(+1, 0), + + ivec2(-1, +1), + ivec2(0, +1), + ivec2(+1, +1)); + + float dist = length(vec2(rel - center)); + for (int i = 0; i < ofs_table_size; i++) { + ivec2 src_pos = pos + ofs_table[i] * params.stride; + if (any(lessThan(src_pos, ivec2(0))) || any(greaterThanEqual(src_pos, params.size))) { + continue; + } + ivec2 src_rel = imageLoad(src_process, src_pos).xy; + float src_dist = length(vec2(src_rel - center)); + if (src_dist < dist) { + dist = src_dist; + rel = src_rel; + } + } + } + + imageStore(dst_process, pos, ivec4(rel, 0, 0)); +#endif + +#ifdef MODE_STORE + + ivec2 rel = imageLoad(src_process, pos).xy; + float d = length(vec2(rel - pos)); + if (d > 0.01) { + d += 1.0; //make it signed + } + d /= SDF_MAX_LENGTH; + d = clamp(d, 0.0, 1.0); + imageStore(dst_sdf, pos, vec4(d)); + +#endif + +#ifdef MODE_STORE_SHRINK + + ivec2 base = pos << params.shift; + ivec2 center = base + ivec2(params.shift); + + ivec2 rel = imageLoad(src_process, pos).xy; + float d = length(vec2(rel - center)); + + if (d > 0.01) { + d += 1.0; //make it signed + } + d /= SDF_MAX_LENGTH; + d = clamp(d, 0.0, 1.0); + imageStore(dst_sdf, pos, vec4(d)); + +#endif +} diff --git a/servers/rendering/rasterizer_rd/shaders/canvas_uniforms_inc.glsl b/servers/rendering/rasterizer_rd/shaders/canvas_uniforms_inc.glsl index bb39584cbb..cf7678ea31 100644 --- a/servers/rendering/rasterizer_rd/shaders/canvas_uniforms_inc.glsl +++ b/servers/rendering/rasterizer_rd/shaders/canvas_uniforms_inc.glsl @@ -3,6 +3,8 @@ #define M_PI 3.14159265359 +#define SDF_MAX_LENGTH 16384.0 + #define FLAGS_INSTANCING_STRIDE_MASK 0xF #define FLAGS_INSTANCING_ENABLED (1 << 4) #define FLAGS_INSTANCING_HAS_COLORS (1 << 5) @@ -24,6 +26,19 @@ #define FLAGS_DEFAULT_NORMAL_MAP_USED (1 << 26) #define FLAGS_DEFAULT_SPECULAR_MAP_USED (1 << 27) +#define SAMPLER_NEAREST_CLAMP 0 +#define SAMPLER_LINEAR_CLAMP 1 +#define SAMPLER_NEAREST_WITH_MIPMAPS_CLAMP 2 +#define SAMPLER_LINEAR_WITH_MIPMAPS_CLAMP 3 +#define SAMPLER_NEAREST_WITH_MIPMAPS_ANISOTROPIC_CLAMP 4 +#define SAMPLER_LINEAR_WITH_MIPMAPS_ANISOTROPIC_CLAMP 5 +#define SAMPLER_NEAREST_REPEAT 6 +#define SAMPLER_LINEAR_REPEAT 7 +#define SAMPLER_NEAREST_WITH_MIPMAPS_REPEAT 8 +#define SAMPLER_LINEAR_WITH_MIPMAPS_REPEAT 9 +#define SAMPLER_NEAREST_WITH_MIPMAPS_ANISOTROPIC_REPEAT 10 +#define SAMPLER_LINEAR_WITH_MIPMAPS_ANISOTROPIC_REPEAT 11 + // Push Constant layout(push_constant, binding = 0, std430) uniform DrawData { @@ -68,8 +83,12 @@ layout(set = 0, binding = 1, std140) uniform CanvasData { float time; bool use_pixel_snap; + vec4 sdf_to_tex; + vec2 screen_to_sdf; + vec2 sdf_to_screen; + uint directional_light_count; - uint pad0; + float tex_to_sdf; uint pad1; uint pad2; } @@ -115,10 +134,11 @@ layout(set = 0, binding = 4) uniform texture2D shadow_atlas_texture; layout(set = 0, binding = 5) uniform sampler shadow_sampler; layout(set = 0, binding = 6) uniform texture2D screen_texture; +layout(set = 0, binding = 7) uniform texture2D sdf_texture; -layout(set = 0, binding = 7) uniform sampler material_samplers[12]; +layout(set = 0, binding = 8) uniform sampler material_samplers[12]; -layout(set = 0, binding = 8, std430) restrict readonly buffer GlobalVariableData { +layout(set = 0, binding = 9, std430) restrict readonly buffer GlobalVariableData { vec4 data[]; } global_variables; diff --git a/servers/rendering/rendering_server_canvas.cpp b/servers/rendering/rendering_server_canvas.cpp index 364839c5d7..ffc1ec391d 100644 --- a/servers/rendering/rendering_server_canvas.cpp +++ b/servers/rendering/rendering_server_canvas.cpp @@ -68,7 +68,11 @@ void RenderingServerCanvas::_render_canvas_item_tree(RID p_to_render_target, Can RENDER_TIMESTAMP("Render Canvas Items"); - RSG::canvas_render->canvas_render_items(p_to_render_target, list, p_modulate, p_lights, p_directional_lights, p_transform, p_default_filter, p_default_repeat, p_snap_2d_vertices_to_pixel); + bool sdf_flag; + RSG::canvas_render->canvas_render_items(p_to_render_target, list, p_modulate, p_lights, p_directional_lights, p_transform, p_default_filter, p_default_repeat, p_snap_2d_vertices_to_pixel, sdf_flag); + if (sdf_flag) { + sdf_used = true; + } } void _collect_ysort_children(RenderingServerCanvas::Item *p_canvas_item, Transform2D p_transform, RenderingServerCanvas::Item *p_material_owner, RenderingServerCanvas::Item **r_items, int &r_index) { @@ -301,6 +305,7 @@ void RenderingServerCanvas::_cull_canvas_item(Item *p_canvas_item, const Transfo void RenderingServerCanvas::render_canvas(RID p_render_target, Canvas *p_canvas, const Transform2D &p_transform, RasterizerCanvas::Light *p_lights, RasterizerCanvas::Light *p_directional_lights, const Rect2 &p_clip_rect, RenderingServer::CanvasItemTextureFilter p_default_filter, RenderingServer::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_transforms_to_pixel, bool p_snap_2d_vertices_to_pixel) { RENDER_TIMESTAMP(">Render Canvas"); + sdf_used = false; snapping_2d_transforms_to_pixel = p_snap_2d_transforms_to_pixel; if (p_canvas->children_order_dirty) { @@ -347,6 +352,10 @@ void RenderingServerCanvas::render_canvas(RID p_render_target, Canvas *p_canvas, RENDER_TIMESTAMP("<End Render Canvas"); } +bool RenderingServerCanvas::was_sdf_used() { + return sdf_used; +} + RID RenderingServerCanvas::canvas_create() { Canvas *canvas = memnew(Canvas); ERR_FAIL_COND_V(!canvas, RID()); @@ -1266,6 +1275,11 @@ void RenderingServerCanvas::canvas_light_occluder_set_polygon(RID p_occluder, RI } } +void RenderingServerCanvas::canvas_light_occluder_set_as_sdf_collision(RID p_occluder, bool p_enable) { + RasterizerCanvas::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder); + ERR_FAIL_COND(!occluder); +} + void RenderingServerCanvas::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) { RasterizerCanvas::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder); ERR_FAIL_COND(!occluder); @@ -1287,53 +1301,24 @@ RID RenderingServerCanvas::canvas_occluder_polygon_create() { } void RenderingServerCanvas::canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const Vector<Vector2> &p_shape, bool p_closed) { - if (p_shape.size() < 3) { - canvas_occluder_polygon_set_shape_as_lines(p_occluder_polygon, p_shape); - return; - } - - Vector<Vector2> lines; - int lc = p_shape.size() * 2; - - lines.resize(lc - (p_closed ? 0 : 2)); - { - Vector2 *w = lines.ptrw(); - const Vector2 *r = p_shape.ptr(); - - int max = lc / 2; - if (!p_closed) { - max--; - } - for (int i = 0; i < max; i++) { - Vector2 a = r[i]; - Vector2 b = r[(i + 1) % (lc / 2)]; - w[i * 2 + 0] = a; - w[i * 2 + 1] = b; - } - } - - canvas_occluder_polygon_set_shape_as_lines(p_occluder_polygon, lines); -} - -void RenderingServerCanvas::canvas_occluder_polygon_set_shape_as_lines(RID p_occluder_polygon, const Vector<Vector2> &p_shape) { LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_occluder_polygon); ERR_FAIL_COND(!occluder_poly); - ERR_FAIL_COND(p_shape.size() & 1); - int lc = p_shape.size(); + uint32_t pc = p_shape.size(); + ERR_FAIL_COND(pc < 2); + occluder_poly->aabb = Rect2(); - { - const Vector2 *r = p_shape.ptr(); - for (int i = 0; i < lc; i++) { - if (i == 0) { - occluder_poly->aabb.position = r[i]; - } else { - occluder_poly->aabb.expand_to(r[i]); - } + const Vector2 *r = p_shape.ptr(); + for (uint32_t i = 0; i < pc; i++) { + if (i == 0) { + occluder_poly->aabb.position = r[i]; + } else { + occluder_poly->aabb.expand_to(r[i]); } } - RSG::canvas_render->occluder_polygon_set_shape_as_lines(occluder_poly->occluder, p_shape); + RSG::canvas_render->occluder_polygon_set_shape(occluder_poly->occluder, p_shape, p_closed); + for (Set<RasterizerCanvas::LightOccluderInstance *>::Element *E = occluder_poly->owners.front(); E; E = E->next()) { E->get()->aabb_cache = occluder_poly->aabb; } diff --git a/servers/rendering/rendering_server_canvas.h b/servers/rendering/rendering_server_canvas.h index 36e2f77e95..83b76539c4 100644 --- a/servers/rendering/rendering_server_canvas.h +++ b/servers/rendering/rendering_server_canvas.h @@ -153,6 +153,7 @@ public: RID_PtrOwner<RasterizerCanvas::Light> canvas_light_owner; bool disable_scale; + bool sdf_used = false; bool snapping_2d_transforms_to_pixel = false; private: @@ -165,6 +166,8 @@ private: public: void render_canvas(RID p_render_target, Canvas *p_canvas, const Transform2D &p_transform, RasterizerCanvas::Light *p_lights, RasterizerCanvas::Light *p_directional_lights, const Rect2 &p_clip_rect, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_transforms_to_pixel, bool p_snap_2d_vertices_to_pixel); + bool was_sdf_used(); + RID canvas_create(); void canvas_set_item_mirroring(RID p_canvas, RID p_item, const Point2 &p_mirroring); void canvas_set_modulate(RID p_canvas, const Color &p_color); @@ -247,12 +250,12 @@ public: void canvas_light_occluder_attach_to_canvas(RID p_occluder, RID p_canvas); void canvas_light_occluder_set_enabled(RID p_occluder, bool p_enabled); void canvas_light_occluder_set_polygon(RID p_occluder, RID p_polygon); + void canvas_light_occluder_set_as_sdf_collision(RID p_occluder, bool p_enable); void canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform); void canvas_light_occluder_set_light_mask(RID p_occluder, int p_mask); RID canvas_occluder_polygon_create(); void canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const Vector<Vector2> &p_shape, bool p_closed); - void canvas_occluder_polygon_set_shape_as_lines(RID p_occluder_polygon, const Vector<Vector2> &p_shape); void canvas_occluder_polygon_set_cull_mode(RID p_occluder_polygon, RS::CanvasOccluderPolygonCullMode p_mode); diff --git a/servers/rendering/rendering_server_raster.h b/servers/rendering/rendering_server_raster.h index 60b25f1b94..413fcda581 100644 --- a/servers/rendering/rendering_server_raster.h +++ b/servers/rendering/rendering_server_raster.h @@ -536,6 +536,7 @@ public: BIND2(viewport_set_global_canvas_transform, RID, const Transform2D &) BIND4(viewport_set_canvas_stacking, RID, RID, int, int) BIND2(viewport_set_shadow_atlas_size, RID, int) + BIND3(viewport_set_sdf_oversize_and_scale, RID, ViewportSDFOversize, ViewportSDFScale) BIND3(viewport_set_shadow_atlas_quadrant_subdivision, RID, int, int) BIND2(viewport_set_msaa, RID, ViewportMSAA) BIND2(viewport_set_screen_space_aa, RID, ViewportScreenSpaceAA) @@ -776,12 +777,12 @@ public: BIND2(canvas_light_occluder_attach_to_canvas, RID, RID) BIND2(canvas_light_occluder_set_enabled, RID, bool) BIND2(canvas_light_occluder_set_polygon, RID, RID) + BIND2(canvas_light_occluder_set_as_sdf_collision, RID, bool) BIND2(canvas_light_occluder_set_transform, RID, const Transform2D &) BIND2(canvas_light_occluder_set_light_mask, RID, int) BIND0R(RID, canvas_occluder_polygon_create) BIND3(canvas_occluder_polygon_set_shape, RID, const Vector<Vector2> &, bool) - BIND2(canvas_occluder_polygon_set_shape_as_lines, RID, const Vector<Vector2> &) BIND2(canvas_occluder_polygon_set_cull_mode, RID, CanvasOccluderPolygonCullMode) diff --git a/servers/rendering/rendering_server_viewport.cpp b/servers/rendering/rendering_server_viewport.cpp index c6682b1fcd..c048aa381f 100644 --- a/servers/rendering/rendering_server_viewport.cpp +++ b/servers/rendering/rendering_server_viewport.cpp @@ -146,6 +146,36 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: RasterizerCanvas::Light *directional_lights = nullptr; RasterizerCanvas::Light *directional_lights_with_shadow = nullptr; + if (p_viewport->sdf_active) { + //process SDF + + Rect2 sdf_rect = RSG::storage->render_target_get_sdf_rect(p_viewport->render_target); + + RasterizerCanvas::LightOccluderInstance *occluders = nullptr; + + //make list of occluders + for (Map<RID, Viewport::CanvasData>::Element *E = p_viewport->canvas_map.front(); E; E = E->next()) { + RenderingServerCanvas::Canvas *canvas = static_cast<RenderingServerCanvas::Canvas *>(E->get().canvas); + Transform2D xf = _canvas_get_transform(p_viewport, canvas, &E->get(), clip_rect.size); + + for (Set<RasterizerCanvas::LightOccluderInstance *>::Element *F = canvas->occluders.front(); F; F = F->next()) { + if (!F->get()->enabled) { + continue; + } + F->get()->xform_cache = xf * F->get()->xform; + + if (sdf_rect.intersects_transformed(F->get()->xform_cache, F->get()->aabb_cache)) { + F->get()->next = occluders; + occluders = F->get(); + } + } + } + + RSG::canvas_render->render_sdf(p_viewport->render_target, occluders); + + p_viewport->sdf_active = false; // if used, gets set active again + } + Rect2 shadow_rect; int light_count = 0; @@ -195,7 +225,6 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: } //guess this is not needed, but keeping because it may be - //RSG::canvas_render->light_internal_update(cl->light_internal, cl); } } @@ -256,7 +285,6 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: light = light->shadows_next_ptr; } - //RSG::canvas_render->reset_canvas(); RENDER_TIMESTAMP("<End rendering 2D Shadows"); } @@ -340,7 +368,6 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: light = light->shadows_next_ptr; } - //RSG::canvas_render->reset_canvas(); RENDER_TIMESTAMP("<Render Directional 2D Shadows"); } @@ -380,6 +407,9 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: } RSG::canvas->render_canvas(p_viewport->render_target, canvas, xform, canvas_lights, canvas_directional_lights, clip_rect, p_viewport->texture_filter, p_viewport->texture_repeat, p_viewport->snap_2d_transforms_to_pixel, p_viewport->snap_2d_vertices_to_pixel); + if (RSG::canvas->was_sdf_used()) { + p_viewport->sdf_active = true; + } i++; if (scenario_draw_canvas_bg && E->key().get_layer() >= scenario_canvas_max_layer) { @@ -400,8 +430,6 @@ void RenderingServerViewport::_draw_viewport(Viewport *p_viewport, XRInterface:: _draw_3d(p_viewport, p_eye); } } - - //RSG::canvas_render->canvas_debug_viewport_shadows(lights_with_shadow); } if (RSG::storage->render_target_is_clear_requested(p_viewport->render_target)) { @@ -925,6 +953,13 @@ void RenderingServerViewport::viewport_set_default_canvas_item_texture_repeat(RI viewport->texture_repeat = p_repeat; } +void RenderingServerViewport::viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale) { + Viewport *viewport = viewport_owner.getornull(p_viewport); + ERR_FAIL_COND(!viewport); + + RSG::storage->render_target_set_sdf_size_and_scale(viewport->render_target, p_size, p_scale); +} + bool RenderingServerViewport::free(RID p_rid) { if (viewport_owner.owns(p_rid)) { Viewport *viewport = viewport_owner.getornull(p_rid); diff --git a/servers/rendering/rendering_server_viewport.h b/servers/rendering/rendering_server_viewport.h index 081f63690b..ba55b2e66e 100644 --- a/servers/rendering/rendering_server_viewport.h +++ b/servers/rendering/rendering_server_viewport.h @@ -82,6 +82,8 @@ public: RID shadow_atlas; int shadow_atlas_size; + bool sdf_active; + uint64_t last_pass = 0; int render_info[RS::VIEWPORT_RENDER_INFO_MAX]; @@ -146,6 +148,7 @@ public: render_info[i] = 0; } use_xr = false; + sdf_active = false; time_cpu_begin = 0; time_cpu_end = 0; @@ -232,6 +235,8 @@ public: void viewport_set_default_canvas_item_texture_filter(RID p_viewport, RS::CanvasItemTextureFilter p_filter); void viewport_set_default_canvas_item_texture_repeat(RID p_viewport, RS::CanvasItemTextureRepeat p_repeat); + void viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::ViewportSDFOversize p_over_size, RS::ViewportSDFScale p_scale); + void handle_timestamp(String p_timestamp, uint64_t p_cpu_time, uint64_t p_gpu_time); void set_default_clear_color(const Color &p_color); diff --git a/servers/rendering/rendering_server_wrap_mt.h b/servers/rendering/rendering_server_wrap_mt.h index d27b851d1d..d33bdb043a 100644 --- a/servers/rendering/rendering_server_wrap_mt.h +++ b/servers/rendering/rendering_server_wrap_mt.h @@ -440,6 +440,8 @@ public: FUNC2(viewport_set_global_canvas_transform, RID, const Transform2D &) FUNC4(viewport_set_canvas_stacking, RID, RID, int, int) FUNC2(viewport_set_shadow_atlas_size, RID, int) + FUNC3(viewport_set_sdf_oversize_and_scale, RID, ViewportSDFOversize, ViewportSDFScale) + FUNC3(viewport_set_shadow_atlas_quadrant_subdivision, RID, int, int) FUNC2(viewport_set_msaa, RID, ViewportMSAA) FUNC2(viewport_set_screen_space_aa, RID, ViewportScreenSpaceAA) @@ -676,12 +678,12 @@ public: FUNC2(canvas_light_occluder_attach_to_canvas, RID, RID) FUNC2(canvas_light_occluder_set_enabled, RID, bool) FUNC2(canvas_light_occluder_set_polygon, RID, RID) + FUNC2(canvas_light_occluder_set_as_sdf_collision, RID, bool) FUNC2(canvas_light_occluder_set_transform, RID, const Transform2D &) FUNC2(canvas_light_occluder_set_light_mask, RID, int) FUNCRID(canvas_occluder_polygon) FUNC3(canvas_occluder_polygon_set_shape, RID, const Vector<Vector2> &, bool) - FUNC2(canvas_occluder_polygon_set_shape_as_lines, RID, const Vector<Vector2> &) FUNC2(canvas_occluder_polygon_set_cull_mode, RID, CanvasOccluderPolygonCullMode) diff --git a/servers/rendering/shader_types.cpp b/servers/rendering/shader_types.cpp index 4d21807735..bd61f2a549 100644 --- a/servers/rendering/shader_types.cpp +++ b/servers/rendering/shader_types.cpp @@ -252,6 +252,27 @@ ShaderTypes::ShaderTypes() { shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_TEXTURE"] = constt(ShaderLanguage::TYPE_SAMPLER2D); shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].can_discard = true; + { + ShaderLanguage::StageFunctionInfo func; + func.arguments.push_back(ShaderLanguage::StageFunctionInfo::Argument("sdf_pos", ShaderLanguage::TYPE_VEC2)); + func.return_type = ShaderLanguage::TYPE_FLOAT; //whether it could emit + shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].stage_functions["texture_sdf"] = func; + shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].stage_functions["texture_sdf"] = func; + func.return_type = ShaderLanguage::TYPE_VEC2; //whether it could emit + shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].stage_functions["sdf_to_screen_uv"] = func; + shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].stage_functions["sdf_to_screen_uv"] = func; + shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].stage_functions["texture_sdf_normal"] = func; + shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].stage_functions["texture_sdf_normal"] = func; + } + + { + ShaderLanguage::StageFunctionInfo func; + func.arguments.push_back(ShaderLanguage::StageFunctionInfo::Argument("uv", ShaderLanguage::TYPE_VEC2)); + func.return_type = ShaderLanguage::TYPE_VEC2; //whether it could emit + shader_modes[RS::SHADER_CANVAS_ITEM].functions["fragment"].stage_functions["screen_uv_to_sdf"] = func; + shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].stage_functions["screen_uv_to_sdf"] = func; + } + shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].built_ins["FRAGCOORD"] = constt(ShaderLanguage::TYPE_VEC4); shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].built_ins["NORMAL"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_CANVAS_ITEM].functions["light"].built_ins["COLOR"] = constt(ShaderLanguage::TYPE_VEC4); diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index bd501f8bc5..ea37e0c143 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -1858,7 +1858,6 @@ void RenderingServer::_bind_methods() { ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_create"), &RenderingServer::canvas_occluder_polygon_create); ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_shape", "occluder_polygon", "shape", "closed"), &RenderingServer::canvas_occluder_polygon_set_shape); - ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_shape_as_lines", "occluder_polygon", "shape"), &RenderingServer::canvas_occluder_polygon_set_shape_as_lines); ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_cull_mode", "occluder_polygon", "mode"), &RenderingServer::canvas_occluder_polygon_set_cull_mode); ClassDB::bind_method(D_METHOD("global_variable_add", "name", "type", "default_value"), &RenderingServer::global_variable_add); diff --git a/servers/rendering_server.h b/servers/rendering_server.h index d676a1ba01..236112c3fb 100644 --- a/servers/rendering_server.h +++ b/servers/rendering_server.h @@ -730,6 +730,23 @@ public: virtual void viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) = 0; virtual void viewport_set_canvas_stacking(RID p_viewport, RID p_canvas, int p_layer, int p_sublayer) = 0; + enum ViewportSDFOversize { + VIEWPORT_SDF_OVERSIZE_100_PERCENT, + VIEWPORT_SDF_OVERSIZE_120_PERCENT, + VIEWPORT_SDF_OVERSIZE_150_PERCENT, + VIEWPORT_SDF_OVERSIZE_200_PERCENT, + VIEWPORT_SDF_OVERSIZE_MAX + }; + + enum ViewportSDFScale { + VIEWPORT_SDF_SCALE_100_PERCENT, + VIEWPORT_SDF_SCALE_50_PERCENT, + VIEWPORT_SDF_SCALE_25_PERCENT, + VIEWPORT_SDF_SCALE_MAX + }; + + virtual void viewport_set_sdf_oversize_and_scale(RID p_viewport, ViewportSDFOversize p_oversize, ViewportSDFScale p_scale) = 0; + virtual void viewport_set_shadow_atlas_size(RID p_viewport, int p_size) = 0; virtual void viewport_set_shadow_atlas_quadrant_subdivision(RID p_viewport, int p_quadrant, int p_subdiv) = 0; @@ -1245,12 +1262,12 @@ public: virtual void canvas_light_occluder_attach_to_canvas(RID p_occluder, RID p_canvas) = 0; virtual void canvas_light_occluder_set_enabled(RID p_occluder, bool p_enabled) = 0; virtual void canvas_light_occluder_set_polygon(RID p_occluder, RID p_polygon) = 0; + virtual void canvas_light_occluder_set_as_sdf_collision(RID p_occluder, bool p_enable) = 0; virtual void canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) = 0; virtual void canvas_light_occluder_set_light_mask(RID p_occluder, int p_mask) = 0; virtual RID canvas_occluder_polygon_create() = 0; virtual void canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const Vector<Vector2> &p_shape, bool p_closed) = 0; - virtual void canvas_occluder_polygon_set_shape_as_lines(RID p_occluder_polygon, const Vector<Vector2> &p_shape) = 0; enum CanvasOccluderPolygonCullMode { CANVAS_OCCLUDER_POLYGON_CULL_DISABLED, |