diff --git a/scripts/addons_core/node_wrangler/__init__.py b/scripts/addons_core/node_wrangler/__init__.py index 6d5cb4faf3c..4e6e503706c 100644 --- a/scripts/addons_core/node_wrangler/__init__.py +++ b/scripts/addons_core/node_wrangler/__init__.py @@ -5,7 +5,7 @@ bl_info = { "name": "Node Wrangler", "author": "Bartek Skorupa, Greg Zaal, Sebastian Koenig, Christian Brinkmann, Florian Meyer", - "version": (3, 54), + "version": (3, 55), "blender": (4, 2, 0), "location": "Node Editor Toolbar or Shift-W", "description": "Various tools to enhance and speed up node-based workflow", diff --git a/scripts/addons_core/node_wrangler/interface.py b/scripts/addons_core/node_wrangler/interface.py index 3ff88d254a2..5eb3387c51c 100644 --- a/scripts/addons_core/node_wrangler/interface.py +++ b/scripts/addons_core/node_wrangler/interface.py @@ -5,6 +5,7 @@ import bpy from bpy.types import Panel, Menu from bpy.props import StringProperty +from bpy.app.translations import contexts as i18n_contexts from nodeitems_utils import node_categories_iter, NodeItemCustom from . import operators @@ -46,7 +47,7 @@ def drawlayout(context, layout, mode='non-panel'): else: col.operator(operators.NWClearLabel.bl_idname).option = True col.operator(operators.NWModifyLabels.bl_idname) - col.menu(NWBatchChangeNodesMenu.bl_idname, text="Batch Change") + col.menu(NWBatchChangeNodesMenu.bl_idname, text="Batch Change", text_ctxt=i18n_contexts.operator_default) col.separator() col.menu(NWCopyToSelectedMenu.bl_idname) col.separator() @@ -131,7 +132,7 @@ class NWMergeGeometryMenu(Menu, NWBaseMenu): layout = self.layout # The boolean node + Join Geometry node for type, name, description in geo_combine_operations: - props = layout.operator(operators.NWMergeNodes.bl_idname, text=name) + props = layout.operator(operators.NWMergeNodes.bl_idname, text=name, text_ctxt=i18n_contexts.default) props.mode = type props.merge_type = 'GEOMETRY' @@ -144,7 +145,7 @@ class NWMergeShadersMenu(Menu, NWBaseMenu): layout = self.layout for type in ('MIX', 'ADD'): name = f'{type.capitalize()} Shader' - props = layout.operator(operators.NWMergeNodes.bl_idname, text=name) + props = layout.operator(operators.NWMergeNodes.bl_idname, text=name, text_ctxt=i18n_contexts.default) props.mode = type props.merge_type = 'SHADER' @@ -156,7 +157,7 @@ class NWMergeMixMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout for type, name, description in blend_types: - props = layout.operator(operators.NWMergeNodes.bl_idname, text=name) + props = layout.operator(operators.NWMergeNodes.bl_idname, text=name, text_ctxt=i18n_contexts.default) props.mode = type props.merge_type = 'MIX' @@ -176,7 +177,9 @@ class NWConnectionListOutputs(Menu, NWBaseMenu): layout.operator( operators.NWCallInputsMenu.bl_idname, text=output.name, - icon="RADIOBUT_OFF").from_socket = index + text_ctxt=i18n_contexts.default, + icon="RADIOBUT_OFF", + ).from_socket = index class NWConnectionListInputs(Menu, NWBaseMenu): @@ -195,7 +198,11 @@ class NWConnectionListInputs(Menu, NWBaseMenu): # of the vector math node being added to the list when # the mode is not 'SCALE'. if input.enabled: - op = layout.operator(operators.NWMakeLink.bl_idname, text=input.name, icon="FORWARD") + op = layout.operator( + operators.NWMakeLink.bl_idname, text=input.name, + text_ctxt=i18n_contexts.default, + icon="FORWARD", + ) op.from_socket = context.scene.NWSourceSocket op.to_socket = index @@ -207,7 +214,7 @@ class NWMergeMathMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout for type, name, description in operations: - props = layout.operator(operators.NWMergeNodes.bl_idname, text=name) + props = layout.operator(operators.NWMergeNodes.bl_idname, text=name, text_ctxt=i18n_contexts.default) props.mode = type props.merge_type = 'MATH' @@ -229,7 +236,11 @@ class NWBatchChangeBlendTypeMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout for type, name, description in blend_types: - props = layout.operator(operators.NWBatchChangeNodes.bl_idname, text=name) + props = layout.operator( + operators.NWBatchChangeNodes.bl_idname, + text=name, + text_ctxt=i18n_contexts.default + ) props.blend_type = type props.operation = 'CURRENT' @@ -241,7 +252,7 @@ class NWBatchChangeOperationMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout for type, name, description in operations: - props = layout.operator(operators.NWBatchChangeNodes.bl_idname, text=name) + props = layout.operator(operators.NWBatchChangeNodes.bl_idname, text=name, text_ctxt=i18n_contexts.default) props.blend_type = 'CURRENT' props.operation = type @@ -262,9 +273,9 @@ class NWCopyLabelMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout - layout.operator(operators.NWCopyLabel.bl_idname, text="from Active Node's Label").option = 'FROM_ACTIVE' - layout.operator(operators.NWCopyLabel.bl_idname, text="from Linked Node's Label").option = 'FROM_NODE' - layout.operator(operators.NWCopyLabel.bl_idname, text="from Linked Output's Name").option = 'FROM_SOCKET' + layout.operator(operators.NWCopyLabel.bl_idname, text="From Active Node's Label").option = 'FROM_ACTIVE' + layout.operator(operators.NWCopyLabel.bl_idname, text="From Linked Node's Label").option = 'FROM_NODE' + layout.operator(operators.NWCopyLabel.bl_idname, text="From Linked Output's Name").option = 'FROM_SOCKET' class NWAddReroutesMenu(Menu, NWBaseMenu): @@ -274,9 +285,9 @@ class NWAddReroutesMenu(Menu, NWBaseMenu): def draw(self, context): layout = self.layout - layout.operator(operators.NWAddReroutes.bl_idname, text="to All Outputs").option = 'ALL' - layout.operator(operators.NWAddReroutes.bl_idname, text="to Loose Outputs").option = 'LOOSE' - layout.operator(operators.NWAddReroutes.bl_idname, text="to Linked Outputs").option = 'LINKED' + layout.operator(operators.NWAddReroutes.bl_idname, text="To All Outputs").option = 'ALL' + layout.operator(operators.NWAddReroutes.bl_idname, text="To Loose Outputs").option = 'LOOSE' + layout.operator(operators.NWAddReroutes.bl_idname, text="To Linked Outputs").option = 'LINKED' class NWLinkActiveToSelectedMenu(Menu, NWBaseMenu): @@ -370,7 +381,11 @@ class NWAttributeMenu(bpy.types.Menu): if attrs: for attr in attrs: - l.operator(operators.NWAddAttrNode.bl_idname, text=attr).attr_name = attr + l.operator( + operators.NWAddAttrNode.bl_idname, + text=attr, + translate=False, + ).attr_name = attr else: l.label(text="No attributes on objects with this material") diff --git a/scripts/addons_core/node_wrangler/operators.py b/scripts/addons_core/node_wrangler/operators.py index 47cda0cf8ca..a0f0f4093c6 100644 --- a/scripts/addons_core/node_wrangler/operators.py +++ b/scripts/addons_core/node_wrangler/operators.py @@ -14,7 +14,11 @@ from bpy.props import ( FloatVectorProperty, CollectionProperty, ) -from bpy.app.translations import pgettext_rpt as rpt_ +from bpy.app.translations import ( + pgettext_rpt as rpt_, + contexts as i18n_contexts, +) + from bpy_extras.io_utils import ImportHelper, ExportHelper from bpy_extras.node_utils import connect_sockets from mathutils import Vector @@ -492,6 +496,7 @@ class NWAddAttrNode(Operator, NWBase): class NWFrameSelected(Operator, NWBase): bl_idname = "node.nw_frame_selected" bl_label = "Frame Selected" + bl_translation_context = i18n_contexts.id_nodetree bl_description = "Add a frame node and parent the selected nodes to it" bl_options = {'REGISTER', 'UNDO'} diff --git a/scripts/addons_core/node_wrangler/utils/constants.py b/scripts/addons_core/node_wrangler/utils/constants.py index 02c4398825c..be19aa76330 100644 --- a/scripts/addons_core/node_wrangler/utils/constants.py +++ b/scripts/addons_core/node_wrangler/utils/constants.py @@ -54,8 +54,8 @@ blend_types = [ ('DARKEN', 'Darken', 'Darken Mode'), ('LIGHTEN', 'Lighten', 'Lighten Mode'), ('OVERLAY', 'Overlay', 'Overlay Mode'), - ('DODGE', 'Dodge', 'Dodge Mode'), - ('BURN', 'Burn', 'Burn Mode'), + ('DODGE', 'Color Dodge', 'Dodge Mode'), + ('BURN', 'Color Burn', 'Burn Mode'), ('HUE', 'Hue', 'Hue Mode'), ('SATURATION', 'Saturation', 'Saturation Mode'), ('VALUE', 'Value', 'Value Mode'),