From 22edf044588eee64cf839df8b60f6d60ccdfeecf Mon Sep 17 00:00:00 2001 From: Damien Picard Date: Thu, 9 Feb 2023 15:48:19 +0100 Subject: [PATCH] I18n: use format strings for Cycles version error messages The required version numbers for various devices was hardcoded in the UI messages. The result was that every time one of these versions was bumped, every language team had to update the message in question. Instead, the version numbers can be extracted, and injected into the error messages using string formatting so that translation updates need happen less frequently. Pull Request #104488 --- intern/cycles/blender/addon/properties.py | 37 +++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index bce39bb89e5..f3d8426a23b 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -12,6 +12,7 @@ from bpy.props import ( PointerProperty, StringProperty, ) +from bpy.app.translations import pgettext_iface as iface_ from math import pi @@ -1664,30 +1665,48 @@ class CyclesPreferences(bpy.types.AddonPreferences): col.label(text="No compatible GPUs found for Cycles", icon='INFO') if device_type == 'CUDA': - col.label(text="Requires NVIDIA GPU with compute capability 3.0", icon='BLANK1') + compute_capability = "3.0" + col.label(text=iface_("Requires NVIDIA GPU with compute capability %s") % compute_capability, + icon='BLANK1', translate=False) elif device_type == 'OPTIX': - col.label(text="Requires NVIDIA GPU with compute capability 5.0", icon='BLANK1') - col.label(text="and NVIDIA driver version 470 or newer", icon='BLANK1') + compute_capability = "5.0" + driver_version = "470" + col.label(text=iface_("Requires NVIDIA GPU with compute capability %s") % compute_capability, + icon='BLANK1', translate=False) + col.label(text="and NVIDIA driver version %s or newer" % driver_version, + icon='BLANK1', translate=False) elif device_type == 'HIP': import sys if sys.platform[:3] == "win": + driver_version = "21.Q4" col.label(text="Requires AMD GPU with RDNA architecture", icon='BLANK1') - col.label(text="and AMD Radeon Pro 21.Q4 driver or newer", icon='BLANK1') + col.label(text=iface_("and AMD Radeon Pro %s driver or newer") % driver_version, + icon='BLANK1', translate=False) elif sys.platform.startswith("linux"): + driver_version = "22.10" col.label(text="Requires AMD GPU with RDNA architecture", icon='BLANK1') - col.label(text="and AMD driver version 22.10 or newer", icon='BLANK1') + col.label(text=iface_("and AMD driver version %s or newer") % driver_version, icon='BLANK1', + translate=False) elif device_type == 'ONEAPI': import sys if sys.platform.startswith("win"): + driver_version = "101.4032" col.label(text="Requires Intel GPU with Xe-HPG architecture", icon='BLANK1') - col.label(text="and Windows driver version 101.4032 or newer", icon='BLANK1') + col.label(text=iface_("and Windows driver version %s or newer") % driver_version, + icon='BLANK1', translate=False) elif sys.platform.startswith("linux"): + driver_version = "1.3.24931" col.label(text="Requires Intel GPU with Xe-HPG architecture and", icon='BLANK1') - col.label(text=" - intel-level-zero-gpu version 1.3.24931 or newer", icon='BLANK1') + col.label(text=iface_(" - intel-level-zero-gpu version %s or newer") % driver_version, + icon='BLANK1', translate=False) col.label(text=" - oneAPI Level-Zero Loader", icon='BLANK1') elif device_type == 'METAL': - col.label(text="Requires Apple Silicon with macOS 12.2 or newer", icon='BLANK1') - col.label(text="or AMD with macOS 12.3 or newer", icon='BLANK1') + silicon_mac_version = "12.2" + amd_mac_version = "12.3" + col.label(text=iface_("Requires Apple Silicon with macOS %s or newer") % silicon_mac_version, + icon='BLANK1', translate=False) + col.label(text=iface_("or AMD with macOS %s or newer") % amd_mac_version, icon='BLANK1', + translate=False) return for device in devices: