diff options
6 files changed, 50 insertions, 123 deletions
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 55c1651d16..580e71a788 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -5047,7 +5047,6 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color", "LIGHT_COLOR"), { "light_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); add_options.push_back(AddOption("Metallic", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "metallic", "METALLIC"), { "metallic" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); add_options.push_back(AddOption("Roughness", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "roughness", "ROUGHNESS"), { "roughness" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); - add_options.push_back(AddOption("ShadowAttenuation", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_attenuation", "SHADOW_ATTENUATION"), { "shadow_attenuation" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); add_options.push_back(AddOption("Specular", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "specular", "SPECULAR_LIGHT"), { "specular" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); add_options.push_back(AddOption("View", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view", "VIEW"), { "view" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL)); diff --git a/editor/translations/extract.py b/editor/translations/extract.py index 8737eb5204..4a7e87e271 100755 --- a/editor/translations/extract.py +++ b/editor/translations/extract.py @@ -9,6 +9,40 @@ import subprocess import sys +class Message: + __slots__ = ("msgid", "msgid_plural", "msgctxt", "comments", "locations") + + def format(self): + lines = [] + + if self.comments: + for i, content in enumerate(self.comments): + prefix = "#. TRANSLATORS:" if i == 0 else "#." + lines.append(prefix + content) + + lines.append("#: " + " ".join(self.locations)) + + if self.msgctxt: + lines.append('msgctxt "{}"'.format(self.msgctxt)) + + if self.msgid_plural: + lines += [ + 'msgid "{}"'.format(self.msgid), + 'msgid_plural "{}"'.format(self.msgid_plural), + 'msgstr[0] ""', + 'msgstr[1] ""', + ] + else: + lines += [ + 'msgid "{}"'.format(self.msgid), + 'msgstr ""', + ] + + return "\n".join(lines) + + +messages_map = {} # (id, context) -> Message. + line_nb = False for arg in sys.argv[1:]: @@ -42,9 +76,6 @@ with open("editor/editor_property_name_processor.cpp") as f: remaps[m.group("from")] = m.group("to") -unique_str = [] -unique_loc = {} -ctx_group = {} # Store msgctx, msg, and locations. main_po = """ # LANGUAGE translation of the Godot Engine editor. # Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. @@ -119,95 +150,6 @@ def _process_editor_string(name): return " ".join(capitalized_parts) -def _write_message(msgctx, msg, msg_plural, location): - global main_po - main_po += "#: " + location + "\n" - if msgctx != "": - main_po += 'msgctxt "' + msgctx + '"\n' - main_po += 'msgid "' + msg + '"\n' - if msg_plural != "": - main_po += 'msgid_plural "' + msg_plural + '"\n' - main_po += 'msgstr[0] ""\n' - main_po += 'msgstr[1] ""\n\n' - else: - main_po += 'msgstr ""\n\n' - - -def _add_additional_location(msgctx, msg, location): - global main_po - # Add additional location to previous occurrence. - if msgctx != "": - msg_pos = main_po.find('\nmsgctxt "' + msgctx + '"\nmsgid "' + msg + '"') - else: - msg_pos = main_po.find('\nmsgid "' + msg + '"') - - if msg_pos == -1: - print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.") - main_po = main_po[:msg_pos] + " " + location + main_po[msg_pos:] - - -def _write_translator_comment(msgctx, msg, translator_comment): - if translator_comment == "": - return - - global main_po - if msgctx != "": - msg_pos = main_po.find('\nmsgctxt "' + msgctx + '"\nmsgid "' + msg + '"') - else: - msg_pos = main_po.find('\nmsgid "' + msg + '"') - - # If it's a new message, just append comment to the end of PO file. - if msg_pos == -1: - main_po += _format_translator_comment(translator_comment, True) - return - - # Find position just before location. Translator comment will be added there. - translator_comment_pos = main_po.rfind("\n\n#", 0, msg_pos) + 2 - if translator_comment_pos - 2 == -1: - print("translator_comment_pos not found") - return - - # Check if a previous translator comment already exists. If so, merge them together. - if main_po.find("TRANSLATORS:", translator_comment_pos, msg_pos) != -1: - translator_comment_pos = main_po.find("\n#:", translator_comment_pos, msg_pos) + 1 - if translator_comment_pos == 0: - print('translator_comment_pos after "TRANSLATORS:" not found') - return - main_po = ( - main_po[:translator_comment_pos] - + _format_translator_comment(translator_comment, False) - + main_po[translator_comment_pos:] - ) - return - - main_po = ( - main_po[:translator_comment_pos] - + _format_translator_comment(translator_comment, True) - + main_po[translator_comment_pos:] - ) - - -def _format_translator_comment(comment, new): - if not comment: - return "" - - comment_lines = comment.split("\n") - - formatted_comment = "" - if not new: - for comment in comment_lines: - formatted_comment += "#. " + comment.strip() + "\n" - return formatted_comment - - formatted_comment = "#. TRANSLATORS: " - for i in range(len(comment_lines)): - if i == 0: - formatted_comment += comment_lines[i].strip() + "\n" - else: - formatted_comment += "#. " + comment_lines[i].strip() + "\n" - return formatted_comment - - def _is_block_translator_comment(translator_line): line = translator_line.strip() if line.find("//") == 0: @@ -301,32 +243,20 @@ def process_file(f, fname): def _add_message(msg, msg_plural, msgctx, location, translator_comment): - global main_po, unique_str, unique_loc - - # Write translator comment. - _write_translator_comment(msgctx, msg, translator_comment) - translator_comment = "" - - if msgctx != "": - # If it's a new context or a new message within an existing context, then write new msgid. - # Else add location to existing msgid. - if not msgctx in ctx_group: - _write_message(msgctx, msg, msg_plural, location) - ctx_group[msgctx] = {msg: [location]} - elif not msg in ctx_group[msgctx]: - _write_message(msgctx, msg, msg_plural, location) - ctx_group[msgctx][msg] = [location] - elif not location in ctx_group[msgctx][msg]: - _add_additional_location(msgctx, msg, location) - ctx_group[msgctx][msg].append(location) - else: - if not msg in unique_str: - _write_message(msgctx, msg, msg_plural, location) - unique_str.append(msg) - unique_loc[msg] = [location] - elif not location in unique_loc[msg]: - _add_additional_location(msgctx, msg, location) - unique_loc[msg].append(location) + key = (msg, msgctx) + message = messages_map.get(key) + if not message: + message = Message() + message.msgid = msg + message.msgid_plural = msg_plural + message.msgctxt = msgctx + message.locations = [] + message.comments = [] + messages_map[key] = message + if location not in message.locations: + message.locations.append(location) + if translator_comment and translator_comment not in message.comments: + message.comments.append(translator_comment) print("Updating the editor.pot template...") @@ -335,6 +265,8 @@ for fname in matches: with open(fname, "r", encoding="utf8") as f: process_file(f, fname) +main_po += "\n\n".join(message.format() for message in messages_map.values()) + with open("editor.pot", "w") as f: f.write(main_po) diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 63bed921f1..129f76702e 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -2627,7 +2627,6 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "light", "LIGHT" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "light_color", "LIGHT_COLOR" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "attenuation", "ATTENUATION" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "shadow_attenuation", "SHADOW_ATTENUATION" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "albedo", "ALBEDO" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "backlight", "BACKLIGHT" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "diffuse", "DIFFUSE_LIGHT" }, diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp index 33ad2c2c31..5a0ed7ebad 100644 --- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp +++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp @@ -616,7 +616,6 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin actions.renames["LIGHT_COLOR"] = "light_color"; actions.renames["LIGHT"] = "light"; actions.renames["ATTENUATION"] = "attenuation"; - actions.renames["SHADOW_ATTENUATION"] = "shadow_attenuation"; actions.renames["DIFFUSE_LIGHT"] = "diffuse_light"; actions.renames["SPECULAR_LIGHT"] = "specular_light"; diff --git a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp index d7ed4a36f0..9452c7e6df 100644 --- a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp +++ b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp @@ -586,7 +586,6 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p actions.renames["LIGHT_COLOR"] = "light_color"; actions.renames["LIGHT"] = "light"; actions.renames["ATTENUATION"] = "attenuation"; - actions.renames["SHADOW_ATTENUATION"] = "shadow_attenuation"; actions.renames["DIFFUSE_LIGHT"] = "diffuse_light"; actions.renames["SPECULAR_LIGHT"] = "specular_light"; diff --git a/servers/rendering/shader_types.cpp b/servers/rendering/shader_types.cpp index f0785d4042..27a69fbc2e 100644 --- a/servers/rendering/shader_types.cpp +++ b/servers/rendering/shader_types.cpp @@ -178,7 +178,6 @@ ShaderTypes::ShaderTypes() { shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["LIGHT"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["LIGHT_COLOR"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["ATTENUATION"] = constt(ShaderLanguage::TYPE_FLOAT); - shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["SHADOW_ATTENUATION"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["ALBEDO"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["BACKLIGHT"] = constt(ShaderLanguage::TYPE_VEC3); shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["METALLIC"] = constt(ShaderLanguage::TYPE_FLOAT); |