I18n: disambiguate a few translations

- Keying (keyframe insertion)
- Roughness (particle children)
- New image, collection, text (in menus)
- Parents (particles)
- Wrap (text)
- Light (add menu)
- Empty (volume add menu)
- Empty (empty add menu)
- Cycles (f-curve modifier)
- Drag (workspace tool type)
- Power (light intensity)
- Power (math nodes)

This last change also moves all math operations in nodes to the
ID_nodetree context. It's needed only for some operations, but we
can't be more granular here.

Also...

- Fix context extraction for interpolation mode headers in F-Curves
  and GPencil interpolation operator
- Enable new translation: "Slot %d" in image editor
- Fix an English message in the node editor:
  "Replace the input image's alpha channels by..." -> channel

Ref. T43295

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15694
This commit is contained in:
Damien Picard 2022-08-22 14:30:32 +02:00 committed by Bastien Montagne
parent c973d333da
commit ee985fa925
Notes: blender-bot 2023-03-24 17:05:22 +01:00
Referenced by pull request #105692, I18n: extract math node operation type header messages, fix another
Referenced by commit 4096bcfb25, I18n: extract math node operation type header messages, fix another
17 changed files with 67 additions and 33 deletions

View File

@ -1654,6 +1654,7 @@ class PARTICLE_PT_children_clumping_noise(ParticleButtonsPanel, Panel):
class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
bl_label = "Roughness"
bl_translation_context = i18n_contexts.id_particlesettings
bl_parent_id = "PARTICLE_PT_children"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
@ -1676,7 +1677,7 @@ class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
if part.use_roughness_curve:
sub = col.column()
sub.template_curve_mapping(part, "roughness_curve")
sub.prop(part, "roughness_1", text="Roughness")
sub.prop(part, "roughness_1", text=iface_("Roughness", i18n_contexts.id_particlesettings))
sub.prop(part, "roughness_1_size", text="Size")
else:
sub = col.column(align=True)

View File

@ -29,8 +29,10 @@ from bl_ui.space_toolsystem_common import (
ToolActivePanelHelper,
)
from bpy.app.translations import pgettext_iface as iface_
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class ImagePaintPanel:
bl_space_type = 'IMAGE_EDITOR'
@ -187,7 +189,8 @@ class IMAGE_MT_image(Menu):
ima = sima.image
show_render = sima.show_render
layout.operator("image.new", text="New")
layout.operator("image.new", text="New",
text_ctxt=i18n_contexts.id_image)
layout.operator("image.open", text="Open...", icon='FILE_FOLDER')
layout.operator("image.read_viewlayers")

View File

@ -2,6 +2,10 @@
import bpy
from bpy.types import Header, Menu, Panel
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class OUTLINER_HT_header(Header):
bl_space_type = 'OUTLINER'
@ -211,7 +215,8 @@ class OUTLINER_MT_collection(Menu):
space = context.space_data
layout.operator("outliner.collection_new", text="New").nested = True
layout.operator("outliner.collection_new", text="New",
text_ctxt=i18n_contexts.id_collection).nested = True
layout.operator("outliner.collection_duplicate", text="Duplicate Collection")
layout.operator("outliner.collection_duplicate_linked", text="Duplicate Linked")
layout.operator("outliner.id_copy", text="Copy", icon='COPYDOWN')

View File

@ -1,7 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Header, Menu, Panel
from bpy.app.translations import pgettext_iface as iface_
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class TEXT_HT_header(Header):
@ -168,7 +171,8 @@ class TEXT_PT_find(Panel):
if not st.text:
row.active = False
row.prop(st, "use_match_case", text="Case", toggle=True)
row.prop(st, "use_find_wrap", text="Wrap", toggle=True)
row.prop(st, "use_find_wrap", text="Wrap",
text_ctxt=i18n_contexts.id_text, toggle=True)
row.prop(st, "use_find_all", text="All", toggle=True)
@ -234,7 +238,8 @@ class TEXT_MT_text(Menu):
st = context.space_data
text = st.text
layout.operator("text.new", text="New", icon='FILE_NEW')
layout.operator("text.new", text="New",
text_ctxt=i18n_contexts.id_text, icon='FILE_NEW')
layout.operator("text.open", text="Open...", icon='FILE_FOLDER')
if text:

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Menu, Panel
from bpy.app.translations import contexts as i18n_contexts
# Header buttons for timeline header (play, etc.)
@ -87,6 +88,7 @@ class TIME_MT_editor_menus(Menu):
sub.popover(
panel="TIME_PT_keyframing_settings",
text="Keying",
text_ctxt=i18n_contexts.id_windowmanager,
)
# Add a separator to keep the popover button from aligning with the menu button.

