diff options
author | Damien Picard <pioverfour> | 2022-08-04 17:13:18 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-08-04 18:05:34 +0300 |
commit | aa53eca6b5984f94b8ab151492355d448abf7d86 (patch) | |
tree | 616ad0a611361e69e4073b8e7802ac89d0d89906 | |
parent | 0844781961e8fb92c5b3a09de23ca0c3a0fff0c2 (diff) |
I18n: make several parts of the UI translatable
- batch rename
- keyframe settings
- tool name in Tool properties header
- tool name in Tool properties Drag (fake) enum
- new file templates
- new preset
- new text datablock
- new collection datablock
- new geometry nodes (modifier and node group)
- new grease pencil data (layers and materials)
Ref. T43295
Reviewed By: mont29
Differential Revision: https://developer.blender.org/D15533
14 files changed, 74 insertions, 55 deletions
diff --git a/release/scripts/startup/bl_operators/geometry_nodes.py b/release/scripts/startup/bl_operators/geometry_nodes.py index ea4d40bb778..1f573543e7b 100644 --- a/release/scripts/startup/bl_operators/geometry_nodes.py +++ b/release/scripts/startup/bl_operators/geometry_nodes.py @@ -3,9 +3,11 @@ import bpy from bpy.types import Operator +from bpy.app.translations import pgettext_data as data_ + def geometry_node_group_empty_new(): - group = bpy.data.node_groups.new("Geometry Nodes", 'GeometryNodeTree') + group = bpy.data.node_groups.new(data_("Geometry Nodes"), 'GeometryNodeTree') group.inputs.new('NodeSocketGeometry', "Geometry") group.outputs.new('NodeSocketGeometry', "Geometry") input_node = group.nodes.new('NodeGroupInput') @@ -45,7 +47,7 @@ class NewGeometryNodesModifier(Operator): return geometry_modifier_poll(context) def execute(self, context): - modifier = context.object.modifiers.new("GeometryNodes", "NODES") + modifier = context.object.modifiers.new(data_("GeometryNodes"), "NODES") if not modifier: return {'CANCELLED'} diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index cde4348977f..6bfce948412 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -11,11 +11,13 @@ from bpy.props import ( StringProperty, ) +from bpy.app.translations import pgettext_data as data_ + # For preset popover menu WindowManager.preset_name = StringProperty( name="Preset Name", description="Name for new preset", - default="New Preset" + default=data_("New Preset") ) diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 3ab124bf4cf..7e7dbbc387e 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -2483,8 +2483,8 @@ class BatchRenameAction(bpy.types.PropertyGroup): ) # Weak, add/remove as properties. - op_add: BoolProperty() - op_remove: BoolProperty() + op_add: BoolProperty(name="Add") + op_remove: BoolProperty(name="Remove") class WM_OT_batch_rename(Operator): @@ -2570,7 +2570,7 @@ class WM_OT_batch_rename(Operator): if only_selected else scene.sequence_editor.sequences_all, "name", - "Strip(s)", + iface_("Strip(s)"), ) elif space_type == 'NODE_EDITOR': data_type_test = 'NODE' @@ -2582,7 +2582,7 @@ class WM_OT_batch_rename(Operator): if only_selected else list(space.node_tree.nodes), "name", - "Node(s)", + iface_("Node(s)"), ) elif space_type == 'OUTLINER': data_type_test = 'COLLECTION' @@ -2594,7 +2594,7 @@ class WM_OT_batch_rename(Operator): if only_selected else scene.collection.children_recursive, "name", - "Collection(s)", + iface_("Collection(s)"), ) else: if mode == 'POSE' or (mode == 'WEIGHT_PAINT' and context.pose_object): @@ -2607,7 +2607,7 @@ class WM_OT_batch_rename(Operator): if only_selected else [pbone.bone for ob in context.objects_in_mode_unique_data for pbone in ob.pose.bones], "name", - "Bone(s)", + iface_("Bone(s)"), ) elif mode == 'EDIT_ARMATURE': data_type_test = 'BONE' @@ -2619,24 +2619,24 @@ class WM_OT_batch_rename(Operator): if only_selected else [ebone for ob in context.objects_in_mode_unique_data for ebone in ob.data.edit_bones], "name", - "Edit Bone(s)", + iface_("Edit Bone(s)"), ) if check_context: return 'OBJECT' object_data_type_attrs_map = { - 'MESH': ("meshes", "Mesh(es)", bpy.types.Mesh), - 'CURVE': ("curves", "Curve(s)", bpy.types.Curve), - 'META': ("metaballs", "Metaball(s)", bpy.types.MetaBall), - 'VOLUME': ("volumes", "Volume(s)", bpy.types.Volume), - 'GPENCIL': ("grease_pencils", "Grease Pencil(s)", bpy.types.GreasePencil), - 'ARMATURE': ("armatures", "Armature(s)", bpy.types.Armature), - 'LATTICE': ("lattices", "Lattice(s)", bpy.types.Lattice), - 'LIGHT': ("lights", "Light(s)", bpy.types.Light), - 'LIGHT_PROBE': ("light_probes", "Light Probe(s)", bpy.types.LightProbe), - 'CAMERA': ("cameras", "Camera(s)", bpy.types.Camera), - 'SPEAKER': ("speakers", "Speaker(s)", bpy.types.Speaker), + 'MESH': ("meshes", iface_("Mesh(es)"), bpy.types.Mesh), + 'CURVE': ("curves", iface_("Curve(s)"), bpy.types.Curve), + 'META': ("metaballs", iface_("Metaball(s)"), bpy.types.MetaBall), + 'VOLUME': ("volumes", iface_("Volume(s)"), bpy.types.Volume), + 'GPENCIL': ("grease_pencils", iface_("Grease Pencil(s)"), bpy.types.GreasePencil), + 'ARMATURE': ("armatures", iface_("Armature(s)"), bpy.types.Armature), + 'LATTICE': ("lattices", iface_("Lattice(s)"), bpy.types.Lattice), + 'LIGHT': ("lights", iface_("Light(s)"), bpy.types.Light), + 'LIGHT_PROBE': ("light_probes", iface_("Light Probe(s)"), bpy.types.LightProbe), + 'CAMERA': ("cameras", iface_("Camera(s)"), bpy.types.Camera), + 'SPEAKER': ("speakers", iface_("Speaker(s)"), bpy.types.Speaker), } # Finish with space types. @@ -2654,7 +2654,7 @@ class WM_OT_batch_rename(Operator): if only_selected else [id for id in bpy.data.objects if id.library is None], "name", - "Object(s)", + iface_("Object(s)"), ) elif data_type == 'COLLECTION': data = ( @@ -2669,7 +2669,7 @@ class WM_OT_batch_rename(Operator): if only_selected else [id for id in bpy.data.collections if id.library is None], "name", - "Collection(s)", + iface_("Collection(s)"), ) elif data_type == 'MATERIAL': data = ( @@ -2688,7 +2688,7 @@ class WM_OT_batch_rename(Operator): if only_selected else [id for id in bpy.data.materials if id.library is None], "name", - "Material(s)", + iface_("Material(s)"), ) elif data_type in object_data_type_attrs_map.keys(): attr, descr, ty = object_data_type_attrs_map[data_type] @@ -2913,7 +2913,7 @@ class WM_OT_batch_rename(Operator): row.prop(action, "op_remove", text="", icon='REMOVE') row.prop(action, "op_add", text="", icon='ADD') - layout.label(text="Rename %d %s" % (len(self._data[0]), self._data[2])) + layout.label(text=iface_("Rename %d %s") % (len(self._data[0]), self._data[2])) def check(self, context): changed = False @@ -2974,7 +2974,7 @@ class WM_OT_batch_rename(Operator): change_len += 1 total_len += 1 - self.report({'INFO'}, "Renamed %d of %d %s" % (change_len, total_len, descr)) + self.report({'INFO'}, tip_("Renamed %d of %d %s") % (change_len, total_len, descr)) return {'FINISHED'} diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py index 2e2d7fbe261..33aea4f4d77 100644 --- a/release/scripts/startup/bl_ui/properties_scene.py +++ b/release/scripts/startup/bl_ui/properties_scene.py @@ -13,6 +13,8 @@ from bl_ui.properties_physics_common import ( effector_weights_ui, ) +from bpy.app.translations import pgettext_iface as iface_ + class SCENE_UL_keying_set_paths(UIList): def draw_item(self, _context, layout, _data, item, icon, _active_data, _active_propname, _index): @@ -82,17 +84,17 @@ class SceneKeyingSetsPanel: @staticmethod def draw_keyframing_settings(context, layout, ks, ksp): SceneKeyingSetsPanel._draw_keyframing_setting( - context, layout, ks, ksp, "Needed", + context, layout, ks, ksp, iface_("Needed"), "use_insertkey_override_needed", "use_insertkey_needed", userpref_fallback="use_keyframe_insert_needed", ) SceneKeyingSetsPanel._draw_keyframing_setting( - context, layout, ks, ksp, "Visual", + context, layout, ks, ksp, iface_("Visual"), "use_insertkey_override_visual", "use_insertkey_visual", userpref_fallback="use_visual_keying", ) SceneKeyingSetsPanel._draw_keyframing_setting( - context, layout, ks, ksp, "XYZ to RGB", + context, layout, ks, ksp, iface_("XYZ to RGB"), "use_insertkey_override_xyz_to_rgb", "use_insertkey_xyz_to_rgb", ) diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 0c796b899af..39dfdd0eecb 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -5,6 +5,7 @@ from bpy.types import ( ) from bpy.app.translations import pgettext_tip as tip_ +from bpy.app.translations import pgettext_iface as iface_ __all__ = ( "ToolDef", @@ -794,7 +795,7 @@ class ToolSelectPanelHelper: # Note: we could show 'item.text' here but it makes the layout jitter when switching tools. # Add some spacing since the icon is currently assuming regular small icon size. if show_tool_icon_always: - layout.label(text=" " + item.label, icon_value=icon_value) + layout.label(text=" " + iface_(item.label, "Operator"), icon_value=icon_value) layout.separator() else: if context.space_data.show_region_toolbar: @@ -825,7 +826,7 @@ class ToolSelectPanelHelper: row.label(text="Drag:") row = split.row() row.context_pointer_set("tool", tool) - row.popover(panel="TOPBAR_PT_tool_fallback", text=label) + row.popover(panel="TOPBAR_PT_tool_fallback", text=iface_(label, "Operator")) return tool diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index 31ecd67eb08..da089ea23b0 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -2,6 +2,8 @@ import bpy from bpy.types import Header, Menu, Panel +from bpy.app.translations import pgettext_iface as iface_ + class TOPBAR_HT_upper_bar(Header): bl_space_type = 'TOPBAR' @@ -363,7 +365,7 @@ class TOPBAR_MT_file_new(Menu): for d in paths: props = layout.operator( "wm.read_homefile", - text=bpy.path.display_name(d), + text=bpy.path.display_name(iface_(d)), icon=icon, ) props.app_template = d diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index b71bcef229a..09085fa8ffb 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -710,10 +710,10 @@ void BKE_collection_new_name_get(Collection *collection_parent, char *rname) char *name; if (!collection_parent) { - name = BLI_strdup("Collection"); + name = BLI_strdup(DATA_("Collection")); } else if (collection_parent->flag & COLLECTION_IS_MASTER) { - name = BLI_sprintfN("Collection %d", BLI_listbase_count(&collection_parent->children) + 1); + name = BLI_sprintfN(DATA_("Collection %d"), BLI_listbase_count(&collection_parent->children) + 1); } else { const int number = BLI_listbase_count(&collection_parent->children) + 1; diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 8a36cfe14c6..81bca5fc911 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -675,7 +675,7 @@ bGPDlayer *BKE_gpencil_layer_addnew(bGPdata *gpd, } /* auto-name */ - BLI_strncpy(gpl->info, name, sizeof(gpl->info)); + BLI_strncpy(gpl->info, DATA_(name), sizeof(gpl->info)); BLI_uniquename(&gpd->layers, gpl, (gpd->flag & GP_DATA_ANNOTATIONS) ? DATA_("Note") : DATA_("GP_Layer"), diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 608e8ea4aba..c2fb11fac97 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -56,6 +56,8 @@ #include "BLO_readfile.h" +#include "BLT_translation.h" + #include "versioning_common.h" /* Make preferences read-only, use versioning_userdef.c. */ @@ -65,7 +67,7 @@ static bool blo_is_builtin_template(const char *app_template) { /* For all builtin templates shipped with Blender. */ return (!app_template || - STR_ELEM(app_template, "2D_Animation", "Sculpting", "VFX", "Video_Editing")); + STR_ELEM(app_template, N_("2D_Animation"), N_("Sculpting"), N_("VFX"), N_("Video_Editing"))); } static void blo_update_defaults_screen(bScreen *screen, diff --git a/source/blender/editors/gpencil/gpencil_add_blank.c b/source/blender/editors/gpencil/gpencil_add_blank.c index e8e6d328804..b88b33913ac 100644 --- a/source/blender/editors/gpencil/gpencil_add_blank.c +++ b/source/blender/editors/gpencil/gpencil_add_blank.c @@ -19,6 +19,8 @@ #include "BKE_main.h" #include "BKE_material.h" +#include "BLT_translation.h" + #include "DEG_depsgraph.h" #include "ED_gpencil.h" @@ -34,7 +36,7 @@ typedef struct ColorTemplate { static int gpencil_stroke_material(Main *bmain, Object *ob, const ColorTemplate *pct) { int index; - Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, pct->name, &index); + Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, DATA_(pct->name), &index); copy_v4_v4(ma->gp_style->stroke_rgba, pct->line); srgb_to_linearrgb_v4(ma->gp_style->stroke_rgba, ma->gp_style->stroke_rgba); @@ -52,7 +54,7 @@ static int gpencil_stroke_material(Main *bmain, Object *ob, const ColorTemplate /* Color Data */ static const ColorTemplate gp_stroke_material_black = { - "Black", + N_("Black"), {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; diff --git a/source/blender/editors/gpencil/gpencil_add_lineart.c b/source/blender/editors/gpencil/gpencil_add_lineart.c index 964a57a8ced..2ac26c927f4 100644 --- a/source/blender/editors/gpencil/gpencil_add_lineart.c +++ b/source/blender/editors/gpencil/gpencil_add_lineart.c @@ -21,6 +21,8 @@ #include "BKE_main.h" #include "BKE_material.h" +#include "BLT_translation.h" + #include "DEG_depsgraph.h" #include "DEG_depsgraph_query.h" @@ -40,7 +42,7 @@ static int gpencil_lineart_material(Main *bmain, const bool fill) { int index; - Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, pct->name, &index); + Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, DATA_(pct->name), &index); copy_v4_v4(ma->gp_style->stroke_rgba, pct->line); srgb_to_linearrgb_v4(ma->gp_style->stroke_rgba, ma->gp_style->stroke_rgba); @@ -59,7 +61,7 @@ static int gpencil_lineart_material(Main *bmain, /* Color Data */ static const ColorTemplate gp_stroke_material_black = { - "Black", + N_("Black"), {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; diff --git a/source/blender/editors/gpencil/gpencil_add_monkey.c b/source/blender/editors/gpencil/gpencil_add_monkey.c index bc046e89d21..ce38c261c1f 100644 --- a/source/blender/editors/gpencil/gpencil_add_monkey.c +++ b/source/blender/editors/gpencil/gpencil_add_monkey.c @@ -19,6 +19,8 @@ #include "BKE_main.h" #include "BKE_material.h" +#include "BLT_translation.h" + #include "DEG_depsgraph.h" #include "ED_gpencil.h" @@ -54,7 +56,7 @@ static int gpencil_monkey_color( Main *bmain, Object *ob, const ColorTemplate *pct, bool stroke, bool fill) { int index; - Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, pct->name, &index); + Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, DATA_(pct->name), &index); copy_v4_v4(ma->gp_style->stroke_rgba, pct->line); srgb_to_linearrgb_v4(ma->gp_style->stroke_rgba, ma->gp_style->stroke_rgba); @@ -781,37 +783,37 @@ static const float data27[33 * GP_PRIM_DATABUF_SIZE] = { /* Monkey Color Data */ static const ColorTemplate gp_monkey_pct_black = { - "Black", + N_("Black"), {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_monkey_pct_skin = { - "Skin", + N_("Skin"), {0.733f, 0.569f, 0.361f, 1.0f}, {0.745f, 0.502f, 0.278f, 1.0f}, }; static const ColorTemplate gp_monkey_pct_skin_light = { - "Skin_Light", + N_("Skin_Light"), {0.914f, 0.827f, 0.635f, 1.0f}, {0.913f, 0.828f, 0.637f, 0.0f}, }; static const ColorTemplate gp_monkey_pct_skin_shadow = { - "Skin_Shadow", + N_("Skin_Shadow"), {0.322f, 0.29f, 0.224f, 0.5f}, {0.32f, 0.29f, 0.223f, 0.3f}, }; static const ColorTemplate gp_monkey_pct_eyes = { - "Eyes", + N_("Eyes"), {0.553f, 0.39f, 0.266f, 0.0f}, {0.847f, 0.723f, 0.599f, 1.0f}, }; static const ColorTemplate gp_monkey_pct_pupils = { - "Pupils", + N_("Pupils"), {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 1.0f}, }; diff --git a/source/blender/editors/gpencil/gpencil_add_stroke.c b/source/blender/editors/gpencil/gpencil_add_stroke.c index e24964c4832..4687f9188fd 100644 --- a/source/blender/editors/gpencil/gpencil_add_stroke.c +++ b/source/blender/editors/gpencil/gpencil_add_stroke.c @@ -19,6 +19,8 @@ #include "BKE_main.h" #include "BKE_material.h" +#include "BLT_translation.h" + #include "DEG_depsgraph.h" #include "ED_gpencil.h" @@ -37,7 +39,7 @@ static int gpencil_stroke_material(Main *bmain, const bool fill) { int index; - Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, pct->name, &index); + Material *ma = BKE_gpencil_object_material_ensure_by_name(bmain, ob, DATA_(pct->name), &index); copy_v4_v4(ma->gp_style->stroke_rgba, pct->line); srgb_to_linearrgb_v4(ma->gp_style->stroke_rgba, ma->gp_style->stroke_rgba); @@ -150,37 +152,37 @@ static const float data0[175 * GP_PRIM_DATABUF_SIZE] = { /* Color Data */ static const ColorTemplate gp_stroke_material_black = { - "Black", + N_("Black"), {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_stroke_material_white = { - "White", + N_("White"), {1.0f, 1.0f, 1.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_stroke_material_red = { - "Red", + N_("Red"), {1.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_stroke_material_green = { - "Green", + N_("Green"), {0.0f, 1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_stroke_material_blue = { - "Blue", + N_("Blue"), {0.0f, 0.0f, 1.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, }; static const ColorTemplate gp_stroke_material_grey = { - "Grey", + N_("Grey"), {0.358f, 0.358f, 0.358f, 1.0f}, {0.5f, 0.5f, 0.5f, 1.0f}, }; diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 33219092d20..f0196bf8e00 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -273,7 +273,7 @@ static int text_new_exec(bContext *C, wmOperator *UNUSED(op)) PointerRNA ptr, idptr; PropertyRNA *prop; - text = BKE_text_add(bmain, "Text"); + text = BKE_text_add(bmain, DATA_("Text")); /* hook into UI */ UI_context_active_but_prop_get_templateID(C, &ptr, &prop); |