I18n: make add-ons' info translatable

The info provided by add-ons is very valuable to users, yet it wasn’t translatable yet.

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15747
This commit is contained in:
Damien Picard 2022-08-29 14:02:24 +02:00 committed by Bastien Montagne
parent 9823a8f72b
commit 73bfd8058f
2 changed files with 23 additions and 6 deletions

View File

@ -907,6 +907,11 @@ def dump_template_messages(msgs, reports, settings):
reports, None, settings)
def dump_addon_bl_info(msgs, reports, module, settings):
for prop in ('name', 'location', 'description'):
process_msg(msgs, settings.DEFAULT_CONTEXT, module.bl_info[prop], "Add-on " + module.bl_info['name'] + " info: " + prop, reports, None, settings)
##### Main functions! #####
def dump_messages(do_messages, do_checks, settings):
bl_ver = "Blender " + bpy.app.version_string
@ -945,6 +950,13 @@ def dump_messages(do_messages, do_checks, settings):
# Get strings from startup templates.
dump_template_messages(msgs, reports, settings)
# Get strings from addons' bl_info.
import addon_utils
for module in addon_utils.modules():
if module.bl_info['support'] != 'OFFICIAL':
continue
dump_addon_bl_info(msgs, reports, module, settings)
# Get strings from addons' categories.
for uid, label, tip in bpy.types.WindowManager.addon_filter.keywords['items'](
bpy.context.window_manager,
@ -1041,6 +1053,9 @@ def dump_addon_messages(module_name, do_checks, settings):
reports["check_ctxt"] = check_ctxt
dump_py_messages(msgs, reports, {addon}, settings, addons_only=True)
# Get strings from the addon's bl_info
dump_addon_bl_info(msgs, reports, addon, settings)
pot.unescape() # Strings gathered in py/C source code may contain escaped chars...
print_info(reports, pot)

View File

@ -1928,10 +1928,12 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
if is_visible:
if search and not (
(search in info["name"].lower()) or
(search in info["name"].lower() or
search in iface_(info["name"]).lower()) or
(info["author"] and (search in info["author"].lower())) or
((filter == "All") and (search in info["category"].lower()))
):
((filter == "All") and (search in info["category"].lower() or
search in iface_(info["category"]).lower()))
):
continue
# Addon UI Code
@ -1954,7 +1956,7 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
sub = row.row()
sub.active = is_enabled
sub.label(text="%s: %s" % (info["category"], info["name"]))
sub.label(text=iface_("%s: %s") % (iface_(info["category"]), iface_(info["name"])))
if info["warning"]:
sub.label(icon='ERROR')
@ -1967,11 +1969,11 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
if info["description"]:
split = colsub.row().split(factor=0.15)
split.label(text="Description:")
split.label(text=info["description"])
split.label(text=tip_(info["description"]))
if info["location"]:
split = colsub.row().split(factor=0.15)
split.label(text="Location:")
split.label(text=info["location"])
split.label(text=tip_(info["location"]))
if mod:
split = colsub.row().split(factor=0.15)
split.label(text="File:")