View File

@ -2212,6 +2212,7 @@ class VIEW3D_MT_armature_add(Menu):
class VIEW3D_MT_light_add(Menu):
bl_idname = "VIEW3D_MT_light_add"
bl_context = i18n_contexts.id_light
bl_label = "Light"
def draw(self, _context):
@ -2249,7 +2250,9 @@ class VIEW3D_MT_volume_add(Menu):
def draw(self, _context):
layout = self.layout
layout.operator("object.volume_import", text="Import OpenVDB...", icon='OUTLINER_DATA_VOLUME')
layout.operator("object.volume_add", text="Empty", icon='OUTLINER_DATA_VOLUME')
layout.operator("object.volume_add", text="Empty",
text_ctxt=i18n_contexts.id_volume,
icon='OUTLINER_DATA_VOLUME')
class VIEW3D_MT_add(Menu):
@ -2290,7 +2293,9 @@ class VIEW3D_MT_add(Menu):
layout.separator()
layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY')
layout.operator_menu_enum("object.empty_add", "type", text="Empty",
text_ctxt=i18n_contexts.id_id,
icon='OUTLINER_OB_EMPTY')
layout.menu("VIEW3D_MT_image_add", text="Image", icon='OUTLINER_OB_IMAGE')
layout.separator()

View File

@ -768,19 +768,19 @@ static void fcm_cycles_evaluate(FCurve *UNUSED(fcu),
}
static FModifierTypeInfo FMI_CYCLES = {
FMODIFIER_TYPE_CYCLES, /* type */
sizeof(FMod_Cycles), /* size */
FMI_TYPE_EXTRAPOLATION, /* action type */
FMI_REQUIRES_ORIGINAL_DATA, /* requirements */
N_("Cycles"), /* name */
"FMod_Cycles", /* struct name */
sizeof(tFCMED_Cycles), /* storage size */
NULL, /* free data */
NULL, /* copy data */
fcm_cycles_new_data, /* new data */
NULL /*fcm_cycles_verify*/, /* verify */
fcm_cycles_time, /* evaluate time */
fcm_cycles_evaluate, /* evaluate */
FMODIFIER_TYPE_CYCLES, /* type */
sizeof(FMod_Cycles), /* size */
FMI_TYPE_EXTRAPOLATION, /* action type */
FMI_REQUIRES_ORIGINAL_DATA, /* requirements */
CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Cycles"), /* name */
"FMod_Cycles", /* struct name */
sizeof(tFCMED_Cycles), /* storage size */
NULL, /* free data */
NULL, /* copy data */
fcm_cycles_new_data, /* new data */
NULL /*fcm_cycles_verify*/, /* verify */
fcm_cycles_time, /* evaluate time */
fcm_cycles_evaluate, /* evaluate */
};
/* Noise F-Curve Modifier --------------------------- */

View File

@ -5428,7 +5428,7 @@ RenderSlot *BKE_image_add_renderslot(Image *ima, const char *name)
}
else {
int n = BLI_listbase_count(&ima->renderslots) + 1;
BLI_snprintf(slot->name, sizeof(slot->name), "Slot %d", n);
BLI_snprintf(slot->name, sizeof(slot->name), DATA_("Slot %d"), n);
}
BLI_addtail(&ima->renderslots, slot);
return slot;

View File

