From 7d4f6faffd768176cbf38b4a2692467405770c72 Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Wed, 9 Jul 2025 12:00:36 +0200 Subject: [PATCH] I18n: Translate missing node add search menu items Some items in the node editors' add menus were not properly translated. The affected items referenced an enum property on a node, such as Math node's Operation. Since some of those enums use a specific translation context, the same context must be used when adding them to the search menus. The context can simply be retrieved from the bl_rna prop itself. In addition, some items use labels that are already translated manually and do not need the auto translation, so disable that in those cases (translate=False). No new messages are added by this change. Reported by Ye Gui in #43295. Pull Request: https://projects.blender.org/blender/blender/pulls/141629 --- scripts/startup/bl_ui/node_add_menu.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/startup/bl_ui/node_add_menu.py b/scripts/startup/bl_ui/node_add_menu.py index 7789bd50101..6329699ee29 100644 --- a/scripts/startup/bl_ui/node_add_menu.py +++ b/scripts/startup/bl_ui/node_add_menu.py @@ -40,7 +40,7 @@ def add_node_type_with_outputs(context, layout, node_type, subnames, *, label=No if getattr(context, "is_menu_search", False): for subname in subnames: sublabel = "{} ▸ {}".format(iface_(label), iface_(subname)) - item_props = add_node_type(layout, node_type, label=sublabel, search_weight=search_weight) + item_props = add_node_type(layout, node_type, label=sublabel, search_weight=search_weight, translate=False) item_props.visible_output = subname props.append(item_props) return props @@ -98,12 +98,14 @@ def add_node_type_with_searchable_enum(context, layout, node_idname, property_na add_node_type(layout, node_idname, search_weight=search_weight) if getattr(context, "is_menu_search", False): node_type = getattr(bpy.types, node_idname) + translation_context = node_type.bl_rna.properties[property_name].translation_context for item in node_type.bl_rna.properties[property_name].enum_items_static: - label = "{} ▸ {}".format(node_type.bl_rna.name, item.name) + label = "{} ▸ {}".format(iface_(node_type.bl_rna.name), iface_(item.name, translation_context)) props = add_node_type( layout, node_idname, label=label, + translate=False, search_weight=search_weight) prop = props.settings.add() prop.name = property_name @@ -112,15 +114,16 @@ def add_node_type_with_searchable_enum(context, layout, node_idname, property_na def add_color_mix_node(context, layout): label = iface_("Mix Color") - props = node_add_menu.add_node_type(layout, "ShaderNodeMix", label=label) + props = node_add_menu.add_node_type(layout, "ShaderNodeMix", label=label, translate=False) ops = props.settings.add() ops.name = "data_type" ops.value = "'RGBA'" if getattr(context, "is_menu_search", False): + translation_context = bpy.types.ShaderNodeMix.bl_rna.properties["blend_type"].translation_context for item in bpy.types.ShaderNodeMix.bl_rna.properties["blend_type"].enum_items_static: - sublabel = "{} ▸ {}".format(label, item.name) - props = node_add_menu.add_node_type(layout, "ShaderNodeMix", label=sublabel) + sublabel = "{} ▸ {}".format(label, iface_(item.name, translation_context)) + props = node_add_menu.add_node_type(layout, "ShaderNodeMix", label=sublabel, translate=False) prop = props.settings.add() prop.name = "data_type" prop.value = "'RGBA'"