@ -1483,7 +1483,8 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
*/
static const EnumPropertyItem gpencil_interpolation_type_items[] = {
/* Interpolation. */
RNA_ENUM_ITEM_HEADING(N_("Interpolation"), "Standard transitions between keyframes"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL, "Interpolation"),
"Standard transitions between keyframes"),
{GP_IPO_LINEAR,
"LINEAR",
ICON_IPO_LINEAR,
@ -1496,7 +1497,8 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
"Custom interpolation defined using a curve map"},
/* Easing. */
RNA_ENUM_ITEM_HEADING(N_("Easing (by strength)"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL,
"Easing (by strength)"),
"Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")"),
{GP_IPO_SINE,
@ -1515,7 +1517,8 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
"Circular",
"Circular easing (strongest and most dynamic)"},
RNA_ENUM_ITEM_HEADING(N_("Dynamic Effects"), "Simple physics-inspired easing effects"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL, "Dynamic Effects"),
"Simple physics-inspired easing effects"),
{GP_IPO_BACK, "BACK", ICON_IPO_BACK, "Back", "Cubic easing with overshoot and settle"},
{GP_IPO_BOUNCE,
"BOUNCE",

View File

@ -12,6 +12,8 @@
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_deform.h"

View File

@ -67,7 +67,8 @@ const EnumPropertyItem rna_enum_keyframe_handle_type_items[] = {
*/
const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
/* Interpolation. */
RNA_ENUM_ITEM_HEADING(N_("Interpolation"), "Standard transitions between keyframes"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Interpolation"),
"Standard transitions between keyframes"),
{BEZT_IPO_CONST,
"CONSTANT",
ICON_IPO_CONSTANT,
@ -85,7 +86,8 @@ const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
"Smooth interpolation between A and B, with some control over curve shape"},
/* Easing. */
RNA_ENUM_ITEM_HEADING(N_("Easing (by strength)"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION,
"Easing (by strength)"),
"Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")"),
{BEZT_IPO_SINE,
@ -104,7 +106,8 @@ const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
"Circular",
"Circular easing (strongest and most dynamic)"},
RNA_ENUM_ITEM_HEADING(N_("Dynamic Effects"), "Simple physics-inspired easing effects"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Dynamic Effects"),
"Simple physics-inspired easing effects"),
{BEZT_IPO_BACK, "BACK", ICON_IPO_BACK, "Back", "Cubic easing with overshoot and settle"},
{BEZT_IPO_BOUNCE,
"BOUNCE",

View File

@ -212,6 +212,7 @@ static void rna_def_light_energy(StructRNA *srna, const short light_type)
"Power",
"The energy this light would emit over its entire area "
"if it wasn't limited by the spot angle");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_LIGHT);
RNA_def_property_update(prop, 0, "rna_Light_draw_update");
break;
}
@ -224,6 +225,7 @@ static void rna_def_light_energy(StructRNA *srna, const short light_type)
prop,
"Power",
"Light energy emitted over the entire area of the light in all directions");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_LIGHT);
RNA_def_property_update(prop, 0, "rna_Light_draw_update");
break;
}

View File

@ -4840,6 +4840,7 @@ static void def_math(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, rna_enum_node_math_items);
RNA_def_property_ui_text(prop, "Operation", "");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_NODETREE);
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update");
prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
@ -6737,7 +6738,7 @@ static void def_cmp_set_alpha(StructRNA *srna)
"REPLACE_ALPHA",
0,
"Replace Alpha",
"Replace the input image's alpha channels by the alpha input value"},
"Replace the input image's alpha channel by the alpha input value"},
{0, NULL, 0, NULL, NULL},
};

View File

@ -2686,6 +2686,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_parent_particles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_PARENT);
RNA_def_property_ui_text(prop, "Parents", "Render parent particles");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_PARTICLESETTINGS);
RNA_def_property_update(prop, 0, "rna_Particle_redo");
prop = RNA_def_property(srna, "show_number", PROP_BOOLEAN, PROP_NONE);

View File

@ -3138,6 +3138,7 @@ static void rna_def_tool_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "workspace_tool_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "workspace_tool_type");
RNA_def_property_enum_items(prop, workspace_tool_items);
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_EDITOR_VIEW3D);
RNA_def_property_ui_text(prop, "Drag", "Action when dragging in the viewport");
/* Transform */

View File

@ -200,7 +200,7 @@ void node_math_label(const bNodeTree *UNUSED(ntree), const bNode *node, char *la
if (!enum_label) {
name = "Unknown";
}
BLI_strncpy(label, IFACE_(name), maxlen);
BLI_strncpy(label, CTX_IFACE_(BLT_I18NCONTEXT_ID_NODETREE, name), maxlen);
}
void node_vector_math_label(const bNodeTree *UNUSED(ntree),

View File

@ -62,7 +62,7 @@ static void sh_node_math_gather_link_searches(GatherLinkSearchOpParams &params)
-1 :
weight;
params.add_item(
IFACE_(item->name), SocketSearchOp{"Value", (NodeMathOperation)item->value}, gn_weight);
CTX_IFACE_(BLT_I18NCONTEXT_ID_NODETREE, item->name), SocketSearchOp{"Value", (NodeMathOperation)item->value}, gn_weight);
}
}
}